gvsig-tools / org.gvsig.tools / library / trunk / org.gvsig.tools / org.gvsig.tools.lib / src / test / java / org / gvsig / tools / persistence / DynObjectFactoryTest.java @ 629
History | View | Annotate | Download (4.55 KB)
1 |
package org.gvsig.tools.persistence; |
---|---|
2 |
|
3 |
import java.io.InputStream; |
4 |
import java.util.Date; |
5 |
import java.util.GregorianCalendar; |
6 |
import java.util.Map; |
7 |
|
8 |
import org.slf4j.Logger; |
9 |
import org.slf4j.LoggerFactory; |
10 |
|
11 |
import org.gvsig.tools.ToolsLocator; |
12 |
import org.gvsig.tools.dynobject.DynClass; |
13 |
import org.gvsig.tools.dynobject.DynObject; |
14 |
import org.gvsig.tools.dynobject.DynObjectManager; |
15 |
import org.gvsig.tools.dynobject.DynStruct; |
16 |
import org.gvsig.tools.exception.BaseException; |
17 |
import org.gvsig.tools.persistence.exception.PersistenceClassNotRegistered; |
18 |
import org.gvsig.tools.persistence.exception.PersistenceException; |
19 |
import org.gvsig.tools.persistence.exception.PersistenceTypeNotSupportedException; |
20 |
import org.gvsig.tools.persistence.exception.PersistenceValidateExceptions; |
21 |
|
22 |
public class DynObjectFactoryTest extends AbstractBasicTest { |
23 |
|
24 |
private static Logger logger = LoggerFactory |
25 |
.getLogger(DynObjectFactoryTest.class); |
26 |
|
27 |
private static int counter = 0; |
28 |
|
29 |
protected String OBJ1_NAME = "MyObjectBasicTypes"; |
30 |
protected DynObjectManager dynManager;
|
31 |
|
32 |
private static Date getDate() { |
33 |
return new GregorianCalendar(2010, 8, 5, 12, 5).getTime(); |
34 |
} |
35 |
|
36 |
public void doSetUp() throws Exception { |
37 |
this.manager = ToolsLocator.getPersistenceManager();
|
38 |
manager.setAutoValidation(PersistenceManager.MANDATORY); |
39 |
this.dynManager = ToolsLocator.getDynObjectManager();
|
40 |
} |
41 |
|
42 |
protected void register() throws Exception { |
43 |
if (this.manager.getDynObjectDefinition(OBJ1_NAME) == null) { |
44 |
InputStream resource = this |
45 |
.getClass() |
46 |
.getClassLoader() |
47 |
.getResourceAsStream( |
48 |
"org/gvsig/tools/persistence/BasicTypes2Test.xml");
|
49 |
|
50 |
Map definitions = this.dynManager.importDynClassDefinitions( |
51 |
resource, null);
|
52 |
DynClass dynStruct = (DynClass) definitions.get(OBJ1_NAME); |
53 |
this.manager.addDefinition(dynStruct, null, null); |
54 |
} |
55 |
|
56 |
} |
57 |
|
58 |
protected DynObject createDynObject1() {
|
59 |
return createDynObject1(OBJ1_NAME);
|
60 |
} |
61 |
|
62 |
protected DynObject createDynObject1(String name) { |
63 |
DynObject obj = this.dynManager.createDynObject(name,
|
64 |
PersistenceManager.PERSISTENCE_DYNOBJECT_NAMESPACE); |
65 |
float value = (counter / 3) * 700; |
66 |
|
67 |
obj.setDynValue("a", new Integer((int) value)); |
68 |
obj.setDynValue("b", new Long((long) value)); |
69 |
obj.setDynValue("c", new Double(value)); |
70 |
obj.setDynValue("d", new Float(value)); |
71 |
obj.setDynValue("e", new Boolean((counter % 2) == 0)); |
72 |
obj.setDynValue("f", String.valueOf(value)); |
73 |
obj.setDynValue("g", getDate());
|
74 |
|
75 |
counter++; |
76 |
|
77 |
return obj;
|
78 |
} |
79 |
|
80 |
void check(DynObject obj1, DynObject obj2) {
|
81 |
assertEquals("int value mistmach", obj1.getDynValue("a"), |
82 |
obj2.getDynValue("a"));
|
83 |
assertEquals("long value mistmach", obj1.getDynValue("b"), |
84 |
obj2.getDynValue("b"));
|
85 |
assertEquals("double value mistmach",
|
86 |
((Double) obj1.getDynValue("c")).doubleValue(), |
87 |
((Double) obj2.getDynValue("c")).doubleValue(), 0.01); |
88 |
assertEquals("float value mistmach",
|
89 |
((Float) obj1.getDynValue("d")).floatValue(), |
90 |
((Float) obj2.getDynValue("d")).floatValue(), 0.01); |
91 |
assertEquals("boolean value mistmach", obj1.getDynValue("e"), |
92 |
obj2.getDynValue("e"));
|
93 |
assertEquals("String value mistmach", obj1.getDynValue("f"), |
94 |
obj2.getDynValue("f"));
|
95 |
assertTrue("Date value mistmach",
|
96 |
obj1.getDynValue("g").equals(obj2.getDynValue("g"))); |
97 |
} |
98 |
|
99 |
public void testRegisterFactory() throws Exception { |
100 |
register(); |
101 |
} |
102 |
|
103 |
public void testGetState() throws Exception { |
104 |
try {
|
105 |
register(); |
106 |
DynObject obj = createDynObject1(); |
107 |
PersistentState state = manager.getState(obj); |
108 |
assertNotNull("Can't retrieve state", state);
|
109 |
DynStruct definition = state.getDefinition(); |
110 |
assertNotNull("Can't register class", definition);
|
111 |
assertEquals("Registration doesn't work, incorrect name", obj
|
112 |
.getDynClass().getName(), definition.getName()); |
113 |
} catch (BaseException ex) {
|
114 |
logger.warn(ex.getMessageStack(), ex); |
115 |
throw ex;
|
116 |
} |
117 |
} |
118 |
|
119 |
public void testSetState() throws PersistenceTypeNotSupportedException, |
120 |
PersistenceClassNotRegistered, PersistenceException, |
121 |
PersistenceValidateExceptions { |
122 |
DynObject obj1 = createDynObject1(); |
123 |
PersistentState state = manager.getState(obj1); |
124 |
assertNotNull("Can't retrieve state", state);
|
125 |
|
126 |
DynObject obj2 = (DynObject) manager.create(state); |
127 |
check(obj1, obj2); |
128 |
} |
129 |
|
130 |
public void testSaveState() throws Exception { |
131 |
DynObject obj = createDynObject1(); |
132 |
saveState(obj); |
133 |
} |
134 |
|
135 |
public void testLoadState() throws Exception { |
136 |
DynObject obj1 = createDynObject1(); |
137 |
PersistentState state = this.saveAndRestoreState(obj1);
|
138 |
DynObject obj2 = (DynObject) manager.create(state); |
139 |
|
140 |
check(obj1, obj2); |
141 |
} |
142 |
|
143 |
protected String getTestId() { |
144 |
return "dopf"; |
145 |
|
146 |
} |
147 |
|
148 |
} |