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