Statistics
| Revision:

root / trunk / libraries / libDataSourceBaseDrivers / src / org / gvsig / data / datastores / vectorial / driver / dbf / DBFDataSource.java @ 19736

History | View | Annotate | Download (2.78 KB)

1
package org.gvsig.data.datastores.vectorial.driver.dbf;
2

    
3
import java.io.File;
4
import java.util.ArrayList;
5

    
6
import org.gvsig.data.DataSourceManager;
7
import org.gvsig.data.IDataSourceParameters;
8
import org.gvsig.data.IDataStore;
9
import org.gvsig.data.IDataStoreParameters;
10
import org.gvsig.data.datasource.driver.file.AbstractDataSourceFile;
11
import org.gvsig.data.datastores.vectorial.driver.IDriverParameters;
12
import org.gvsig.data.datastores.vectorial.driver.IDriverStoreParameters;
13
import org.gvsig.data.datastores.vectorial.driver.exception.FileNotFoundDriverException;
14
import org.gvsig.data.exception.InitializeException;
15
import org.gvsig.data.exception.InitializeWriterException;
16
import org.gvsig.data.exception.ReadException;
17
import org.gvsig.data.vectorial.IFeatureType;
18

    
19
public class DBFDataSource extends AbstractDataSourceFile {
20

    
21
    public static String DATASOURCE_NAME="DBFDataSource";
22

    
23
        protected DBFDataSourceParameters parameters;
24
        protected File path;
25

    
26

    
27
        public IDataStoreParameters[] getSources() throws ReadException {
28
                if (!this.path.exists()){
29
                        new FileNotFoundDriverException(this.getName()+": Path not found '"+this.path+"'",new Exception());
30
                }
31
                DataSourceManager dsm=DataSourceManager.getManager();
32

    
33
                String files[] = this.path.list();
34
                int i;
35
                File theFile;
36
                ArrayList fileList = new ArrayList();
37
                IDriverParameters param;
38
                IDataStoreParameters dsp = null;
39

    
40
                for (i=0;i<files.length;i++){
41
                        theFile = new File(this.path,files[i]);
42

    
43
                        if (this.isValid(theFile)){
44
                                param= this.newParameter(theFile);
45

    
46

    
47
                                dsp=dsm.createDataStoreParameters(DBFStore.DATASTORE_NAME);
48

    
49
                                ((IDriverStoreParameters)dsp).setDriverParameters(param);
50

    
51
                                fileList.add(dsp);
52

    
53
                        }
54

    
55

    
56
                }
57
                IDataStoreParameters[] x = new IDataStoreParameters[1];
58
                x[0]=dsp;
59
                return (IDataStoreParameters[])fileList.toArray(x);
60
        }
61

    
62
        protected IDriverParameters newParameter(File file){
63
                DBFDriverParametersOld param = new DBFDriverParametersOld();
64
                param.setDBFFile(file);
65
                return param;
66
        }
67

    
68
        protected boolean isValid(String file){
69
                return this.isValid(new File(file));
70

    
71
        }
72

    
73
        protected boolean isValid(File file){
74
                if (!file.exists()){
75
                        return false;
76
                }
77
                return (file.getName().toLowerCase().endsWith(".dbf"));
78
        }
79

    
80
        public String getName() {
81
                return DATASOURCE_NAME;
82
        }
83

    
84
        public void init(IDataSourceParameters parameters) {
85
                this.parameters = (DBFDataSourceParameters)parameters;
86
                this.path = this.parameters.getSource();
87
        }
88

    
89
        public IDataStore createNewDataStore(IDataStoreParameters dsp,IFeatureType featureType) throws InitializeException, InitializeWriterException{
90
                DBFFeaturesWriter.create((DBFDriverParametersOld)((IDriverStoreParameters)dsp).getDriverParameters(),featureType);
91
                DataSourceManager dsm=DataSourceManager.getManager();
92
                return dsm.createDataStore(dsp);
93
        }
94

    
95
        public boolean canCreate() {
96
                return true;
97
        }
98

    
99
}