Project

General

Profile

Download (2.12 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 Logger logger = Logger.getLogger(CdmSQLContainer.class);
21

    
22
    JDBCConnectionPool pool;
23

    
24
    DatabaseMetaData databaseMetaData;
25

    
26
    boolean checkPropertyIdCase = false;
27

    
28
    public CdmSQLContainer(QueryDelegate delegate) throws SQLException {
29
        super(delegate);
30
        databaseMetaData = CdmSpringContextHelper.getCurrent().getDatabaseMetaData();
31
    }
32

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

    
38
        CdmSQLContainer container = new CdmSQLContainer(CdmQueryFactory.generateTableQuery(tableName));
39
        container.checkPropertyIdCase = true;
40
        return container;
41
    }
42

    
43

    
44

    
45
    public UUID getUuid(Object itemId) {
46
        return UUID.fromString((String)getProperty(itemId,CdmQueryFactory.UUID_ID).getValue());
47
    }
48

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

    
62
}
(1-1/4)