/* ======================================================================
   Parts Copyright 2006 University of Leeds, Oxford University, University of the Highlands and Islands.

   Licensed under the Apache License, Version 2.0 (the "License");
   you may not use this file except in compliance with the License.
   You may obtain a copy of the License at

       http://www.apache.org/licenses/LICENSE-2.0

   Unless required by applicable law or agreed to in writing, software
   distributed under the License is distributed on an "AS IS" BASIS,
   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
   See the License for the specific language governing permissions and
   limitations under the License.

====================================================================== */

package org.bodington.assessment;

import java.math.BigDecimal;
import java.util.Vector;
import java.util.Enumeration;
import java.util.Hashtable;
import java.rmi.RemoteException;
import java.sql.Timestamp;

import org.bodington.database.PrimaryKey;
import org.bodington.server.*;

public interface PeerMarkerSession extends BuildingSession {
    public PeerMarkerPaper getPeerMarkerPaper() throws RemoteException,
            BuildingServerException;

    public Vector getPeerMarkerQuestionIds() throws RemoteException,
            BuildingServerException;

    public Hashtable getPeerMarkerQuestions() throws RemoteException,
            BuildingServerException;

    public Vector getPeerMarkerQuestionsInOrder() throws RemoteException,
            BuildingServerException;

    public Hashtable getStrings() throws RemoteException,
            BuildingServerException;

    public PeerMarkerQuestion createQuestion() throws RemoteException,
            BuildingServerException;

    public void removeQuestion(PrimaryKey id) throws RemoteException,
            BuildingServerException;

    public void changeQuestion(PrimaryKey id, PeerMarkerQuestion model)
            throws RemoteException, BuildingServerException;

    public void changeQuestionText(PrimaryKey qid, PrimaryKey tid,
            String new_text) throws RemoteException, BuildingServerException;

    public boolean hasSiblings() throws BuildingServerException,
            RemoteException;

    public Vector getPeerMarkerSiblings() throws BuildingServerException,
            RemoteException;

    public Vector everyoneWhoCanInSiblings(
            java.security.acl.Permission permission, boolean include_admin)
            throws BuildingServerException, RemoteException;

    public boolean canSubmit() throws RemoteException, BuildingServerException;

    public boolean canSubmit(PrimaryKey user_id) throws RemoteException,
            BuildingServerException;

    public String denySubmitMessage() throws RemoteException,
            BuildingServerException;

    public String denySubmitMessage(PrimaryKey user_id) throws RemoteException,
            BuildingServerException;

    public PeerMarkerResult record(PeerMarkerResponse[][] responses,
            int no_of_questions, int no_of_responses, PrimaryKey uid)
            throws RemoteException, BuildingServerException;

    public PeerMarkerResult getPeerMarkerResult() throws RemoteException,
            BuildingServerException;

    public PeerMarkerResult getPeerMarkerResult(PrimaryKey rid)
            throws RemoteException, BuildingServerException;

    public Hashtable getPeerMarkerResults() throws RemoteException,
            BuildingServerException;

    public Vector getPeerMarkerUsers() throws RemoteException,
            BuildingServerException;

    public PeerMarkerResponse getPeerMarkerResponse(PrimaryKey markerid,
            PrimaryKey markeeid, PrimaryKey questionid) throws RemoteException,
            BuildingServerException;

    public Hashtable getPeerMarkeeResponses(PrimaryKey entryid,
            PrimaryKey questionid) throws RemoteException,
            BuildingServerException;

    public Hashtable getPeerMarkerResponses(PrimaryKey entryid,
            PrimaryKey questionid) throws RemoteException,
            BuildingServerException;

}
