import eu.etaxonomy.cdm.model.media.Media;\r
import eu.etaxonomy.cdm.model.media.MediaRepresentation;\r
import eu.etaxonomy.cdm.model.media.MediaUtils;\r
-import eu.etaxonomy.cdm.model.molecular.Amplification;\r
import eu.etaxonomy.cdm.model.molecular.AmplificationResult;\r
import eu.etaxonomy.cdm.model.molecular.DnaSample;\r
import eu.etaxonomy.cdm.model.molecular.Sequence;\r
\r
\r
// Switch groups\r
- oldHomotypicalGroup.removeTypifiedName(synonymName);\r
+ oldHomotypicalGroup.removeTypifiedName(synonymName, false);\r
newHomotypicalGroup.addTypifiedName(synonymName);\r
\r
//remove existing basionym relationships\r
results = dao.getTaxaByNameForEditor(configurator.isDoTaxa(), configurator.isDoSynonyms(), configurator.isDoNamesWithoutTaxa(), configurator.isDoMisappliedNames(),configurator.getTitleSearchStringSqlized(), configurator.getClassification(), configurator.getMatchMode(), configurator.getNamedAreas());\r
}\r
if (configurator.isDoTaxaByCommonNames()) {\r
- \r
//if(configurator.getPageSize() == null ){\r
List<UuidAndTitleCache<IdentifiableEntity>> commonNameResults = dao.getTaxaByCommonNameForEditor(configurator.getTitleSearchStringSqlized(), configurator.getClassification(), configurator.getMatchMode(), configurator.getNamedAreas());\r
if(commonNameResults != null){\r
Boolean limitToGalleries, Boolean includeTaxonDescriptions, Boolean includeOccurrences,\r
Boolean includeTaxonNameDescriptions, List<String> propertyPath) {\r
\r
+ // logger.setLevel(Level.TRACE);\r
+// Logger.getLogger("org.hibernate.SQL").setLevel(Level.TRACE);\r
+\r
logger.trace("listMedia() - START");\r
\r
Set<Taxon> taxa = new HashSet<Taxon>();\r
*/\r
@Override\r
public DeleteResult deleteTaxon(Taxon taxon, TaxonDeletionConfigurator config, Classification classification) {\r
- \r
+\r
if (config == null){\r
config = new TaxonDeletionConfigurator();\r
}\r
\r
//remove name if possible (and required)\r
if (name != null && config.isDeleteNameIfPossible()){\r
-\r
nameResult = nameService.delete(name, config.getNameDeletionConfig());\r
-\r
}\r
\r
- \r
- \r
if (nameResult.isError()){\r
//result.setError();\r
result.addRelatedObject(name);\r
taxonSet.addAll(synonym.getAcceptedTaxa());\r
}\r
for (Taxon relatedTaxon : taxonSet){\r
- // dao.deleteSynonymRelationships(synonym, relatedTaxon);\r
+ relatedTaxon = HibernateProxyHelper.deproxy(relatedTaxon, Taxon.class);\r
relatedTaxon.removeSynonym(synonym, false);\r
this.saveOrUpdate(relatedTaxon);\r
}\r
\r
//remove synonym (if necessary)\r
\r
- UUID uuid = null;\r
if (synonym.getSynonymRelations().isEmpty()){\r
TaxonNameBase<?,?> name = synonym.getName();\r
synonym.setName(null);\r
- uuid = dao.delete(synonym);\r
+ dao.delete(synonym);\r
\r
//remove name if possible (and required)\r
if (name != null && config.isDeleteNameIfPossible()){\r
return result;\r
}\r
\r
- \r
+\r
}\r
return result;\r
// else{\r
// ---- search criteria\r
luceneSearch.setCdmTypRestriction(clazz);\r
\r
- textQuery.add(taxonBaseQueryFactory.newTermQuery("titleCache", queryString), Occur.SHOULD);\r
- textQuery.add(taxonBaseQueryFactory.newDefinedTermQuery("name.rank", queryString, languages), Occur.SHOULD);\r
+ if(!queryString.isEmpty() && !queryString.equals("*") && !queryString.equals("?") ) {\r
+ textQuery.add(taxonBaseQueryFactory.newTermQuery("titleCache", queryString), Occur.SHOULD);\r
+ textQuery.add(taxonBaseQueryFactory.newDefinedTermQuery("name.rank", queryString, languages), Occur.SHOULD);\r
+ }\r
+\r
+ if(textQuery.getClauses().length > 0) {\r
+ finalQuery.add(textQuery, Occur.MUST);\r
+ }\r
\r
- finalQuery.add(textQuery, Occur.MUST);\r
\r
if(classification != null){\r
finalQuery.add(taxonBaseQueryFactory.newEntityIdQuery("taxonNodes.classification.id", classification), Occur.MUST);\r
if (!(ref instanceof TaxonNameBase)){\r
if (!config.isDeleteSynonymRelations() && (ref instanceof SynonymRelationship)){\r
message = "The Taxon can't be deleted as long as it has synonyms.";\r
- \r
+\r
}\r
if (!config.isDeleteDescriptions() && (ref instanceof DescriptionBase)){\r
message = "The Taxon can't be deleted as long as it has factual data.";\r
- \r
+\r
}\r
\r
if (!config.isDeleteTaxonNodes() && (ref instanceof TaxonNode)){\r
message = "The Taxon can't be deleted as long as it belongs to a taxon node.";\r
- \r
+\r
}\r
if (!config.isDeleteTaxonRelationships() && (ref instanceof TaxonNode)){\r
if (!config.isDeleteMisappliedNamesAndInvalidDesignations() && (((TaxonRelationship)ref).getType().equals(TaxonRelationshipType.MISAPPLIED_NAME_FOR())|| ((TaxonRelationship)ref).getType().equals(TaxonRelationshipType.INVALID_DESIGNATION_FOR()))){\r
message = "The Taxon can't be deleted as long as it has misapplied names or invalid designations.";\r
- \r
+\r
} else{\r
message = "The Taxon can't be deleted as long as it belongs to a taxon node.";\r
- \r
+\r
}\r
}\r
if (ref instanceof PolytomousKeyNode){\r
message = "The Taxon can't be deleted as long as it is referenced by a polytomous key node.";\r
- \r
+\r
}\r
\r
if (HibernateProxyHelper.isInstanceOf(ref, IIdentificationKey.class)){\r
message = "Taxon can't be deleted as it is used in an identification key. Remove from identification key prior to deleting this name";\r
- \r
+\r
\r
}\r
\r
//TaxonInteraction\r
if (ref.isInstanceOf(TaxonInteraction.class)){\r
message = "Taxon can't be deleted as it is used in taxonInteraction#taxon2";\r
- \r
+\r
}\r
\r
//TaxonInteraction\r
if (ref.isInstanceOf(DeterminationEvent.class)){\r
message = "Taxon can't be deleted as it is used in a determination event";\r
- \r
+\r
}\r
\r
}\r
}\r
return result;\r
}\r
- \r
+\r
@Override\r
public List<TaxonBase> findTaxaByName(MatchingTaxonConfigurator config){\r
List<TaxonBase> taxonList = dao.getTaxaByName(true, false, false, config.getTaxonNameTitle(), null, MatchMode.EXACT, null, 0, 0, config.getPropertyPath());\r
return taxonList;\r
}\r
- \r
+\r
@Override\r
@Transactional(readOnly = true)\r
public <S extends TaxonBase> Pager<FindByIdentifierDTO<S>> findByIdentifier(\r
if (subtreeFilter == null){\r
return findByIdentifier(clazz, identifier, identifierType, matchmode, includeEntity, pageSize, pageNumber, propertyPaths);\r
}\r
- \r
+\r
Integer numberOfResults = dao.countByIdentifier(clazz, identifier, identifierType, subtreeFilter, matchmode);\r
List<Object[]> daoResults = new ArrayList<Object[]>();\r
if(numberOfResults > 0) { // no point checking again\r
daoResults = dao.findByIdentifier(clazz, identifier, identifierType, subtreeFilter,\r
matchmode, includeEntity, pageSize, pageNumber, propertyPaths);\r
}\r
- \r
+\r
List<FindByIdentifierDTO<S>> result = new ArrayList<FindByIdentifierDTO<S>>();\r
for (Object[] daoObj : daoResults){\r
if (includeEntity){\r
result.add(new FindByIdentifierDTO<S>((DefinedTerm)daoObj[0], (String)daoObj[1], (S)daoObj[2]));\r
}else{\r
- result.add(new FindByIdentifierDTO<S>((DefinedTerm)daoObj[0], (String)daoObj[1], (UUID)daoObj[2], (String)daoObj[3])); \r
+ result.add(new FindByIdentifierDTO<S>((DefinedTerm)daoObj[0], (String)daoObj[1], (UUID)daoObj[2], (String)daoObj[3]));\r
}\r
}\r
return new DefaultPagerImpl<FindByIdentifierDTO<S>>(pageNumber, numberOfResults, pageSize, result);\r
}\r
\r
+ @Override\r
+ public SynonymRelationship moveSynonymToAnotherTaxon(SynonymRelationship oldSynonymRelation, UUID newTaxonUUID, boolean moveHomotypicGroup,\r
+ SynonymRelationshipType newSynonymRelationshipType, Reference reference, String referenceDetail, boolean keepReference) throws HomotypicalGroupChangeException {\r
\r
+ Taxon newTaxon = (Taxon) dao.load(newTaxonUUID);\r
+ return moveSynonymToAnotherTaxon(oldSynonymRelation, newTaxon, moveHomotypicGroup, newSynonymRelationshipType, reference, referenceDetail, keepReference);\r
+ }\r
}\r