first cut of merge of STABLE-pre1_0 into HEAD. I won't even guarantee that it
[mir.git] / source / mir / entity / EntityRelation.java
1 package mir.entity;
2
3 import mir.storage.*;
4 import mir.misc.*;
5 import freemarker.template.*;
6
7 public class EntityRelation {
8
9   public String         fromId;
10   public String         toId;
11   public StorageObject  storage;
12   public int            type;
13
14   public final static int TO_ONE    =  1;
15   public final static int TO_MANY   =  2;
16
17
18   /**
19    *  Kontruktor fuer EntityRelation
20    *  @param fromId ist der Feldname in der ausgehenden Tabelle fuer die Relation
21    *  @param toId ist der Feldname in der Zieltablle
22    *  @param storage ist das StorageObject, ueber das der Zugriff auf die abhaengige
23    *         Tabelle erfolgt.
24    *  @param type ist der Typ der EntityRelation (TO_ONE oder TO_MANY)
25    */
26
27   public EntityRelation(String fromId, String toId, StorageObject storage, int type) {
28       this.fromId = fromId;
29       this.toId = toId;
30       this.storage = storage;
31       this.type = type;
32   }
33
34   /**
35    *   @return Liefert eine abhaengige Entity mit den verknuepften
36    *           Entities, wenn es sich um eine TO_ONE Beziehung handelt, ansonsten
37    *           null.
38    */
39
40   public Entity getOne(Entity entity) throws StorageObjectException {
41     if (type==TO_ONE) {
42       return storage.selectById(entity.getValue(fromId));
43     }
44     else return null;
45   }
46
47   /**
48    *   @return Liefert eine freemarker.template.SimpleList mit den verknuepften
49    *           Entities, wenn es sich um eine TO_MANY Liste handelt, ansonsten
50    *           null.
51    */
52
53   public EntityList getMany(Entity entity) throws StorageObjectException{
54     if (type==TO_MANY) {
55       return storage.selectByFieldValue(toId, entity.getValue(fromId));
56     }
57     else return null;
58   }
59
60   /**
61    *   @return Liefert eine freemarker.template.SimpleList mit den verknuepften
62    *           Entities, wenn es sich um eine TO_MANY Liste handelt, ansonsten
63    *           null.
64    */
65
66   public EntityList getMany(Entity entity, String order) throws StorageObjectException{
67     if (type==TO_MANY) {
68       return storage.selectByWhereClause(toId+"="+entity.getValue(fromId), order,-1);
69     }
70     else return null;
71   }
72
73   /**
74    *   @return Liefert eine freemarker.template.SimpleList mit den verknuepften
75    *           Entities, wenn es sich um eine TO_MANY Liste handelt, ansonsten
76    *           null.
77    */
78
79   public EntityList getMany(Entity entity, String order, String whereClause) throws StorageObjectException{
80     if (type==TO_MANY) {
81       return storage.selectByWhereClause(toId + "=" + entity.getValue(fromId) + " and " + whereClause, order,-1);
82     }
83     else return null;
84   }
85
86   /**
87    *   @return The reference name of the related table.
88    */
89
90   public String getName() {
91     return "to" + storage.getTableName();
92   }
93
94
95 }