svn-gvsig-desktop / trunk / org.gvsig.desktop / org.gvsig.desktop.compat.cdc / org.gvsig.fmap.dal / org.gvsig.fmap.dal.db / org.gvsig.fmap.dal.db.jdbc / src / test / java / org / gvsig / fmap / dal / store / jdbc2 / AbstractTestFeatureReferenceIteratorToFeatureIterator.java @ 46309
History | View | Annotate | Download (6.09 KB)
1 |
package org.gvsig.fmap.dal.store.jdbc2; |
---|---|
2 |
|
3 |
import java.util.ArrayList; |
4 |
import java.util.HashMap; |
5 |
import java.util.HashSet; |
6 |
import java.util.List; |
7 |
import java.util.Map; |
8 |
import java.util.Objects; |
9 |
import java.util.Set; |
10 |
import junit.framework.TestCase; |
11 |
import static junit.framework.TestCase.assertEquals; |
12 |
import org.apache.commons.lang3.tuple.Pair; |
13 |
import org.apache.log4j.Level; |
14 |
import org.apache.log4j.LogManager; |
15 |
import org.gvsig.fmap.dal.DatabaseWorkspaceManager; |
16 |
import org.gvsig.fmap.dal.feature.Feature; |
17 |
import org.gvsig.fmap.dal.feature.FeatureSelection; |
18 |
import org.gvsig.fmap.dal.feature.FeatureStore; |
19 |
import org.gvsig.fmap.dal.store.jdbc2.impl.ResulSetControlerBase; |
20 |
import org.gvsig.tools.dispose.DisposeUtils; |
21 |
import org.gvsig.tools.library.impl.DefaultLibrariesInitializer; |
22 |
import org.slf4j.Logger; |
23 |
import org.slf4j.LoggerFactory; |
24 |
|
25 |
public abstract class AbstractTestFeatureReferenceIteratorToFeatureIterator extends TestCase { |
26 |
|
27 |
protected static final Logger LOGGER = LoggerFactory.getLogger(AbstractTestFeatureReferenceIteratorToFeatureIterator.class); |
28 |
|
29 |
protected AbstractTestUtils utils;
|
30 |
|
31 |
public AbstractTestFeatureReferenceIteratorToFeatureIterator(String testName) { |
32 |
super(testName);
|
33 |
} |
34 |
|
35 |
@Override
|
36 |
protected void setUp() throws Exception { |
37 |
super.setUp();
|
38 |
new DefaultLibrariesInitializer().fullInitialize();
|
39 |
} |
40 |
|
41 |
@Override
|
42 |
protected void tearDown() throws Exception { |
43 |
super.tearDown();
|
44 |
} |
45 |
|
46 |
public AbstractTestUtils utils() {
|
47 |
if (this.utils == null) { |
48 |
this.utils = this.createUtils(); |
49 |
} |
50 |
return this.utils; |
51 |
} |
52 |
|
53 |
protected abstract AbstractTestUtils createUtils(); |
54 |
|
55 |
private List<Pair<org.apache.log4j.Logger,Level>> get_loggers(Object... classes) { |
56 |
List<Pair<org.apache.log4j.Logger,Level>> loggers = new ArrayList<>(); |
57 |
for (Object theClass : classes) { |
58 |
org.apache.log4j.Logger logger; |
59 |
if( theClass instanceof Class ) { |
60 |
logger = LogManager.getLogger((Class)theClass); |
61 |
} else {
|
62 |
logger = LogManager.getLogger(Objects.toString(theClass, null)); |
63 |
} |
64 |
if( logger!=null ) { |
65 |
loggers.add(Pair.of(logger,logger.getLevel())); |
66 |
} |
67 |
} |
68 |
return loggers;
|
69 |
} |
70 |
|
71 |
private void restore_level(List<Pair<org.apache.log4j.Logger,Level>> loggers) { |
72 |
for (Pair<org.apache.log4j.Logger, Level> logger : loggers) { |
73 |
logger.getLeft().setLevel(logger.getRight()); |
74 |
} |
75 |
} |
76 |
|
77 |
private void set_level(List<Pair<org.apache.log4j.Logger,Level>> loggers, Level level) { |
78 |
for (Pair<org.apache.log4j.Logger, Level> logger : loggers) { |
79 |
logger.getLeft().setLevel(level); |
80 |
} |
81 |
} |
82 |
|
83 |
protected void testFRI2FI1() throws Exception { |
84 |
try {
|
85 |
if (!utils().isTheDatabaseAvailable()) {
|
86 |
return;
|
87 |
} |
88 |
|
89 |
List<Pair<org.apache.log4j.Logger, Level>> loggers = get_loggers(JDBCUtils.class, ResulSetControlerBase.class, "org.gvsig.fmap.dal.store.h2.H2SpatialHelper"); |
90 |
set_level(loggers, Level.INFO);
|
91 |
|
92 |
FeatureStore sourceStore = utils().openCSVStore("/org/gvsig/fmap/dal/store/jdbc2/esp_poblaciones-nogeom.csv");
|
93 |
JDBCServerExplorer explorer = utils().openServerExplorer("testFRI2FI");
|
94 |
|
95 |
utils().info_jdbc(explorer); |
96 |
|
97 |
// Importamos el CSV en la bbdd
|
98 |
LOGGER.info("Creating table 'poblaciones' in h2 temporary database.");
|
99 |
utils().drop_tables(explorer, "poblaciones", DatabaseWorkspaceManager.TABLE_RESOURCES_NAME);
|
100 |
utils().create_table_from(explorer, "poblaciones", sourceStore);
|
101 |
utils().insert_into_from(explorer, "poblaciones", sourceStore, FeatureStore.MODE_APPEND);
|
102 |
|
103 |
LOGGER.info("Loading table 'poblaciones' in in memory and populate selection.");
|
104 |
FeatureStore dbstore = utils().openStore(explorer, "poblaciones");
|
105 |
FeatureSelection selection = dbstore.getFeatureSelection(); |
106 |
Map<Integer,Feature> features = new HashMap<>(); |
107 |
for (Feature feature : dbstore.getFeatureSet()) {
|
108 |
Feature f = feature; |
109 |
int pk = f.getInt("COD_POBLACION"); |
110 |
features.put(pk,feature.getCopy()); |
111 |
selection.select(feature); |
112 |
} |
113 |
// selection.selectAll();
|
114 |
|
115 |
// LOGGER.info("Getting features from selection (1)");
|
116 |
// long t1 = System.currentTimeMillis();
|
117 |
// int count1 = 0;
|
118 |
// Set<Integer> found1 = new HashSet<>();
|
119 |
// for (FeatureReference featureReference : selection.referenceIterable()) {
|
120 |
// Feature f = featureReference.getFeature();
|
121 |
// int pk = f.getInt("COD_POBLACION");
|
122 |
// assertNotNull("row "+count1, features.get(pk));
|
123 |
// found1.add(pk);
|
124 |
// count1++;
|
125 |
// }
|
126 |
// assertEquals("features recuperadas (1)", features.size(), found1.size());
|
127 |
// long time1 = System.currentTimeMillis()-t1;
|
128 |
// LOGGER.info("time (1) "+time1+"ms, count "+count1);
|
129 |
LOGGER.info("Getting features from selection (2)");
|
130 |
long t2 = System.currentTimeMillis(); |
131 |
int count2 = 0; |
132 |
Set<Integer> found2 = new HashSet<>(); |
133 |
for (Feature feature : dbstore.getFeaturesIterable(selection.referenceIterator()) ) {
|
134 |
Feature f = feature; |
135 |
int pk = f.getInt("COD_POBLACION"); |
136 |
assertNotNull("row "+count2, features.get(pk));
|
137 |
found2.add(pk); |
138 |
count2++; |
139 |
} |
140 |
assertEquals("features recuperadas (2)", features.size(), found2.size());
|
141 |
long time2 = System.currentTimeMillis()-t2; |
142 |
// LOGGER.info("time (1) "+time1+"ms, count "+count1);
|
143 |
LOGGER.info("time (2) "+time2+"ms, count "+count2); |
144 |
|
145 |
restore_level(loggers); |
146 |
|
147 |
DisposeUtils.dispose(dbstore); |
148 |
|
149 |
} catch (Throwable th) { |
150 |
LOGGER.warn("", th);
|
151 |
throw th;
|
152 |
} |
153 |
} |
154 |
|
155 |
} |