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/component/NewTaxonBaseComposite.java
13 13

  
14 14
import com.vaadin.annotations.AutoGenerated;
15 15
import com.vaadin.data.Validator.EmptyValueException;
16
import com.vaadin.data.util.sqlcontainer.RowId;
16 17
import com.vaadin.server.Page;
17 18
import com.vaadin.ui.Alignment;
18 19
import com.vaadin.ui.Button;
......
62 63

  
63 64
    private final Window dialog;
64 65
    private final IdAndUuid accTaxonIdUuid;
66
    private final IdAndUuid classificationIdUuid;
67

  
65 68
    /**
66 69
     * The constructor should first build the main layout, set the
67 70
     * composition root and then do any custom initialization.
......
69 72
     * The constructor will not be automatically regenerated by the
70 73
     * visual editor.
71 74
     */
72
    public NewTaxonBaseComposite(Window dialog, INewTaxonBaseComponentListener listener, IdAndUuid accTaxonIdUuid) {
75
    public NewTaxonBaseComposite(Window dialog,
76
            INewTaxonBaseComponentListener listener,
77
            IdAndUuid accTaxonIdUuid,
78
            IdAndUuid classificationIdUuid) {
73 79
        buildMainLayout();
74 80
        setCompositionRoot(mainLayout);
75 81

  
76 82
        this.listener = listener;
77 83
        this.dialog = dialog;
78 84
        this.accTaxonIdUuid = accTaxonIdUuid;
85
        this.classificationIdUuid = classificationIdUuid;
86

  
79 87
        addUIListeners();
80 88

  
81 89
        init();
......
116 124

  
117 125
                    IdAndUuid taxonIdUuid;
118 126
                    if(accTaxonIdUuid == null) {
119
                        taxonIdUuid = listener.newTaxon(nameTextField.getValue(),secComboBox.getValue());
127
                        taxonIdUuid = listener.newTaxon(nameTextField.getValue(),secComboBox.getValue(), classificationIdUuid.getUuid());
120 128
                    } else {
121 129
                        listener.newSynonym(nameTextField.getValue(),secComboBox.getValue(), accTaxonIdUuid.getUuid());
122 130
                        taxonIdUuid = accTaxonIdUuid;
123 131
                    }
132
                    Object rowId = new RowId(taxonIdUuid.getId());
124 133
                    CdmVaadinSessionUtilities.getCurrentCdmDataChangeService()
125
                        .fireChangeEvent(new CdmChangeEvent(Action.Create, Arrays.asList(taxonIdUuid.getId()), NewTaxonBaseComposite.class), true);
134
                        .fireChangeEvent(new CdmChangeEvent(Action.Create, Arrays.asList(rowId), NewTaxonBaseComposite.class), true);
126 135
                    UI.getCurrent().removeWindow(dialog);
127 136
                } catch (EmptyValueException e) {
128 137
                    Notification notification = new Notification("Invalid input", "Neither Name or Secundum can be empty", Type.WARNING_MESSAGE);
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

  
src/main/java/eu/etaxonomy/cdm/vaadin/util/CdmQueryFactory.java
107 107
    	return generateQueryDelegate(SELECT_QUERY, COUNT_QUERY, CONTAINS_QUERY);
108 108
    }
109 109

  
110
    public static QueryDelegate generateTaxonRelatedToQuery() throws SQLException {
111
        String FROM_QUERY = " FROM TaxonRelationship tr inner join TaxonBase tb on tr.relatedto_id = tb.id";
112
        String SELECT_QUERY= "SELECT tr.id, tr.uuid, tb.titleCache" + FROM_QUERY;
113
        String COUNT_QUERY = "SELECT count(*) " + FROM_QUERY;
114
        String CONTAINS_QUERY = "SELECT * FROM TaxonRelationship tr where tr.relatedfrom_id = ?";
115

  
116
        return generateQueryDelegate(SELECT_QUERY, COUNT_QUERY, CONTAINS_QUERY);
117
    }
118

  
110 119
    /**
111 120
     * Creates a FreeformQuery which mimics a TableQuery.
112 121
     * This method works around the bug at http://dev.vaadin.com/ticket/12370
src/main/java/eu/etaxonomy/cdm/vaadin/util/CdmSpringContextHelper.java
13 13
import com.vaadin.data.util.sqlcontainer.connection.JDBCConnectionPool;
14 14
import com.vaadin.server.VaadinServlet;
15 15

  
16
import eu.etaxonomy.cdm.api.application.ICdmApplicationConfiguration;
16 17
import eu.etaxonomy.cdm.api.service.IClassificationService;
17 18
import eu.etaxonomy.cdm.api.service.ICommonService;
18 19
import eu.etaxonomy.cdm.api.service.IDescriptionService;
......
93 94
        return getCurrent().getDataSource().getConnection();
94 95
    }
95 96

  
97
    public static ICdmApplicationConfiguration getApplicationConfiguration() {
98
        return (ICdmApplicationConfiguration) getCurrent().getBean("cdmApplicationDefaultConfiguration");
99
    }
96 100
    public static ITaxonService getTaxonService() {
97 101
        return (ITaxonService)getCurrent().getBean(ITaxonService.class);
98 102
    }
......
128 132
    public static IDescriptionService getDescriptionService() {
129 133
        return (IDescriptionService)getCurrent().getBean(IDescriptionService.class);
130 134
    }
135

  
136

  
137

  
131 138
}
src/main/java/eu/etaxonomy/cdm/vaadin/view/INewTaxonBaseComponentListener.java
28 28
    /**
29 29
     * @param scientificName
30 30
     * @param secRefItemId
31
     * @param classificationUuid
31 32
     * @return
32 33
     */
33
    public IdAndUuid newTaxon(String scientificName, Object secRefItemId);
34
    public IdAndUuid newTaxon(String scientificName, Object secRefItemId, UUID classificationUuid);
34 35

  
35 36

  
36 37
    /**
......
43 44

  
44 45

  
45 46

  
47

  
48

  
49

  
46 50
}
src/main/java/eu/etaxonomy/cdm/vaadin/view/IStatusComposite.java
81 81
         * @return
82 82
         */
83 83
        public boolean isSynonym(Object itemId);
84

  
85
        /**
86
         * @return
87
         */
88
        public CdmSQLContainer getClassificationContainer();
84 89
    }
85 90

  
86 91
    public void setListener(StatusComponentListener listener);

Also available in: Unified diff