📄 modelentitychecker.java
字号:
/* * $Id: ModelEntityChecker.java 5462 2005-08-05 18:35:48Z jonesde $ * * Copyright (c) 2001-2005 The Open For Business Project - www.ofbiz.org * * Permission is hereby granted, free of charge, to any person obtaining a * copy of this software and associated documentation files (the "Software"), * to deal in the Software without restriction, including without limitation * the rights to use, copy, modify, merge, publish, distribute, sublicense, * and/or sell copies of the Software, and to permit persons to whom the * Software is furnished to do so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included * in all copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT * OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR * THE USE OR OTHER DEALINGS IN THE SOFTWARE. */package org.ofbiz.entity.model;import java.util.Collection;import java.util.Iterator;import java.util.List;import java.util.Map;import java.util.TreeSet;import javolution.util.FastMap;import org.ofbiz.base.util.Debug;import org.ofbiz.base.util.UtilValidate;import org.ofbiz.entity.GenericDelegator;import org.ofbiz.entity.GenericEntityException;/** * Generic Entity - Entity Definition Checker * * @author <a href="mailto:jonesde@ofbiz.org">David E. Jones </a> * @version $Rev: 5462 $ * @since 3.1 */public class ModelEntityChecker { public static final String module = ModelEntityChecker.class.getName(); public static void checkEntities(GenericDelegator delegator, List warningList) throws GenericEntityException { ModelReader reader = delegator.getModelReader(); TreeSet reservedWords = new TreeSet(); initReservedWords(reservedWords); Map packages = FastMap.newInstance(); TreeSet packageNames = new TreeSet(); TreeSet tableNames = new TreeSet(); //put the entityNames TreeSets in a HashMap by packageName Collection ec = reader.getEntityNames(); TreeSet entityNames = new TreeSet(ec); Iterator ecIter = ec.iterator(); while (ecIter.hasNext()) { String eName = (String) ecIter.next(); ModelEntity ent = reader.getModelEntity(eName); //make sure the table name is in the list of all table names, if // not null if (UtilValidate.isNotEmpty(ent.getPlainTableName())) tableNames.add(ent.getPlainTableName()); TreeSet entities = (TreeSet) packages.get(ent.getPackageName()); if (entities == null) { entities = new TreeSet(); packages.put(ent.getPackageName(), entities); packageNames.add(ent.getPackageName()); } entities.add(eName); } //int numberOfEntities = ec.size(); int numberShowed = 0; TreeSet fkNames = new TreeSet(); TreeSet indexNames = new TreeSet(); Iterator piter = packageNames.iterator(); while (piter.hasNext()) { String pName = (String) piter.next(); TreeSet entities = (TreeSet) packages.get(pName); Iterator i = entities.iterator(); while (i.hasNext()) { String entityName = (String) i.next(); String helperName = delegator.getEntityHelperName(entityName); String groupName = delegator.getEntityGroupName(entityName); ModelEntity entity = reader.getModelEntity(entityName); if (helperName == null) { warningList.add("[HelperNotFound] No Helper (DataSource) definition found for entity " + entity.getEntityName() + "."); //only show group name warning if helper name not found if (groupName == null) { warningList.add("[GroupNotFound] No Group Name found for entity " + entity.getEntityName() + "."); } } if (entity.getPlainTableName() != null && entity.getPlainTableName().length() > 30) { warningList.add("[TableNameGT30] Table name [" + entity.getPlainTableName() + "] of entity " + entity.getEntityName() + " is longer than 30 characters."); } if (entity.getPlainTableName() != null && reservedWords.contains(entity.getPlainTableName().toUpperCase())) { warningList.add("[TableNameRW] Table name [" + entity.getPlainTableName() + "] of entity " + entity.getEntityName() + " is a reserved word."); } TreeSet ufields = new TreeSet(); Iterator fieldIter = entity.getFieldsIterator(); while (fieldIter.hasNext()) { ModelField field = (ModelField) fieldIter.next(); ModelFieldType type = delegator.getEntityFieldType(entity,field.getType()); if (ufields.contains(field.getName())) { warningList.add("[FieldNotUnique] Field [" + field.getName() + " of entity " + entity.getEntityName() + " is not unique for that entity."); } else { ufields.add(field.getName()); } if (field.getColName().length() > 30 && !(entity instanceof ModelViewEntity)) { warningList.add("[FieldNameGT30] Column name [" + field.getColName() + "] of entity " + entity.getEntityName() + " is longer than 30 characters."); } if (field.getColName().length() == 0) { warningList.add("[FieldNameEQ0] Column name for field name \"" + field.getName() + "\" of entity " + entity.getEntityName() + " is empty (zero length)."); } if (reservedWords.contains(field.getColName().toUpperCase())) warningList.add("[FieldNameRW] Column name " + field.getColName() + " of entity " + entity.getEntityName() + " is a reserved word."); if (type == null) { StringBuffer warningMsg = new StringBuffer(); warningMsg.append("[FieldTypeNotFound] Field type " + field.getType() + " of entity " + entity.getEntityName() + " not found in field type definitions"); if (helperName == null) { warningMsg.append(" (no helper definition found)"); } warningMsg.append("."); warningList.add(warningMsg.toString()); } } if (entity.getRelationsSize() > 0) { Iterator indexIter = entity.getIndexesIterator(); while (indexIter.hasNext()) { ModelIndex index = (ModelIndex) indexIter.next(); if (indexNames.contains(index.getName())) { warningList.add("[IndexDuplicateName] Index on entity " + entity.getEntityName() + " has a duplicate index-name \"" + index.getName() + "\"."); } else { indexNames.add(index.getName()); } if (tableNames.contains(index.getName())) { warningList.add("[IndexTableDupName] Index on entity " + entity.getEntityName() + " has an index-name \"" + index.getName() + "\" that is also being used as a table name."); } if (fkNames.contains(index.getName())) { warningList.add("[IndexFKDupName] Index on entity " + entity.getEntityName() + " has an index-name \"" + index.getName() + "\" that is also being used as a Foreign Key name."); } // make sure all names are <= 18 characters if (index.getName().length() > 18) { warningList.add("[IndexNameGT18] The index name " + index.getName() + " (length:" + index.getName().length() + ") was greater than 18 characters in length for entity " + entity.getEntityName() + "."); } } TreeSet relations = new TreeSet(); for (int r = 0; r < entity.getRelationsSize(); r++) {
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -