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 / Test01InitRepo.java @ 3309

History | View | Annotate | Download (7.31 KB)

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

    
3
import java.util.Collections;
4
import java.util.HashSet;
5
import java.util.List;
6
import java.util.Map;
7
import java.util.Set;
8
import junit.framework.TestCase;
9
import static junit.framework.TestCase.assertEquals;
10
import org.apache.commons.lang3.StringUtils;
11
import org.gvsig.fmap.dal.DALLocator;
12
import org.gvsig.fmap.dal.DataManager;
13
import org.gvsig.fmap.dal.DataStoreParameters;
14
import static org.gvsig.fmap.dal.DatabaseWorkspaceManager.TABLE_CONFIGURATION_NAME;
15
import static org.gvsig.fmap.dal.DatabaseWorkspaceManager.TABLE_RESOURCES_NAME;
16
import org.gvsig.fmap.dal.feature.FeatureAttributeDescriptor;
17
import org.gvsig.fmap.dal.feature.FeatureStore;
18
import org.gvsig.fmap.dal.feature.FeatureType;
19
import org.gvsig.fmap.dal.store.jdbc.JDBCStoreParameters;
20
import org.gvsig.fmap.dal.store.jdbc2.JDBCServerExplorer;
21
import org.gvsig.tools.library.impl.DefaultLibrariesInitializer;
22
import org.gvsig.tools.util.ListBuilder;
23
import org.gvsig.tools.util.MapBuilder;
24
import org.gvsig.vcsgis.lib.VCSGisLocator;
25
import org.gvsig.vcsgis.lib.VCSGisManager;
26
import org.gvsig.vcsgis.lib.repository.localdb.tables.DataRepoTable;
27
import org.gvsig.vcsgis.lib.repository.localdb.tables.EntitiesRepoTable;
28
import org.gvsig.vcsgis.lib.repository.localdb.tables.HooksRepoTable;
29
import org.gvsig.vcsgis.lib.repository.localdb.tables.RevisionsRepoTable;
30
import org.gvsig.vcsgis.lib.repository.localdb.tables.ConfigRepoTable;
31
import org.gvsig.vcsgis.lib.repository.localdb.tables.ResourcesRepoTable;
32
import org.gvsig.vcsgis.lib.repository.localdb.tables.TopologyplanRepoTable;
33
import org.gvsig.vcsgis.lib.repository.localdb.tables.UsersRepoTable;
34
import org.slf4j.Logger;
35
import org.slf4j.LoggerFactory;
36

    
37
public class Test01InitRepo extends TestCase {
38

    
39
    private static final Logger LOGGER = LoggerFactory.getLogger(Test01InitRepo.class);
40

    
41
    public Test01InitRepo(String testName) {
42
        super(testName);
43
    }
44

    
45
    @Override
46
    protected void setUp() throws Exception {
47
        super.setUp();
48
        new DefaultLibrariesInitializer().fullInitialize();
49
    }
50

    
51
    @Override
52
    protected void tearDown() throws Exception {
53
        super.tearDown();
54
    }
55

    
56
    private static class ExpectedValue implements Comparable<ExpectedValue>{
57

    
58
        private final String tableName;
59
        private final FeatureType featureType;
60
        public ExpectedValue(String tableName, FeatureType featureType) {
61
            this.tableName = tableName;
62
            this.featureType = featureType;
63
        }
64

    
65
        @Override
66
        public int compareTo(ExpectedValue o) {
67
            return this.tableName.compareTo(o.tableName);
68
        }
69
    }
70
    
71
    // TODO add test methods here. The name must begin with 'test'. For example:
72
    // public void testHello() {}
73
    public void testInit1() throws Exception {
74
        final String testid = "initrepo";
75
        JDBCServerExplorer server = TestUtils.openServerExplorer("srv-"+testid);
76
        
77
        VCSGisManager vcsgismanager = VCSGisLocator.getVCSGisManager();
78

    
79
        int r = vcsgismanager.initRepository(server.getParameters(), null);
80
        assertEquals("initRepository status", 0, r);
81
        TestUtils.h2sql_repository(server);
82

    
83
        List<DataStoreParameters> tables = server.list();
84
        Collections.sort(tables, (DataStoreParameters o1, DataStoreParameters o2) -> StringUtils.compare(
85
                ((JDBCStoreParameters) o1).getTable(),
86
                ((JDBCStoreParameters) o2).getTable()
87
        ));
88
        Map<String, ExpectedValue> expectedTables = new MapBuilder<>()
89
                .add(DataRepoTable.TABLE_NAME, new ExpectedValue(DataRepoTable.TABLE_NAME,DataRepoTable.featureType()))
90
                .add(EntitiesRepoTable.TABLE_NAME,new ExpectedValue(EntitiesRepoTable.TABLE_NAME,EntitiesRepoTable.featureType()))
91
                .add(HooksRepoTable.TABLE_NAME, new ExpectedValue(HooksRepoTable.TABLE_NAME,HooksRepoTable.featureType()))
92
                .add(RevisionsRepoTable.TABLE_NAME,new ExpectedValue(RevisionsRepoTable.TABLE_NAME,RevisionsRepoTable.featureType()))
93
                .add(ConfigRepoTable.TABLE_NAME,new ExpectedValue(ConfigRepoTable.TABLE_NAME,ConfigRepoTable.featureType()))
94
                .add(TopologyplanRepoTable.TABLE_NAME,new ExpectedValue(TopologyplanRepoTable.TABLE_NAME,TopologyplanRepoTable.featureType()))
95
                .add(UsersRepoTable.TABLE_NAME,new ExpectedValue(UsersRepoTable.TABLE_NAME,UsersRepoTable.featureType()))
96
                .add(ResourcesRepoTable.TABLE_NAME,new ExpectedValue(ResourcesRepoTable.TABLE_NAME,ResourcesRepoTable.featureType()))
97
                .add(TABLE_CONFIGURATION_NAME,new ExpectedValue(TABLE_CONFIGURATION_NAME,null))
98
//                .add(TABLE_REPOSITORY_NAME,new ExpectedValue(TABLE_REPOSITORY_NAME,null))
99
                .add(TABLE_RESOURCES_NAME,new ExpectedValue(TABLE_RESOURCES_NAME,null))
100
                .build();
101
        
102

    
103
        Set<String>foundTableNames = new HashSet<>();
104
        for (DataStoreParameters table : tables) {
105
            JDBCStoreParameters params = (JDBCStoreParameters) table;
106
            String tableName = params.getTable();
107
            if (!tableName.startsWith("VCSGISREPO_") && !tableName.startsWith("GVSIGD_")) {
108
                continue;
109
            }
110
            assertNotNull(expectedTables.containsKey(tableName));
111
            foundTableNames.add(tableName);
112
        }
113
        for (String tableName : expectedTables.keySet()) {
114
            assertTrue(foundTableNames.contains(tableName));
115
        }
116
            
117
        DataManager dataManager = DALLocator.getDataManager();
118
        for (DataStoreParameters tableParams : tables) {
119
            JDBCStoreParameters params = (JDBCStoreParameters) tableParams;
120
            String tableName = params.getTable();
121
            if (!tableName.startsWith("VCSGISREPO_") && !tableName.startsWith("GVSIGD_")) {
122
                continue;
123
            }
124
            FeatureStore store = (FeatureStore) dataManager.openStore(params.getProviderName(), params);
125
            FeatureType expectedFeatureType = expectedTables.get(tableName).featureType;
126
            if (expectedFeatureType != null) {
127
                FeatureType ft = store.getDefaultFeatureTypeQuietly();
128
                for (FeatureAttributeDescriptor expectedAttr : expectedFeatureType) {
129
                    FeatureAttributeDescriptor attr = ft.getAttributeDescriptor(expectedAttr.getName());
130
                    assertNotNull("Attr " + expectedAttr.getName(), attr);
131
                    assertEquals("Attr " + expectedAttr.getName() + " type", expectedAttr.getType(), attr.getType());
132
                    assertEquals("Attr " + expectedAttr.getName() + " size", expectedAttr.getSize(), attr.getSize());
133
                    assertEquals("Attr " + expectedAttr.getName() + " isPrimaryKey", expectedAttr.isPrimaryKey(), attr.isPrimaryKey());
134
                    assertEquals("Attr " + expectedAttr.getName() + " isIndexed", expectedAttr.isIndexed(), attr.isIndexed());
135
                    assertEquals("Attr " + expectedAttr.getName() + " allowIndexDuplicateds", expectedAttr.allowIndexDuplicateds(), attr.allowIndexDuplicateds());
136
                    assertEquals("Attr " + expectedAttr.getName() + " isReadOnly", expectedAttr.isReadOnly(), attr.isReadOnly());
137
                    assertEquals("Attr " + expectedAttr.getName() + " DefaultValue", expectedAttr.getDefaultValue(), attr.getDefaultValue());
138
                }
139
            }
140
            store.dispose();
141
        }
142
    }
143
}