Project

General

Profile

« Previous | Next » 

Revision 374bb513

Added by Cherian Mathew about 9 years ago

StatusComposite, IStatusComposite : implemented filters and context menu
CdmSQLStringDecorator : empty string decorator
StatusPresenter : added getter methods
CdmVaadinBaseTest, StatusPresenterTest , StatusPresenterTest : added tests

View differences:

src/main/java/eu/etaxonomy/cdm/vaadin/presenter/StatusPresenter.java
13 13

  
14 14
import com.vaadin.data.Container.Filter;
15 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;
16 18
import com.vaadin.data.util.sqlcontainer.query.FreeformQuery;
17
import com.vaadin.data.util.sqlcontainer.query.OrderBy;
19
import com.vaadin.data.util.sqlcontainer.query.generator.filter.QueryBuilder;
18 20

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

  
......
30 33
 */
31 34
public class StatusPresenter implements StatusComponentListener {
32 35

  
33
    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";
34
    private static final String SELECT_QUERY="SELECT tb.id as taxon_id, tnb.titleCache as Name, tb.publish as Pb " + FROM_QUERY;
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;
35 44
    private static final String COUNT_QUERY = "SELECT count(*) " + FROM_QUERY;
36 45

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

  
39 48
    private final IStatusComposite composite;
40 49

  
50
    private LeafNodeTaxonContainer container;
51

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

  
55
    private int totalNoOfItems = 0;
56

  
41 57
    public StatusPresenter(IStatusComposite composite) {
42 58
        this.composite = composite;
43 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);
44 71
    }
45 72

  
46 73
    /* (non-Javadoc)
......
55 82
        Filter rankFilter = new Compare.Equal("dtb.titleCache","Species");
56 83
        Filter classifcationFilter = new Compare.Equal("tn.classification_id",classificationId);
57 84

  
58
        LeafNodeTaxonContainer container = new LeafNodeTaxonContainer(query);
59
        container.addContainerFilter(rankFilter);
85
        container = new LeafNodeTaxonContainer(query);
86
        //container.addContainerFilter(rankFilter);
60 87
        container.addContainerFilter(classifcationFilter);
88
        totalNoOfItems = container.size();
61 89
        return container;
62 90
    }
63 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
    }
64 133

  
65 134
    /* (non-Javadoc)
66 135
     * @see eu.etaxonomy.cdm.vaadin.view.IStatusComponent.StatusComponentListener#loadClassifications()
......
68 137
    @Override
69 138
    public CdmSQLContainer loadClassifications() throws SQLException {
70 139
        CdmSQLContainer container = CdmSQLContainer.newInstance("Classification");
71
        container.addOrderBy(new OrderBy("titleCache", true));
72 140
        return container;
73 141
    }
74 142

  

Also available in: Unified diff