Project

General

Profile

Download (5.22 KB) Statistics
| Branch: | Tag: | Revision:
1
// $Id$
2
/**
3
* Copyright (C) 2015 EDIT
4
* European Distributed Institute of Taxonomy
5
* http://www.e-taxonomy.eu
6
*
7
* The contents of this file are subject to the Mozilla Public License Version 1.1
8
* See LICENSE.TXT at the top of this package for the full license terms.
9
*/
10
package eu.etaxonomy.cdm.vaadin.presenter;
11

    
12
import java.sql.SQLException;
13
import java.util.Collection;
14
import java.util.UUID;
15

    
16
import com.vaadin.data.util.filter.Compare;
17
import com.vaadin.data.util.filter.Compare.Equal;
18

    
19
import eu.etaxonomy.cdm.api.service.ITaxonService;
20
import eu.etaxonomy.cdm.model.common.CdmBase;
21
import eu.etaxonomy.cdm.model.taxon.Taxon;
22
import eu.etaxonomy.cdm.vaadin.container.CdmSQLContainer;
23
import eu.etaxonomy.cdm.vaadin.container.LeafNodeTaxonContainer;
24
import eu.etaxonomy.cdm.vaadin.util.CdmQueryFactory;
25
import eu.etaxonomy.cdm.vaadin.util.CdmSpringContextHelper;
26
import eu.etaxonomy.cdm.vaadin.view.IStatusComposite.StatusComponentListener;
27

    
28
/**
29
 * @author cmathew
30
 * @date 10 Mar 2015
31
 *
32
 */
33
public class StatusPresenter implements StatusComponentListener {
34

    
35

    
36
    public final static String C_TCACHE_ID = "titleCache";
37

    
38
    private LeafNodeTaxonContainer leafNodeTaxonContainer;
39

    
40
    private CdmSQLContainer classificationContainer;
41

    
42
    private final ITaxonService taxonService;
43

    
44
    private int totalNoOfTaxa = 0;
45

    
46
    public StatusPresenter() {
47
        taxonService = CdmSpringContextHelper.getTaxonService();
48
    }
49

    
50

    
51
    @Override
52
    public void removeFilters() {
53
        removeUnplacedFilter();
54
        removeUnpublishedFilter();
55
        removeNameFilter();
56
    }
57

    
58
    /* (non-Javadoc)
59
     * @see eu.etaxonomy.cdm.vaadin.view.IStatusComponent.StatusComponentListener#load()
60
     */
61
    @Override
62
    public LeafNodeTaxonContainer loadTaxa(int classificationId) throws SQLException {
63
        leafNodeTaxonContainer = new LeafNodeTaxonContainer(classificationId);
64
        totalNoOfTaxa = leafNodeTaxonContainer.getTotalNoOfTaxa();
65
        return leafNodeTaxonContainer;
66
    }
67

    
68
    @Override
69
    public Object getClassificationId(String classification) {
70
        if(classification == null) {
71
            return null;
72
        }
73
        Equal cnameFilter = new Compare.Equal("titleCache", classification);
74
        classificationContainer.addContainerFilter(cnameFilter);
75
        Collection<?> itemIds = classificationContainer.getItemIds();
76
        Object itemId = null;
77
        if(!itemIds.isEmpty()) {
78
            itemId = itemIds.iterator().next();
79
        }
80
        classificationContainer.removeContainerFilter(cnameFilter);
81
        return itemId;
82
    }
83

    
84
    @Override
85
    public void refresh() {
86
        leafNodeTaxonContainer.refresh();
87
    }
88
    @Override
89
    public void setUnplacedFilter() {
90
        leafNodeTaxonContainer.setUnplacedFilter();
91
    }
92

    
93
    @Override
94
    public void removeUnplacedFilter() {
95
        leafNodeTaxonContainer.removeUnplacedFilter();
96
    }
97

    
98
    @Override
99
    public void setUnpublishedFilter() {
100
        leafNodeTaxonContainer.setUnpublishedFilter();
101
    }
102

    
103
    @Override
104
    public void removeUnpublishedFilter() {
105
        leafNodeTaxonContainer.removeUnpublishedFilter();
106
    }
107

    
108
    @Override
109
    public void setNameFilter(String filterString) {
110
        leafNodeTaxonContainer.setNameFilter(filterString);
111
    }
112

    
113
    @Override
114
    public void removeNameFilter() {
115
        leafNodeTaxonContainer.removeNameFilter();
116
    }
117

    
118
    @Override
119
    public void setIdFilter(Object itemId) {
120
       leafNodeTaxonContainer.setIdFilter(itemId);
121
    }
122

    
123
    @Override
124
    public void removeIdFilter() {
125
        leafNodeTaxonContainer.removeDynamicFilters();
126
    }
127

    
128
    @Override
129
    public void removeDynamicFilters() {
130
        leafNodeTaxonContainer.removeDynamicFilters();
131
    }
132

    
133
    @Override
134
    public int getCurrentNoOfTaxa() {
135
        return leafNodeTaxonContainer.size();
136
    }
137

    
138
    @Override
139
    public int getTotalNoOfTaxa() {
140
        return totalNoOfTaxa;
141
    }
142

    
143
    @Override
144
    public boolean isSynonym(Object itemId) {
145
        return leafNodeTaxonContainer.isSynonym(itemId);
146
    }
147

    
148
    @Override
149
    public void refreshSynonymCache() {
150
        leafNodeTaxonContainer.refreshSynonymCache();
151
    }
152

    
153
    /* (non-Javadoc)
154
     * @see eu.etaxonomy.cdm.vaadin.view.IStatusComponent.StatusComponentListener#loadClassifications()
155
     */
156
    @Override
157
    public CdmSQLContainer loadClassifications() throws SQLException {
158
        classificationContainer = CdmSQLContainer.newInstance("Classification");
159
        return classificationContainer;
160
    }
161

    
162

    
163
    @Override
164
    public void updatePublished(boolean pb, Object itemId) {
165
        UUID uuid = UUID.fromString((String)leafNodeTaxonContainer.getItem(itemId).getItemProperty(CdmQueryFactory.UUID_ID).getValue());
166
        Taxon taxon = CdmBase.deproxy(taxonService.load(uuid), Taxon.class);
167
        boolean currentPb = taxon.isPublish();
168
        if(currentPb != pb) {
169
            taxon.setPublish(pb);
170
            taxonService.merge(taxon);
171
        }
172
    }
173

    
174

    
175
    /* (non-Javadoc)
176
     * @see eu.etaxonomy.cdm.vaadin.view.IStatusComposite.StatusComponentListener#getCurrentLeafNodeTaxonContainer()
177
     */
178
    @Override
179
    public LeafNodeTaxonContainer getCurrentLeafNodeTaxonContainer() {
180
        return leafNodeTaxonContainer;
181
    }
182

    
183
    @Override
184
    public CdmSQLContainer getClassificationContainer() {
185
        return classificationContainer;
186
    }
187

    
188
}
(5-5/5)