Statistics
| Revision:

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
}