69 |
69 |
import eu.etaxonomy.cdm.model.name.NomenclaturalStatus;
|
70 |
70 |
import eu.etaxonomy.cdm.model.name.Rank;
|
71 |
71 |
import eu.etaxonomy.cdm.model.name.Registration;
|
|
72 |
import eu.etaxonomy.cdm.model.name.SpecimenTypeDesignation;
|
72 |
73 |
import eu.etaxonomy.cdm.model.name.SpecimenTypeDesignationStatus;
|
73 |
74 |
import eu.etaxonomy.cdm.model.name.TaxonName;
|
74 |
75 |
import eu.etaxonomy.cdm.model.name.TypeDesignationBase;
|
|
76 |
import eu.etaxonomy.cdm.model.occurrence.DerivationEvent;
|
75 |
77 |
import eu.etaxonomy.cdm.model.occurrence.DerivedUnit;
|
76 |
78 |
import eu.etaxonomy.cdm.model.occurrence.DeterminationEvent;
|
|
79 |
import eu.etaxonomy.cdm.model.occurrence.SpecimenOrObservationBase;
|
77 |
80 |
import eu.etaxonomy.cdm.persistence.dao.common.ICdmGenericDao;
|
78 |
81 |
import eu.etaxonomy.cdm.persistence.dao.common.IReferencedEntityDao;
|
79 |
82 |
import eu.etaxonomy.cdm.persistence.dao.common.ISourcedEntityDao;
|
... | ... | |
81 |
84 |
import eu.etaxonomy.cdm.persistence.dao.name.INomenclaturalStatusDao;
|
82 |
85 |
import eu.etaxonomy.cdm.persistence.dao.name.ITaxonNameDao;
|
83 |
86 |
import eu.etaxonomy.cdm.persistence.dao.name.ITypeDesignationDao;
|
|
87 |
import eu.etaxonomy.cdm.persistence.dao.occurrence.IOccurrenceDao;
|
84 |
88 |
import eu.etaxonomy.cdm.persistence.dao.term.IOrderedTermVocabularyDao;
|
85 |
89 |
import eu.etaxonomy.cdm.persistence.dao.term.ITermVocabularyDao;
|
86 |
90 |
import eu.etaxonomy.cdm.persistence.dto.TaxonNameParts;
|
... | ... | |
104 |
108 |
@Autowired
|
105 |
109 |
protected IOrderedTermVocabularyDao orderedVocabularyDao;
|
106 |
110 |
@Autowired
|
|
111 |
protected IOccurrenceDao occurrenceDao;
|
|
112 |
@Autowired
|
107 |
113 |
@Qualifier("refEntDao")
|
108 |
114 |
protected IReferencedEntityDao<ReferencedEntityBase> referencedEntityDao;
|
109 |
115 |
@Autowired
|
... | ... | |
196 |
202 |
return delete(name, config);
|
197 |
203 |
}
|
198 |
204 |
|
|
205 |
@Override
|
|
206 |
@Transactional(readOnly = false)
|
|
207 |
public UpdateResult cloneTypeDesignation(TaxonName name, SpecimenTypeDesignation baseDesignation,
|
|
208 |
String accessionNumber, eu.etaxonomy.cdm.model.occurrence.Collection collection, SpecimenTypeDesignationStatus typeStatus){
|
|
209 |
UpdateResult result = new UpdateResult();
|
|
210 |
|
|
211 |
DerivedUnit baseSpecimen = (DerivedUnit) occurrenceDao.load(baseDesignation.getTypeSpecimen().getUuid());
|
|
212 |
DerivedUnit duplicate = DerivedUnit.NewInstance(baseSpecimen.getRecordBasis());
|
|
213 |
DerivationEvent derivedFrom = baseSpecimen.getDerivedFrom();
|
|
214 |
for (SpecimenOrObservationBase original : derivedFrom.getOriginals()) {
|
|
215 |
DerivationEvent.NewSimpleInstance(original, duplicate, derivedFrom.getType());
|
|
216 |
}
|
|
217 |
duplicate.setAccessionNumber(accessionNumber);
|
|
218 |
duplicate.setCollection(collection);
|
|
219 |
SpecimenTypeDesignation typeDesignation = SpecimenTypeDesignation.NewInstance();
|
|
220 |
typeDesignation.setTypeSpecimen(duplicate);
|
|
221 |
typeDesignation.setTypeStatus(typeStatus);
|
|
222 |
name.getTypeDesignations().add(typeDesignation);
|
|
223 |
|
|
224 |
result.setCdmEntity(typeDesignation);
|
|
225 |
result.addUpdatedObject(name);
|
|
226 |
return result;
|
|
227 |
}
|
|
228 |
|
199 |
229 |
@Override
|
200 |
230 |
@Transactional
|
201 |
231 |
public DeleteResult deleteTypeDesignation(TaxonName name, TypeDesignationBase<?> typeDesignation){
|
ref #6413 Add service method for duplicating type specimen