Project

General

Profile

Download (5.05 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

    
14
import com.vaadin.data.Container.Filter;
15
import com.vaadin.data.util.filter.Compare;
16
import com.vaadin.data.util.filter.Compare.Equal;
17
import com.vaadin.data.util.filter.SimpleStringFilter;
18
import com.vaadin.data.util.sqlcontainer.query.FreeformQuery;
19
import com.vaadin.data.util.sqlcontainer.query.generator.filter.QueryBuilder;
20

    
21
import eu.etaxonomy.cdm.vaadin.container.CdmSQLContainer;
22
import eu.etaxonomy.cdm.vaadin.container.LeafNodeTaxonContainer;
23
import eu.etaxonomy.cdm.vaadin.statement.CdmStatementDelegate;
24
import eu.etaxonomy.cdm.vaadin.util.CdmSpringContextHelper;
25
import eu.etaxonomy.cdm.vaadin.util.CdmSQLStringDecorator;
26
import eu.etaxonomy.cdm.vaadin.view.IStatusComposite;
27
import eu.etaxonomy.cdm.vaadin.view.IStatusComposite.StatusComponentListener;
28

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

    
36
    public static final String NAME_ID = "Name";
37
    public static final String PB_ID = "Pb";
38
    public static final String FN_ID = "Fn";
39
    public static final String UNP_ID = "Unp";
40
    public static final String UNR_ID = "Unr";
41

    
42
    private static final String FROM_QUERY = " FROM TaxonNode tn inner join TaxonBase tb on tn.taxon_id=tb.id inner join TaxonNameBase tnb on tb.name_id=tnb.id  inner join DefinedTermBase dtb on tnb.rank_id=dtb.id";
43
    private static final String SELECT_QUERY="SELECT tb.id as taxon_id, tnb.titleCache as " + NAME_ID + " , tb.publish as " + PB_ID + " , tb.unplaced as " +  UNP_ID + FROM_QUERY;
44
    private static final String COUNT_QUERY = "SELECT count(*) " + FROM_QUERY;
45

    
46
    private static final String CONTAINS_QUERY = "SELECT * FROM TaxonBase tb WHERE tb.id = ?";
47

    
48
    private final IStatusComposite composite;
49

    
50
    private LeafNodeTaxonContainer container;
51

    
52
    private Equal nrFilter, unpFilter, unfFilter, unpbFilter;
53
    private SimpleStringFilter nameFilter;
54

    
55
    private int totalNoOfItems = 0;
56

    
57
    public StatusPresenter(IStatusComposite composite) {
58
        this.composite = composite;
59
        composite.setListener(this);
60
        initFilters();
61
        // TODO: Need to evaluate the various sql dialects and make sure that these
62
        // queries are compatible with all
63
        QueryBuilder.setStringDecorator(new CdmSQLStringDecorator());
64
    }
65

    
66
    private void initFilters() {
67
        //nrFilter = new Compare.Equal(StatusPresenter.UNR_ID, true);
68
        unpFilter = new Compare.Equal("tb.unplaced", true);
69
        //unfFilter = new Compare.Equal(StatusPresenter.FN_ID, false);
70
        unpbFilter = new Compare.Equal("tb.publish", false);
71
    }
72

    
73
    /* (non-Javadoc)
74
     * @see eu.etaxonomy.cdm.vaadin.view.IStatusComponent.StatusComponentListener#load()
75
     */
76
    @Override
77
    public LeafNodeTaxonContainer loadTaxa(int classificationId) throws SQLException {
78
        FreeformQuery query = new FreeformQuery("This query is not used", CdmSpringContextHelper.getConnectionPool(), "taxon_id");
79
        CdmStatementDelegate cdmStatementDelegate = new CdmStatementDelegate(SELECT_QUERY, COUNT_QUERY, CONTAINS_QUERY);
80
        query.setDelegate(cdmStatementDelegate);
81

    
82
        Filter rankFilter = new Compare.Equal("dtb.titleCache","Species");
83
        Filter classifcationFilter = new Compare.Equal("tn.classification_id",classificationId);
84

    
85
        container = new LeafNodeTaxonContainer(query);
86
        //container.addContainerFilter(rankFilter);
87
        container.addContainerFilter(classifcationFilter);
88
        totalNoOfItems = container.size();
89
        return container;
90
    }
91

    
92
    @Override
93
    public void setUnplacedFilter() {
94
        container.addContainerFilter(unpFilter);
95
    }
96

    
97
    @Override
98
    public void removeUnplacedFilter() {
99
        container.removeContainerFilter(unpFilter);
100
    }
101

    
102
    @Override
103
    public void setUnpublishedFilter() {
104
        container.addContainerFilter(unpbFilter);
105
    }
106

    
107
    @Override
108
    public void removeUnpublishedFilter() {
109
        container.removeContainerFilter(unpbFilter);
110
    }
111

    
112
    @Override
113
    public void setNameFilter(String filterString) {
114
        removeNameFilter();
115
        nameFilter = new SimpleStringFilter("tnb.titleCache", filterString, true, true);
116
        container.addContainerFilter(nameFilter);
117
    }
118

    
119
    @Override
120
    public void removeNameFilter() {
121
        container.removeContainerFilter(nameFilter);
122
    }
123

    
124
    @Override
125
    public int getCurrentSize() {
126
        return container.size();
127
    }
128

    
129
    @Override
130
    public int getSize() {
131
        return totalNoOfItems;
132
    }
133

    
134
    /* (non-Javadoc)
135
     * @see eu.etaxonomy.cdm.vaadin.view.IStatusComponent.StatusComponentListener#loadClassifications()
136
     */
137
    @Override
138
    public CdmSQLContainer loadClassifications() throws SQLException {
139
        CdmSQLContainer container = CdmSQLContainer.newInstance("Classification");
140
        return container;
141
    }
142

    
143
}
(2-2/2)