/* Ara - capture species and specimen data
*
* Copyright (C) 2009 INBio (Instituto Nacional de Biodiversidad)
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package org.inbio.ara.facade.germplasm;
import java.util.List;
import javax.ejb.Remote;
import org.inbio.ara.dto.germplasm.AccessionDTO;
import org.inbio.ara.dto.germplasm.AccessionMovementDTO;
import org.inbio.ara.dto.germplasm.BreedDTO;
import org.inbio.ara.dto.germplasm.PassportDTO;
import org.inbio.ara.dto.germplasm.SemenGatheringDTO;
import org.inbio.ara.dto.germplasm.SementalDTO;
import org.inbio.ara.dto.inventory.PersonDTO;
import org.inbio.ara.dto.inventory.SelectionListDTO;
import org.inbio.ara.dto.inventory.TaxonDTO;
import org.inbio.ara.dto.security.NomenclaturalGroupDTO;
/**
*
* @author dasolano
*/
@Remote
public interface GermplasmFacadeRemote {
/**
* Return all elements for a selection list id
* @param selectionListId
* @return
*/
//cambiar <<---------------
public List<SelectionListDTO>getElementsForSelectionList(long selectionListId);
/**
* Return a list of nomenclatural groups for a taxon id
* @param taxonId
* @return
*/
public List<NomenclaturalGroupDTO> getNomenclaturalGroupsByTaxon(Long taxonId);
/**
* Save a Passport
* @param passportDTO
*/
public void savePassport(PassportDTO passportDTO, Long[] selectedNomenclaturalGroups);
/**
* Get all donor persons
* @return
*/
public List<PersonDTO> getDonorPersons();
/**
* Get All taxons for a collection id
* @param collectionId
* @return
*/
public List<TaxonDTO> getAllTaxonsByCollectionIdAndTaxonomicalRangeId(Long collectionId, Long taxonomicalRangeId);
/**
* Get a passport list paginated
* @param firstResult
* @param lastResult
* @return
*/
public List<PassportDTO> getPassportListPaginated(int firstResult, int maxResults);
/**
* Return the quantity of passports
* @return
*/
public Long countPassport();
/**
* Update a passport
* @param passportDTO
*/
public void updatePassport(PassportDTO passportDTO, Long[] selectedNomenclaturalGroups);
/**
* Get the taxonomical level of a taxon
* @param taxonId
* @return
*/
public Long getTaxonomicalLevelForTaxon(Long taxonId);
/**
* Get a passport list for a simple search with lot of elements
* @param query
* @param collectionId
* @param firstResult
* @param maxResult
* @return
*/
public List<PassportDTO> getPassportSimpleSearch(String query, Long collectionId, int firstResult, int maxResult);
/**
* Get a list of passport for the advanced search
* @param passportDTO
* @param collectionId
* @param firstResult
* @param maxResult
* @return
*/
public List<PassportDTO> getPassportAdvancedSearch(PassportDTO passportDTO, Long collectionId, int firstResult, int maxResult);
/**
* Count the quantity of passports for the advanced search
* @param passportDTO
* @param collectionId
* @param firstResult
* @param maxResult
* @return
*/
public Long countPassportAdvancedSearch(PassportDTO passportDTO, Long collectionId);
/**
* Count the quantity of passports for a simple search
* @param query
* @param collectionId
* @param firstResult
* @param maxResult
* @return
*/
public Long countPassportSimpleSearch(String query, Long collectionId);
/**
* Count the quantity of accessions for the advanced search
* @param passportDTO
* @param collectionId
* @param firstResult
* @param maxResult
* @return
*/
public Long countAccessionAdvancedSearch(AccessionDTO accessionDTO, Long collectionId);
/**
* Count the quantity of accessions for a simple search
* @param query
* @param collectionId
* @param firstResult
* @param maxResult
* @return
*/
public Long countAccessionSimpleSearch(String query, Long collectionId);
/**
* Get a accessions list paginated
* @param firstResult
* @param lastResult
* @return
*/
public List<AccessionDTO> getAccessionListPaginated(int firstResult, int maxResults);
/**
* Return the quantity of accessions
* @return
*/
public Long countAccessions();
/**
* Get a passport list for a simple search with lot of elements
* @param query
* @param collectionId
* @param firstResult
* @param maxResult
* @return
*/
public List<AccessionDTO> getAccessionSimpleSearch(String query, Long collectionId, int firstResult, int maxResult);
/**
* Get a list of accession for the advanced search
* @param accessionDTO
* @param collectionId
* @param firstResult
* @param maxResult
* @return
*/
public List<AccessionDTO> getAccessionAdvancedSearch(AccessionDTO accessionDTO, Long collectionId, int firstResult, int maxResult);
/**
* Save an Accession
* @param accessionDTO
*/
public Long saveAccession(AccessionDTO accessionDTO)throws IllegalArgumentException;
/**
* Update an Accession
* @param accessionDTO
*/
public AccessionDTO updateAccession(AccessionDTO accessionDTO);
public void deleteAccession(Long accessionId);
/**
* Get all donor persons
* @return
*/
public List<PersonDTO> getResponsablePersons();
/**
* Save an Accession Movement
* @param accessionMovementDTO
*/
public void saveAccessionMovement(AccessionMovementDTO accessionMovementDTO);
/**
* Update an Accession movement
* @param accessionMovementDTO
*/
public void updateAccessionMovement(AccessionMovementDTO accessionMovementDTO);
/**
* delete an Accession movement
* @param accessionMovementDTO
* @return
*/
public AccessionDTO deleteAccessionMovement(AccessionMovementDTO accessionMovementDTO);
/**
* Obtain all the acession movements for an accession Id specified
* @param accessionId
* @param firstResult
* @param maxResult
* @return List<AccessionMovementDTO> list of accession movements
*/
public List<AccessionMovementDTO> getAllAccessionMovementByAccesionIdPaginated(Long accessionId, int firstResult, int maxResult);
/**
* Count all the accession movements for an accession id specified
* @param accessionId
* @return Long
*/
public Long countAccessionMovements(Long accessionId);
public List<AccessionMovementDTO> getAccessionMovementsSimpleSearch(String query, Long collectionId, int firstResult, int maxResult);
public List<AccessionMovementDTO> getAccessionMovementsAdvancedSearch(AccessionMovementDTO accessionMovement, Long collectionId, int firstResult, int maxResult);
public Long countAccessionMovementsSimpleSearch(String query, Long collectionId);
public Long countAccessionMovementsAdvancedSearch(AccessionMovementDTO accessionMovement, Long collectionId);
/**
* Return true if an Accession id has accession movements,
* False if not
* @param accessionId
* @return
*/
public boolean haveMovementsAndAccessions(Long accessionId);
/**
* Add to an Accession weight the given value
* @param accessionDTO
* @param weigth
* @return
*/
public AccessionDTO addToAccessionCurrentWeight(AccessionDTO accessionDTO, Long weigth);
/**
* Delete passport
* @param PassportId
*/
public void deletePassport(Long PassportId);
/**
* Return true if a Passport has accession associated to it, false if not
* @param passportId
* @return
*/
public boolean haveAccessions(Long passportId);
//** semen module **//
/**
* Save breed
* @param breedDTO
*/
public void saveBreed(BreedDTO breedDTO);
/**
* Update breed
* @param breedDTO
*/
public void updateBreed(BreedDTO breedDTO);
/**
* Obtain a list of breeds paginated
* @param firstResult
* @param maxResult
* @return List<BreedDTO>
*/
public List<BreedDTO> getAllBreedPaginated(int firstResult, int maxResult);
/**
* Count all breeds
* @return
*/
public Long countAllBreed();
/**
* Get a list of breeds paginated for a simple search
* @param query
* @param firstResult
* @param maxResult
* @return List<BreedDTO>
*/
public List<BreedDTO> getBreedSimpleSearch(String query, int firstResult, int maxResult);
/**
* Count all the breeds for a simple search
* @param query
* @return
*/
public Long countBreedSimpleSearch(String query);
/**
* Save semental
* @param sementalDTO
* @return SementalDTO
*/
public SementalDTO saveSemental(SementalDTO sementalDTO);
/**
* Update semental
* @param sementalDTO
*/
public void updateSemental(SementalDTO sementalDTO);
/**
* Obtain all sementals paginated
* @param firstResult
* @param maxResult
* @return List<SementalDTO>
*/
public List<SementalDTO> getAllSementalPaginated(int firstResult, int maxResult);
/**
* Count all sementals
* @return
*/
public Long countAllSemental();
/**
* Obtain a list of sementals for a simple search
* @param query
* @param firstResult
* @param maxResult
* @return List<SementalDTO>
*/
public List<SementalDTO> getSementalSimpleSearch(String query, int firstResult, int maxResult);
/**
* Count all sementals for a simple search
* @param query
* @return Long
*/
public Long countSementalSimpleSearch(String query);
/**
* Obtain a list of sementals for an advance search
* @param sementalDTO
* @param firstResult
* @param maxResult
* @return List<SementalDTO>
*/
public List<SementalDTO> getSementalAdvancedSearch(SementalDTO sementalDTO, int firstResult, int maxResult);
/**
* Count all sementals for an advance search
* @param sementalDTO
* @return Long
*/
public Long countSementalAdvancedSearch(SementalDTO sementalDTO);
/**
* Save semen gathering
* @param semenGatheringDTO
*/
public void saveSemenGathering(SemenGatheringDTO semenGatheringDTO);
/**
* update semen gathering
* @param semenGatheringDTO
*/
public void updateSemenGathering(SemenGatheringDTO semenGatheringDTO);
/**
* Obtain all the semen gathering paginated for a semental Id
* @param sementalId
* @param firstResult
* @param maxResult
* @return List<SemenGatheringDTO>
*/
public List<SemenGatheringDTO> getAllSemenGatheringPaginated(Long sementalId, int firstResult, int maxResult);
/**
* Count all semen gathering for a semental Id
* @param sementalId
* @return Long
*/
public Long countAllSemenGathering(Long sementalId);
/**
* Obtain a list of semen gathering for a simple search
* @param query
* @param firstResult
* @param maxResult
* @return List<SemenGatheringDTO>
*/
public List<SemenGatheringDTO> getSemenGatheringlSimpleSearch(String query, Long sementalId, int firstResult, int maxResult);
/**
* Count all semen gathering for a simple search
* @param query
* @return Long
*/
public Long countSemenGatheringSimpleSearch(String query, Long sementalId);
/**
* Obtain a list of semen gathering for an advance search
* @param semenGatheringDTO
* @param firstResult
* @param maxResult
* @return List<SemenGatheringDTO>
*/
public List<SemenGatheringDTO> getSemenGatheringAdvancedSearch(SemenGatheringDTO semenGatheringDTO, Long sementalId, int firstResult, int maxResult);
/**
* Count all semen gathering for an advance search
* @param semenGatheringDTO
* @return Long
*/
public Long countSemenGatheringAdvancedSearch(SemenGatheringDTO semenGatheringDTO, Long sementalId);
/**
* get All breeds
* @return List<BreedDTO>
*/
public List<BreedDTO> getAllBreeds();
/**
* Return true if a breed has sementals associated, false if not
* @param breedId
* @return boolean
*/
public boolean haveSementals(Long breedId);
/**
* Return true if a semental has semen gatherins associated, false if not
* @param sementalId
* @return boolean
*/
public boolean haveSemenGathering(Long sementalId);
/**
* Delete breed
* @param breedId
*/
public void deleteBreed(Long breedId);
/**
* Delete semental
* @param sementalId
*/
public void deleteSemental(Long sementalId);
/**
* Delete semen gathering
* @param semenGatheringId
*/
public void deleteSemenGathering(Long semenGatheringId);
/**
* Return a list of taxon in a specify Taxonomical Range Id for a the Plantae kingdom
* @param taxonomicalRangeId
* @return
*/
public List<TaxonDTO> getAllTaxonsByPlantaeKingdomAndTaxonomicalRangeId(Long taxonomicalRangeId);
/**
* Return a list of taxon in a specify Taxonomical Range Id for a the Animalia kingdom
* @param taxonomicalRangeId
* @return
*/
public List<TaxonDTO> getAllTaxonsByAnimaliaKingdomAndTaxonomicalRangeId(Long taxonomicalRangeId);
/**
* return the total number of straw, for a sementalid
* @param sementalId
* @return
*/
public Long cumulativeStrawQuantity(Long sementalId);
}