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 @ 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
}