1 56 57 package org.objectstyle.cayenne.dataview.dvmodeler; 58 59 import java.util.*; 60 import org.jdom.*; 61 62 67 68 public class ObjEntity extends DVObject { 69 private DataMap dataMap; 70 private String 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 entityPath = "<b>" + dataMap.getName() + "."; 80 String 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 attributeErrors = new ArrayList(); 98 Iterator itr = children.iterator(); 99 while(itr.hasNext()){ 100 Object 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 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 error = entityPath + ((String )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 name){ 154 Iterator itr = objAttributes.iterator(); 155 while (itr.hasNext()){ 156 Object 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 className){ 174 this.className = className; 175 } 176 177 public String getClassName(){ 178 return className; 179 } 180 181 public String 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 |