Statistics
| Revision:

root / branches / v2_0_0_prep / libraries / libFMap_dalfile / src / org / gvsig / fmap / dal / store / dbf / DBFStoreParameters.java @ 30187

History | View | Annotate | Download (4.25 KB)

1
package org.gvsig.fmap.dal.store.dbf;
2

    
3
import java.io.File;
4
import java.nio.charset.Charset;
5
import java.util.Iterator;
6
import java.util.LinkedHashSet;
7
import java.util.Map;
8
import java.util.Set;
9

    
10
import org.gvsig.fmap.dal.DataStoreParameters;
11
import org.gvsig.fmap.dal.DataTypes;
12
import org.gvsig.fmap.dal.serverexplorer.filesystem.FilesystemStoreParameters;
13
import org.gvsig.fmap.dal.spi.AbstractDataParameters;
14
import org.gvsig.tools.ToolsLocator;
15
import org.gvsig.tools.dynobject.DelegatedDynObject;
16
import org.gvsig.tools.dynobject.DynClass;
17
import org.gvsig.tools.dynobject.DynField;
18
import org.gvsig.tools.dynobject.DynObjectManager;
19
import org.gvsig.tools.dynobject.DynObjectValueItem;
20

    
21

    
22
public class DBFStoreParameters extends AbstractDataParameters implements
23
                DataStoreParameters, FilesystemStoreParameters {
24

    
25
    public static final String DYNCLASS_NAME = "DBFStoreParameters";
26

    
27
    protected static final String FIELD_DBFFILENAME = "dbffilename";
28

    
29
        public static final String FIELD_ENCODING = "encoding";
30

    
31
        protected static DynClass DYNCLASS = null;
32

    
33
    protected static void registerDynClass() {
34
                DynObjectManager dynman = ToolsLocator.getDynObjectManager();
35
                DynClass dynClass;
36
                DynField field;
37
                if (DYNCLASS == null) {
38
                        dynClass = dynman.add(DYNCLASS_NAME);
39

    
40
                        field = dynClass.addDynField(FIELD_DBFFILENAME);
41
                        field.setTheTypeOfAvailableValues(DynField.SINGLE);
42
                        field.setDescription("DBF file name");
43
                        field.setType(DataTypes.STRING);
44
                        field.setMandatory(true);
45
                        DYNCLASS = dynClass;
46

    
47

    
48
                        field = dynClass.addDynField(FIELD_ENCODING);
49
                        field.setTheTypeOfAvailableValues(DynField.CHOICE);
50
                        field.setDescription("Encoding");
51
                        field.setType(DataTypes.STRING);
52
                        field.setMandatory(false);
53
                        field.setDefaultDynValue(null);
54

    
55

    
56
                        Set charsetSet = new LinkedHashSet(160);
57

    
58
                        charsetSet.add(new DynObjectValueItem(null, "{default}"));
59
                        charsetSet.add(new DynObjectValueItem("US-ASCII"));
60
                        charsetSet.add(new DynObjectValueItem("ISO-8859-1"));
61
                        charsetSet.add(new DynObjectValueItem("ISO-8859-15"));
62
                        charsetSet.add(new DynObjectValueItem("windows-1250"));
63
                        charsetSet.add(new DynObjectValueItem("windows-1252"));
64
                        charsetSet.add(new DynObjectValueItem("UTF-8"));
65
                        charsetSet.add(new DynObjectValueItem("UTF-16"));
66
                        charsetSet.add(new DynObjectValueItem("UTF-16BE"));
67
                        charsetSet.add(new DynObjectValueItem("UTF-16LE"));
68
                        Map charsets = Charset.availableCharsets();
69
                        Iterator iter = charsets.keySet().iterator();
70
                        while (iter.hasNext()){
71
                                charsetSet.add(new DynObjectValueItem(iter.next()));
72
                        }
73
                        field.setAvailableValues((DynObjectValueItem[]) charsetSet
74
                                        .toArray(new DynObjectValueItem[0]));
75

    
76

    
77

    
78
                        DYNCLASS = dynClass;
79

    
80
                }
81

    
82
        }
83

    
84
        public DBFStoreParameters() {
85
                super();
86
                initialize();
87
        }
88

    
89
        protected void initialize() {
90
                this.delegatedDynObject = (DelegatedDynObject) ToolsLocator
91
                                .getDynObjectManager()
92
                                .createDynObject(
93
                                                DBFStoreParameters.DYNCLASS);
94
        }
95

    
96
        public String getDataStoreName() {
97
                return DBFStoreProvider.NAME;
98
        }
99

    
100
        public boolean isValid() {
101
                return (this.getDBFFileName() != null);
102
        }
103

    
104
        public File getFile() {
105
                return new File(this.getDBFFileName());
106
        }
107

    
108
        public void setFile(File aFile) {
109
                this.setDBFFile(aFile);
110
        }
111

    
112
        public void setFile(String aFileName) {
113
                this.setDBFFileName(aFileName);
114
        }
115

    
116
        public String getDBFFileName() {
117
                return (String) this.getDynValue(FIELD_DBFFILENAME);
118
        }
119

    
120
        public File getDBFFile() {
121
                return new File((String) this.getDynValue(FIELD_DBFFILENAME));
122
        }
123

    
124
        public void setDBFFile(File aFile) {
125
                this.setDynValue(FIELD_DBFFILENAME, aFile.getPath());
126
        }
127

    
128
        public void setDBFFileName(String aFileName) {
129
                this.setDynValue(FIELD_DBFFILENAME, aFileName);
130
        }
131

    
132
        public String getDescription() {
133
                return DBFStoreProvider.DESCRIPTION;
134
        }
135

    
136
        public String getEncodingName() {
137
                return (String) getDynValue(FIELD_ENCODING);
138
        }
139
        public Charset getEncoding() {
140
                String name = getEncodingName();
141
                if (name == null) {
142
                        return null;
143
                }
144
                return Charset.forName(name);
145
        }
146

    
147
        public void setEncoding(String encoding) {
148
                this.setEncoding(Charset.forName(encoding));
149
        }
150

    
151
        public void setEncoding(Charset charset) {
152
                this.setDynValue(FIELD_ENCODING, charset.name());
153
        }
154
}