/**
 * Dette interface indeholder definitionen af opdaterings web services samt
 * getDRWFirm der som den eneste læse web service kræver brugernavn og kodeord
 * 
 * @author mh
 */
package dk.geus.jupiter.write;

import java.rmi.Remote;

import dk.geus.jupiter.table.Administrator;
import dk.geus.jupiter.table.BoreCatchCond;
import dk.geus.jupiter.table.CatchPerm;
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.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.IntakeCatchment;
import dk.geus.jupiter.table.MeasuringStation;
import dk.geus.jupiter.table.PlantCatchCond;
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.WaterImpExp;
import dk.geus.jupiter.table.WatlevMp;
import dk.geus.jupiter.table.Watlevel;
import dk.geus.jupiter.types.ElementError;
import dk.geus.jupiter.types.LocalizeInformations;
import dk.geus.jupiter.types.NewDrwChemSampleRet;
import dk.geus.jupiter.types.NewPlantIdRet;
import dk.geus.jupiter.types.NewWrrWatCourDrainRet;

/**
 * @author mh
 *
 */
public interface JupiterWriteInterface extends Remote {

	/**
   * @param userName
   * @param passWord
   * @return Returnerer en liste over alle adresser
   */
	public DRWFirm[] getDRWFirmPw(String userName, String passWord);

	/**
   * @param firmId
   * @param userName
   * @param passWord
   * @return Returnerer en adresse ud fra dens firmId
   */
	public DRWFirm getSingleDRWFirmPw(Integer firmId, String userName,
	    String passWord);

	/**
	 * @param admin
	 * @param userName
	 * @param passWord
	 * @return Returnerer en array af ElementError ved fejl, ellers null
	 */
	public ElementError[] insertAdministratorPw(Administrator admin,
	    String userName, String passWord);

	/**
   * @param plant
   *          af typen DRWPlant. Felterne Municipalityno, Companytype,
   *          Plantname, Xutm, Yutm og Datum skal være udfyldt
   * @return NewPlantIdRet der indeholder det nye anlægsnummer ved success
   *         ellers null og en array of ElementError med den / de fejl der var
   *         skyld i at der ikke blev givet et nyt anlægs id
   */
	public NewPlantIdRet insertDRWPlantPw(DRWPlant plant, String userName,
	    String passWord);

	/**
   * @param sample
   *          af typen DRWChemSample
   * @return NewDrwChemSampleRet der indeholder det nye prøvenummer ved success
   *         ellers null og en array of ElementError med den / de fejl der var
   *         skyld i at prøven ikke blev indsat
   */
	public NewDrwChemSampleRet insertDRWChemSamplePw(DRWChemSample sample,
	    String userName, String passWord);

	/**
   * @param analysis
   *          af typen DRWChemAnalysis
   * @return NewDrwChemAnalysisRet der indeholder Sampleid, Compoundno og
   *         Analysisno for analyses ved success ellers null og en array of
   *         ElementError med den / de fejl der var skyld i at der ikke blev
   *         givet et nyt anlægs id
   */
	public ElementError[] insertDRWChemAnalysisPw(DRWChemAnalysis analysis,
	    String userName, String passWord);

	public ElementError[] insertWatLevelPw(Watlevel watLev,
	    String userName, String passWord);

	public ElementError[] insertWatLevMpPw(WatlevMp watLevMp,
	    String userName, String passWord);

	/**
   * @param boreCatchCond
   * @param userName
   * @param passWord
   * @return
   */
	/**
	 * @param boreCatchCond
	 * @param userName
	 * @param passWord
	 * @return Returnerer en array af ElementError ved fejl, ellers null
	 */
	public ElementError[] insertBoreCatchCondPw(BoreCatchCond boreCatchCond,
	    String userName, String passWord);

	/**
	 * @param catchPerm
	 * @param userName
	 * @param passWord
	 * @return Returnerer en array af ElementError ved fejl, ellers null
	 */
	public ElementError[] insertCatchPermPw(CatchPerm catchPerm, 
			String userName, String passWord);
	
	/**
	 * @param drwFirm
	 * @param userName
	 * @param passWord
	 * @return Returnerer en array af ElementError ved fejl, ellers null
	 */
	public ElementError[] insertDRWFirmPw(DRWFirm drwFirm, String userName,
	    String passWord);

	/**
	 * @param drwFirmRef
	 * @param userName
	 * @param passWord
	 * @return Returnerer en array af ElementError ved fejl, ellers null
	 */
	public ElementError[] insertDRWFirmRefPw(DRWFirmRef drwFirmRef,
	    String userName, String passWord);

	/**
	 * @param drwPlantLandReg
	 * @param userName
	 * @param passWord
	 * @return Returnerer en array af ElementError ved fejl, ellers null
	 */
	public ElementError[] insertDRWPlantLandRegPw(
	    DRWPlantLandReg drwPlantLandReg, String userName, String passWord);

	
	/**
	 * @param drwPlantIntake
	 * @param userName
	 * @param passWord
	 * @return Returnerer en array af ElementError ved fejl, ellers null
	 */
	public ElementError[] insertDRWPlantIntakePw(DRWPlantIntake drwPlantIntake,
	    String userName, String passWord);

	/**
	 * @param drwSampleRemark
	 * @param userName
	 * @param passWord
	 * @return Returnerer en array af ElementError ved fejl, ellers null
	 */
	public ElementError[] insertDRWSampleRemarkPw(
	    DRWSampleRemark drwSampleRemark, String userName, String passWord);

	/**
	 * @param fieldWatCond
	 * @param userName
	 * @param passWord
	 * @return Returnerer en array af ElementError ved fejl, ellers null
	 */
	public ElementError[] insertFieldWatCondPw(FieldWatCond fieldWatCond,
	    String userName, String passWord);

	/**
	 * @param fieldWatSoilType
	 * @param userName
	 * @param passWord
	 * @return Returnerer en array af ElementError ved fejl, ellers null
	 */
	public ElementError[] insertFieldWatSoilTypePw(
	    FieldWatSoilType fieldWatSoilType, String userName, String passWord);

	/**
	 * @param grwChemAnalysis
	 * @param userName
	 * @param passWord
	 * @return Returnerer en array af ElementError ved fejl, ellers null
	 */
	public ElementError[] insertGRWChemAnalysisPw(
	    GRWChemAnalysis grwChemAnalysis, String userName, String passWord);

	/**
	 * @param grwSample
	 * @param userName
	 * @param passWord
	 * @return Returnerer en array af ElementError ved fejl, ellers null
	 */
	public ElementError[] insertGRWChemSamplePw(
	    GRWChemSample grwChemSample, String userName, String passWord);

	/**
	 * @param grwSampleRemark
	 * @param userName
	 * @param passWord
	 * @return Returnerer en array af ElementError ved fejl, ellers null
	 */
	public ElementError[] insertGRWSampleRemarkPw(
	    GRWSampleRemark grwSampleRemark, String userName, String passWord);

	/**
	 * @param intakeCatchment
	 * @param userName
	 * @param passWord
	 * @return Returnerer en array af ElementError ved fejl, ellers null
	 */
	public ElementError[] insertIntakeCatchmentPw(
	    IntakeCatchment intakeCatchment, String userName, String passWord);

	/**
	 * @param measuringStation
	 * @param userName
	 * @param passWord
	 * @return Returnerer en array af ElementError ved fejl, ellers null
	 */
	public ElementError[] insertMeasuringStationPw(
	    MeasuringStation measuringStation, String userName, String passWord);

	/**
	 * @param plantCatchCond
	 * @param userName
	 * @param passWord
	 * @return Returnerer en array af ElementError ved fejl, ellers null
	 */
	public ElementError[] insertPlantCatchCondPw(PlantCatchCond plantCatchCond,
	    String userName, String passWord);

	/**
	 * @param supplantAnalyseParam
	 * @param userName
	 * @param passWord
	 * @return Returnerer en array af ElementError ved fejl, ellers null
	 */
	public ElementError[] insertSupplAnalysesParamPw(
	    SupplAnalyseParam supplantAnalyseParam, String userName,
	    String passWord);

	/**
	 * @param treatmentPlant
	 * @param userName
	 * @param passWord
	 * @return Returnerer en array af ElementError ved fejl, ellers null
	 */
	public ElementError[] insertTreatmentPlantPw(TreatmentPlant treatmentPlant,
	    String userName, String passWord);

	/**
	 * @param wrrCatchment
	 * @param userName
	 * @param passWord
	 * @return Returnerer en array af ElementError ved fejl, ellers null
	 */
	public ElementError[] insertWRRCatchmentPw(WRRCatchment wrrCatchment,
	    String userName, String passWord);

	/**
	 * @param wrrCatchment
	 * @param userName
	 * @param passWord
	 * @return Returnerer en array af ElementError ved fejl, ellers null
	 */
	public ElementError[] insertWRRExportPw(WRRExport wrrCatchment,
	    String userName, String passWord);
	/**
	 * @param wrrFeeBill
	 * @param userName
	 * @param passWord
	 * @return Returnerer en array af ElementError ved fejl, ellers null
	 */
	public ElementError[] insertWRRFeeBillPw(WRRFeeBill wrrFeeBill,
	    String userName, String passWord);

	/**
	 * @param wrrSupply
	 * @param userName
	 * @param passWord
	 * @return Returnerer en array af ElementError ved fejl, ellers null
	 */
	public ElementError[] insertWRRSupplyPw(WRRSupply wrrSupply, String userName,
	    String passWord);

	/**
	 * @param wrrWatCourDrain
	 * @param userName
	 * @param passWord
	 * @return Returnerer en array af ElementError ved fejl, ellers null
	 */
	public NewWrrWatCourDrainRet insertWRRWatCourDrainPw(
	    WRRWatCourDrain wrrWatCourDrain, String userName, String passWord);

	/**
	 * @param wrrWatCourInflu
	 * @param userName
	 * @param passWord
	 * @return Returnerer en array af ElementError ved fejl, ellers null
	 */
	public ElementError[] insertWRRWatCourInfluPw(
	    WRRWatCourInflu wrrWatCourInflu, String userName, String passWord);

	/**
	 * @param administrator
	 * @param userName
	 * @param passWord
	 * @return Returnerer en array af ElementError ved fejl, ellers null
	 */
	public ElementError[] updateAdministratorPw(Administrator administrator,
	    String userName, String passWord);

	/**
	 * @param boreCatchCond
	 * @param userName
	 * @param passWord
	 * @return Returnerer en array af ElementError ved fejl, ellers null
	 */
	public ElementError[] updateBoreCatchCondPw(BoreCatchCond boreCatchCond,
	    String userName, String passWord);

	/**
	 * @param catchPerm
	 * @param userName
	 * @param passWord
	 * @return Returnerer en array af ElementError ved fejl, ellers null
	 */
	public ElementError[] updateCatchPermPw(CatchPerm catchPerm, String userName,
	    String passWord);

	/**
	 * @param drwChemAnalysis
	 * @param userName
	 * @param passWord
	 * @return Returnerer en array af ElementError ved fejl, ellers null
	 */
	public ElementError[] updateDRWChemAnalysisPw(
	    DRWChemAnalysis drwChemAnalysis, String userName, String passWord);

	/**
	 * @param drwChemSample
	 * @param userName
	 * @param passWord
	 * @return Returnerer en array af ElementError ved fejl, ellers null
	 */
	public ElementError[] updateDRWChemSamplePw(DRWChemSample drwChemSample,
	    String userName, String passWord);

	/**
	 * @param drwFirm
	 * @param userName
	 * @param passWord
	 * @return Returnerer en array af ElementError ved fejl, ellers null
	 */
	public ElementError[] updateDRWFirmPw(DRWFirm drwFirm, String userName,
	    String passWord);

	/**
	 * @param drwFirmRef
	 * @param userName
	 * @param passWord
	 * @return Returnerer en array af ElementError ved fejl, ellers null
	 */
	public ElementError[] updateDRWFirmRefPw(DRWFirmRef drwFirmRef,
	    String userName, String passWord);

	/**
	 * @param drwPlant
	 * @param userName
	 * @param passWord
	 * @return Returnerer en array af ElementError ved fejl, ellers null
	 */
	public ElementError[] updateDRWPlantPw(DRWPlant drwPlant, String userName,
	    String passWord);

	/**
	 * @param drwPlantIntake
	 * @param userName
	 * @param passWord
	 * @return Returnerer en array af ElementError ved fejl, ellers null
	 */
	public ElementError[] updateDRWPlantIntakePw(DRWPlantIntake drwPlantIntake,
	    String userName, String passWord);

	/**
	 * @param drwPlantLandReg
	 * @param userName
	 * @param passWord
	 * @return Returnerer en array af ElementError ved fejl, ellers null
	 */
	public ElementError[] updateDRWPlantLandRegPw(
	    DRWPlantLandReg drwPlantLandReg, String userName, String passWord);

	/**
	 * @param drwSampleRemark
	 * @param userName
	 * @param passWord
	 * @return Returnerer en array af ElementError ved fejl, ellers null
	 */
	public ElementError[] updateDRWSampleRemarkPw(
	    DRWSampleRemark drwSampleRemark, String userName, String passWord);

	/**
	 * @param fieldWatCond
	 * @param userName
	 * @param passWord
	 * @return Returnerer en array af ElementError ved fejl, ellers null
	 */
	public ElementError[] updateFieldWatCondPw(FieldWatCond fieldWatCond,
	    String userName, String passWord);

	/**
	 * @param fieldWatSoilType
	 * @param userName
	 * @param passWord
	 * @return Returnerer en array af ElementError ved fejl, ellers null
	 */
	public ElementError[] updateFieldWatSoilTypePw(
	    FieldWatSoilType fieldWatSoilType, String userName, String passWord);

	/**
	 * @param grwChemAnalysis
	 * @param userName
	 * @param passWord
	 * @return Returnerer en array af ElementError ved fejl, ellers null
	 */
	public ElementError[] updateGRWChemAnalysisPw(
	    GRWChemAnalysis grwChemAnalysis, String userName, String passWord);

	/**
	 * @param grwChemSample
	 * @param userName
	 * @param passWord
	 * @return Returnerer en array af ElementError ved fejl, ellers null
	 */
	public ElementError[] updateGRWChemSamplePw(GRWChemSample grwChemSample,
	    String userName, String passWord);

	/**
	 * @param grwSampleRemark
	 * @param userName
	 * @param passWord
	 * @return Returnerer en array af ElementError ved fejl, ellers null
	 */
	public ElementError[] updateGRWSampleRemarkPw(
	    GRWSampleRemark grwSampleRemark, String userName, String passWord);

	/**
	 * @param intakeCatchment
	 * @param userName
	 * @param passWord
	 * @return Returnerer en array af ElementError ved fejl, ellers null
	 */
	public ElementError[] updateIntakeCatchmentPw(
	    IntakeCatchment intakeCatchment, String userName, String passWord);

	/**
	 * @param measuringStation
	 * @param userName
	 * @param passWord
	 * @return Returnerer en array af ElementError ved fejl, ellers null
	 */
	public ElementError[] updateMeasuringStationPw(
	    MeasuringStation measuringStation, String userName, String passWord);

	/**
	 * @param plantCatchCond
	 * @param userName
	 * @param passWord
	 * @return Returnerer en array af ElementError ved fejl, ellers null
	 */
	public ElementError[] updatePlantCatchCondPw(PlantCatchCond plantCatchCond,
	    String userName, String passWord);

	/**
	 * @param supplantAnalyseParam
	 * @param userName
	 * @param passWord
	 * @return Returnerer en array af ElementError ved fejl, ellers null
	 */
	public ElementError[] updateSupplAnalyseParamPw(
	    SupplAnalyseParam supplantAnalyseParam, String userName,
	    String passWord);

	/**
	 * @param treatmentPlant
	 * @param userName
	 * @param passWord
	 * @return Returnerer en array af ElementError ved fejl, ellers null
	 */
	public ElementError[] updateTreatmentPlantPw(TreatmentPlant treatmentPlant,
	    String userName, String passWord);

	/**
	 * @param watlevel
	 * @param userName
	 * @param passWord
	 * @return Returnerer en array af ElementError ved fejl, ellers null
	 */
	public ElementError[] updateWatlevelPw(Watlevel watlevel, String userName,
	    String passWord);

	/**
	 * @param watlevMp
	 * @param userName
	 * @param passWord
	 * @return Returnerer en array af ElementError ved fejl, ellers null
	 */
	public ElementError[] updateWatlevMpPw(WatlevMp watlevMp, String userName,
	    String passWord);

	/**
	 * @param wrrCatchment
	 * @param userName
	 * @param passWord
	 * @return Returnerer en array af ElementError ved fejl, ellers null
	 */
	public ElementError[] updateWRRCatchmentPw(WRRCatchment wrrCatchment,
	    String userName, String passWord);

	/**
	 * @param wrrExport
	 * @param userName
	 * @param passWord
	 * @return Returnerer en array af ElementError ved fejl, ellers null
	 */
	public ElementError[] updateWRRExportPw(WRRExport wrrExport, String userName,
	    String passWord);

	/**
	 * @param wrrFeeBill
	 * @param userName
	 * @param passWord
	 * @return Returnerer en array af ElementError ved fejl, ellers null
	 */
	public ElementError[] updateWRRFeeBillPw(WRRFeeBill wrrFeeBill,
	    String userName, String passWord);

	/**
	 * @param wrrSupply
	 * @param userName
	 * @param passWord
	 * @return Returnerer en array af ElementError ved fejl, ellers null
	 */
	public ElementError[] updateWRRSupplyPw(WRRSupply wrrSupply, String userName,
	    String passWord);

	/**
	 * @param wrrWatCourDrain
	 * @param userName
	 * @param passWord
	 * @return Returnerer en array af ElementError ved fejl, ellers null
	 */
	public ElementError[] updateWRRWatCourDrainPw(
	    WRRWatCourDrain wrrWatCourDrain, String userName, String passWord);

	/**
	 * @param wrrWatCourInFlu
	 * @param userName
	 * @param passWord
	 * @return Returnerer en array af ElementError ved fejl, ellers null
	 */
	public ElementError[] updateWRRWatCourInFluPw(
	    WRRWatCourInflu wrrWatCourInFlu, String userName, String passWord);

	/**
   * Opdaterer boringens anvendelse ud fra DGUnummer og ny anvendelse.
   * 
   * @param boreholeNo
   *          DGU-nummeret på den boring anvendelsen skal ændres for
   * @param boreholeUse
   *          Den nye anvendelse
   * @param userName
   *          Brugernavn for den bruger der ændrer anvendelsen
   * @param passWord
   *          Kodeord for den bruger der ændrer anvendelsen
   * @return En array af ElementError der angiver eventuelle fejl ellers null
   */
	public ElementError[] updateBorholeUsePw(String boreholeNo, String boreholeUse,
	    String userName, String passWord);
	
	/**
	 * @param locInf
	 * @param userName
	 * @param passWord
	 * @return
	 */
	public ElementError[] updateLocalizeInformationsPw(LocalizeInformations locInf,
	    String userName, String passWord);

}
