Statistics
| Revision:

gvsig-projects-pool / org.gvsig.vcsgis / trunk / org.gvsig.vcsgis / org.gvsig.vcsgis.lib / org.gvsig.vcsgis.lib.impl / src / test / java / org / gvsig / vcsgis / lib / impl / Test02Initws.java @ 3633

History | View | Annotate | Download (7.06 KB)

1
package org.gvsig.vcsgis.lib.impl;
2

    
3
import java.io.File;
4
import java.util.Collections;
5
import java.util.Comparator;
6
import java.util.HashSet;
7
import java.util.List;
8
import java.util.Map;
9
import java.util.Set;
10
import junit.framework.TestCase;
11
import static junit.framework.TestCase.assertEquals;
12
import org.apache.commons.io.FileUtils;
13
import org.apache.commons.lang3.StringUtils;
14
import org.gvsig.fmap.dal.DALLocator;
15
import org.gvsig.fmap.dal.DataManager;
16
import org.gvsig.fmap.dal.DataStoreParameters;
17
import static org.gvsig.fmap.dal.DatabaseWorkspaceManager.TABLE_CONFIGURATION_NAME;
18
import static org.gvsig.fmap.dal.DatabaseWorkspaceManager.TABLE_REPOSITORY_NAME;
19
import static org.gvsig.fmap.dal.DatabaseWorkspaceManager.TABLE_RESOURCES_NAME;
20
import org.gvsig.fmap.dal.feature.FeatureAttributeDescriptor;
21
import org.gvsig.fmap.dal.feature.FeatureStore;
22
import org.gvsig.fmap.dal.feature.FeatureType;
23
import org.gvsig.fmap.dal.store.jdbc.JDBCServerExplorerParameters;
24
import org.gvsig.fmap.dal.store.jdbc.JDBCStoreParameters;
25
import org.gvsig.fmap.dal.store.jdbc2.JDBCServerExplorer;
26
import org.gvsig.tools.library.impl.DefaultLibrariesInitializer;
27
import org.gvsig.tools.util.MapBuilder;
28
import org.gvsig.vcsgis.lib.VCSGisLocator;
29
import org.gvsig.vcsgis.lib.VCSGisManager;
30
import org.gvsig.vcsgis.lib.repository.VCSGisRepository;
31
import org.gvsig.vcsgis.lib.workspace.VCSGisWorkspace;
32
import org.gvsig.vcsgis.lib.workspace.tables.EntitiesTable;
33
import org.gvsig.vcsgis.lib.workspace.tables.LocalRevisionsTable;
34
import org.gvsig.vcsgis.lib.workspace.tables.RemoteChangesTable;
35
import org.gvsig.vcsgis.lib.workspace.tables.TopologyplanTable;
36
import org.gvsig.vcsgis.lib.workspace.tables.UsersTable;
37
import org.gvsig.vcsgis.lib.workspace.tables.VarsTable;
38
import org.gvsig.vcsgis.lib.workspace.tables.WorkspaceChangesTable;
39
import org.slf4j.Logger;
40
import org.slf4j.LoggerFactory;
41

    
42
public class Test02Initws extends TestCase {
43

    
44
    private static final Logger LOGGER = LoggerFactory.getLogger(Test02Initws.class);
45

    
46
    public Test02Initws(String testName) {
47
        super(testName);
48
    }
49

    
50
    @Override
51
    protected void setUp() throws Exception {
52
        super.setUp();
53
        new DefaultLibrariesInitializer().fullInitialize();
54
    }
55

    
56
    @Override
57
    protected void tearDown() throws Exception {
58
        super.tearDown();
59
    }
60

    
61
    // TODO add test methods here. The name must begin with 'test'. For example:
62
    // public void testHello() {}
63

    
64
    public void testCreateWS() throws Exception {
65
        String testid = "initws";
66
        VCSGisManager vcsgismanager = VCSGisLocator.getVCSGisManager();
67

    
68
        JDBCServerExplorerParameters server = TestUtils.getServerExplorerParameters("srv-"+testid);
69
        File wsfile = TestUtils.getFile(FileUtils.getFile("test-dbs","ws-"+testid)); 
70

    
71
        int r = vcsgismanager.initRepository(server, null);
72
        assertEquals("initRepository status", 0, r);
73

    
74
        TestUtils.h2sql_repository(server);
75
        VCSGisRepository repo = vcsgismanager.openRepository(server);
76
        
77
        r = vcsgismanager.initWorkspace(wsfile, repo, "Test initws", null);
78
        assertEquals("initWorkspace ws status", 0, r);
79
        TestUtils.h2sql_workspace(wsfile);
80
        
81
        VCSGisWorkspace workspace = vcsgismanager.openWorkspace(wsfile);
82
        assertNotNull("Can't open workspace", workspace);
83
        
84
        
85
        JDBCServerExplorer wsexplorer = TestUtils.openServerExplorer(wsfile);
86
        List<DataStoreParameters> tables = wsexplorer.list();
87
        Collections.sort(tables, new Comparator<DataStoreParameters>() {
88
            @Override
89
            public int compare(DataStoreParameters o1, DataStoreParameters o2) {
90
                return StringUtils.compare(
91
                        ((JDBCStoreParameters) o1).getTable(),
92
                        ((JDBCStoreParameters) o2).getTable()
93
                );
94
            }
95
        });
96
        Map<String, FeatureType> expectedTables = new MapBuilder<>()
97
                .add(WorkspaceChangesTable.TABLE_NAME,WorkspaceChangesTable.featureType())
98
                .add(VarsTable.TABLE_NAME,VarsTable.featureType())
99
                .add(EntitiesTable.TABLE_NAME,EntitiesTable.featureType())
100
                .add(RemoteChangesTable.TABLE_NAME,RemoteChangesTable.featureType())
101
                .add(LocalRevisionsTable.TABLE_NAME,LocalRevisionsTable.featureType())
102
                .add(UsersTable.TABLE_NAME,UsersTable.featureType())
103
                .add(TopologyplanTable.TABLE_NAME,TopologyplanTable.featureType())
104
                .add(TABLE_CONFIGURATION_NAME,null)
105
                .add(TABLE_REPOSITORY_NAME,null)
106
                .add(TABLE_RESOURCES_NAME,null)
107
                .build();
108
        
109
        Set<String>foundTableNames = new HashSet<>();
110
        for (DataStoreParameters table : tables) {
111
            JDBCStoreParameters params = (JDBCStoreParameters) table;
112
            String tableName = params.getTable();
113
            if (!tableName.startsWith("VCSGIS_") && !tableName.startsWith("GVSIGD_")) {
114
                continue;
115
            }
116
            assertTrue(expectedTables.containsKey(tableName));
117
            foundTableNames.add(tableName);
118
        }
119
        for (String tableName : expectedTables.keySet()) {
120
            assertTrue(foundTableNames.contains(tableName));
121
        }
122

    
123
        DataManager dataManager = DALLocator.getDataManager();
124
        for (DataStoreParameters tableParams : tables) {
125
            JDBCStoreParameters params = (JDBCStoreParameters) tableParams;
126
            String tableName = params.getTable();
127
            if (!tableName.startsWith("VCSGIS_") && !tableName.startsWith("GVSIGD_")) {
128
                continue;
129
            }
130
            FeatureStore store = (FeatureStore) dataManager.openStore(params.getProviderName(), params);
131
            FeatureType expectedFeatureType = expectedTables.get(tableName);
132
            if( expectedFeatureType!=null ) {
133
                FeatureType ft = store.getDefaultFeatureTypeQuietly();
134
                for (FeatureAttributeDescriptor expectedAttr : expectedFeatureType) {
135
                    FeatureAttributeDescriptor attr = ft.getAttributeDescriptor(expectedAttr.getName());
136
                    assertNotNull("Attr "+expectedAttr.getName(), attr);
137
                    assertEquals("Attr "+expectedAttr.getName()+" type", expectedAttr.getType(), attr.getType());
138
                    assertEquals("Attr "+expectedAttr.getName()+" size", expectedAttr.getSize(), attr.getSize());
139
                    assertEquals("Attr "+expectedAttr.getName()+" isPrimaryKey", expectedAttr.isPrimaryKey(), attr.isPrimaryKey());
140
                    assertEquals("Attr "+expectedAttr.getName()+" isIndexed", expectedAttr.isIndexed(), attr.isIndexed());
141
                    assertEquals("Attr "+expectedAttr.getName()+" allowIndexDuplicateds", expectedAttr.allowIndexDuplicateds(), attr.allowIndexDuplicateds());
142
                    assertEquals("Attr "+expectedAttr.getName()+" isReadOnly", expectedAttr.isReadOnly(), attr.isReadOnly());
143
                    assertEquals("Attr "+expectedAttr.getName()+" DefaultValue", expectedAttr.getDefaultValue(), attr.getDefaultValue());
144
                }
145
            }
146
            store.dispose();
147
        }
148
    }
149
}