/**
 * Dette interface indeholder definitionen af de web services der returnerer
 * oplysninger fra PCJupiterXL i objekter eller lister af objekter der svarer i
 * opbygningen af tabellerne. Disse web services vil, i modsætning til den
 * generelle funktion
 * {@link dk.geus.JupiterWrite.select#SelectService JupiterSelect(String)} i
 * pakken {@link dk.geus.Jupiter.select} være optimeret for hurtige
 * svartider
 * 
 * @author mh
 */
package dk.geus.jupiter.read;

import java.rmi.RemoteException;

import dk.geus.jupiter.table.AbandGrout;
import dk.geus.jupiter.table.AbandParam;
import dk.geus.jupiter.table.Administrator;
import dk.geus.jupiter.table.BioStra;
import dk.geus.jupiter.table.BoreCatchCond;
import dk.geus.jupiter.table.BoreDoc;
import dk.geus.jupiter.table.Borehole;
import dk.geus.jupiter.table.BorhDiam;
import dk.geus.jupiter.table.BorhRema;
import dk.geus.jupiter.table.Casing;
import dk.geus.jupiter.table.CatchPerm;
import dk.geus.jupiter.table.ChroStra;
import dk.geus.jupiter.table.ClimStra;
import dk.geus.jupiter.table.Code;
import dk.geus.jupiter.table.CodeType;
import dk.geus.jupiter.table.CompoundList;
import dk.geus.jupiter.table.DRWChemAnalysis;
import dk.geus.jupiter.table.DRWChemSample;
import dk.geus.jupiter.table.DRWFirm;
import dk.geus.jupiter.table.DRWFirmRef;
import dk.geus.jupiter.table.DRWPlant;
import dk.geus.jupiter.table.DRWPlantIntake;
import dk.geus.jupiter.table.DRWPlantLandReg;
import dk.geus.jupiter.table.DRWSampleRemark;
import dk.geus.jupiter.table.DeposEnv;
import dk.geus.jupiter.table.Discharg;
import dk.geus.jupiter.table.DrilMeth;
import dk.geus.jupiter.table.FieldWatCond;
import dk.geus.jupiter.table.FieldWatSoilType;
import dk.geus.jupiter.table.GRWChemAnalysis;
import dk.geus.jupiter.table.GRWChemSample;
import dk.geus.jupiter.table.GRWSampleRemark;
import dk.geus.jupiter.table.GravPack;
import dk.geus.jupiter.table.Grout;
import dk.geus.jupiter.table.Intake;
import dk.geus.jupiter.table.IntakeCatchment;
import dk.geus.jupiter.table.JupFieDe;
import dk.geus.jupiter.table.JupField;
import dk.geus.jupiter.table.JupHeaDe;
import dk.geus.jupiter.table.JupHeadr;
import dk.geus.jupiter.table.JupHiera;
import dk.geus.jupiter.table.JupTabDe;
import dk.geus.jupiter.table.JupTable;
import dk.geus.jupiter.table.LimitList;
import dk.geus.jupiter.table.LithSamp;
import dk.geus.jupiter.table.Lithstra;
import dk.geus.jupiter.table.MapSheet;
import dk.geus.jupiter.table.MeasuringStation;
import dk.geus.jupiter.table.Municipality2007;
import dk.geus.jupiter.table.Outtake;
import dk.geus.jupiter.table.PlantCatchCond;
import dk.geus.jupiter.table.PlantDoc;
import dk.geus.jupiter.table.Pumping;
import dk.geus.jupiter.table.RckSymCo;
import dk.geus.jupiter.table.Recovery;
import dk.geus.jupiter.table.RenaBorh;
import dk.geus.jupiter.table.SECAnalysis;
import dk.geus.jupiter.table.SECSample;
import dk.geus.jupiter.table.SECSampleMix;
import dk.geus.jupiter.table.Screen;
import dk.geus.jupiter.table.StoreDoc;
import dk.geus.jupiter.table.SupplAnalyseParam;
import dk.geus.jupiter.table.TreatmentPlant;
import dk.geus.jupiter.table.WRRCatchment;
import dk.geus.jupiter.table.WRRExport;
import dk.geus.jupiter.table.WRRFeeBill;
import dk.geus.jupiter.table.WRRSupply;
import dk.geus.jupiter.table.WRRWatCourDrain;
import dk.geus.jupiter.table.WRRWatCourInflu;
import dk.geus.jupiter.table.WatLevRound;
import dk.geus.jupiter.table.WatlevMp;
import dk.geus.jupiter.table.Watlevel;

public interface JupiterTablesInterface extends java.rmi.Remote {

	public MapSheet[] getMapSheet() throws RemoteException;

	/**
	 * @param plantId
	 * @return En liste af målesteder der er knyttet til anlægget angivet ved plantId
	 * @throws RemoteException
	 */
	public MeasuringStation[] getMeasuringStation(Integer plantId)
	    throws RemoteException;
	/**
	 * @return En liste over 2007 kommuner
	 * @throws RemoteException
	 */
	public Municipality2007[] getMunicipality2007() throws RemoteException;

	/**
	 * @param boreholeNo
	 * @return Returnerer alle geologiske lag for den boring som er angivet
	 *         ved boreholeNo
	 * @throws Exception
	 */
	public LithSamp[] getLithsamp(String boreholeNo) throws RemoteException;

	/**
	 * @param boreholeNo
	 * @return Returnerer alle pejlepunkter for boringen angivet
	 *         boreholeNo
	 * @throws Exception
	 */
	public WatlevMp[] getWatlevMp(String boreholeNo) throws RemoteException;
	/**
	 * @param boreholeNo
	 * @param intakeNo
	 * @return Returnerer alle pejlepunkter for boringen, angivet
	 *         boreholeNo, der hører til indtaget angivet ved intakeNo
	 * @throws Exception
	 */
	public WatlevMp[] getWatlevMpIntake(String boreholeNo, Integer intakeNo)
	    throws RemoteException;

	/**
	 * @param boreholeNo
	 * @return Returnerer boremetoderne for boringen angivet ved boreholeNo
	 * @throws Exception
	 */
	public DrilMeth[] getDrilMeth(String boreholeNo) throws RemoteException;

	/**
   * @param boreholeNo
   * @return Returnerer en liste af markvandingsvilkår der knytter sig til
   *         boringen
   * @throws RemoteException
   */
	public FieldWatCond[] getFieldWatCond(String boreholeNo)
	    throws RemoteException;

	/**
	 * @param boreholeNo
	 * @return Returnerer en liste af de jordtyper markvandingsboringen vander
	 * @throws RemoteException
	 */
	public FieldWatSoilType[] getFieldWatSoilType(String boreholeNo)
	    throws RemoteException;

	/**
	 * @param boreholeNo
	 * @return Returnerer gruskastningerne for boringen angivet ved
	 *         boreholeNo
	 * @throws Exception
	 */
	public GravPack[] getGravPack(String boreholeNo) throws RemoteException;

	/**
	 * @param boreholeNo
	 * @return Returnerer lerspærrerne for boringen angivet ved boreholeNo
	 * @throws Exception
	 */
	public Grout[] getGrout(String boreholeNo) throws RemoteException;

	/**
	 * @param boreholeNo
	 * @return Returnerer pumpninger for boringen angivet ved boreholeNo
	 * @throws Exception
	 */
	public Pumping[] getPumping(String boreholeNo) throws RemoteException;

	/**
	 * @param boreholeNo
	 * @param intakeNo
	 * @return Returnerer pumpninger for boringen angivet ved boreholeNo
	 *         udfør på intaget angivet ved intakeNo
	 * @throws Exception
	 */
	public Pumping[] getPumpingIntake(String boreholeNo, Integer intakeNo)
	    throws RemoteException;

	/**
	 * @param boreholeNo
	 * @return Returnerer forerør for boringen angivet ved boreholeNo
	 * @throws Exception
	 */
	public Casing[] getCasing(String boreholeNo) throws RemoteException;

	/**
	 * @param boreholeNo
	 * @return Returnerer aflejringsmiljø for boringen angivet ved
	 *         boreholeNo
	 * @throws Exception
	 */
	public DeposEnv[] getDeposEnv(String boreholeNo) throws RemoteException;

	/**
	 * @param boreholeNo
	 * @return Returnerer klimastratigrafi for boringen angivet ved
	 *         boreholeNo
	 * @throws Exception
	 */
	public ClimStra[] getClimstra(String boreholeNo) throws RemoteException;

	/**
	 * @param boreholeNo
	 * @return Returnerer indtag for boringen angivet ved boreholeNo
	 * @throws Exception
	 */
	public Intake[] getIntake(String boreholeNo) throws RemoteException;

	/**
	 * @param intakePlantId
	 * @return Returnerer en liste af MH??
	 * @throws RemoteException
	 */
	public IntakeCatchment[] getIntakeCatchment(Integer intakePlantId)
	    throws RemoteException;

	/**
   * @return Returnerer en liste af feltbeskrivelser for tabellen angivet ved
   *         tableName. Del af PCJupiterXL's dictionary
   * @throws RemoteException
   */
	public JupFieDe[] getJupFieDe(String tableName) throws RemoteException;

	/**
   * @param tableName
   * @return Returnerer en liste af felter for tabellen angivet ved tableName.
   *         Del af PCJupiterXL's dictionary
   * @throws RemoteException
   */
	public JupField[] getJupField(String tableName) throws RemoteException;

	/**
	 * @return
	 * @throws RemoteException
	 */
	public JupHeaDe[] getJupHeaDe() throws RemoteException;

	/**
	 * @return
	 * @throws RemoteException
	 */
	public JupHeadr[] getJupHeadr() throws RemoteException;

	/**
	 * @return
	 * @throws RemoteException
	 */
	public JupHiera[] getJupHiera() throws RemoteException;

	/**
	 * @return Returnerer en liste af tabelskrivelser for tabellen angivet ved
   *         tableName. Del af PCJupiterXL's dictionary
	 * @throws RemoteException
	 */
	public JupTabDe[] getJupTabDe() throws RemoteException;

	
	/**
	 * @return Returnerer en liste af tabellerfor tabellen angivet ved
   *         tableName. Del af PCJupiterXL's dictionary
	 * @throws RemoteException
	 */
	public JupTable[] getJupTable() throws RemoteException;

	/**
	 * @return Returnerer en liste af grænseværdier
	 * @throws RemoteException
	 */
	public LimitList[] getLimitList() throws RemoteException;

	/**
	 * @param boreholeNo
	 * @return Returnerer biostratigrafi for boringen angivet ved boreholeNo
	 * @throws Exception
	 */
	public BioStra[] getBiostra(String boreholeNo) throws RemoteException;

	/**
	 * @return Returnerer en liste af 
	 * @throws RemoteException
	 */
	public RckSymCo[] getRckSymCo() throws RemoteException;

	/**
	 * @param boreholeNo
	 * @return Returnerer tilbagepejlinger for boringen angivet ved
	 *         boreholeNo
	 * @throws Exception
	 */
	public Recovery[] getRecovery(String boreholeNo, Integer pumpingNo) throws RemoteException;

	/**
	 * @param boreholeNo
	 * @return Returnerer boreholsdimentioner for boringen angivet ved
	 *         boreholeNo
	 * @throws Exception
	 */
	public BorhDiam[] getBorhDiam(String boreholeNo) throws RemoteException;

	/**
	 * @param boreholeNo
	 * @return Returnerer kommentarer for boringen angivet ved boreholeNo
	 * @throws Exception
	 */
	public BorhRema[] getBorhRema(String boreholeNo) throws RemoteException;

	/**
	 * @param boreholeNo
	 * @return Returnerer pejlinger for boringen angivet ved boreholeNo
	 * @throws Exception
	 */
	public Watlevel[] getWatlevel(String boreholeNo) throws RemoteException;
	
	/**
   * @param boreholeNo
   * @param IntakeNo
   * @return Returnerer alle pejlinger der knytter til sig til bestemt indtag
   *         for boringen angivet ved boreholeNo
   * @throws RemoteException
   */
	public Watlevel[] getWatlevelIntake(String boreholeNo, Integer IntakeNo) throws RemoteException;

	/**
   * @param watLevRoundNo
   * @return Returnerer beskrivelse af den synkronpejlerunde som pejlingen med
   *         watLevRoundNo hører til
   * @throws RemoteException
   */
	public WatLevRound getWatLevRound(Integer watLevRoundNo)
	    throws RemoteException;

	/**
	 * @param plantId
	 * @return Returnerer indvindingen angivet ved plantId MH??
	 * @throws RemoteException
	 */
	public WRRCatchment[] getWRRCatchment(Integer plantId) throws RemoteException;

	/**
   * @param plantId
   * @return Returnerer en liste af den Import / Export af vand der har været
   *         fra anlægget angivet ved plantId
   * @throws RemoteException
   */
	public WRRExport[] getWRRExport(Integer plantId) throws RemoteException;

	/**
	 * @param plantId
	 * @return Returnerer en liste af gebyrberegninger for anlægget angivet ved plantId
	 * @throws RemoteException
	 */
	public WRRFeeBill[] getWRRFeeBill(Integer plantId) throws RemoteException;

	/**
	 * @param plantId
	 * @return Returnerer en liste af forsyninger for anlælgget angivet ved plantID
	 * @throws RemoteException
	 */
	public WRRSupply[] getWRRSupply(Integer plantId) throws RemoteException;

	/**
	 * @param drainageAreaId
	 * @return Returnerer en liste af vandløbsoplande for det MH?? der har drainageAreaId
	 * @throws RemoteException
	 */
	public WRRWatCourDrain[] getWRRWatCourDrain(Integer drainageAreaId)
	    throws RemoteException;

	/**
	 * @param plantId
	 * @return Returnerer en liste med vandløbspåvirkninger for anlægget angivet ved plantId
	 * @throws RemoteException
	 */
	public WRRWatCourInflu[] getWRRWatCourInflu(Integer plantId)
	    throws RemoteException;

	/**
	 * @param boreholeNo
	 * @return Returnerer lithostratigrafi for boringen angivet ved
	 *         boreholeNo
	 * @throws Exception
	 */
	public Lithstra[] getLithstra(String boreholeNo) throws RemoteException;

	/**
	 * @param boreholeNo
	 * @return Returnerer pumpningsydelse for boringen angivet ved
	 *         boreholeNo
	 * @throws Exception
	 */
	public Discharg[] getDischarg(String boreholeNo) throws RemoteException;

	/**
	 * @param boreholeNo
	 * @return Returnerer en boring angivet ved boreholeNo
	 * @throws Exception
	 */
	public Borehole getSingleBorehole(String boreholeNo) throws RemoteException;

	/**
	 * @param boreholeNo
	 * @return Returnerer oplysninger om en borings tidligere dgunumre
	 *         angivet ved boreholeNo
	 * @throws Exception
	 */
	public RenaBorh[] getRenaBorh(String boreholeNo) throws RemoteException;

	/**
	 * @param boreholeNo
	 * @return Returnerer filtre for boringen angivet ved boreholeNo
	 * @throws Exception
	 */
	public Screen[] getScreen(String boreholeNo) throws RemoteException;

	/**
   * @param sampleId
   * @return Returnerer en liste af sedimentkemiske analyser for den
   *         sedimentkemiske prøve angivet ved sampleId
   * @throws RemoteException
   */
	public SECAnalysis[] getSECAnalysis(Integer sampleId) throws RemoteException;

	/**
   * @param boreholeNo
   * @return Returnerer en liste over de sedimentkemiske prøver der stammer fra
   *         boringen angivet ved boreholeNo
   * @throws RemoteException
   */
	public SECSample[] getSECSample(String boreholeNo) throws RemoteException;

	/**
   * @param sourceSampleId
   * @return Returnerer en liste af de prøver en sammenblande sedimentkemisk
   *         prøve består af MH??
   * @throws RemoteException
   */
	public SECSampleMix[] getSECSampleMix(Integer sourceSampleId)
	    throws RemoteException;

	/**
	 * @param fileId
	 * @return Returnerer beskrivelsen af dokument angivet ved fileId
	 * @throws RemoteException
	 */
	public StoreDoc[] getStoreDoc(Integer fileId) throws RemoteException;

	/**
   * @param boreholeNo
   * @param permissionId
   * @return Returnerer en liste af supplerende analyseparametre der hører til
   *         boringen angivet ved boreholeNo MH??
   * @throws RemoteException
   */
	public SupplAnalyseParam[] getSupplantAnalyseParam(String boreholeNo,
	    Integer permissionId) throws RemoteException;

	/**
   * @param plantId
   * @return Returnerer en liste af de behandlingsanlæg der knytter5 sig til
   *         anlægget angivet ved plantId
   * @throws RemoteException
   */
	public TreatmentPlant[] getTreatmentPlant(Integer plantId) throws RemoteException;

	/**
	 * @param boreholeNo
	 * @return Returnerer chronostratigrafi for boringen angivet ved
	 *         boreholeNo
	 * @throws Exception
	 */
	public ChroStra[] getChrostra(String boreholeNo) throws RemoteException;

	/**
	 * @param boreholeNo
	 * @return Returnerer en array af AbandGrout med oplysninger om
	 *         sløjfepakning for boringen angivet ved boreholeNo
	 * @throws Exception
	 */
	public AbandGrout[] getAbandGrout(String boreholeNo) throws RemoteException;

	/**
	 * @param boreholeNo
	 * @return Returnerer en array af AbandParam med oplysninger om hvilke
	 *         stoffer der er skyld i sløjfningen af boringen
	 * @throws Exception
	 */
	public AbandParam[] getAbandParam(String boreholeNo) throws RemoteException;

	/**
   * @param CountyNo
   * @return Returnerer en liste af administratorer knyttet til amtet med
   *         amtsnummer countyNo
   * @throws RemoteException
   */
	public Administrator[] getAdministratorCou(Integer countyNo)
	    throws RemoteException;

	/**
   * @param municipalityNo
   * @return Returnerer en liste af administratorer knyttet til kommunen med
   *         kommunenummeret municipalityNo
   * @throws RemoteException
   */
	public Administrator[] getAdministratorMun(Integer municipalityNo)
	    throws RemoteException;

	/**
	 * @param boreholeNo
	 * @return Returnerer en array af GRWChemSample med alle de
	 *         grundvandskemiske analyser der stammer fra boringen angivet
	 *         med boreholeNo
	 * @throws Exception
	 */
	public GRWChemSample[] getGRWChemSamples(String boreholeNo)
	    throws RemoteException;

	/**
	 * @param boreholeNo
	 * @return Returnerer en GRWChemAnalysis array med alle
	 *         grundvandskemiske analyseresultater der stammer fra boringen
	 *         angivet med boreholeNo
	 * @throws Exception
	 */
	public GRWChemAnalysis[] getGRWChemAnalysis(Integer sampleID)
	    throws RemoteException;

	/**
   * @param sampleId
   * @return Returnerer en liste af bemærkninger der knytter sig til
   *         grundvandsprøven med prøvenummeret sampleId
   * @throws RemoteException
   */
	public GRWSampleRemark[] getGRWSampleRemark(Integer sampleId)
	    throws RemoteException;

	/**
	 * @param boreholeNo
	 * @return Returnerer en array af BoreDoc der hører til boringen angivet
	 *         med boreholeNo
	 * @throws Exception
	 */
	public BoreDoc[] getBoreDoc(String boreholeNo) throws RemoteException;

	/**
	 * @param codeTypeNo
	 * @return Returnerer en array af Code der har Codetypen codeTypeNo
	 * @throws Exception
	 */
	public Code[] getCode(Integer codeTypeNo) throws RemoteException;

	/**
	 * @return returnerer en array af CodeType med alle PC Jupiter XL kode
	 *         typer
	 * @throws Exception
	 */
	public CodeType[] getCodeType() throws RemoteException;

	/**
   * @param boreholeNo
   * @return Returnerer en liste af udtag der knytter sig til boringen angivet
   *         ved boreholeNo
   * @throws RemoteException
   */
	public Outtake[] getOuttake(String boreholeNo) throws RemoteException;

	/**
   * @param plantId
   * @return Returnerer en liste af anlæsg indvindingsforhold der knytter sig
   *         til anlægget angivet ved plantId
   * @throws RemoteException
   */
	public PlantCatchCond[] getPlantCatchCond(Integer plantId) throws RemoteException;

	/**
	 * @param plantId
	 * @return Returnerer en liste af de dokumenter der knytter sig til anlægget angivet ved plantId
	 * @throws RemoteException
	 */
	public PlantDoc[] getPlantDoc(Integer plantId) throws RemoteException;

	/**
	 * @param plantId
	 * @return Returnerer et indvindingsanlæg angivet ved plantId 
	 * @throws RemoteException
	 */
	public DRWPlant getSingleDRWPlant(Integer plantId) throws RemoteException;

	/**
	 * @param plantId
	 * @return Returnerer en array af typen DRWChemSample med alle de
	 *         vandprøver der hører til anlæget plantId
	 * @throws Exception
	 */
	public DRWChemSample[] getDRWChemSample(Integer plantId) throws RemoteException;

	/**
	 * @param sampleId
	 * @return Returnerer en array af type DRWChemAnalysis med alle de
	 *         drikkevandsanalyser der hører til vandprøven sampleId
	 * @throws Exception
	 */
	public DRWChemAnalysis[] getDRWChemAnalysis(Integer sampleId)
	    throws RemoteException;

	/**
	 * @param plantId
	 * @return Returnerer en array af typen DRWPlantIntake med alle de
	 *         boringer og indtag der hører til anlæget plantId
	 * @throws Exception
	 */
	public DRWPlantIntake[] getDRWPlantIntakePlant(Integer plantId)
	    throws RemoteException;

	/**
   * @param boreholeNo
   * @return Returnerer en liste af de anlæg der knytter sig til boringen
   *         angivet ved boreholeNo
   * @throws RemoteException
   */
	public DRWPlantIntake[] getDRWPlantIntakeBor(String boreholeNo)
	    throws RemoteException;

	/**
	 * @param sampleNo
	 * @return Returneer en array af typen DRWSampleRemark med alle de
	 *         bemærkninger der hører til prøven sampleNo
	 * @throws Exception
	 */
	public DRWSampleRemark[] getDRWSampleRemark(Integer sampleNo)
	    throws RemoteException;

	/**
	 * @param plantId
	 * @return Returnerer en array af typen DRWPlantLandReg med alle de
	 *         matrikler der hører til anlæget plantId
	 * @throws Exception
	 */
	public DRWPlantLandReg[] getDRWPlantLandReg(Integer plantId)
	    throws RemoteException;

	/**
   * @param PermissionId
   * @return Returnerer en liste af indvindingstilladelser der knytter sig til
   *         tilladelsen angivet ved permissionsId
   * @throws RemoteException
   */
	public CatchPerm[] getCatchPerm(Integer permissionId) throws RemoteException;

	/**
	 * @return Returnerer en (kode)liste af stoffer 
	 * @throws RemoteException
	 */
	public CompoundList[] getCompoundList() throws RemoteException;

	/**
	 * @param firmId
	 * @return Returnerer en virksomhed med den angivne firmId
	 * @throws RemoteException
	 */
	public DRWFirm getDRWFirm(Integer firmId) throws RemoteException;

	/**
   * @param plantId
   * @return Returnerer en liste af virksomhedder der knytter sig til et anlæg
   *         angivet ved plantId
   * @throws RemoteException
   */
	public DRWFirmRef[] getDRWFirmRef(Integer plantId) throws RemoteException;

	/**
   * @param boreholeNo
   * @return Returnerer en liste af indvindingsvilkår der knytter sig til
   *         boringen angivet ved boreholeNo
   * @throws RemoteException
   */
	public BoreCatchCond[] getBoreCatchCond(String boreholeNo)
	    throws RemoteException;


}
