import eu.etaxonomy.cdm.api.service.IAgentService;
import eu.etaxonomy.cdm.api.service.IGroupService;
+import eu.etaxonomy.cdm.api.service.IMediaService;
import eu.etaxonomy.cdm.api.service.INameService;
import eu.etaxonomy.cdm.api.service.IOccurrenceService;
import eu.etaxonomy.cdm.api.service.IReferenceService;
import eu.etaxonomy.cdm.model.common.IdentifiableEntity;
import eu.etaxonomy.cdm.model.common.RelationshipBase;
import eu.etaxonomy.cdm.model.common.User;
+import eu.etaxonomy.cdm.model.media.Media;
import eu.etaxonomy.cdm.model.name.NameRelationship;
import eu.etaxonomy.cdm.model.name.TaxonNameBase;
import eu.etaxonomy.cdm.model.occurrence.DerivedUnit;
-import eu.etaxonomy.cdm.model.occurrence.FieldUnit;
import eu.etaxonomy.cdm.model.occurrence.SpecimenOrObservationBase;
import eu.etaxonomy.cdm.model.reference.Reference;
import eu.etaxonomy.cdm.model.taxon.TaxonBase;
*/
public List<SpecimenOrObservationBase> findOccurrences(IIdentifiableEntityServiceConfigurator<SpecimenOrObservationBase> configurator, boolean showFieldUnits){
List<SpecimenOrObservationBase> records = new ArrayList<SpecimenOrObservationBase>();
+ final List<String> BASE_OCCURRENCE_INIT_STRATEGY = Arrays.asList(new String[] {
+ "collection",
+ "descriptions",
+ "identifiers",
+ "derivationEvents.originals",
+ "derivedFrom.originals",
+ "gatheringEvent.country.representations",
+ "gatheringEvent.collector",
+ "gatheringEvent.locality",
+ "descriptions.descriptionElements",
+ "kindOfUnit",
+ "amplificationResults",
+ "sequences.singleReadAlignments",
+ "mediaSpecimen"
+ });
+
if(configurator.getClazz()==null){
if(showFieldUnits){
configurator.setClazz(SpecimenOrObservationBase.class);
configurator.setClazz(DerivedUnit.class);
}
}
- final List<String> OCCURRENCE_INIT_STRATEGY = Arrays.asList(new String[] {
- "collection",
- "descriptions",
- "identifiers",
- "derivationEvents.originals",
- "derivedFrom.originals"
- });
- configurator.setPropertyPaths(OCCURRENCE_INIT_STRATEGY);
- if(configurator.getClazz().equals(SpecimenOrObservationBase.class)){
- //get FieldUnits + DerivedUnits
- configurator.setClazz(DerivedUnit.class);
- int derivedUnitCount = CdmStore.getService(IOccurrenceService.class).countOccurrences(configurator);
- configurator.setClazz(FieldUnit.class);
- int fieldUnitCount = CdmStore.getService(IOccurrenceService.class).countOccurrences(configurator);
-
- if(checkLargeResult(derivedUnitCount+fieldUnitCount)){
- configurator.setClazz(DerivedUnit.class);
- records.addAll(CdmStore.getService(IOccurrenceService.class).findByTitle(configurator).getRecords());
- configurator.setClazz(FieldUnit.class);
- records.addAll(CdmStore.getService(IOccurrenceService.class).findByTitle(configurator).getRecords());
- }
-
+ List<String> occurrencePropertyPaths = new ArrayList<String>();
+ occurrencePropertyPaths.addAll(BASE_OCCURRENCE_INIT_STRATEGY);
+ for(String propertyPath:BASE_OCCURRENCE_INIT_STRATEGY) {
+ occurrencePropertyPaths.add("derivationEvents.derivatives." + propertyPath);
}
- else if(checkLargeResult(CdmStore.getService(IOccurrenceService.class).countOccurrences(configurator))){
+ configurator.setPropertyPaths(occurrencePropertyPaths);
+
+ if(checkLargeResult(CdmStore.getService(IOccurrenceService.class).countOccurrences(configurator))){
records = CdmStore.getService(IOccurrenceService.class).findByTitle(configurator).getRecords();
}
addUuidSearchResults(records, configurator, IOccurrenceService.class);
private boolean checkLargeResult(int count) {
- if(count > MAX_RESULTS_BEFORE_WARNING){
+ return checkLargeResult(count, MAX_RESULTS_BEFORE_WARNING);
+ }
+
+ private boolean checkLargeResult(int count, int maxBeforWarning) {
+ if(count > maxBeforWarning){
return MessageDialog.openConfirm(Display.getDefault().getActiveShell(), "Large result expected",
String.format("The current search will return %s objects. This will " +
"take a long time and/or might render the editor unusable. Please consider refining your search.", count));
return NO_RESULTS;
}
+ public List findMedia(IIdentifiableEntityServiceConfigurator configurator) {
+ if(checkLargeResult(CdmStore.getService(IMediaService.class).countByTitle(configurator))){
+ List<Media> records = CdmStore.getService(IMediaService.class).findByTitle(configurator).getRecords();
+ addUuidSearchResults(records, configurator, IMediaService.class);
+ return records;
+ }
+ return NO_RESULTS;
+ }
+
}