Revision 19730251
Added by Cherian Mathew about 9 years ago
src/main/java/eu/etaxonomy/cdm/vaadin/presenter/NewTaxonBasePresenter.java | ||
---|---|---|
14 | 14 |
import java.util.List; |
15 | 15 |
import java.util.UUID; |
16 | 16 |
|
17 |
import eu.etaxonomy.cdm.api.service.INameService; |
|
17 |
import org.springframework.transaction.TransactionStatus; |
|
18 |
|
|
19 |
import eu.etaxonomy.cdm.api.application.ICdmApplicationConfiguration; |
|
20 |
import eu.etaxonomy.cdm.api.service.IClassificationService; |
|
18 | 21 |
import eu.etaxonomy.cdm.api.service.IReferenceService; |
22 |
import eu.etaxonomy.cdm.api.service.ITaxonNodeService; |
|
19 | 23 |
import eu.etaxonomy.cdm.api.service.ITaxonService; |
20 | 24 |
import eu.etaxonomy.cdm.model.common.CdmBase; |
21 | 25 |
import eu.etaxonomy.cdm.model.name.NonViralName; |
22 | 26 |
import eu.etaxonomy.cdm.model.reference.Reference; |
27 |
import eu.etaxonomy.cdm.model.taxon.Classification; |
|
23 | 28 |
import eu.etaxonomy.cdm.model.taxon.Synonym; |
24 | 29 |
import eu.etaxonomy.cdm.model.taxon.SynonymRelationshipType; |
25 | 30 |
import eu.etaxonomy.cdm.model.taxon.Taxon; |
31 |
import eu.etaxonomy.cdm.model.taxon.TaxonNode; |
|
32 |
import eu.etaxonomy.cdm.strategy.parser.NonViralNameParserImpl; |
|
26 | 33 |
import eu.etaxonomy.cdm.vaadin.container.CdmSQLContainer; |
27 | 34 |
import eu.etaxonomy.cdm.vaadin.container.IdAndUuid; |
28 | 35 |
import eu.etaxonomy.cdm.vaadin.util.CdmSpringContextHelper; |
... | ... | |
40 | 47 |
private final CdmSQLContainer secRefContainer; |
41 | 48 |
|
42 | 49 |
private final IReferenceService referenceService; |
50 |
private final ITaxonNodeService taxonNodeService; |
|
43 | 51 |
private final ITaxonService taxonService; |
44 |
private final INameService nameService;
|
|
45 |
|
|
52 |
private final IClassificationService classificationService;
|
|
53 |
private final ICdmApplicationConfiguration app; |
|
46 | 54 |
|
47 | 55 |
|
48 | 56 |
/* (non-Javadoc) |
... | ... | |
54 | 62 |
} |
55 | 63 |
|
56 | 64 |
public NewTaxonBasePresenter() throws SQLException { |
57 |
|
|
58 | 65 |
secRefContainer = CdmSQLContainer.newInstance("Reference"); |
59 | 66 |
referenceService = CdmSpringContextHelper.getReferenceService(); |
67 |
taxonNodeService = CdmSpringContextHelper.getTaxonNodeService(); |
|
60 | 68 |
taxonService = CdmSpringContextHelper.getTaxonService(); |
61 |
nameService = CdmSpringContextHelper.getNameService(); |
|
62 |
|
|
63 |
|
|
69 |
classificationService = CdmSpringContextHelper.getClassificationService(); |
|
70 |
app = CdmSpringContextHelper.getApplicationConfiguration(); |
|
64 | 71 |
} |
65 | 72 |
|
66 |
|
|
67 | 73 |
/* (non-Javadoc) |
68 |
* @see eu.etaxonomy.cdm.vaadin.view.INewTaxonBaseComponentListener#newTaxon(java.lang.String, java.lang.Object) |
|
74 |
* @see eu.etaxonomy.cdm.vaadin.view.INewTaxonBaseComponentListener#newTaxon(java.lang.String, java.lang.Object, java.util.UUID)
|
|
69 | 75 |
*/ |
70 | 76 |
@Override |
71 |
public IdAndUuid newTaxon(String scientificName, Object secRefItemId) { |
|
77 |
public IdAndUuid newTaxon(String scientificName, Object secRefItemId, UUID classificationUuid) { |
|
78 |
TransactionStatus tx = app.startTransaction(); |
|
72 | 79 |
UUID uuid = secRefContainer.getUuid(secRefItemId); |
80 |
|
|
73 | 81 |
Reference sec = CdmBase.deproxy(referenceService.load(uuid), Reference.class); |
74 |
NonViralName name = NonViralName.NewInstance(null); |
|
82 |
|
|
83 |
NonViralNameParserImpl parser = NonViralNameParserImpl.NewInstance(); |
|
84 |
NonViralName name = parser.parseFullName(scientificName); |
|
75 | 85 |
name.setTitleCache(scientificName, true); |
76 |
nameService.save(name); |
|
77 | 86 |
Taxon newTaxon = Taxon.NewInstance(name, sec); |
78 |
// TODO : add new TaxonNode since we want to have it show up |
|
79 |
// in the table |
|
80 |
UUID newUuid = taxonService.save(newTaxon); |
|
81 |
return new IdAndUuid(newTaxon.getId(), newUuid); |
|
87 |
List<String> CLASSIFICATION_INIT_STRATEGY = Arrays.asList(new String []{ |
|
88 |
"rootNode.childNodes" |
|
89 |
}); |
|
90 |
Classification classification = CdmBase.deproxy(classificationService.load(classificationUuid, CLASSIFICATION_INIT_STRATEGY), Classification.class); |
|
91 |
TaxonNode newTaxonNode = classification.addChildTaxon(newTaxon, null, null); |
|
92 |
UUID newUuid = taxonNodeService.saveOrUpdate(newTaxonNode); |
|
93 |
|
|
94 |
app.commitTransaction(tx); |
|
95 |
return new IdAndUuid(newTaxon.getId(), newTaxonNode.getTaxon().getUuid()); |
|
82 | 96 |
} |
83 | 97 |
|
84 | 98 |
/* (non-Javadoc) |
... | ... | |
86 | 100 |
*/ |
87 | 101 |
@Override |
88 | 102 |
public IdAndUuid newSynonym(String scientificName, Object secRefItemId, UUID accTaxonUuid) { |
103 |
TransactionStatus tx = app.startTransaction(); |
|
89 | 104 |
List<String> ACC_TAXON_INIT_STRATEGY = Arrays.asList(new String []{ |
90 | 105 |
"synonymRelations" |
91 | 106 |
}); |
92 |
|
|
93 | 107 |
UUID refUuid = secRefContainer.getUuid(secRefItemId); |
94 | 108 |
Reference sec = CdmBase.deproxy(referenceService.load(refUuid), Reference.class); |
95 |
NonViralName name = NonViralName.NewInstance(null); |
|
109 |
NonViralNameParserImpl parser = NonViralNameParserImpl.NewInstance(); |
|
110 |
NonViralName name = parser.parseFullName(scientificName); |
|
96 | 111 |
name.setTitleCache(scientificName, true); |
97 | 112 |
Taxon accTaxon = CdmBase.deproxy(taxonService.load(accTaxonUuid, ACC_TAXON_INIT_STRATEGY), Taxon.class); |
98 | 113 |
Synonym newSynonym = Synonym.NewInstance(name, sec); |
99 | 114 |
accTaxon.addSynonym(newSynonym, SynonymRelationshipType.SYNONYM_OF()); |
100 | 115 |
UUID newUuid = taxonService.save(newSynonym); |
116 |
app.commitTransaction(tx); |
|
101 | 117 |
return new IdAndUuid(newSynonym.getId(), newUuid); |
102 | 118 |
} |
103 | 119 |
|
Also available in: Unified diff
added classification as argument for NewTaxonBaseComposite to allow for creation of taxon node