Statistics
| Revision:

gvsig-projects-pool / org.gvsig.vcsgis / trunk / org.gvsig.vcsgis / org.gvsig.vcsgis.lib / org.gvsig.vcsgis.lib.impl / src / main / java / org / gvsig / vcsgis / lib / workspace / tables / VarsTable.java @ 3633

History | View | Annotate | Download (4.76 KB)

1
package org.gvsig.vcsgis.lib.workspace.tables;
2

    
3
import org.gvsig.fmap.dal.DALLocator;
4
import org.gvsig.fmap.dal.DataManager;
5
import org.gvsig.fmap.dal.feature.EditableFeature;
6
import org.gvsig.fmap.dal.feature.EditableFeatureType;
7
import org.gvsig.fmap.dal.feature.Feature;
8
import org.gvsig.fmap.dal.feature.FeatureStore;
9
import org.gvsig.fmap.dal.feature.FeatureType;
10
import org.gvsig.tools.dataTypes.DataTypes;
11
import org.gvsig.tools.dispose.DisposeUtils;
12
import static org.gvsig.vcsgis.lib.VCSGisManager.VCSGISCODELEN;
13
import org.gvsig.vcsgis.lib.workspace.VCSGisWorkspace;
14

    
15
/**
16
 *
17
 * @author gvSIG Team
18
 */
19
@SuppressWarnings("UseSpecificCatch")
20
public class VarsTable extends AbstractTable {
21

    
22
    public static final String TABLE_NAME = "VCSGIS_CONFIG";
23

    
24
    private static final String COD_CONFIG = "COD_CONFIG";
25
    private static final String VAR_NAME = "CFG_NAME";
26
    private static final String VAR_VALUE = "CFG_VALUE";
27

    
28
    public static class VarRow extends AbstractRow {
29

    
30
        public VarRow(VCSGisWorkspace workspace) {
31
            super(workspace, TABLE_NAME, VAR_NAME);
32
        }
33

    
34
        public VarRow(VCSGisWorkspace workspace, Feature feature) {
35
            super(workspace, TABLE_NAME, VAR_NAME, feature);
36
        }
37

    
38
        public String getName() {
39
            return this.getString(VAR_NAME);
40
        }
41

    
42
        public String getValue() {
43
            return this.getString(VAR_VALUE);
44
        }
45

    
46
        public void setName(String name) {
47
            this.set(VAR_NAME, name);
48
        }
49

    
50
        public void setValue(String value) {
51
            this.set(VAR_VALUE, value);
52
        }
53

    
54
    }
55

    
56
    public VarsTable() {
57
        super(TABLE_NAME, featureType());
58
    }
59

    
60
    public String get(VCSGisWorkspace workspace, String name) {
61
        FeatureStore store = null;
62
        try {
63
            store = workspace.getFeatureStore(TABLE_NAME);
64
            Feature f = store.findFirst("\""+VAR_NAME+"\"='" + name + "'");
65
            if (f == null) {
66
                return null;
67
            }
68
            return f.getString(VAR_VALUE);
69
        } catch (Exception ex) {
70
            return null;
71
        } finally {
72
            DisposeUtils.disposeQuietly(store);
73
        }
74
    }
75

    
76
    public void set(VCSGisWorkspace workspace, String name, String value) {
77
        FeatureStore store = null;
78
        try {
79
            store = workspace.getFeatureStore(TABLE_NAME);
80
            Feature f = store.findFirst("\""+VAR_NAME+"\"='" + name + "'");
81
            if (f == null) {
82
                store.edit(FeatureStore.MODE_APPEND);
83
                EditableFeature ef = store.createNewFeature();
84
                ef.set(VAR_NAME, name);
85
                ef.set(VAR_VALUE, value);
86
                store.insert(ef);
87
                store.finishEditing();
88
            } else {
89
                EditableFeature ef = f.getEditable();
90
                ef.set(VAR_VALUE, value);
91
                store.edit();
92
                store.update(ef);
93
                store.finishEditing();
94
            }
95
        } catch (Exception ex) {
96
            LOGGER.warn("Can't store value for '" + name + "'.", ex);
97
        } finally {
98
            if( store!=null && (store.isAppending() || store.isEditing()) ) {
99
                store.cancelEditingQuietly();
100
            }
101
            DisposeUtils.disposeQuietly(store);
102
        }
103
    }
104

    
105
    public void delete(VCSGisWorkspace workspace, String name) {
106
        FeatureStore store = null;
107
        try {
108
            store = workspace.getFeatureStore(TABLE_NAME);
109
            store.edit(FeatureStore.MODE_FULLEDIT);
110
            store.delete("\""+VAR_NAME+"\"='" + name + "'");
111
            store.finishEditing();
112
        } catch (Exception ex) {
113
            LOGGER.warn("Can't delete value for '" + name + "'.", ex);
114
        } finally {
115
            if( store!=null && (store.isAppending() || store.isEditing()) ) {
116
                store.cancelEditingQuietly();
117
            }
118
            DisposeUtils.disposeQuietly(store);
119
        }
120
    }
121

    
122
    public static final FeatureType featureType() {
123
        DataManager dataManager = DALLocator.getDataManager();
124
        EditableFeatureType ft = dataManager.createFeatureType();
125
        ft.setLabel("VCSGIS Config");
126
        ft.getTags().set("ID", TABLE_NAME);
127
        ft.add(COD_CONFIG, DataTypes.STRING)
128
                .setSize(VCSGISCODELEN)
129
                .setIsPrimaryKey(true)
130
                .setLabel("Code")
131
                .setReadOnly(false)
132
                .setDefaultFieldValue("<%=replace(UUID(),'-','')%>")
133
                .setHidden(true);
134
        ft.add(VAR_NAME, DataTypes.STRING)
135
                .setSize(100)
136
                .setIsIndexed(true)
137
                .setAllowIndexDuplicateds(false)
138
                .setLabel("Name");
139
        ft.add(VAR_VALUE, DataTypes.STRING)
140
                .setSize(10240)
141
                .setLabel("Value");
142

    
143
        return ft.getNotEditableCopy();
144
    }
145
}