svn-gvsig-desktop / trunk / org.gvsig.desktop / org.gvsig.desktop.plugin / org.gvsig.sqlite / org.gvsig.sqlite.provider / src / test / java / org / gvsig / sqlite / dal / operations / usecases / arena2 / TestAlternativeResourcesStorage.java @ 47539
History | View | Annotate | Download (6.31 KB)
1 |
package org.gvsig.sqlite.dal.operations.usecases.arena2; |
---|---|
2 |
|
3 |
|
4 |
import java.io.File; |
5 |
import org.gvsig.tools.library.impl.DefaultLibrariesInitializer; |
6 |
import org.slf4j.Logger; |
7 |
import org.slf4j.LoggerFactory; |
8 |
import junit.framework.TestCase; |
9 |
import org.apache.commons.io.FileUtils; |
10 |
import org.apache.commons.io.IOUtils; |
11 |
import org.gvsig.expressionevaluator.ExpressionEvaluatorLocator; |
12 |
import org.gvsig.expressionevaluator.ExpressionEvaluatorManager; |
13 |
import org.gvsig.expressionevaluator.ExpressionUtils; |
14 |
import org.gvsig.expressionevaluator.MutableSymbolTable; |
15 |
import org.gvsig.expressionevaluator.SymbolTable; |
16 |
import org.gvsig.expressionevaluator.spi.AbstractSymbolTableFactory; |
17 |
import org.gvsig.fmap.dal.DatabaseWorkspaceManager; |
18 |
import org.gvsig.fmap.dal.feature.EditableFeatureAttributeDescriptor; |
19 |
import org.gvsig.fmap.dal.feature.EditableFeatureType; |
20 |
import org.gvsig.fmap.dal.feature.Feature; |
21 |
import org.gvsig.fmap.dal.feature.FeatureAttributeDescriptor; |
22 |
import org.gvsig.fmap.dal.feature.FeatureStore; |
23 |
import org.gvsig.fmap.dal.feature.FeatureType; |
24 |
import org.gvsig.fmap.dal.store.jdbc2.AbstractTestUtils; |
25 |
import org.gvsig.sqlite.dal.TestCreate; |
26 |
import org.gvsig.sqlite.dal.TestUtilsSQLite; |
27 |
import org.gvsig.tools.dispose.DisposeUtils; |
28 |
import org.gvsig.tools.resourcesstorage.ResourcesStorage; |
29 |
|
30 |
/**
|
31 |
*
|
32 |
* @author jjdelcerro
|
33 |
*/
|
34 |
public class TestAlternativeResourcesStorage extends TestCase { |
35 |
private static final Logger LOGGER = LoggerFactory.getLogger(TestCreate.class); |
36 |
|
37 |
public static final String DBNAME = "test_ars1"; |
38 |
|
39 |
public TestAlternativeResourcesStorage(String testName) { |
40 |
super(testName);
|
41 |
} |
42 |
|
43 |
@Override
|
44 |
protected void setUp() throws Exception { |
45 |
super.setUp();
|
46 |
new DefaultLibrariesInitializer().fullInitialize();
|
47 |
} |
48 |
|
49 |
@Override
|
50 |
protected void tearDown() throws Exception { |
51 |
super.tearDown();
|
52 |
} |
53 |
|
54 |
protected AbstractTestUtils utils;
|
55 |
|
56 |
public AbstractTestUtils utils() {
|
57 |
if (this.utils == null) { |
58 |
this.utils = this.createUtils(); |
59 |
} |
60 |
return this.utils; |
61 |
} |
62 |
|
63 |
protected AbstractTestUtils createUtils() {
|
64 |
return new TestUtilsSQLite(); |
65 |
} |
66 |
|
67 |
public void testAlternativeResourcesStorage0() throws Exception { |
68 |
|
69 |
} |
70 |
|
71 |
@SuppressWarnings("ConvertToTryWithResources") |
72 |
public void testAlternativeResourcesStorage() throws Exception { |
73 |
|
74 |
// Que pasa con la cache de los recursos
|
75 |
|
76 |
FeatureType ft; |
77 |
EditableFeatureType eft; |
78 |
FeatureStore vehiculos; |
79 |
Feature f; |
80 |
EditableFeatureAttributeDescriptor eattr; |
81 |
FeatureAttributeDescriptor attr; |
82 |
|
83 |
File targetFolder = utils().getTargetFolder();
|
84 |
File gvsighome = new File(targetFolder,"gvsighome"); |
85 |
FileUtils.forceMkdirParent(gvsighome); |
86 |
|
87 |
ExpressionEvaluatorManager expressionManager = ExpressionEvaluatorLocator.getExpressionEvaluatorManager(); |
88 |
MutableSymbolTable symbolTable = ExpressionUtils.createSymbolTable(); |
89 |
expressionManager.registerSymbolTable(new AbstractSymbolTableFactory("", true) { |
90 |
@Override
|
91 |
public SymbolTable create(Object... args) { |
92 |
return symbolTable;
|
93 |
} |
94 |
}); |
95 |
symbolTable.setVar("$GVSIGHOMEFOLDER", gvsighome.getAbsolutePath());
|
96 |
File alternative_resources_folder = FileUtils.getFile(gvsighome, "arena2","localresources"); |
97 |
try {
|
98 |
FileUtils.forceDelete(alternative_resources_folder); |
99 |
} catch (Exception ex) { |
100 |
|
101 |
} |
102 |
FileUtils.forceMkdir(alternative_resources_folder); |
103 |
|
104 |
DatabaseWorkspaceManager workspace = TestArena2Utils.initDatabase(utils(), DBNAME); |
105 |
// Copiamos el recurso dal de la bbdd al ALTERNATIVE_RESOURCES_PATH
|
106 |
workspace.set("ALTERNATIVE_RESOURCES_PATH", "<%=$GVSIGHOMEFOLDER%>/arena2/localresources"); |
107 |
|
108 |
vehiculos = (FeatureStore) workspace.getStoresRepository().getStore("ARENA2_VEHICULOS");
|
109 |
ResourcesStorage.Resource srcres = vehiculos.getResourcesStorage().getResource("dal");
|
110 |
ResourcesStorage.Resource dstres = workspace.getAlternativeResourcesStorage("ARENA2_VEHICULOS").getResource("dal"); |
111 |
IOUtils.copy(srcres.asInputStream(), dstres.asOutputStream()); |
112 |
srcres.close(); |
113 |
dstres.close(); |
114 |
|
115 |
|
116 |
File dalres = new File(alternative_resources_folder,"ARENA2_VEHICULOS.dal"); |
117 |
assertTrue("Local dal resource not exists",dalres.exists());
|
118 |
long dalres_orig_crc = FileUtils.checksumCRC32(dalres);
|
119 |
|
120 |
|
121 |
vehiculos = (FeatureStore) workspace.getStoresRepository().getStore("ARENA2_VEHICULOS");
|
122 |
vehiculos.edit(); |
123 |
eft = vehiculos.getDefaultFeatureTypeQuietly().getEditable(); |
124 |
eattr = (EditableFeatureAttributeDescriptor) eft.getAttributeDescriptor("LID_VEHICULO");
|
125 |
eattr.setLabel("Vehiculo (ID)");
|
126 |
vehiculos.update(eft); |
127 |
vehiculos.finishEditing(); |
128 |
DisposeUtils.dispose(vehiculos); |
129 |
|
130 |
// Comprobamos que recurso dal en ALTERNATIVE_RESOURCES_PATH ha cambiado.
|
131 |
dalres = new File(alternative_resources_folder,"ARENA2_VEHICULOS.dal"); |
132 |
assertTrue("Local dal resource not exists",dalres.exists());
|
133 |
long dalres_mod_crc = FileUtils.checksumCRC32(dalres);
|
134 |
assertNotSame("No se ha modificado el fichero dal", dalres_mod_crc, dalres_orig_crc);
|
135 |
|
136 |
|
137 |
// Quitamos el ALTERNATIVE_RESOURCES_PATH y comprobamos que da lo que habia antes.
|
138 |
workspace.set("ALTERNATIVE_RESOURCES_PATH", null); |
139 |
vehiculos = (FeatureStore) workspace.getStoresRepository().getStore("ARENA2_VEHICULOS");
|
140 |
ft = vehiculos.getDefaultFeatureTypeQuietly(); |
141 |
attr = ft.getAttributeDescriptor("LID_VEHICULO");
|
142 |
assertEquals("Label LID_VEHICULO","_ID_vehiculo", attr.getLabel()); |
143 |
DisposeUtils.dispose(vehiculos); |
144 |
|
145 |
// Volvemos a poner el ALTERNATIVE_RESOURCES_PATH y comprobamos que da lo que
|
146 |
// habiamos modificado.
|
147 |
workspace.set("ALTERNATIVE_RESOURCES_PATH", "<%=$GVSIGHOMEFOLDER%>/arena2/localresources"); |
148 |
vehiculos = (FeatureStore) workspace.getStoresRepository().getStore("ARENA2_VEHICULOS");
|
149 |
ft = vehiculos.getDefaultFeatureTypeQuietly(); |
150 |
attr = ft.getAttributeDescriptor("LID_VEHICULO");
|
151 |
assertEquals("Label LID_VEHICULO","Vehiculo (ID)", attr.getLabel()); |
152 |
DisposeUtils.dispose(vehiculos); |
153 |
|
154 |
|
155 |
} |
156 |
} |