Project

General

Profile

« Previous | Next » 

Revision 19730251

Added by Cherian Mathew about 9 years ago

added classification as argument for NewTaxonBaseComposite to allow for creation of taxon node

View differences:

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