View Javadoc

1   /* (c) Copyright 2003 Caleigo AB, All rights reserved. 
2    * 
3    * This library is free software; you can redistribute it and/or
4    * modify it under the terms of the GNU Lesser General Public
5    * License as published by the Free Software Foundation; either
6    * version 2.1 of the License, or (at your option) any later version.
7    * 
8    * This library is distributed in the hope that it will be useful,
9    * but WITHOUT ANY WARRANTY; without even the implied warranty of
10   * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
11   * Lesser General Public License for more details.
12   * 
13   * You should have received a copy of the GNU Lesser General Public
14   * License along with this library; if not, write to the Free Software
15   * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
16   *  
17   */
18  package org.caleigo.core.meta;
19  
20  import org.caleigo.core.*;
21  import org.caleigo.core.exception.*;
22  
23  
24  /*** MetaFieldRelation is the descriptor for MetaFieldRelationEntity objects.
25  *
26  * @author dennis
27  * @version 1.0.0
28  *//*
29  * WHEN    WHO                WHY & WHAT 
30  * ------------------------------------------------------------------------------
31  * 030627  dennis    Creation
32  */
33  public class MetaFieldRelation extends AbstractMetaEntityDescriptor
34  {
35      // Constants ---------------------------------------------------------------
36      
37      /*** The singleton instance for the MetaFieldRelation entity descriptor.
38       * Access it as MetaFieldRelation.instance anywhere in the code.
39       */
40      public final static MetaFieldRelation instance;    
41      
42      /*** The EntityRelation field (index=0) has the data type STRING(100).
43       * EntityRelation is a required identity field.
44       */
45      public final static IFieldDescriptor EntityRelation;
46      
47      /*** The ReferenceEntity field (index=1) has the data type STRING(50).
48       * ReferenceEntity is a required identity field.
49       */
50      public final static IFieldDescriptor ReferenceEntity;
51      
52      /*** The ReferenceField field (index=2) has the data type STRING(50).
53       * ReferenceField is a required identity field.
54       */
55      public final static IFieldDescriptor ReferenceField;
56      
57      /*** The TargetEntity field (index=3) has the data type STRING(50).
58       * TargetEntity is a required identity field.
59       */
60      public final static IFieldDescriptor TargetEntity;
61      
62      /*** The TargetField field (index=4) has the data type STRING(50).
63       * TargetField is a required identity field.
64       */
65      public final static IFieldDescriptor TargetField;
66      
67      
68      // Static methods ----------------------------------------------------------
69      static
70      {
71          String className = MetaFieldRelation.class.getName();
72          
73          // Create all field descriptors that are part of the entity descriptor.
74          IFieldDescriptor[] fields = new IFieldDescriptor[5];
75          
76          fields[0] = EntityRelation = createFieldDescriptor("EntityRelation", "EntityRelation", "Entity Relation", className, DataType.STRING, 100, IFieldDescriptor.IDENTITY_FIELD | IFieldDescriptor.REQUIRED | IFieldDescriptor.INDEXED | IFieldDescriptor.READ_ONLY_FIELD, null);
77          fields[1] = ReferenceEntity = createFieldDescriptor("ReferenceEntity", "ReferenceEntity", "Reference Entity", className, DataType.STRING, 50, IFieldDescriptor.IDENTITY_FIELD | IFieldDescriptor.REQUIRED | IFieldDescriptor.INDEXED | IFieldDescriptor.READ_ONLY_FIELD, null);
78          fields[2] = ReferenceField = createFieldDescriptor("ReferenceField", "ReferenceField", "Reference Field", className, DataType.STRING, 50, IFieldDescriptor.IDENTITY_FIELD | IFieldDescriptor.REQUIRED | IFieldDescriptor.INDEXED | IFieldDescriptor.OVERVIEW_FIELD, null);
79          fields[3] = TargetEntity = createFieldDescriptor("TargetEntity", "TargetEntity", "Target Entity", className, DataType.STRING, 50, IFieldDescriptor.IDENTITY_FIELD | IFieldDescriptor.REQUIRED | IFieldDescriptor.INDEXED | IFieldDescriptor.READ_ONLY_FIELD, null);
80          fields[4] = TargetField = createFieldDescriptor("TargetField", "TargetField", "Target Field", className, DataType.STRING, 50, IFieldDescriptor.IDENTITY_FIELD | IFieldDescriptor.REQUIRED | IFieldDescriptor.INDEXED | IFieldDescriptor.OVERVIEW_FIELD, null);
81          
82          // Create all relation objects to related entity descriptors.
83          IEntityRelation[] relations = new IEntityRelation[3];
84          IFieldRelation[] fieldRelations;
85  
86          fieldRelations = new IFieldRelation[1];
87          fieldRelations[0] = createFieldRelation("org.caleigo.core.meta.MetaFieldRelation", "EntityRelation", "org.caleigo.core.meta.MetaEntityRelation", "SourceName");
88          relations[0] = createEntityRelation(fieldRelations, "MetaFieldRelationMetaEntityRelation", "Entity Relation", "Field Relations");
89  
90          fieldRelations = new IFieldRelation[2];
91          fieldRelations[0] = createFieldRelation("org.caleigo.core.meta.MetaFieldRelation", "ReferenceEntity", "org.caleigo.core.meta.MetaFieldDescriptor", "Entity");
92          fieldRelations[1] = createFieldRelation("org.caleigo.core.meta.MetaFieldRelation", "ReferenceField", "org.caleigo.core.meta.MetaFieldDescriptor", "SourceName");
93          relations[1] = createEntityRelation(fieldRelations, "MetaFieldRelationMetaFieldDescriptor", "Reference Descriptor", "Referense Relations");
94  
95          fieldRelations = new IFieldRelation[2];
96          fieldRelations[0] = createFieldRelation("org.caleigo.core.meta.MetaFieldRelation", "TargetEntity", "org.caleigo.core.meta.MetaFieldDescriptor", "Entity");
97          fieldRelations[1] = createFieldRelation("org.caleigo.core.meta.MetaFieldRelation", "TargetField", "org.caleigo.core.meta.MetaFieldDescriptor", "SourceName");
98          relations[2] = createEntityRelation(fieldRelations, "MetaFieldRelationMetaFieldDescriptor1", "Target Descriptor", "Target Relations");
99          
100         // Create the entity descriptor.
101         instance = new MetaFieldRelation(fields, relations);
102     }
103     
104     /*** Creates a new MetaFieldRelationEntity with default values set
105      */
106     public static MetaFieldRelationEntity create()
107     {
108         return (MetaFieldRelationEntity)instance.createEntity();
109     }
110     
111     /*** Creates a new MetaFieldRelationEntity, setting any field values 
112      * avaivlable from the provided IDataProvider.
113      */
114     public static MetaFieldRelationEntity create(IDataProvider propertySource)
115     {
116         return (MetaFieldRelationEntity)instance.createEntity(propertySource);
117     }
118     
119     /*** Loads a single MetaFieldRelationEntity instance identified by
120      * by the provided identity field values from the default data source. 
121      * Returns null if no entity could be identified by field values.
122      */
123     public static MetaFieldRelationEntity load(String aEntityRelation, String aReferenceEntity, String aReferenceField, String aTargetEntity, String aTargetField)
124     {
125         Qualifier qualifier;
126         
127         qualifier = Qualifier.create(EntityRelation, new String(aEntityRelation));
128         qualifier.and(ReferenceEntity, new String(aReferenceEntity));
129         qualifier.and(ReferenceField, new String(aReferenceField));
130         qualifier.and(TargetEntity, new String(aTargetEntity));
131         qualifier.and(TargetField, new String(aTargetField));
132 
133         return load(qualifier);
134     }
135         
136     /*** Loads a single MetaFieldRelationEntity instance identified by
137      * by the provided identity-qualifier from the default data source. 
138      * Returns null if no entity could be identified by the provided qualifier.
139      */
140     public static MetaFieldRelationEntity load(Qualifier identityQualifier)
141     {
142         if(instance.getDataSourceDescriptor().getDefaultDataSource()==null)
143             throw new DataServiceNotFoundException("No default data source has been set for: " + instance.getDataSourceDescriptor().getCodeName());
144         return (MetaFieldRelationEntity)instance.getDataSourceDescriptor().getDefaultDataSource().loadEntity(instance, identityQualifier);
145     }
146     
147     // Constructors ------------------------------------------------------------
148     
149     /*** Private access to avoid missuse.
150      */
151     private MetaFieldRelation(IFieldDescriptor[] fields, IEntityRelation[] relations) 
152     {
153         super("MetaFieldRelation", "MetaFieldRelation", "Field Relation", "org.caleigo.core.meta.MetaFieldRelationEntity", "org.caleigo.core.meta.Meta", SLAVE_ENTITY, fields, relations);
154         this.setFlags(CACHEABLE | CREATABLE | EDITABLE | DELETABLE);
155         this.setCacheTime(72000);
156     }
157 }