Statistics
| Revision:

svn-gvsig-desktop / branches / Mobile_Compatible_Hito_1 / libFMap_mobile_shp_driver / src-test / org / gvsig / data / datastores / vectorial / file / shp / PerformanceMeasure.java @ 21927

History | View | Annotate | Download (4.69 KB)

1
package org.gvsig.data.datastores.vectorial.file.shp;
2

    
3
import java.awt.Rectangle;
4
import java.awt.Shape;
5
import java.awt.geom.Rectangle2D;
6
import java.io.File;
7
import java.util.Iterator;
8

    
9
import org.apache.log4j.Logger;
10
import org.gvsig.data.DataCollection;
11
import org.gvsig.data.DataManager;
12
import org.gvsig.data.DataStoreParameters;
13
import org.gvsig.data.datastores.vectorial.file.shp.utils.SHP;
14
import org.gvsig.data.datastores.vectorial.file.shp_util.IGeometricDataStore;
15
import org.gvsig.data.spatialprovisionalold.IExtent;
16
import org.gvsig.data.vectorial.Feature;
17
import org.gvsig.data.vectorial.FeatureType;
18
import org.gvsig.fmap.geom.Geometry;
19

    
20
public class PerformanceMeasure {
21
        
22
        public static final int SHP_DRIVER_PSEUDO_NIO = 0;
23
        public static final int SHP_DRIVER_IN_MEMORY = 1;
24
        public static final int SHP_DRIVER_JNI_SHAPELIB = 2;
25
        
26
        private Logger logger = null;
27

    
28
        private File shpFile = null;
29
        private long layerID = 0;
30
        private Rectangle2D fullExtent = null;
31

    
32
        private IGeometricDataStore store = null;
33
        private String storeName = "";
34
        private String name = "";
35

    
36
        public PerformanceMeasure(File f, Logger _logger, String st_name) throws Exception {
37

    
38
                logger = _logger;
39
                name = f.getName();
40
                shpFile = f;
41
                storeName = st_name;
42
                layerID = System.currentTimeMillis();
43
                initStore(st_name);
44
        }
45

    
46
        private void initStore(String store_name) {
47
                DataManager manager = DataManager.getManager();
48

    
49
                logger.debug("PERFORMANCE_TEST LAYER " + name + " STORE " + store_name + " DATAMANAGER_OBTAINED " + (System.currentTimeMillis() - layerID));
50
                long t = System.currentTimeMillis();
51
                
52
                SHPStoreParameters shpParameters = null;
53
                shpParameters = (SHPStoreParameters)
54
                manager.createDataStoreParameters(store_name);
55
                
56
                shpParameters.setSHPFile(shpFile);
57
                shpParameters.setDBFFile(SHP.getDbfFile(shpFile));
58
                shpParameters.setSHXFile(SHP.getShxFile(shpFile));
59
                shpParameters.setDataStoreName(store_name);
60

    
61
                logger.debug("PERFORMANCE_TEST LAYER " + name + " STORE " + store_name + " DATASTORE_PARAMETERS_SET " + (System.currentTimeMillis() - t));
62
                t = System.currentTimeMillis();
63
                
64
                try {
65
                        store = (IGeometricDataStore) manager.createDataStore((DataStoreParameters) shpParameters);
66
                        store.setOnlyGeometry(true);
67
                        
68
                        logger.debug("PERFORMANCE_TEST LAYER " + name + " STORE " + store_name + " DATASTORE_CREATED " + (System.currentTimeMillis() - t));
69
                        t = System.currentTimeMillis();
70

    
71
                        store.doOpen();
72
                        
73
                        logger.debug("PERFORMANCE_TEST LAYER " + name + " STORE " + store_name + " DATASTORE_OPENED " + (System.currentTimeMillis() - t));
74
                        t = System.currentTimeMillis();
75
                        
76
                        IExtent iext = store.getFullExtent();
77
                        
78
                        logger.debug("PERFORMANCE_TEST LAYER " + name + " STORE " + store_name + " FULLEXTENT_CALCULATED " + (System.currentTimeMillis() - t));
79
                        t = System.currentTimeMillis();
80
                        
81
                        double xmin = iext.getMin(0);
82
                        double ymin = iext.getMin(1);
83
                        double xmax = iext.getMax(0);
84
                        double ymax = iext.getMax(1);
85
                        fullExtent = new Rectangle2D.Double(xmin, ymin, xmax - xmin, ymax
86
                                        - ymin);
87

    
88
                } catch (Exception ex) {
89
                        logger.error("While initializing layer: " + ex.getMessage());
90
                }
91
        }
92

    
93
        public long getId() {
94
                return layerID;
95
        }
96

    
97
        public Rectangle2D getFullExtent()  {
98
                return fullExtent;
99
        }
100
        
101
        public void drawStore() {
102
                
103
                long draw_start = System.currentTimeMillis();
104
                
105
                FeatureType ft = store.getDefaultFeatureType();
106
                DataCollection featureCollection = null;
107
                try {
108
                        featureCollection = (DataCollection) store.getDataCollection(ft, null, null);
109
                } catch (Exception e1) {
110
                        logger.error("While getting feat. collection for drawing: " + e1.getMessage());
111
                        return;
112
                }
113

    
114
                Iterator iter = featureCollection.iterator();
115

    
116
                while (iter.hasNext()) { // d
117
                        Feature feature = (Feature) iter.next();
118
                        Geometry geom = (Geometry) feature.getDefaultGeometry();
119
                        Shape shp = geom.getInternalShape();
120
                        Rectangle bounds = shp.getBounds();
121
                }
122

    
123
                iter = null;
124
                featureCollection.dispose();
125
                featureCollection = null;
126

    
127
                logger.debug("PERFORMANCE_TEST LAYER " + name + " STORE " + storeName + " DRAWTIME " + (System.currentTimeMillis() - draw_start));
128
        }
129

    
130
        public boolean isWritable() {
131
                // TODO Auto-generated method stub
132
                return false;
133
        }
134

    
135
        public void wakeUp(boolean driver_is_already_open) {
136
                // TODO Auto-generated method stub
137

    
138
        }
139

    
140
        public StringBuffer toXML(String name, String proyectPath) {
141
                // TODO Auto-generated method stub
142
                return null;
143
        }
144

    
145
        public void clean() {
146
                
147
                        long t = System.currentTimeMillis();
148
                        try {
149
                                store.doClose();
150
                                store.doDispose();
151
                                store = null;
152
                                logger.debug("PERFORMANCE_TEST LAYER " + name + " STORE " + storeName + " CLOSED_DATASTORE " + (System.currentTimeMillis() - t));                        
153
                        } catch (Exception ex) {
154
                                logger.error("While cleaning vector layer: " + ex.getMessage());
155
                        }
156
        }
157

    
158
}