1 56 package org.objectstyle.cayenne.project.validator; 57 58 import java.util.Iterator ; 59 60 import org.objectstyle.cayenne.map.DataMap; 61 import org.objectstyle.cayenne.map.ObjEntity; 62 import org.objectstyle.cayenne.project.ProjectPath; 63 import org.objectstyle.cayenne.util.Util; 64 65 68 public class ObjEntityValidator extends TreeNodeValidator { 69 70 73 public ObjEntityValidator() { 74 super(); 75 } 76 77 public void validateObject(ProjectPath path, Validator validator) { 78 ObjEntity ent = (ObjEntity) path.getObject(); 79 validateName(ent, path, validator); 80 validateClassName(ent, path, validator); 81 validateSuperClassName(ent, path, validator); 82 83 if (ent.getDbEntity() == null) { 85 validator.registerWarning("ObjEntity has no DbEntity mapping.", path); 86 } 87 } 88 89 private void validateClassName(ObjEntity ent, ProjectPath path, Validator validator) { 90 String className = ent.getClassName(); 91 92 if (Util.isEmptyString(className)) { 93 validator.registerWarning("ObjEntity has no Java class mapped.", path); 94 return; 95 } 96 97 MappingNamesHelper helper = MappingNamesHelper.getInstance(); 98 String invalidChars = helper.invalidCharsInJavaClassName(className); 99 100 if (invalidChars != null) { 101 validator.registerWarning( 102 "ObjEntity Java class contains invalid characters: " + invalidChars, 103 path); 104 } 105 else if (helper.invalidDataObjectClass(className)) { 106 validator.registerWarning( 107 "ObjEntity Java class is invalid: " + className, 108 path); 109 } 110 111 DataMap map = (DataMap) path.getObjectParent(); 112 if (map == null) { 113 return; 114 } 115 116 Iterator it = map.getObjEntities().iterator(); 118 while (it.hasNext()) { 119 ObjEntity otherEnt = (ObjEntity) it.next(); 120 if (otherEnt == ent) { 121 continue; 122 } 123 124 if (className.equals(otherEnt.getClassName())) { 125 validator.registerWarning("Duplicate ObjEntity class name: " 126 + className 127 + ".", path); 128 break; 129 } 130 } 131 } 132 133 private void validateSuperClassName( 134 ObjEntity ent, 135 ProjectPath path, 136 Validator validator) { 137 String superClassName = ent.getSuperClassName(); 138 139 if (Util.isEmptyString(superClassName)) { 140 return; } 142 143 MappingNamesHelper helper = MappingNamesHelper.getInstance(); 144 String invalidChars = helper.invalidCharsInJavaClassName(superClassName); 145 146 if (invalidChars != null) { 147 validator.registerWarning( 148 "ObjEntity Java superclass contains invalid characters: " 149 + invalidChars, 150 path); 151 } 152 else if (helper.invalidDataObjectClass(superClassName)) { 153 validator.registerWarning("ObjEntity Java superclass is invalid: " 154 + superClassName, path); 155 } 156 157 DataMap map = (DataMap) path.getObjectParent(); 158 if (map == null) { 159 return; 160 } 161 } 162 163 protected void validateName(ObjEntity ent, ProjectPath path, Validator validator) { 164 String name = ent.getName(); 165 166 if (Util.isEmptyString(name)) { 168 validator.registerError("Unnamed ObjEntity.", path); 169 return; 170 } 171 172 DataMap map = (DataMap) path.getObjectParent(); 173 if (map == null) { 174 return; 175 } 176 177 Iterator it = map.getObjEntities().iterator(); 179 while (it.hasNext()) { 180 ObjEntity otherEnt = (ObjEntity) it.next(); 181 if (otherEnt == ent) { 182 continue; 183 } 184 185 if (name.equals(otherEnt.getName())) { 186 validator.registerError("Duplicate ObjEntity name: " + name + ".", path); 187 break; 188 } 189 } 190 } 191 } | Popular Tags |