Project

General

Profile

Download (2.27 KB) Statistics
| Branch: | Tag: | Revision:
1
package eu.etaxonomy.cdm.vaadin.container;
2

    
3
import java.sql.DatabaseMetaData;
4
import java.sql.SQLException;
5
import java.util.UUID;
6

    
7
import org.apache.log4j.Logger;
8

    
9
import com.vaadin.data.Property;
10
import com.vaadin.data.util.sqlcontainer.SQLContainer;
11
import com.vaadin.data.util.sqlcontainer.connection.JDBCConnectionPool;
12
import com.vaadin.data.util.sqlcontainer.query.QueryDelegate;
13

    
14
import eu.etaxonomy.cdm.vaadin.util.CdmQueryFactory;
15
import eu.etaxonomy.cdm.vaadin.util.CdmSpringContextHelper;
16
import eu.etaxonomy.cdm.vaadin.util.SQLUtils;
17

    
18
public class CdmSQLContainer extends SQLContainer {
19

    
20
    private static final long serialVersionUID = 2828992538007070061L;
21

    
22
    private static final Logger logger = Logger.getLogger(CdmSQLContainer.class);
23

    
24
    JDBCConnectionPool pool;
25

    
26
    DatabaseMetaData databaseMetaData;
27

    
28
    public static final int DEFAULT_LIMIT = 5000;
29
    boolean checkPropertyIdCase = false;
30

    
31
    public CdmSQLContainer(QueryDelegate delegate) throws SQLException {
32
        super(delegate);
33
        databaseMetaData = CdmSpringContextHelper.getCurrent().getDatabaseMetaData();
34
        setPageLength(DEFAULT_LIMIT);
35
    }
36

    
37
    public static CdmSQLContainer newInstance(String tableName) throws SQLException {
38
        // TODO : currently the sql generator is for h2, need to make this compatible for all flavours
39
        //TableQuery tq = new TableQuery(tableName, CdmSpringContextHelper.getCurrent().getConnectionPool(), new DefaultSQLGenerator());
40
        //tq.setVersionColumn("updated");
41

    
42
        CdmSQLContainer container = new CdmSQLContainer(CdmQueryFactory.generateTableQuery(tableName));
43
        container.checkPropertyIdCase = true;
44
        return container;
45
    }
46

    
47

    
48

    
49
    public UUID getUuid(Object itemId) {
50
        return UUID.fromString((String)getProperty(itemId,CdmQueryFactory.UUID_ID).getValue());
51
    }
52

    
53
    public Property<?> getProperty(Object itemId, Object propertyId) {
54
        if(checkPropertyIdCase) {
55
            try {
56
                return getItem(itemId).getItemProperty(SQLUtils.correctCase(propertyId.toString(), databaseMetaData));
57
            } catch (SQLException e) {
58
                logger.warn("Error getting property", e);
59
                return null;
60
            }
61
        } else {
62
            return getItem(itemId).getItemProperty(propertyId);
63
        }
64
    }
65

    
66
}
(1-1/6)