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  /*** MetaFieldDescriptor is the descriptor for MetaFieldDescriptorEntity 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 MetaFieldDescriptor extends AbstractMetaEntityDescriptor
34  {
35      // Constants ---------------------------------------------------------------
36      
37      /*** The singleton instance for the MetaFieldDescriptor entity descriptor.
38       * Access it as MetaFieldDescriptor.instance anywhere in the code.
39       */
40      public final static MetaFieldDescriptor instance;    
41      
42      /*** The Entity field (index=0) has the data type STRING(50).
43       * Entity is a required identity field.
44       */
45      public final static IFieldDescriptor Entity;
46      
47      /*** The SourceName field (index=1) has the data type STRING(50).
48       * SourceName is a required identity field.
49       */
50      public final static IFieldDescriptor SourceName;
51      
52      /*** The CodeName field (index=2) has the data type STRING(50).
53       * CodeName is a required field.
54       */
55      public final static IFieldDescriptor CodeName;
56      
57      /*** The DisplayName field (index=3) has the data type STRING(50).
58       * DisplayName is a required field.
59       */
60      public final static IFieldDescriptor DisplayName;
61      
62      /*** The DataType field (index=4) has the data type INTEGER.
63       * DataType is a required field.
64       */
65      public final static IFieldDescriptor DataType;
66      
67      /*** The Length field (index=5) has the data type INTEGER.
68       * Length is a required field.
69       */
70      public final static IFieldDescriptor Length;
71      
72      /*** The DefaultValue field (index=6) has the data type STRING(200).
73       * DefaultValue is a non-required field.
74       */
75      public final static IFieldDescriptor DefaultValue;
76      
77      /*** The IdentityField field (index=7) has the data type BOOLEAN.
78       * IdentityField is a required field.
79       */
80      public final static IFieldDescriptor IdentityField;
81      
82      /*** The AutoGenerated field (index=8) has the data type BOOLEAN.
83       * AutoGenerated is a required field.
84       */
85      public final static IFieldDescriptor AutoGenerated;
86      
87      /*** The Indexed field (index=9) has the data type BOOLEAN.
88       * Indexed is a required field.
89       */
90      public final static IFieldDescriptor Indexed;
91      
92      /*** The Required field (index=10) has the data type BOOLEAN.
93       * Required is a required field.
94       */
95      public final static IFieldDescriptor Required;
96      
97      /*** The ReadOnly field (index=11) has the data type BOOLEAN.
98       * ReadOnly is a required field.
99       */
100     public final static IFieldDescriptor ReadOnly;
101     
102     /*** The Hidden field (index=12) has the data type BOOLEAN.
103      * Hidden is a required field.
104      */
105     public final static IFieldDescriptor Hidden;
106     
107     /*** The NameField field (index=13) has the data type BOOLEAN.
108      * NameField is a required field.
109      */
110     public final static IFieldDescriptor NameField;
111     
112     /*** The HintField field (index=14) has the data type BOOLEAN.
113      * HintField is a required field.
114      */
115     public final static IFieldDescriptor HintField;
116     
117     /*** The OverviewField field (index=15) has the data type BOOLEAN.
118      * OverviewField is a required field.
119      */
120     public final static IFieldDescriptor OverviewField;
121     
122     /*** The NaturalOrder field (index=16) has the data type BOOLEAN.
123      * NaturalOrder is a required field.
124      */
125     public final static IFieldDescriptor NaturalOrder;
126     
127     
128     // Static methods ----------------------------------------------------------
129     static
130     {
131         String className = MetaFieldDescriptor.class.getName();
132         
133         // Create all field descriptors that are part of the entity descriptor.
134         IFieldDescriptor[] fields = new IFieldDescriptor[17];
135         
136         fields[0] = Entity = createFieldDescriptor("Entity", "Entity", "Entity", className, org.caleigo.core.DataType.STRING, 50, IFieldDescriptor.IDENTITY_FIELD | IFieldDescriptor.REQUIRED | IFieldDescriptor.INDEXED | IFieldDescriptor.READ_ONLY_FIELD, null);
137         fields[1] = SourceName = createFieldDescriptor("SourceName", "SourceName", "Source Name", className, org.caleigo.core.DataType.STRING, 50, IFieldDescriptor.IDENTITY_FIELD | IFieldDescriptor.REQUIRED | IFieldDescriptor.INDEXED | IFieldDescriptor.OVERVIEW_FIELD | IFieldDescriptor.READ_ONLY_FIELD, null);
138         fields[2] = CodeName = createFieldDescriptor("CodeName", "CodeName", "Code Name", className, org.caleigo.core.DataType.STRING, 50, IFieldDescriptor.REQUIRED | IFieldDescriptor.NAME_FIELD, null);
139         fields[3] = DisplayName = createFieldDescriptor("DisplayName", "DisplayName", "Display Name", className, org.caleigo.core.DataType.STRING, 50, IFieldDescriptor.REQUIRED | IFieldDescriptor.OVERVIEW_FIELD, null);
140         fields[4] = DataType = createFieldDescriptor("DataType", "DataType", "Data Type", className, org.caleigo.core.DataType.INTEGER, 10, IFieldDescriptor.REQUIRED, null);
141         fields[5] = Length = createFieldDescriptor("Length", "Length", "Length", className, org.caleigo.core.DataType.INTEGER, 10, IFieldDescriptor.REQUIRED, null);
142         fields[6] = DefaultValue = createFieldDescriptor("DefaultValue", "DefaultValue", "Default Value", className, org.caleigo.core.DataType.STRING, 100, 0, null);
143         fields[7] = IdentityField = createFieldDescriptor("IdentityField", "IdentityField", "Identity Field", className, org.caleigo.core.DataType.BOOLEAN, 1, IFieldDescriptor.REQUIRED | IFieldDescriptor.OVERVIEW_FIELD, null);
144         fields[8] = AutoGenerated = createFieldDescriptor("AutoGenerated", "AutoGenerated", "Auto Generated", className, org.caleigo.core.DataType.BOOLEAN, 1, IFieldDescriptor.REQUIRED | IFieldDescriptor.OVERVIEW_FIELD, null);
145         fields[9] = Indexed = createFieldDescriptor("Indexed", "Indexed", "Indexed", className, org.caleigo.core.DataType.BOOLEAN, 1, IFieldDescriptor.REQUIRED, null);
146         fields[10] = Required = createFieldDescriptor("Required", "Required", "Required", className, org.caleigo.core.DataType.BOOLEAN, 1, IFieldDescriptor.REQUIRED, null);
147         fields[11] = ReadOnly = createFieldDescriptor("ReadOnly", "ReadOnly", "Read Only", className, org.caleigo.core.DataType.BOOLEAN, 1, IFieldDescriptor.REQUIRED, null);
148         fields[12] = Hidden = createFieldDescriptor("Hidden", "Hidden", "Hidden", className, org.caleigo.core.DataType.BOOLEAN, 1, IFieldDescriptor.REQUIRED, null);
149         fields[13] = NameField = createFieldDescriptor("NameField", "NameField", "Name Field", className, org.caleigo.core.DataType.BOOLEAN, 1, IFieldDescriptor.REQUIRED | IFieldDescriptor.OVERVIEW_FIELD, null);
150         fields[14] = HintField = createFieldDescriptor("HintField", "HintField", "Hint Field", className, org.caleigo.core.DataType.BOOLEAN, 1, IFieldDescriptor.REQUIRED, null);
151         fields[15] = OverviewField = createFieldDescriptor("OverviewField", "OverviewField", "Overview Field", className, org.caleigo.core.DataType.BOOLEAN, 1, IFieldDescriptor.REQUIRED | IFieldDescriptor.OVERVIEW_FIELD, null);
152         fields[16] = NaturalOrder = createFieldDescriptor("NaturalOrder", "NaturalOrder", "Natural Order", className, org.caleigo.core.DataType.BOOLEAN, 1, IFieldDescriptor.REQUIRED, null);
153         
154         // Create all relation objects to related entity descriptors.
155         IEntityRelation[] relations = new IEntityRelation[4];
156         IFieldRelation[] fieldRelations;
157 
158         fieldRelations = new IFieldRelation[1];
159         fieldRelations[0] = createFieldRelation("org.caleigo.core.meta.MetaFieldDescriptor", "DataType", "org.caleigo.core.meta.MetaDataType", "ID");
160         relations[0] = createEntityRelation(fieldRelations, "MetaFieldDescriptorMetaDataType", "Data Type", "Field Descriptors");
161 
162         fieldRelations = new IFieldRelation[1];
163         fieldRelations[0] = createFieldRelation("org.caleigo.core.meta.MetaFieldDescriptor", "Entity", "org.caleigo.core.meta.MetaEntityDescriptor", "SourceName");
164         relations[1] = createEntityRelation(fieldRelations, "MetaFieldDescriptorMetaEntityDescriptor", "Entity Descriptor", "Field Descriptors");
165 
166         fieldRelations = new IFieldRelation[2];
167         fieldRelations[0] = createFieldRelation("org.caleigo.core.meta.MetaFieldRelation", "ReferenceEntity", "org.caleigo.core.meta.MetaFieldDescriptor", "Entity");
168         fieldRelations[1] = createFieldRelation("org.caleigo.core.meta.MetaFieldRelation", "ReferenceField", "org.caleigo.core.meta.MetaFieldDescriptor", "SourceName");
169         relations[2] = createEntityRelation(fieldRelations, "MetaFieldRelationMetaFieldDescriptor", "Reference Descriptor", "Referense Relations");
170 
171         fieldRelations = new IFieldRelation[2];
172         fieldRelations[0] = createFieldRelation("org.caleigo.core.meta.MetaFieldRelation", "TargetEntity", "org.caleigo.core.meta.MetaFieldDescriptor", "Entity");
173         fieldRelations[1] = createFieldRelation("org.caleigo.core.meta.MetaFieldRelation", "TargetField", "org.caleigo.core.meta.MetaFieldDescriptor", "SourceName");
174         relations[3] = createEntityRelation(fieldRelations, "MetaFieldRelationMetaFieldDescriptor1", "Target Descriptor", "Target Relations");
175         
176         // Create the entity descriptor.
177         instance = new MetaFieldDescriptor(fields, relations);
178     }
179     
180     /*** Creates a new MetaFieldDescriptorEntity with default values set
181      */
182     public static MetaFieldDescriptorEntity create()
183     {
184         return (MetaFieldDescriptorEntity)instance.createEntity();
185     }
186     
187     /*** Creates a new MetaFieldDescriptorEntity, setting any field values 
188      * avaivlable from the provided IDataProvider.
189      */
190     public static MetaFieldDescriptorEntity create(IDataProvider propertySource)
191     {
192         return (MetaFieldDescriptorEntity)instance.createEntity(propertySource);
193     }
194     
195     /*** Loads a single MetaFieldDescriptorEntity instance identified by
196      * by the provided identity field values from the default data source. 
197      * Returns null if no entity could be identified by field values.
198      */
199     public static MetaFieldDescriptorEntity load(String aEntity, String aSourceName)
200     {
201         Qualifier qualifier;
202         
203         qualifier = Qualifier.create(Entity, new String(aEntity));
204         qualifier.and(SourceName, new String(aSourceName));
205 
206         return load(qualifier);
207     }
208         
209     /*** Loads a single MetaFieldDescriptorEntity instance identified by
210      * by the provided identity-qualifier from the default data source. 
211      * Returns null if no entity could be identified by the provided qualifier.
212      */
213     public static MetaFieldDescriptorEntity load(Qualifier identityQualifier)
214     {
215         if(instance.getDataSourceDescriptor().getDefaultDataSource()==null)
216             throw new DataServiceNotFoundException("No default data source has been set for: " + instance.getDataSourceDescriptor().getCodeName());
217         return (MetaFieldDescriptorEntity)instance.getDataSourceDescriptor().getDefaultDataSource().loadEntity(instance, identityQualifier);
218     }
219     
220     // Constructors ------------------------------------------------------------
221     
222     /*** Private access to avoid missuse.
223      */
224     private MetaFieldDescriptor(IFieldDescriptor[] fields, IEntityRelation[] relations) 
225     {
226         super("MetaFieldDescriptor", "MetaFieldDescriptor", "Field Descriptor", "org.caleigo.core.meta.MetaFieldDescriptorEntity", "org.caleigo.core.meta.Meta", SLAVE_ENTITY, fields, relations);
227         this.setFlags(CACHEABLE | CREATABLE | EDITABLE);
228         this.setCacheTime(72000);
229     }
230 }