001: /*
002: * This file is part of the GeOxygene project source files.
003: *
004: * GeOxygene aims at providing an open framework which implements OGC/ISO specifications for
005: * the development and deployment of geographic (GIS) applications. It is a open source
006: * contribution of the COGIT laboratory at the Institut Géographique National (the French
007: * National Mapping Agency).
008: *
009: * See: http://oxygene-project.sourceforge.net
010: *
011: * Copyright (C) 2005 Institut Géographique National
012: *
013: * This library is free software; you can redistribute it and/or modify it under the terms
014: * of the GNU Lesser General Public License as published by the Free Software Foundation;
015: * either version 2.1 of the License, or any later version.
016: *
017: * This library is distributed in the hope that it will be useful, but WITHOUT ANY
018: * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
019: * PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
020: *
021: * You should have received a copy of the GNU Lesser General Public License along with
022: * this library (see file LICENSE if present); if not, write to the Free Software
023: * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
024: *
025: */
026:
027: package fr.ign.cogit.geoxygene.example.relations;
028:
029: import java.util.ArrayList;
030: import java.util.Iterator;
031: import java.util.List;
032:
033: import fr.ign.cogit.geoxygene.datatools.Geodatabase;
034: import fr.ign.cogit.geoxygene.datatools.ojb.GeodatabaseOjbFactory;
035:
036: // A FINIR 1-N marche pas : A VOIR SI FIXE PAR OJB v1.0
037: // tester le chargement a ce moment
038:
039: /** Test des relations MONODIRECTIONNELLES entre les classes AAA et BBB.
040: * Ce test teste aussi la persistance.
041: * C'est le meme que "TestRelationsMonoNonPersistantes",
042: * avec en plus les fonctions d'ecriture dans le SGBD.
043: * On peut controler a tout moment l'etat de la base en activant des commit et en quittant l'application.
044: * Pensez a activer le fichier de mapping "repository_AAA_BBB.xml" .
045: * La base s'initialise avec le script "init_relations_AAA_BBB.sql" .
046: *
047: * @author Thierry Badard, Arnaud Braun & Sébastien Mustière
048: * @version 1.0
049: *
050: */
051:
052: public class TestRelationsMonoPersistantes {
053:
054: private static Geodatabase db = GeodatabaseOjbFactory.newInstance();
055:
056: public static void main(String args[]) {
057: System.out.println("DEBUT DES TESTS");
058: test_mono11();
059: test_mono1N();
060: test_monoNN();
061: charge();
062: }
063:
064: /** Teste la relation 1-1 mono-directionnelle */
065: public static void test_mono11() {
066:
067: db.begin();
068:
069: System.out.println("Creation des objets AAA, BBB");
070: AAA a1 = new AAA();
071: a1.setNom("a1");
072: AAA a2 = new AAA();
073: a2.setNom("a2");
074: AAA a3 = new AAA();
075: a3.setNom("a3");
076: BBB b1 = new BBB();
077: b1.setNom("b1");
078: BBB b2 = new BBB();
079: b2.setNom("b2");
080: BBB b3 = new BBB();
081: b3.setNom("b3");
082:
083: db.makePersistent(a1);
084: db.makePersistent(a2);
085: db.makePersistent(a3);
086: db.makePersistent(b1);
087: db.makePersistent(b2);
088: db.makePersistent(b3);
089:
090: System.out.println("");
091: System.out.println("TEST RELATION 1-1 MONODIRECTIONNELLE");
092: System.out.println("objet BBB en relation avec a1 (null) : "
093: + a1.getObjetBBB_mono11());
094: System.out.println("objet BBB en relation avec a2 (null) : "
095: + a2.getObjetBBB_mono11());
096: System.out.println("--");
097: System.out.println("instanciation sur a1 de a1 R b1 ");
098: a1.setObjetBBB_mono11(b1);
099: System.out.println("objet BBB en relation avec a1 (b1) : "
100: + a1.getObjetBBB_mono11().getNom());
101: System.out.println("objet BBB en relation avec a2 (null) : "
102: + a2.getObjetBBB_mono11());
103: /* decommenter si on veut consulter l'etat de la base ici */
104: // db.commit();
105: // System.exit(0);
106: System.out.println("--");
107: System.out.println("instanciation sur a1 de a1 R b2 ");
108: a1.setObjetBBB_mono11(b2);
109: System.out.println("objet BBB en relation avec a1 (b2) : "
110: + a1.getObjetBBB_mono11().getNom());
111: System.out.println("objet BBB en relation avec a2 (null) : "
112: + a2.getObjetBBB_mono11());
113: /* decommenter si on veut consulter l'etat de la base ici */
114: // db.commit();
115: // System.exit(0);
116: System.out.println("--");
117: System.out
118: .println("instanciation sur a1 de a1 R b2 (2eme fois)");
119: a1.setObjetBBB_mono11(b2);
120: System.out.println("objet BBB en relation avec a1 (b2) : "
121: + a1.getObjetBBB_mono11().getNom());
122: System.out.println("objet BBB en relation avec a2 (null) : "
123: + a2.getObjetBBB_mono11());
124: /* decommenter si on veut consulter l'etat de la base ici */
125: // db.commit();
126: // System.exit(0);
127: /* System.out.println("--");
128: System.out.println("vidage des relations sur b1");
129: a1.setObjetBBB_mono11(null);
130: System.out.println("objet BBB en relation avec a1 (null) : "+a1.getObjetBBB_mono11());
131: System.out.println("objet BBB en relation avec a2 (null) : "+a2.getObjetBBB_mono11());*/
132: /* decommenter si on veut consulter l'etat de la base ici */
133: db.commit();
134:
135: }
136:
137: /** Teste la relation 1-n mono-directionnelle */
138: public static void test_mono1N() {
139:
140: db.begin();
141:
142: System.out.println("Creation des objets AAA, BBB");
143: AAA a1 = new AAA();
144: a1.setNom("a1");
145: AAA a2 = new AAA();
146: a2.setNom("a2");
147: AAA a3 = new AAA();
148: a3.setNom("a3");
149: BBB b1 = new BBB();
150: b1.setNom("b1");
151: BBB b2 = new BBB();
152: b2.setNom("b2");
153: BBB b3 = new BBB();
154: b3.setNom("b3");
155: List L;
156:
157: db.makePersistent(a1);
158: db.makePersistent(a2);
159: db.makePersistent(a3);
160: db.makePersistent(b1);
161: db.makePersistent(b2);
162: db.makePersistent(b3);
163:
164: System.out.println("");
165: System.out.println("TEST RELATION 1-N MONODIRECTIONNELLE");
166: System.out.println("objet BBB en relation avec a1 (vide) : ");
167: affiche(a1.getListe_objetsBBB_mono1N());
168: System.out.println("objet BBB en relation avec a2 (vide) : ");
169: affiche(a2.getListe_objetsBBB_mono1N());
170: System.out.println("objet BBB en relation avec a3 (vide) : ");
171: affiche(a3.getListe_objetsBBB_mono1N());
172:
173: System.out.println("--");
174: System.out
175: .println("ajout sur a1, de b1 aux objets en relation avec a1");
176: System.out
177: .println("set sur a2, de liste 'b2, b3' comme objets en relation avec a2");
178: a1.addObjetBBB_mono1N(b1);
179: L = new ArrayList();
180: L.add(b2);
181: L.add(b3);
182: a2.setListe_objetsBBB_mono1N(L);
183: System.out.println("objet BBB en relation avec a1 (b1) : ");
184: affiche(a1.getListe_objetsBBB_mono1N());
185: System.out.println("objet BBB en relation avec a2 (b2, b3) : ");
186: affiche(a2.getListe_objetsBBB_mono1N());
187: System.out.println("objet BBB en relation avec a3 (vide) : ");
188: affiche(a3.getListe_objetsBBB_mono1N());
189: /* decommenter si on veut consulter l'etat de la base ici */
190: // db.commit();
191: // System.exit(0);
192: System.out.println("--");
193: System.out.println("vidage sur a1 des objets en relation");
194: a1.emptyListe_objetsBBB_mono1N();
195: System.out.println("objet BBB en relation avec a1 (vide) : ");
196: affiche(a1.getListe_objetsBBB_mono1N());
197: System.out.println("objet BBB en relation avec a2 (b2,b3) : ");
198: affiche(a2.getListe_objetsBBB_mono1N());
199: System.out.println("objet BBB en relation avec a3 (vide) : ");
200: affiche(a3.getListe_objetsBBB_mono1N());
201: /* decommenter si on veut consulter l'etat de la base ici */
202: // db.commit();
203: // System.exit(0);
204: System.out.println("--");
205: System.out
206: .println("set sur a2, de liste 'b1, b3' comme objets en relation avec a2");
207: L = new ArrayList();
208: L.add(b1);
209: L.add(b3);
210: a2.setListe_objetsBBB_mono1N(L);
211: System.out.println("objet BBB en relation avec a1 (vide) : ");
212: affiche(a1.getListe_objetsBBB_mono1N());
213: System.out.println("objet BBB en relation avec a2 (b1, b3) : ");
214: affiche(a2.getListe_objetsBBB_mono1N());
215: System.out.println("objet BBB en relation avec a3 (vide) : ");
216: affiche(a3.getListe_objetsBBB_mono1N());
217: /* decommenter si on veut consulter l'etat de la base ici */
218: // db.commit();
219: // System.exit(0);
220: System.out.println("--");
221: System.out
222: .println("ajout sur a2, de liste b2 comme objets en relation avec a2");
223: a2.addObjetBBB_mono1N(b2);
224: System.out.println("objet BBB en relation avec a1 (vide) : ");
225: affiche(a1.getListe_objetsBBB_mono1N());
226: System.out
227: .println("objet BBB en relation avec a2 (b1, b3, b2) : ");
228: affiche(a2.getListe_objetsBBB_mono1N());
229: System.out.println("objet BBB en relation avec a3 (vide) : ");
230: affiche(a3.getListe_objetsBBB_mono1N());
231: /* decommenter si on veut consulter l'etat de la base ici */
232: db.commit();
233:
234: }
235:
236: /** Teste la relation n-n mono-directionnelle */
237: public static void test_monoNN() {
238:
239: db.begin();
240:
241: System.out.println("Creation des objets AAA, BBB");
242: AAA a1 = new AAA();
243: a1.setNom("a1");
244: AAA a2 = new AAA();
245: a2.setNom("a2");
246: AAA a3 = new AAA();
247: a3.setNom("a3");
248: BBB b1 = new BBB();
249: b1.setNom("b1");
250: BBB b2 = new BBB();
251: b2.setNom("b2");
252: BBB b3 = new BBB();
253: b3.setNom("b3");
254: List L;
255:
256: db.makePersistent(a1);
257: db.makePersistent(a2);
258: db.makePersistent(a3);
259: db.makePersistent(b1);
260: db.makePersistent(b2);
261: db.makePersistent(b3);
262:
263: System.out.println("TEST RELATION N-M MONODIRECTIONNELLE");
264: System.out
265: .println("set sur a1, de liste b1 b2 comme objets en relation avec a2");
266: System.out
267: .println("add sur a2, de b2 comme objets en relation avec a2");
268: System.out
269: .println("add sur a3, de b3 comme objets en relation avec a3");
270: L = new ArrayList();
271: L.add(b1);
272: L.add(b2);
273: a1.setListe_objetsBBB_monoNM(L);
274: a2.addObjetBBB_monoNM(b2);
275: a3.addObjetBBB_monoNM(b3);
276: System.out.println("objet BBB en relation avec a1 (b1, b2) : ");
277: affiche(a1.getListe_objetsBBB_monoNM());
278: System.out.println("objet BBB en relation avec a2 (b2) : ");
279: affiche(a2.getListe_objetsBBB_monoNM());
280: System.out.println("objet BBB en relation avec a3 (b3) : ");
281: affiche(a3.getListe_objetsBBB_monoNM());
282: /* decommenter si on veut consulter l'etat de la base ici */
283: // db.commit();
284: // System.exit(0);
285: System.out.println("");
286: System.out.println("--");
287: System.out
288: .println("set sur a1, de liste b1 b2 comme objets en relation avec a2");
289: System.out
290: .println("add sur a2, de b2 comme objets en relation avec a2");
291: System.out
292: .println("add sur a3, de b3 comme objets en relation avec a3");
293: L = new ArrayList();
294: L.add(b1);
295: L.add(b2);
296: a1.setListe_objetsBBB_monoNM(L);
297: a2.addObjetBBB_monoNM(b2);
298: a3.addObjetBBB_monoNM(b3);
299: System.out.println("objet BBB en relation avec a1 (b1, b2) : ");
300: affiche(a1.getListe_objetsBBB_monoNM());
301: System.out.println("objet BBB en relation avec a2 (b2, b2) : ");
302: affiche(a2.getListe_objetsBBB_monoNM());
303: System.out.println("objet BBB en relation avec a3 (b3, b3) : ");
304: affiche(a3.getListe_objetsBBB_monoNM());
305: /* decommenter si on veut consulter l'etat de la base ici */
306: // db.commit();
307: // System.exit(0);
308: System.out.println("");
309: System.out.println("-- ");
310: System.out.println("remove sur b1 de a1");
311: System.out.println("remove sur b2 de a2");
312: System.out.println("vidage de a3");
313: L = new ArrayList();
314: L.add(b1);
315: L.add(b2);
316: a3.emptyListe_objetsBBB_monoNM();
317: a1.removeObjetBBB_monoNM(b1);
318: a2.removeObjetBBB_monoNM(b2);
319: System.out.println("objet BBB en relation avec a1 (b2) : ");
320: affiche(a1.getListe_objetsBBB_monoNM());
321: System.out.println("objet BBB en relation avec a2 (b2) : ");
322: affiche(a2.getListe_objetsBBB_monoNM());
323: System.out.println("objet BBB en relation avec a3 (vide) : ");
324: affiche(a3.getListe_objetsBBB_monoNM());
325: /* decommenter si on veut consulter l'etat de la base ici */
326: db.commit();
327:
328: }
329:
330: /** Chargement des objets */
331: public static void charge() {
332: db.begin();
333: List allAAA = db.loadAll(AAA.class);
334: System.out.println("-- AAA ---");
335: Iterator itA = allAAA.iterator();
336: while (itA.hasNext()) {
337: AAA a = (AAA) itA.next();
338: System.out.println("## objet - id = " + a.getId()
339: + " - nom = " + a.getNom());
340: System.out.print(" lien 1-1 : ");
341: if (a.getObjetBBB_mono11() != null)
342: System.out.print("id = "
343: + a.getObjetBBB_mono11().getId() + " - nom = "
344: + a.getObjetBBB_mono11().getNom());
345: System.out.println();
346: System.out.println(" lien 1-n : ");
347: affiche(a.getListe_objetsBBB_mono1N());
348: System.out.println(" lien n-m : ");
349: affiche(a.getListe_objetsBBB_monoNM());
350: }
351: }
352:
353: public static void affiche(List L) {
354: Iterator it = L.iterator();
355: while (it.hasNext()) {
356: ClasseMere o = (ClasseMere) it.next();
357: if (o == null)
358: System.out.println(" - null");
359: else
360: System.out.println(" - " + o.getNom());
361: }
362: }
363: }
|