Revision 22958

View differences:

branches/v2_0_0_prep/libraries/libFMap_dataFile/src-test/org/gvsig/fmap/data/feature/file/dxf/DXFTest.java
10 10
import org.gvsig.fmap.data.CloseException;
11 11
import org.gvsig.fmap.data.DataManager;
12 12
import org.gvsig.fmap.data.InitializeException;
13
import org.gvsig.fmap.data.OpenException;
14 13
import org.gvsig.fmap.data.ReadException;
15
import org.gvsig.fmap.data.feature.file.DataStoreTest;
16 14
import org.gvsig.fmap.data.feature.Feature;
17 15
import org.gvsig.fmap.data.feature.FeatureAttributeDescriptor;
18 16
import org.gvsig.fmap.data.feature.FeatureCollection;
19 17
import org.gvsig.fmap.data.feature.FeatureStore;
20 18
import org.gvsig.fmap.data.feature.FeatureType;
21
import org.gvsig.fmap.data.feature.file.dxf.DXFStore;
22
import org.gvsig.fmap.data.feature.file.dxf.DXFStoreParameters;
23
import org.gvsig.fmap.data.feature.file.dxf.Register;
19
import org.gvsig.fmap.data.feature.file.DataStoreTest;
24 20

  
25 21
public class DXFTest extends TestCase {
26
	private File file = new File(DataStoreTest.class.getResource("data/prueba.dxf").getFile());
22
	public static final File file = new File(DataStoreTest.class.getResource(
23
			"data/prueba.dxf").getFile());
27 24

  
28 25

  
29 26
	public static void main(String[] args) {
branches/v2_0_0_prep/libraries/libFMap_dataFile/src-test/org/gvsig/fmap/data/feature/file/ResourceManagerTest.java
1
/* gvSIG. Geographic Information System of the Valencian Government
2
 *
3
 * Copyright (C) 2007-2008 Infrastructures and Transports Department
4
 * of the Valencian Government (CIT)
5
 *
6
 * This program is free software; you can redistribute it and/or
7
 * modify it under the terms of the GNU General Public License
8
 * as published by the Free Software Foundation; either version 2
9
 * of the License, or (at your option) any later version.
10
 *
11
 * This program is distributed in the hope that it will be useful,
12
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14
 * GNU General Public License for more details.
15
 *
16
 * You should have received a copy of the GNU General Public License
17
 * along with this program; if not, write to the Free Software
18
 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
19
 * MA  02110-1301, USA.
20
 *
21
 */
22

  
23
/*
24
* AUTHORS (In addition to CIT):
25
* 2008 IVER T.I. S.A.   {{Task}}
26
*/
27

  
28
package org.gvsig.fmap.data.feature.file;
29

  
30
import java.util.Comparator;
31
import java.util.Iterator;
32
import java.util.SortedSet;
33
import java.util.TreeSet;
34

  
35
import junit.framework.TestCase;
36

  
37
import org.gvsig.exceptions.BaseException;
38
import org.gvsig.fmap.data.CloseException;
39
import org.gvsig.fmap.data.DataCollection;
40
import org.gvsig.fmap.data.DataManager;
41
import org.gvsig.fmap.data.DataStore;
42
import org.gvsig.fmap.data.Resource;
43
import org.gvsig.fmap.data.ResourceManager;
44
import org.gvsig.fmap.data.ResourceNotification;
45
import org.gvsig.fmap.data.feature.file.shp.SHPTest;
46
import org.gvsig.util.observer.Observable;
47
import org.gvsig.util.observer.Observer;
48

  
49
public class ResourceManagerTest extends TestCase {
50

  
51
	private DataManager dataManager = DataManager.getManager();
52

  
53
	public class ResourceCloser implements Observer {
54
		private int maxOpened = 3;
55

  
56
		public void update(Observable observable, Object notification) {
57
			ResourceNotification rNotification;
58
			if (notification instanceof ResourceNotification) {
59
				rNotification = (ResourceNotification) notification;
60
			} else {
61
				return;
62
			}
63
			if (!rNotification.getType().equals(ResourceNotification.OPENED)) {
64
				try {
65
					this.ajustResources();
66
				} catch (CloseException e) {
67
					e.printStackTrace();
68
				}
69

  
70
			}
71

  
72
		}
73

  
74

  
75
		public void ajustResources() throws CloseException {
76
			SortedSet resources = this.getResourcesOrdered();
77
			if (resources.isEmpty() || resources.size() < this.maxOpened) {
78
				return;
79
			}
80

  
81
			int opened = 0;
82
			Iterator iter = resources.iterator();
83
			while (iter.hasNext()) {
84
				if (((Resource) iter.next()).isOpen()) {
85
					opened++;
86
				}
87
			}
88
			int toClose = opened - this.maxOpened;
89
			if (toClose < 1) {
90
				return;
91
			}
92
			System.out.println("** Resources to close: " + toClose);
93
			iter = resources.iterator();
94
			while (iter.hasNext() && toClose > 0) {
95
				Resource res = (Resource) iter.next();
96
				if (res.isOpen()) {
97
					res.close();
98
					toClose--;
99
					System.out.println("** closed: " + res.getName() + "("
100
							+ res.getKey() + ")");
101
				}
102

  
103
			}
104
		}
105

  
106
		public Comparator getResourceComparator() {
107
			Comparator resourceComparator = new Comparator(){
108

  
109
				public int compare(Object arg0, Object arg1) {
110
					Resource res0=(Resource) arg0;
111
					Resource res1=(Resource) arg1;
112
					if (res0.isOpen() != res1.isOpen()){
113
						if (res0.isOpen()){
114
							return -1;
115
						} else{
116
							return 1;
117
						}
118
					} else{
119
						if (res0.getLastTimeUsed().before(res1.getLastTimeUsed())){
120
							return -1;
121
						} else{
122
							return 1;
123
						}
124
					}
125
				}
126
			};
127

  
128
			return resourceComparator;
129
		}
130

  
131
		public SortedSet getResourcesOrdered() {
132
			SortedSet set = new TreeSet(this.getResourceComparator());
133
			ResourceManager resManager = ResourceManager.getResourceManager();
134
			Iterator iter = resManager.iterator();
135

  
136
			while (iter.hasNext()) {
137
				set.add(iter.next());
138
			}
139
			return set;
140
		}
141

  
142

  
143
		public void setMaxOpened(int maxOpened) {
144
			this.maxOpened = maxOpened;
145
		}
146

  
147
		public int getMaxOpened() {
148
			return maxOpened;
149
		}
150

  
151
		public int getOpenedResources() {
152
			ResourceManager resManager = ResourceManager.getResourceManager();
153
			Iterator iter = resManager.iterator();
154
			int opened = 0;
155

  
156
			while (iter.hasNext()) {
157
				if (((Resource) iter.next()).isOpen()) {
158
					opened++;
159
				}
160
			}
161

  
162
			return opened;
163
		}
164

  
165
		public void sys_out_resources() {
166
			ResourceManager resManager = ResourceManager.getResourceManager();
167
			Iterator iter = resManager.iterator();
168
			int opened = 0;
169

  
170
			while (iter.hasNext()) {
171
				Resource res = (Resource) iter.next();
172
				System.out.print("- Resource: " + res.getName() + "("
173
						+ res.getKey() + ") ");
174
				if (res.isOpen()) {
175
					System.out.println(" [Open]");
176
				} else {
177
					System.out.println(" [Close]");
178
				}
179
			}
180

  
181
		}
182

  
183

  
184
	}
185

  
186

  
187
	public void test_manual() {
188
		ResourceCloser closer = new ResourceCloser();
189

  
190

  
191
		org.gvsig.fmap.data.feature.file.dbf.Register.selfRegister();
192
		org.gvsig.fmap.data.feature.file.shp.Register.selfRegister();
193
		org.gvsig.fmap.data.feature.file.dxf.Register.selfRegister();
194
		org.gvsig.fmap.data.feature.file.dgn.Register.selfRegister();
195

  
196
		DataStore shp = null;
197
		DataStore shp_bis = null;
198
		DataStore shpNull = null;
199
		DataStore dbf = null;
200

  
201

  
202
		// Abrimos y cerrarmos uno (ojo los shp son dos recursos el dbf y el shp)
203
		try {
204
			shp = dataManager.createDataStore(SHPTest
205
					.getParams(SHPTest.fileNormal));
206
			shp.getMetadata();
207
		} catch (BaseException e) {
208
			e.printStackTrace();
209
			fail();
210
		}
211
		assertEquals(2, closer.getOpenedResources());
212
		try {
213
			shp.dispose();
214
		} catch (CloseException e) {
215
			e.printStackTrace();
216
			fail();
217
		}
218
		assertEquals(0, closer.getOpenedResources());
219

  
220

  
221

  
222

  
223
		// Abrimos dos veces el mismo y comprobamos que solo
224
		// hay un recurso
225
		try {
226
			shp = dataManager.createDataStore(SHPTest
227
					.getParams(SHPTest.fileNormal));
228
			shp.getMetadata();
229
		} catch (BaseException e) {
230
			e.printStackTrace();
231
			fail();
232
		}
233

  
234
		assertEquals(2, closer.getOpenedResources());
235
		try {
236
			shp_bis = dataManager.createDataStore(SHPTest
237
					.getParams(SHPTest.fileNormal));
238
			shp_bis.getMetadata();
239
		} catch (BaseException e) {
240
			e.printStackTrace();
241
			fail();
242
		}
243
		assertEquals(2, closer.getOpenedResources());
244

  
245
		// Abrimos un shp mas, llamamos al 'ajuste del closer' y comprobamos si deja solo 2
246
		try {
247
			shpNull = dataManager.createDataStore(SHPTest
248
					.getParams(SHPTest.fileGeometryNull));
249
			shpNull.getMetadata();
250
		} catch (BaseException e) {
251
			e.printStackTrace();
252
			fail();
253
		}
254
		assertEquals(4, closer.getOpenedResources());
255

  
256
		closer.setMaxOpened(2);
257
		try {
258
			closer.ajustResources();
259
		} catch (CloseException e) {
260
			e.printStackTrace();
261
			fail();
262
		}
263
		assertEquals(2, closer.getOpenedResources());
264

  
265
		//comprobamos que todos se puede volver a usar sin
266
		//problemas
267

  
268
		DataCollection coll;
269
		try {
270
			coll = shp.getDataCollection();
271
			coll.size();
272
			coll.iterator().next();
273
			coll.dispose();
274

  
275
			coll = shp_bis.getDataCollection();
276
			coll.size();
277
			coll.iterator().next();
278
			coll.dispose();
279

  
280
			coll = shpNull.getDataCollection();
281
			coll.size();
282
			coll.iterator().next();
283
			coll.dispose();
284

  
285
		} catch (BaseException e) {
286
			e.printStackTrace();
287
			fail();
288
		}
289

  
290
		//ahora deberian estar todos abiertos (4)
291
		closer.sys_out_resources();
292
		assertEquals(4, closer.getOpenedResources());
293

  
294
		//volvemos a comprobar que funciona
295
		closer.setMaxOpened(2);
296
		try {
297
			closer.ajustResources();
298
		} catch (CloseException e) {
299
			e.printStackTrace();
300
			fail();
301
		}
302
		assertEquals(2, closer.getOpenedResources());
303

  
304

  
305
	}
306

  
307

  
308

  
309
}
0 310

  
branches/v2_0_0_prep/libraries/libFMap_dataFile/src-test/org/gvsig/fmap/data/feature/file/dgn/DGNTest.java
8 8
import org.gvsig.fmap.data.CloseException;
9 9
import org.gvsig.fmap.data.DataManager;
10 10
import org.gvsig.fmap.data.InitializeException;
11
import org.gvsig.fmap.data.OpenException;
12 11
import org.gvsig.fmap.data.ReadException;
13
import org.gvsig.fmap.data.feature.file.DataStoreTest;
14 12
import org.gvsig.fmap.data.feature.Feature;
15 13
import org.gvsig.fmap.data.feature.FeatureAttributeDescriptor;
16 14
import org.gvsig.fmap.data.feature.FeatureCollection;
17 15
import org.gvsig.fmap.data.feature.FeatureType;
18
import org.gvsig.fmap.data.feature.file.dgn.DGNStore;
19
import org.gvsig.fmap.data.feature.file.dgn.DGNStoreParameters;
20
import org.gvsig.fmap.data.feature.file.dgn.Register;
16
import org.gvsig.fmap.data.feature.file.DataStoreTest;
21 17

  
22 18
public class DGNTest extends TestCase {
23 19

  
24
	private File file = new File(DataStoreTest.class.getResource("data/prueba.dgn").getFile());
20
	public static final File file = new File(DataStoreTest.class.getResource(
21
			"data/prueba.dgn").getFile());
25 22

  
26 23

  
27 24
	public static void main(String[] args) {
branches/v2_0_0_prep/libraries/libFMap_dataFile/src-test/org/gvsig/fmap/data/feature/file/shp/SHPTest.java
7 7

  
8 8
import org.gvsig.fmap.data.CloseException;
9 9
import org.gvsig.fmap.data.DataManager;
10
import org.gvsig.fmap.data.DataStoreParameters;
11 10
import org.gvsig.fmap.data.InitializeException;
12
import org.gvsig.fmap.data.OpenException;
13 11
import org.gvsig.fmap.data.ReadException;
14
import org.gvsig.fmap.data.feature.file.DataStoreTest;
15 12
import org.gvsig.fmap.data.feature.Feature;
16 13
import org.gvsig.fmap.data.feature.FeatureAttributeDescriptor;
17 14
import org.gvsig.fmap.data.feature.FeatureCollection;
18 15
import org.gvsig.fmap.data.feature.FeatureStore;
19 16
import org.gvsig.fmap.data.feature.FeatureType;
20
import org.gvsig.fmap.data.feature.file.shp.Register;
21
import org.gvsig.fmap.data.feature.file.shp.SHPStore;
22
import org.gvsig.fmap.data.feature.file.shp.SHPStoreParameters;
17
import org.gvsig.fmap.data.feature.file.DataStoreTest;
23 18

  
24 19
public class SHPTest extends TestCase {
25 20

  
26
	private File fileNormal = new File(DataStoreTest.class.getResource("data/prueba.shp").getFile());
27
	private File fileGeometryNull = new File(DataStoreTest.class.getResource("data/pruebaNull.shp").getFile());
21
	public static final File fileNormal = new File(DataStoreTest.class
22
			.getResource(
23
			"data/prueba.shp").getFile());
24
	public static final File fileGeometryNull = new File(DataStoreTest.class
25
			.getResource("data/pruebaNull.shp").getFile());
28 26

  
29 27

  
30 28
	public static void main(String[] args) {
......
40 38
		shp(fileNormal);
41 39
		shp(fileGeometryNull);
42 40
	}
41

  
42
	public static SHPStoreParameters getParams(File file)
43
			throws InitializeException {
44
		DataManager manager = DataManager.getManager();
45
		SHPStoreParameters shpParameters = null;
46
		shpParameters = (SHPStoreParameters) manager
47
				.createDataStoreParameters(SHPStore.DATASTORE_NAME);
48
		shpParameters.setFile(file);
49
		return shpParameters;
50
	}
51

  
43 52
	private void shp(File file){
44 53
		DataManager manager = DataManager.getManager();
45 54
		FeatureStore store = null;
46 55
		SHPStoreParameters shpParameters=null;
47 56
		try {
48
			shpParameters=(SHPStoreParameters)manager.createDataStoreParameters(SHPStore.DATASTORE_NAME);
57
			shpParameters = getParams(file);
49 58
		} catch (InitializeException e3) {
50 59
			e3.printStackTrace();
51 60
			fail();
52 61
		}
53
		shpParameters.setFile(file);
54
//		shpParameters.setDBFFile(SHP.getDbfFile(file));
55
//		shpParameters.setSHXFile(SHP.getShxFile(file));
56 62

  
57 63
		try {
58
			store= (FeatureStore)manager.createDataStore((DataStoreParameters)shpParameters);
64
			store= (FeatureStore)manager.createDataStore(shpParameters);
59 65
		} catch (InitializeException e) {
60 66
			// TODO Auto-generated catch block
61 67
			e.printStackTrace();
......
120 126
		SHPStoreParameters shpParameters=null;
121 127

  
122 128
		try {
123
			shpParameters=(SHPStoreParameters)manager.createDataStoreParameters(SHPStore.DATASTORE_NAME);
129
			shpParameters = getParams(fileNormal);
124 130
		} catch (InitializeException e) {
125 131
			e.printStackTrace();
126 132
			fail();
127 133
		}
128
		shpParameters.setFile(fileNormal);
129 134

  
130 135

  
131 136
		DataStoreTest.doFileResourceTest(shpParameters);
branches/v2_0_0_prep/libraries/libFMap_dataFile/src-test/org/gvsig/fmap/data/feature/file/dbf/DBFTest.java
19 19
import org.gvsig.fmap.data.feature.visitor.PrintlnFeaturesVisitor;
20 20

  
21 21
public class DBFTest extends TestCase {
22
	private File file = new File(DataStoreTest.class.getResource("data/prueba.dbf").getFile());
22
	public static final File file = new File(DataStoreTest.class.getResource(
23
			"data/prueba.dbf").getFile());
23 24

  
24 25

  
25 26
	public static void main(String[] args) {
......
105 106

  
106 107
	public void test_2() {
107 108
		DataManager manager = DataManager.getManager();
108
		Register.selfRegister();
109 109

  
110 110
		FeatureStore store = null;
111 111
		DBFStoreParameters dbfParameters = null;
112 112

  
113 113
		try {
114
			dbfParameters = (DBFStoreParameters) manager
115
					.createDataStoreParameters(DBFStore.DATASTORE_NAME);
114
			dbfParameters = getParams(file);
116 115
		} catch (InitializeException e3) {
117 116
			e3.printStackTrace();
118 117
			fail();
119 118
		}
120
		dbfParameters.setFile(file);
121 119

  
122 120
		try {
123 121
			store = (FeatureStore) manager.createDataStore(dbfParameters);
......
126 124
			e.printStackTrace();
127 125
		}
128 126

  
129
		FeatureType ft = store.getDefaultFeatureType();
130 127
		FeatureCollection featureCollection = null;
131 128
		try {
132 129
			featureCollection = (FeatureCollection) store.getDataCollection(
......
161 158

  
162 159
	public void test_Resources(){
163 160

  
164
		DataManager manager = DataManager.getManager();
165
		Register.selfRegister();
166

  
167 161
		DBFStoreParameters dbfParameters=null;
168 162

  
169 163
		try {
170
			dbfParameters=(DBFStoreParameters)manager.createDataStoreParameters(DBFStore.DATASTORE_NAME);
164
			dbfParameters = getParams(file);
171 165
		} catch (InitializeException e) {
172 166
			e.printStackTrace();
173 167
			fail();
174 168
		}
175
		dbfParameters.setFile(file);
176 169

  
177 170
		DataStoreTest.doFileResourceTest(dbfParameters);
178 171
	}
172

  
173
	public static DBFStoreParameters getParams(File file2)
174
			throws InitializeException {
175
		DataManager manager = DataManager.getManager();
176
		Register.selfRegister();
177

  
178
		DBFStoreParameters dbfParameters = null;
179

  
180
		dbfParameters = (DBFStoreParameters) manager
181
				.createDataStoreParameters(DBFStore.DATASTORE_NAME);
182
		dbfParameters.setFile(file2);
183
		return dbfParameters;
184
	}
179 185
}

Also available in: Unified diff