import java.util.Collection;\r
import java.util.List;\r
import java.util.Map;\r
-import java.util.Set;\r
import java.util.UUID;\r
\r
import org.apache.log4j.Logger;\r
import org.springframework.beans.factory.annotation.Autowired;\r
import org.springframework.beans.factory.annotation.Qualifier;\r
import org.springframework.stereotype.Service;\r
+import org.springframework.transaction.annotation.Propagation;\r
import org.springframework.transaction.annotation.Transactional;\r
\r
import eu.etaxonomy.cdm.api.service.config.IIdentifiableEntityServiceConfigurator;\r
-import eu.etaxonomy.cdm.api.service.config.INameServiceConfigurator;\r
import eu.etaxonomy.cdm.api.service.pager.Pager;\r
import eu.etaxonomy.cdm.api.service.pager.impl.DefaultPagerImpl;\r
-import eu.etaxonomy.cdm.model.common.Annotation;\r
import eu.etaxonomy.cdm.model.common.CdmBase;\r
import eu.etaxonomy.cdm.model.common.OrderedTermVocabulary;\r
import eu.etaxonomy.cdm.model.common.ReferencedEntityBase;\r
import eu.etaxonomy.cdm.model.common.RelationshipBase;\r
-import eu.etaxonomy.cdm.model.common.RelationshipTermBase;\r
import eu.etaxonomy.cdm.model.common.TermVocabulary;\r
import eu.etaxonomy.cdm.model.common.UuidAndTitleCache;\r
-import eu.etaxonomy.cdm.model.name.BotanicalName;\r
import eu.etaxonomy.cdm.model.name.HomotypicalGroup;\r
import eu.etaxonomy.cdm.model.name.HybridRelationship;\r
import eu.etaxonomy.cdm.model.name.HybridRelationshipType;\r
import eu.etaxonomy.cdm.model.name.NomenclaturalStatusType;\r
import eu.etaxonomy.cdm.model.name.NonViralName;\r
import eu.etaxonomy.cdm.model.name.Rank;\r
+import eu.etaxonomy.cdm.model.name.SpecimenTypeDesignationStatus;\r
import eu.etaxonomy.cdm.model.name.TaxonNameBase;\r
import eu.etaxonomy.cdm.model.name.TypeDesignationBase;\r
-import eu.etaxonomy.cdm.model.name.SpecimenTypeDesignationStatus;\r
-import eu.etaxonomy.cdm.model.name.TypeDesignationStatusBase;\r
-import eu.etaxonomy.cdm.model.taxon.TaxonBase;\r
import eu.etaxonomy.cdm.persistence.dao.common.IOrderedTermVocabularyDao;\r
import eu.etaxonomy.cdm.persistence.dao.common.IReferencedEntityDao;\r
import eu.etaxonomy.cdm.persistence.dao.common.ITermVocabularyDao;\r
\r
\r
@Service\r
-@Transactional(readOnly = true)\r
+@Transactional(propagation = Propagation.SUPPORTS, readOnly = true)\r
public class NameServiceImpl extends IdentifiableServiceBase<TaxonNameBase,ITaxonNameDao> implements INameService {\r
static private final Logger logger = Logger.getLogger(NameServiceImpl.class);\r
\r
return typeDesignationVocabulary;\r
}\r
\r
- public void generateTitleCache() {\r
- logger.warn("Not yet implemented");\r
- // TODO Auto-generated method stub\r
- }\r
\r
@Autowired\r
protected void setDao(ITaxonNameDao dao) {\r
this.dao = dao;\r
}\r
\r
- public Pager<HybridRelationship> getHybridNames(BotanicalName name, HybridRelationshipType type, Integer pageSize, Integer pageNumber, List<OrderHint> orderHints, List<String> propertyPaths) {\r
+ public Pager<HybridRelationship> getHybridNames(NonViralName name, HybridRelationshipType type, Integer pageSize, Integer pageNumber, List<OrderHint> orderHints, List<String> propertyPaths) {\r
Integer numberOfResults = dao.countHybridNames(name, type);\r
\r
List<HybridRelationship> results = new ArrayList<HybridRelationship>();\r
\r
List<NameRelationship> results = new ArrayList<NameRelationship>();\r
if (numberOfResults > 0) { // no point checking again\r
- results = dao.getNameRelationships(name, NameRelationship.Direction.relatedTo, type, pageSize, pageNumber,\r
- orderHints, propertyPaths);\r
+ results = dao.getNameRelationships(name, \r
+ NameRelationship.Direction.relatedTo, \r
+ type, \r
+ pageSize, \r
+ pageNumber,\r
+ orderHints, \r
+ propertyPaths);\r
}\r
return results;\r
}\r
\r
return new DefaultPagerImpl<TaxonNameBase>(pageNumber, numberOfResults, pageSize, results);\r
}\r
- \r
- public Pager<TaxonNameBase> search(Class<? extends TaxonNameBase> clazz, String queryString, Integer pageSize, Integer pageNumber, List<OrderHint> orderHints, List<String> propertyPaths) {\r
- Integer numberOfResults = dao.count(clazz,queryString);\r
- \r
- List<TaxonNameBase> results = new ArrayList<TaxonNameBase>();\r
- if(numberOfResults > 0) { // no point checking again\r
- results = dao.search(clazz,queryString, pageSize, pageNumber, orderHints, propertyPaths); \r
- }\r
- \r
- return new DefaultPagerImpl<TaxonNameBase>(pageNumber, numberOfResults, pageSize, results);\r
- }\r
\r
/* (non-Javadoc)\r
* @see eu.etaxonomy.cdm.api.service.INameService#getUuidAndTitleCacheOfNames()\r
\r
return new DefaultPagerImpl<TaxonNameBase>(pageNumber, numberOfResults, pageSize, results);\r
}\r
+\r
+ public HomotypicalGroup findHomotypicalGroup(UUID uuid) {\r
+ return homotypicalGroupDao.findByUuid(uuid);\r
+ }\r
+\r
+\r
+ /* (non-Javadoc)\r
+ * @see eu.etaxonomy.cdm.api.service.IIdentifiableEntityService#updateTitleCache()\r
+ */\r
+ @Override\r
+ public void updateTitleCache() {\r
+ Class<TaxonNameBase> clazz = TaxonNameBase.class;\r
+ super.updateTitleCache(clazz, null, null);\r
+ }\r
+ \r
+ @Override\r
+ protected void setOtherCachesNull(TaxonNameBase name) {\r
+ if (name.isInstanceOf(NonViralName.class)){\r
+ NonViralName nvn = CdmBase.deproxy(name, NonViralName.class);\r
+ if (! nvn.isProtectedNameCache()){\r
+ nvn.setNameCache(null, false);\r
+ }\r
+ if (! nvn.isProtectedAuthorshipCache()){\r
+ nvn.setAuthorshipCache(null, false);\r
+ }\r
+ if (! nvn.isProtectedFullTitleCache()){\r
+ nvn.setFullTitleCache(null, false);\r
+ }\r
+ }\r
+ }\r
+ \r
+ \r
}\r