import eu.etaxonomy.cdm.api.service.ITaxonService;\r
import eu.etaxonomy.cdm.api.service.IClassificationService;\r
import eu.etaxonomy.cdm.api.service.ITermService;\r
-import eu.etaxonomy.cdm.api.service.config.ITaxonServiceConfigurator;\r
-import eu.etaxonomy.cdm.api.service.config.TaxonServiceConfiguratorImpl;\r
+import eu.etaxonomy.cdm.api.service.config.IFindTaxaAndNamesConfigurator;\r
+import eu.etaxonomy.cdm.api.service.config.FindTaxaAndNamesConfiguratorImpl;\r
import eu.etaxonomy.cdm.api.service.pager.Pager;\r
import eu.etaxonomy.cdm.api.service.search.SearchResult;\r
import eu.etaxonomy.cdm.database.UpdatableRoutingDataSource;\r
import eu.etaxonomy.cdm.model.common.MarkerType;\r
import eu.etaxonomy.cdm.model.common.RelationshipBase.Direction;\r
import eu.etaxonomy.cdm.model.description.DescriptionElementBase;\r
+import eu.etaxonomy.cdm.model.description.Feature;\r
import eu.etaxonomy.cdm.model.description.TaxonDescription;\r
import eu.etaxonomy.cdm.model.location.NamedArea;\r
import eu.etaxonomy.cdm.model.location.NamedAreaLevel;\r
import eu.etaxonomy.cdm.model.media.Media;\r
+import eu.etaxonomy.cdm.model.media.MediaRepresentation;\r
import eu.etaxonomy.cdm.model.media.MediaRepresentationPart;\r
import eu.etaxonomy.cdm.model.media.MediaUtils;\r
import eu.etaxonomy.cdm.model.name.NameRelationship;\r
private ITaxonService taxonService;\r
\r
@Autowired\r
- private ITermService markerTypeService;\r
-\r
- @Autowired\r
- private IMarkerService markerService;\r
- //private IService<MarkerType> markerTypeService;\r
+ private ITermService termService;\r
\r
@Autowired\r
private IFeatureTreeService featureTreeService;\r
});\r
\r
private static final List<String> TYPEDESIGNATION_INIT_STRATEGY = Arrays.asList(new String []{\r
- //"$",\r
"typeSpecimen.$",\r
"citation.authorTeam.$",\r
"typeName",\r
+ "typeStatus"\r
});\r
\r
protected static final List<String> TAXONNODE_WITHTAXON_INIT_STRATEGY = Arrays.asList(new String []{\r
PagerParameters pagerParams = new PagerParameters(pageSize, pageNumber);\r
pagerParams.normalizeAndValidate(response);\r
\r
- ITaxonServiceConfigurator config = new TaxonServiceConfiguratorImpl();\r
+ IFindTaxaAndNamesConfigurator config = new FindTaxaAndNamesConfiguratorImpl();\r
config.setPageNumber(pagerParams.getPageIndex());\r
config.setPageSize(pagerParams.getPageSize());\r
config.setTitleSearchString(query);\r
/**\r
* @param clazz\r
* @param queryString\r
- * @param treeUuid TODO unimplemented in TaxonServiceImpl !!!!\r
+ * @param treeUuid\r
* @param languages\r
+ * @param features one or more feature uuids\r
* @param pageNumber\r
* @param pageSize\r
* @param request\r
@RequestParam(value = "clazz", required = false) Class clazz,\r
@RequestParam(value = "query", required = true) String queryString,\r
@RequestParam(value = "tree", required = false) UUID treeUuid,\r
+ @RequestParam(value = "features", required = false) UuidList featureUuids,\r
@RequestParam(value = "languages", required = false) List<Language> languages,\r
+ @RequestParam(value = "hl", required = false) Boolean highlighting,\r
@RequestParam(value = "pageNumber", required = false) Integer pageNumber,\r
@RequestParam(value = "pageSize", required = false) Integer pageSize,\r
HttpServletRequest request,\r
PagerParameters pagerParams = new PagerParameters(pageSize, pageNumber);\r
pagerParams.normalizeAndValidate(response);\r
\r
+ if(highlighting == null){\r
+ highlighting = false;\r
+ }\r
+\r
Classification classification = null;\r
if(treeUuid != null){\r
classification = classificationService.find(treeUuid);\r
}\r
- Pager<SearchResult<TaxonBase>> pager = service.findByDescriptionElementFullText(clazz, queryString, classification, languages, pagerParams.getPageSize(), pagerParams.getPageIndex(), ((List<OrderHint>)null), SIMPLE_TAXON_INIT_STRATEGY);\r
+\r
+ List<Feature> features = null;\r
+ if(featureUuids != null){\r
+ features = new ArrayList<Feature>(featureUuids.size());\r
+ for(UUID uuid : featureUuids){\r
+ features.add((Feature) termService.find(uuid));\r
+ }\r
+ }\r
+\r
+ Pager<SearchResult<TaxonBase>> pager = service.findByDescriptionElementFullText(clazz, queryString, classification, features, languages, highlighting, pagerParams.getPageSize(), pagerParams.getPageIndex(), ((List<OrderHint>)null), SIMPLE_TAXON_INIT_STRATEGY);\r
return pager;\r
}\r
\r
\r
if(markerTypeUUIDs != null && !markerTypeUUIDs.isEmpty()){\r
sMarkerTypeUUIDs = new HashSet<UUID>(markerTypeUUIDs);\r
- markerTypeTerms = markerTypeService.find(sMarkerTypeUUIDs);\r
+ markerTypeTerms = termService.find(sMarkerTypeUUIDs);\r
} else if(markerTypeUUIDs != null && markerTypeUUIDs.isEmpty()){\r
markerTypeTerms = new ArrayList<DefinedTermBase>();\r
}\r
Taxon t = getCdmBaseInstance(Taxon.class, uuid, response, (List<String>)null);\r
\r
//MarkerType useMarkerType = (MarkerType) markerTypeService.find(UUID.fromString("2e6e42d9-e92a-41f4-899b-03c0ac64f059"));\r
- MarkerType useMarkerType = (MarkerType) markerTypeService.find(UUID.fromString("2e6e42d9-e92a-41f4-899b-03c0ac64f039"));\r
+ MarkerType useMarkerType = (MarkerType) termService.find(UUID.fromString("2e6e42d9-e92a-41f4-899b-03c0ac64f039"));\r
\r
//find(UUID.fromString("2e6e42d9-e92a-41f4-899b-03c0ac64f059"));\r
Set<MarkerType> markerTypes = new HashSet<MarkerType>();\r
private List<Media> getMediaForTaxon(Taxon taxon, Class<? extends MediaRepresentationPart> type, String[] mimeTypes,\r
Integer widthOrDuration, Integer height, Integer size){\r
\r
- Pager<TaxonDescription> p =\r
- descriptionService.getTaxonDescriptions(taxon, null, null, null, null, TAXONDESCRIPTION_MEDIA_INIT_STRATEGY);\r
-\r
- // pars the media and quality parameters\r
-\r
-\r
- // collect all media of the given taxon\r
- boolean limitToGalleries = false;\r
- List<Media> taxonMedia = new ArrayList<Media>();\r
- List<Media> taxonGalleryMedia = new ArrayList<Media>();\r
- for(TaxonDescription desc : p.getRecords()){\r
+ List<Media> taxonGalleryMedia = service.listTaxonDescriptionMedia(taxon, false, TAXONDESCRIPTION_MEDIA_INIT_STRATEGY);\r
\r
- if(desc.isImageGallery()){\r
- for(DescriptionElementBase element : desc.getElements()){\r
- for(Media media : element.getMedia()){\r
- taxonGalleryMedia.add(media);\r
- }\r
- }\r
- } else if(!limitToGalleries){\r
- for(DescriptionElementBase element : desc.getElements()){\r
- for(Media media : element.getMedia()){\r
- taxonMedia.add(media);\r
- }\r
- }\r
- }\r
+ Map<Media, MediaRepresentation> mediaRepresentationMap = MediaUtils.findPreferredMedia(taxonGalleryMedia, type,\r
+ mimeTypes, null, widthOrDuration, height, size);\r
\r
+ List<Media> filteredMedia = new ArrayList<Media>(mediaRepresentationMap.size());\r
+ for(Media media : mediaRepresentationMap.keySet()){\r
+ media.getRepresentations().clear();\r
+ media.addRepresentation(mediaRepresentationMap.get(media));\r
+ filteredMedia.add(media);\r
}\r
\r
- taxonGalleryMedia.addAll(taxonMedia);\r
-\r
- List<Media> returnMedia = MediaUtils.findPreferredMedia(taxonGalleryMedia, type,\r
- mimeTypes, null, widthOrDuration, height, size);\r
-\r
- return returnMedia;\r
+ return filteredMedia;\r
}\r
\r
\r