X-Git-Url: https://dev.e-taxonomy.eu/gitweb/cdmlib.git/blobdiff_plain/8d3f25e9dabd40a581ab1dfbb51b8989c4ef1043..6ab939077b75134f676560103ea6fac26c6fa3d8:/cdmlib-remote/src/main/java/eu/etaxonomy/cdm/remote/controller/NameCatalogueController.java diff --git a/cdmlib-remote/src/main/java/eu/etaxonomy/cdm/remote/controller/NameCatalogueController.java b/cdmlib-remote/src/main/java/eu/etaxonomy/cdm/remote/controller/NameCatalogueController.java index 8229a29a34..15e993588a 100755 --- a/cdmlib-remote/src/main/java/eu/etaxonomy/cdm/remote/controller/NameCatalogueController.java +++ b/cdmlib-remote/src/main/java/eu/etaxonomy/cdm/remote/controller/NameCatalogueController.java @@ -22,6 +22,10 @@ import javax.servlet.http.HttpServletResponse; import java.util.Hashtable; +import org.apache.log4j.Level; +import org.joda.time.DateTime; +import org.joda.time.format.DateTimeFormat; +import org.joda.time.format.DateTimeFormatter; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.ResourceLoaderAware; import org.springframework.core.io.Resource; @@ -33,8 +37,10 @@ import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.servlet.ModelAndView; import eu.etaxonomy.cdm.api.service.IClassificationService; +import eu.etaxonomy.cdm.api.service.ICommonService; import eu.etaxonomy.cdm.api.service.INameService; import eu.etaxonomy.cdm.api.service.ITaxonService; +import eu.etaxonomy.cdm.api.service.ITermService; import eu.etaxonomy.cdm.common.DocUtils; import eu.etaxonomy.cdm.remote.dto.common.ErrorResponse; @@ -44,7 +50,11 @@ import eu.etaxonomy.cdm.remote.dto.namecatalogue.NameSearch; import eu.etaxonomy.cdm.remote.dto.namecatalogue.TaxonInformation; import eu.etaxonomy.cdm.remote.view.HtmlView; import eu.etaxonomy.cdm.model.common.CdmBase; +import eu.etaxonomy.cdm.model.common.DefinedTermBase; +import eu.etaxonomy.cdm.model.common.IdentifiableSource; import eu.etaxonomy.cdm.model.common.Language; +import eu.etaxonomy.cdm.model.common.Representation; +import eu.etaxonomy.cdm.model.description.Feature; import eu.etaxonomy.cdm.model.name.NonViralName; import eu.etaxonomy.cdm.model.name.TaxonNameBase; import eu.etaxonomy.cdm.model.reference.Reference; @@ -98,13 +108,19 @@ public class NameCatalogueController extends BaseController NAME_SEARCH_INIT_STRATEGY = Arrays.asList(new String[] { "combinationAuthorTeam.$", @@ -134,18 +150,38 @@ public class NameCatalogueController extends BaseController TAXON_INFORMATION_INIT_STRATEGY = Arrays.asList(new String[] { "name.titleCache", - "name.rank.titleCache", + "name.rank.titleCache", + + "sec.updated", + "sec.titleCache", + "sources.citation.sources.idNamespace", + "sources.citation.sources.idInSource", + "synonymRelations.synonym.name.rank.titleCache", + "synonymRelations.synonym.sec.updated", + "synonymRelations.synonym.sec.titleCache", + "synonymRelations.synonym.sources.citation.sources.idNamespace", + "synonymRelations.synonym.sources.citation.sources.idInSource", "synonymRelations.acceptedTaxon.name.rank.titleCache", + "synonymRelations.acceptedTaxon.sec.titleCache", + "synonymRelations.acceptedTaxon.sources.citation.sources.idNamespace", + "synonymRelations.acceptedTaxon.sources.citation.sources.idInSource", "synonymRelations.type.$", - "taxonRelations.toTaxon.$", - "taxonRelations.fromTaxon.$", - "taxonRelations.type.$", - "synonymRelations.relatedTo.name.rank.titleCache", + "relationsFromThisTaxon.type.$", - "relationsFromThisTaxon.relatedTo.name.rank.titleCache", + "relationsFromThisTaxon.toTaxon.name.rank.titleCache", + "relationsFromThisTaxon.toTaxon.sec.updated", + "relationsFromThisTaxon.toTaxon.sec.titleCache", + "relationsFromThisTaxon.toTaxon.sources.citation.sources.idNamespace", + "relationsFromThisTaxon.toTaxon.sources.citation.sources.idInSource", + "relationsToThisTaxon.type.$", - "relationsToThisTaxon.relatedFrom.name.rank.titleCache", + "relationsToThisTaxon.fromTaxon.name.rank.titleCache", + "relationsToThisTaxon.fromTaxon.sec.updated", + "relationsToThisTaxon.fromTaxon.sec.titleCache", + "relationsToThisTaxon.fromTaxon.sources.citation.sources.idNamespace", + "relationsToThisTaxon.fromTaxon.sources.citation.sources.idInSource", + "taxonNodes", "taxonNodes.classification" }); @@ -162,6 +198,10 @@ public class NameCatalogueController extends BaseController COMMON_INIT_STRATEGY = Arrays.asList(new String[] {}); + public NameCatalogueController() { super(); setInitializationStrategy(Arrays.asList(new String[] { "$" })); @@ -337,7 +377,8 @@ public class NameCatalogueController extends BaseController sources = taxon.getSources(); + String[] didname = getDatasetIdName(sources); + ti.setResponseTaxon(tb.getTitleCache(), nvn.getTitleCache(), nvn.getRank().getTitleCache(), ACCEPTED_NAME_STATUS, buildFlagMap(tb), - classificationMap); - + classificationMap, + "", + didname[0], + didname[1], + secTitle, + modified); + + Set synRelationships = taxon.getSynonymRelations(); // add synonyms (if exists) to taxon information object for (SynonymRelationship sr : synRelationships) { @@ -563,7 +623,29 @@ public class NameCatalogueController extends BaseController trToSet = taxon.getRelationsToThisTaxon(); for (TaxonRelationship tr : trToSet) { String titleFrom = tr.getFromTaxon().getTitleCache(); - TaxonNameBase fromnvn = (TaxonNameBase) tr.getToTaxon().getName(); + TaxonNameBase fromnvn = (TaxonNameBase) tr.getFromTaxon().getName(); String name = fromnvn.getTitleCache(); String rank = fromnvn.getRank().getTitleCache(); String uuid = tr.getFromTaxon().getUuid().toString(); @@ -593,18 +698,52 @@ public class NameCatalogueController extends BaseController sources = synonym.getSources(); + String[] didname = getDatasetIdName(sources); + + String secTitle = (synonym.getSec() == null) ? "" : synonym.getSec().getTitleCache(); ti.setResponseTaxon(synonym.getTitleCache(), nvn.getTitleCache(), nvn.getRank().getTitleCache(), SYNONYM_STATUS, buildFlagMap(synonym), - new TreeMap()); + new TreeMap(), + "", + didname[0], + didname[1], + secTitle, + modified); // add accepted taxa (if exists) to taxon information object Set synRelationships = synonym.getSynonymRelations(); @@ -621,7 +760,24 @@ public class NameCatalogueController extends BaseController sources) { + String didname[] = {"",""}; + Iterator itr = sources.iterator(); + while(itr.hasNext()) { + IdentifiableSource source = itr.next(); + Reference ref = source.getCitation(); + Set ref_sources = ref.getSources(); + Iterator ref_itr = ref_sources.iterator(); + while(ref_itr.hasNext()) { + IdentifiableSource ref_source = ref_itr.next(); + if(ref_source.getIdNamespace().equals(DWC_DATASET_ID)) { + didname[0] = ref_source.getIdInSource(); + break; + } + } + if(!didname[0].isEmpty()) { + didname[1] = ref.getTitleCache(); + break; + } + } + return didname; + } + /** * Returns the match mode by parsing the input string of wildcards. *