Statistics
| Revision:

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
}