KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > objectstyle > cayenne > dataview > dvmodeler > ObjEntity


1 /* ====================================================================
2  *
3  * The ObjectStyle Group Software License, version 1.1
4  * ObjectStyle Group - http://objectstyle.org/
5  *
6  * Copyright (c) 2002-2005, Andrei (Andrus) Adamchik and individual authors
7  * of the software. All rights reserved.
8  *
9  * Redistribution and use in source and binary forms, with or without
10  * modification, are permitted provided that the following conditions
11  * are met:
12  *
13  * 1. Redistributions of source code must retain the above copyright
14  * notice, this list of conditions and the following disclaimer.
15  *
16  * 2. Redistributions in binary form must reproduce the above copyright
17  * notice, this list of conditions and the following disclaimer in
18  * the documentation and/or other materials provided with the
19  * distribution.
20  *
21  * 3. The end-user documentation included with the redistribution, if any,
22  * must include the following acknowlegement:
23  * "This product includes software developed by independent contributors
24  * and hosted on ObjectStyle Group web site (http://objectstyle.org/)."
25  * Alternately, this acknowlegement may appear in the software itself,
26  * if and wherever such third-party acknowlegements normally appear.
27  *
28  * 4. The names "ObjectStyle Group" and "Cayenne" must not be used to endorse
29  * or promote products derived from this software without prior written
30  * permission. For written permission, email
31  * "andrus at objectstyle dot org".
32  *
33  * 5. Products derived from this software may not be called "ObjectStyle"
34  * or "Cayenne", nor may "ObjectStyle" or "Cayenne" appear in their
35  * names without prior written permission.
36  *
37  * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
38  * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
39  * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
40  * DISCLAIMED. IN NO EVENT SHALL THE OBJECTSTYLE GROUP OR
41  * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
42  * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
43  * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
44  * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
45  * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
46  * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
47  * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
48  * SUCH DAMAGE.
49  * ====================================================================
50  *
51  * This software consists of voluntary contributions made by many
52  * individuals and hosted on ObjectStyle Group web site. For more
53  * information on the ObjectStyle Group, please see
54  * <http://objectstyle.org/>.
55  */

56
57 package org.objectstyle.cayenne.dataview.dvmodeler;
58
59 import java.util.*;
60 import org.jdom.*;
61
62 /**
63  *
64  * @author Nataliya Kholodna
65  * @version 1.0
66  */

67
68 public class ObjEntity extends DVObject {
69   private DataMap dataMap;
70   private String JavaDoc className;
71   private List objAttributes = new ArrayList();
72   private List objEntityViews = new ArrayList();
73   private List loadErrors = new ArrayList();
74
75   private Set objAttributesNames = new HashSet();
76
77   public ObjEntity(DataMap dataMap, Element element) throws DVModelerException{
78     this.dataMap = dataMap;
79     String JavaDoc entityPath = "<b>" + dataMap.getName() + ".";
80     String JavaDoc attributeValue = element.getAttributeValue("name");
81     if ((attributeValue == null) || (attributeValue.length() == 0)){
82       entityPath += "</b><br>";
83       loadErrors.add(entityPath + " ObjEntity has no attribute \"name\" and cannot be loaded.<br><br>");
84       throw new DVModelerException(entityPath + " Entity has no attribute \"name\".");
85     } else {
86       setName(attributeValue);
87       entityPath += attributeValue + "</b><br>";
88     }
89     attributeValue = element.getAttributeValue("className");
90     if ((attributeValue == null) || (attributeValue.length() == 0)){
91       className = "";
92       loadErrors.add(entityPath + " ObjEntity has no attribute \"class-name\"<br><br>");
93     } else {
94       className = attributeValue;
95     }
96     List children = element.getChildren();
97     java.util.List JavaDoc attributeErrors = new ArrayList();
98     Iterator itr = children.iterator();
99     while(itr.hasNext()){
100       Object JavaDoc o = itr.next();
101       Element e = (Element)o;
102       if (e.getName().equals("obj-attribute")){
103         ObjAttribute objAttribute = new ObjAttribute(e);
104         objAttributes.add(objAttribute);
105         if (objAttributesNames.add(objAttribute.getName()) == false){
106           String JavaDoc path = "<b>" + dataMap + "." + getName() + "</b><br>";
107           loadErrors.add(path + "ObjAttribute \"" + objAttribute.getName()
108               + "\" already exists in the ObjEntity\"" + getName() + "\"<br><br>");
109         }
110
111         attributeErrors.addAll(objAttribute.getLoadErrors());
112       }
113     }
114     objAttributesNames.clear();
115     for (Iterator j = attributeErrors.iterator(); j.hasNext();){
116       String JavaDoc error = entityPath + ((String JavaDoc)j.next());
117       loadErrors.add(error);
118     }
119     dataMap.addObjEntity(this);
120   }
121
122   public ObjEntity(DataMap dataMap){
123     this.dataMap = dataMap;
124     setName("ObjEntity");
125     className = "";
126     dataMap.addObjEntity(this);
127   }
128
129   public List getLoadErrors(){
130     return Collections.unmodifiableList(loadErrors);
131   }
132
133   public void setDataMap(DataMap dataMap){
134     this.dataMap = dataMap;
135   }
136
137   public DataMap getDataMap(){
138     return dataMap;
139   }
140
141   public void addObjEntityView(ObjEntityView objEntityView){
142     objEntityViews.add(objEntityView);
143   }
144
145   public void removeObjEntityView(ObjEntityView objEntityView){
146     objEntityViews.remove(objEntityView);
147   }
148
149   public List getObjAttributes(){
150     return Collections.unmodifiableList(objAttributes);
151   }
152
153   public ObjAttribute getObjAttribute(String JavaDoc name){
154     Iterator itr = objAttributes.iterator();
155     while (itr.hasNext()){
156         Object JavaDoc o = itr.next();
157         ObjAttribute attribute = (ObjAttribute)o;
158         if(attribute.getName().equals(name)){
159           return attribute;
160         }
161     }
162     return null;
163   }
164
165   public ObjAttribute getObjAttribute(int index){
166     return (ObjAttribute)objAttributes.get(index);
167   }
168
169   public List getObjEntityViews(){
170     return Collections.unmodifiableList(objEntityViews);
171   }
172
173   public void setClassName(String JavaDoc className){
174     this.className = className;
175   }
176
177   public String JavaDoc getClassName(){
178     return className;
179   }
180
181   public String JavaDoc toString(){
182     return this.getName();
183   }
184
185   public ObjEntityView getObjEntityView(int index){
186     return (ObjEntityView)(objEntityViews.get(index));
187   }
188
189   public int getObjEntityViewCount(){
190     return objEntityViews.size();
191   }
192
193   public int getObjAttributeCount(){
194     return objAttributes.size();
195   }
196
197   public int getIndexOfObjEntityView(ObjEntityView objEntityView){
198     return objEntityViews.indexOf(objEntityView);
199   }
200
201 }
202
Popular Tags