Statistics
| Revision:

gvsig-tools / org.gvsig.tools / library / tags / org.gvsig.tools-3.0.13 / org.gvsig.tools.lib / src / test / java / org / gvsig / tools / persistence / BasicMapTest.java

History | View | Annotate | Download (5.66 KB)

1
/**
2
 * gvSIG. Desktop Geographic Information System.
3
 *
4
 * Copyright (C) 2007-2013 gvSIG Association.
5
 *
6
 * This program is free software; you can redistribute it and/or
7
 * modify it under the terms of the GNU General Public License
8
 * as published by the Free Software Foundation; either version 2
9
 * of the License, or (at your option) any later version.
10
 *
11
 * This program is distributed in the hope that it will be useful,
12
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14
 * GNU General Public License for more details.
15
 *
16
 * You should have received a copy of the GNU General Public License
17
 * along with this program; if not, write to the Free Software
18
 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
19
 * MA  02110-1301, USA.
20
 *
21
 * For any additional information, do not hesitate to contact us
22
 * at info AT gvsig.com, or visit our website www.gvsig.com.
23
 */
24
package org.gvsig.tools.persistence;
25

    
26
import java.util.HashMap;
27
import java.util.Map;
28

    
29
import org.gvsig.tools.dataTypes.DataTypes;
30
import org.gvsig.tools.dynobject.DynStruct;
31
import org.gvsig.tools.persistence.exception.PersistenceClassNotRegistered;
32
import org.gvsig.tools.persistence.exception.PersistenceException;
33
import org.gvsig.tools.persistence.exception.PersistenceTypeNotSupportedException;
34
import org.gvsig.tools.persistence.exception.PersistenceValidateExceptions;
35

    
36
public class BasicMapTest         extends AbstractBasicTest {
37
        
38
        public static  class MyObject2 implements Persistent {
39

    
40
                String name;
41
                
42
                public MyObject2() {
43
                        this.name = "(unknow)";
44
                }
45
                
46
                MyObject2(String name){
47
                        this.name = name;
48
                }
49
                
50
                public String getName() {
51
                        return this.name;
52
                }
53
                
54
                public void loadFromState(PersistentState state)
55
                                throws PersistenceException {
56
                        this.name = state.getString("name");
57
                }
58

    
59
                public void saveToState(PersistentState state)
60
                                throws PersistenceException {
61
                        state.set("name",this.name);
62
                }
63
                
64
        }
65
        
66
        public static  class MyObject implements Persistent {
67
                Map values;
68
                Map persistentValues;
69

    
70
                public MyObject() {
71
                        this.values = new HashMap();
72
                        this.persistentValues = new HashMap();
73

    
74
                        for( int i=0; i<10; i++ ) {
75
                                this.values.put(new Integer(i), "valor-" + i);
76
                        }
77

    
78
                        for( int i=0; i<10; i++ ) {
79
                                this.persistentValues.put( new Integer(i), new MyObject2("valor-" + i));
80
                        }
81
                }
82
                
83
                void check() {
84
                        assertNotNull(this.values);
85
                        assertNotNull(this.persistentValues);
86
                        assertEquals("size of list mistmach",10, this.values.size());
87
                        for( int i=0; i<10; i++ ) {
88
                                assertEquals("value "+ i + "mistmach.", "valor-"+i, this.values.get(new Integer(i)));
89
                        }
90
                        for( int i=0; i<10; i++ ) {
91
                                assertEquals("persistentValue "+ i + "mistmach.", "valor-"+i, ((MyObject2)this.persistentValues.get(new Integer(i))).getName());
92
                        }
93
                }
94

    
95
                public void loadFromState(PersistentState state)
96
                                throws PersistenceException {
97
                        this.values = new HashMap(state.getMap("values"));
98
                        this.persistentValues = new HashMap(state.getMap("persistentValues"));
99
                }
100

    
101
                public void saveToState(PersistentState state)
102
                                throws PersistenceException {
103
                        state.set("values",this.values);
104
                        state.set("persistentValues",this.persistentValues);
105
                }
106
        }
107
        
108
        protected void register() {
109
                DynStruct definition2 = manager.addDefinition(
110
                                MyObject2.class,
111
                                "MyObject2BasicMap",
112
                                "MyObject2BasicMap Persistence definition",
113
                                null, 
114
                                null
115
                );
116
                definition2.addDynFieldString("name").setMandatory(true);
117

    
118
                DynStruct definition = manager.addDefinition(
119
                                MyObject.class,
120
                                "MyObjectBasicMap",
121
                                "MyObjectBasicMap Persistence definition",
122
                                null, 
123
                                null
124
                );
125
                definition.addDynFieldMap("values").setMandatory(true).setElementsType(DataTypes.STRING);
126
                definition.addDynFieldMap("persistentValues").setMandatory(true).setElementsType(definition2);
127
        }
128

    
129
        protected void unregister() throws PersistenceClassNotRegistered {
130
                manager.unregisterClass("MyObjectBasicMap");
131
                manager.unregisterClass("MyObject2BasicMap");
132
        }
133
        
134
        //
135
        // =================================================
136
        //
137
        
138
        public void doSetUp() throws Exception {
139
                super.doSetUp();
140
                register();
141
        }
142

    
143
        protected void tearDown() throws Exception {
144
                super.tearDown();
145
                unregister();
146
        }
147
        
148
        protected String getTestId() {
149
                return "basicmap";
150
        }
151
        
152
        public void testRegister() {
153
                DynStruct definition = manager.getDefinition(MyObject.class);
154
                assertNotNull("Can't register class", definition);
155
                assertEquals(
156
                                "Registration don't work, name incorrect", 
157
                                "MyObjectBasicMap", 
158
                                definition.getName()
159
                );
160
        }
161
        
162
        public void testGetState() throws PersistenceTypeNotSupportedException, PersistenceClassNotRegistered, PersistenceException, PersistenceValidateExceptions {
163
                MyObject obj = new MyObject();
164
                PersistentState state = manager.getState(obj);
165
                assertNotNull("Can't retrieve state", state);
166
                DynStruct definition = state.getDefinition();
167
                assertNotNull("Can't register class", definition);
168
                assertEquals(
169
                                "Registration don't work, name incorrect", 
170
                                "MyObjectBasicMap", 
171
                                definition.getName()
172
                );
173
        }
174

    
175
        public void testSetState() throws PersistenceTypeNotSupportedException, PersistenceClassNotRegistered, PersistenceException, PersistenceValidateExceptions {
176
                MyObject obj1 = new MyObject();
177
                PersistentState state = manager.getState(obj1);
178
                assertNotNull("Can't retrieve state", state);
179
                
180
                MyObject obj2 = (MyObject) manager.create(state);
181
                obj2.check();
182
                obj1.check();
183
        }
184

    
185
        public void testListSaveState() throws Exception {
186
                MyObject obj = new MyObject();
187
                saveState(obj);
188
        }
189

    
190
        public void testListLoadState() throws Exception {
191
                MyObject obj1 = new MyObject();
192
                MyObject obj2 = (MyObject) manager.create(this.saveAndRestoreState(obj1));
193
                
194
                obj2.check();
195
                obj1.check();
196
        }
197
        
198

    
199
}