Statistics
| Revision:

root / trunk / libraries / libGDBMS / src / main / java / com / hardcode / gdbms / driver / shapefile / SHPDriver.java @ 10627

History | View | Annotate | Download (4.67 KB)

1
package com.hardcode.gdbms.driver.shapefile;
2

    
3
import java.awt.geom.Rectangle2D;
4
import java.io.File;
5
import java.io.IOException;
6

    
7
import com.hardcode.gdbms.driver.dbf.DBFDriver;
8
import com.hardcode.gdbms.driver.exceptions.CloseDriverException;
9
import com.hardcode.gdbms.driver.exceptions.OpenDriverException;
10
import com.hardcode.gdbms.driver.exceptions.ReadDriverException;
11
import com.hardcode.gdbms.driver.exceptions.WriteDriverException;
12
import com.hardcode.gdbms.engine.data.DataSourceFactory;
13
import com.hardcode.gdbms.engine.data.driver.DriverException;
14
import com.hardcode.gdbms.engine.data.driver.SpatialFileDriver;
15
import com.hardcode.gdbms.engine.data.file.FileDataWare;
16
import com.hardcode.gdbms.engine.spatial.GeneralPath;
17
import com.hardcode.gdbms.engine.spatial.Geometry;
18
import com.hardcode.gdbms.engine.spatial.GeometryImpl;
19
import com.hardcode.gdbms.engine.values.Value;
20
import com.vividsolutions.jts.geom.Coordinate;
21
import com.vividsolutions.jts.geom.GeometryFactory;
22

    
23
/**
24
 *
25
 */
26
public class SHPDriver implements SpatialFileDriver{
27

    
28
    private DBFDriver dbfDriver;
29
    private SHP shp;
30
    private String prefix;
31

    
32
    /**
33
     * @see com.hardcode.gdbms.engine.data.driver.FileDriver#open(java.io.File)
34
     */
35
    public void open(File file) throws OpenDriverException {
36
        String fileName = file.getAbsolutePath().trim();
37
        prefix = fileName.substring(0, fileName.length() - 4);
38
        dbfDriver = new DBFDriver();
39
        dbfDriver.open(new File(prefix + ".dbf"));
40
        shp = new SHP();
41
        shp.open(file, prefix);
42
    }
43

    
44
    /**
45
     * @see com.hardcode.gdbms.engine.data.driver.FileDriver#close()
46
     */
47
    public void close() throws CloseDriverException {
48
        dbfDriver.close();
49
        shp.close();
50
    }
51

    
52
    /**
53
     * @see com.hardcode.gdbms.engine.data.driver.FileDriver#fileAccepted(java.io.File)
54
     */
55
    public boolean fileAccepted(File f) {
56
        return f.getName().toLowerCase().endsWith(".shp");
57
    }
58

    
59
    /**
60
     * @see com.hardcode.gdbms.engine.data.driver.FileDriver#writeFile(com.hardcode.gdbms.engine.data.file.FileDataWare, java.io.File)
61
     */
62
    public void writeFile(FileDataWare dataWare) throws WriteDriverException {
63
        throw new UnsupportedOperationException();
64
    }
65

    
66
    /**
67
     * @see com.hardcode.gdbms.engine.data.driver.ReadAccess#getFieldValue(long, int)
68
     */
69
    public Value getFieldValue(long rowIndex, int fieldId) throws ReadDriverException {
70
        return dbfDriver.getFieldValue(rowIndex, fieldId);
71
    }
72

    
73
    /**
74
     * @see com.hardcode.gdbms.engine.data.driver.ReadAccess#getFieldCount()
75
     */
76
    public int getFieldCount() throws ReadDriverException {
77
        return dbfDriver.getFieldCount();
78
    }
79

    
80
    /**
81
     * @see com.hardcode.gdbms.engine.data.driver.ReadAccess#getFieldName(int)
82
     */
83
    public String getFieldName(int fieldId) throws ReadDriverException {
84
        return dbfDriver.getFieldName(fieldId);
85
    }
86

    
87
    /**
88
     * @see com.hardcode.gdbms.engine.data.driver.ReadAccess#getRowCount()
89
     */
90
    public long getRowCount() throws ReadDriverException {
91
        return dbfDriver.getRowCount();
92
    }
93

    
94
    /**
95
     * @see com.hardcode.gdbms.engine.data.driver.ReadAccess#getFieldType(int)
96
     */
97
    public int getFieldType(int i) throws ReadDriverException {
98
        return dbfDriver.getFieldType(i);
99
    }
100

    
101
    /**
102
     * @see com.hardcode.driverManager.Driver#getName()
103
     */
104
    public String getName() {
105
        return "GDBMS shapefile driver";
106
    }
107

    
108
    /**
109
     * @see com.hardcode.gdbms.engine.data.driver.SpatialFileDriver#getFullExtent()
110
     */
111
    public Rectangle2D getFullExtent() {
112
        return shp.getExtent();
113
    }
114

    
115
    /**
116
     * @see com.hardcode.gdbms.engine.data.driver.SpatialDriver#getGeometry(long)
117
     */
118
    public Geometry getGeometry(long rowIndex) throws ReadDriverException {
119
        try {
120
            return new GeometryImpl(shp.getGeometry((int) rowIndex));
121
        } catch (IOException e) {
122
            throw new ReadDriverException(getName(),e);
123
        }
124
    }
125

    
126
    /**
127
     * @see com.hardcode.gdbms.engine.data.driver.SpatialDriver#getJTSGeometry(long)
128
     */
129
    public com.vividsolutions.jts.geom.Geometry getJTSGeometry(long rowIndex) throws ReadDriverException {
130
        try {
131
            return shp.getGeometry((int) rowIndex).getJTSGeometry();
132
        } catch (IOException e) {
133
            throw new ReadDriverException(getName(),e);
134
        }
135
    }
136

    
137
    public void createSource(String path, String[] fieldNames, int[] fieldTypes) throws ReadDriverException {
138
        throw new UnsupportedOperationException();
139
    }
140

    
141
    public void setDataSourceFactory(DataSourceFactory dsf) {
142
    }
143

    
144
        public int getFieldWidth(int i) throws ReadDriverException {
145
                return dbfDriver.getFieldWidth(i);
146
        }
147

    
148

    
149

    
150
}