Author: mbrohl
Date: Fri Dec 8 20:18:41 2017
New Revision: 1817559
URL: http://svn.apache.org/viewvc?rev=1817559&view=rev
Log:
Improved: Fixing defects reported by FindBugs, package
org.apache.ofbiz.entity.model.
(OFBIZ-9719)
Thanks Julian Leichert for reporting and providing the patch.
Modified:
ofbiz/ofbiz-framework/trunk/framework/entity/src/main/java/org/apache/ofbiz/entity/model/ModelEntity.java
ofbiz/ofbiz-framework/trunk/framework/entity/src/main/java/org/apache/ofbiz/entity/model/ModelEntityChecker.java
ofbiz/ofbiz-framework/trunk/framework/entity/src/main/java/org/apache/ofbiz/entity/model/ModelField.java
ofbiz/ofbiz-framework/trunk/framework/entity/src/main/java/org/apache/ofbiz/entity/model/ModelFieldType.java
ofbiz/ofbiz-framework/trunk/framework/entity/src/main/java/org/apache/ofbiz/entity/model/ModelGroupReader.java
ofbiz/ofbiz-framework/trunk/framework/entity/src/main/java/org/apache/ofbiz/entity/model/ModelIndex.java
ofbiz/ofbiz-framework/trunk/framework/entity/src/main/java/org/apache/ofbiz/entity/model/ModelReader.java
ofbiz/ofbiz-framework/trunk/framework/entity/src/main/java/org/apache/ofbiz/entity/model/ModelUtil.java
ofbiz/ofbiz-framework/trunk/framework/entity/src/main/java/org/apache/ofbiz/entity/model/ModelViewEntity.java
Modified:
ofbiz/ofbiz-framework/trunk/framework/entity/src/main/java/org/apache/ofbiz/entity/model/ModelEntity.java
URL:
http://svn.apache.org/viewvc/ofbiz/ofbiz-framework/trunk/framework/entity/src/main/java/org/apache/ofbiz/entity/model/ModelEntity.java?rev=1817559&r1=1817558&r2=1817559&view=diff
==============================================================================
---
ofbiz/ofbiz-framework/trunk/framework/entity/src/main/java/org/apache/ofbiz/entity/model/ModelEntity.java
(original)
+++
ofbiz/ofbiz-framework/trunk/framework/entity/src/main/java/org/apache/ofbiz/entity/model/ModelEntity.java
Fri Dec 8 20:18:41 2017
@@ -94,32 +94,32 @@ public class ModelEntity implements Comp
/** Model fields in the order they were defined. This list duplicates the
values in fieldsMap, but
* we must keep the list in its original sequence for SQL DISTINCT
operations to work properly. */
- private final List<ModelField> fieldsList = new ArrayList<ModelField>();
+ private final List<ModelField> fieldsList = new ArrayList<>();
- private final Map<String, ModelField> fieldsMap = new HashMap<String,
ModelField>();
+ private final Map<String, ModelField> fieldsMap = new HashMap<>();
- private final ArrayList<String> pkFieldNames = new ArrayList<String>();
+ private final ArrayList<String> pkFieldNames = new ArrayList<>();
/** A List of the Field objects for the Entity, one for each Primary Key */
- private final ArrayList<ModelField> pks = new ArrayList<ModelField>();
+ private final ArrayList<ModelField> pks = new ArrayList<>();
/** A List of the Field objects for the Entity, one for each NON Primary
Key */
- private final ArrayList<ModelField> nopks = new ArrayList<ModelField>();
+ private final ArrayList<ModelField> nopks = new ArrayList<>();
/** relations defining relationships between this entity and other
entities */
- protected CopyOnWriteArrayList<ModelRelation> relations = new
CopyOnWriteArrayList<ModelRelation>();
+ protected CopyOnWriteArrayList<ModelRelation> relations = new
CopyOnWriteArrayList<>();
/** indexes on fields/columns in this entity */
- private CopyOnWriteArrayList<ModelIndex> indexes = new
CopyOnWriteArrayList<ModelIndex>();
+ private CopyOnWriteArrayList<ModelIndex> indexes = new
CopyOnWriteArrayList<>();
/** The reference of the dependentOn entity model */
protected ModelEntity specializationOfModelEntity = null;
/** The list of entities that are specialization of on this entity */
- protected Map<String, ModelEntity> specializedEntities = new
HashMap<String, ModelEntity>();
+ protected Map<String, ModelEntity> specializedEntities = new HashMap<>();
/** map of ModelViewEntities that references this model */
- private final Set<String> viewEntities = new HashSet<String>();
+ private final Set<String> viewEntities = new HashSet<>();
/** An indicator to specify if this entity requires locking for updates */
protected boolean doLock = false;
@@ -232,7 +232,7 @@ public class ModelEntity implements Comp
this.modelReader = null;
this.modelInfo = ModelInfo.DEFAULT;
this.tableName = tableName;
- int dotIndex = this.tableName.indexOf(".");
+ int dotIndex = this.tableName.indexOf('.');
if (dotIndex >= 0) {
this.tableName = this.tableName.substring(dotIndex + 1);
}
@@ -274,24 +274,24 @@ public class ModelEntity implements Comp
}
protected void populateRelated(ModelReader reader, Element entityElement) {
- List<ModelRelation> tempList = new
ArrayList<ModelRelation>(this.relations);
+ List<ModelRelation> tempList = new ArrayList<>(this.relations);
for (Element relationElement: UtilXml.childElementList(entityElement,
"relation")) {
ModelRelation relation = reader.createRelation(this,
relationElement);
if (relation != null) {
tempList.add(relation);
}
}
- this.relations = new CopyOnWriteArrayList<ModelRelation>(tempList);
+ this.relations = new CopyOnWriteArrayList<>(tempList);
}
protected void populateIndexes(Element entityElement) {
- List<ModelIndex> tempList = new ArrayList<ModelIndex>(this.indexes);
+ List<ModelIndex> tempList = new ArrayList<>(this.indexes);
for (Element indexElement: UtilXml.childElementList(entityElement,
"index")) {
ModelIndex index = ModelIndex.create(this, indexElement);
tempList.add(index);
}
- this.indexes = new CopyOnWriteArrayList<ModelIndex>(tempList);
+ this.indexes = new CopyOnWriteArrayList<>(tempList);
}
public boolean containsAllPkFieldNames(Set<String> fieldNames) {
@@ -310,19 +310,19 @@ public class ModelEntity implements Comp
if (extendEntityElement.hasAttribute("enable-lock")) {
this.doLock =
UtilXml.checkBoolean(extendEntityElement.getAttribute("enable-lock"), false);
}
-
+
if (extendEntityElement.hasAttribute("no-auto-stamp")) {
this.noAutoStamp =
UtilXml.checkBoolean(extendEntityElement.getAttribute("no-auto-stamp"), false);
}
-
+
if (extendEntityElement.hasAttribute("auto-clear-cache")) {
this.autoClearCache =
UtilXml.checkBoolean(extendEntityElement.getAttribute("auto-clear-cache"),
false);
}
-
+
if (extendEntityElement.hasAttribute("never-cache")) {
this.neverCache =
UtilXml.checkBoolean(extendEntityElement.getAttribute("never-cache"), false);
}
-
+
if (extendEntityElement.hasAttribute("sequence-bank-size")) {
String sequenceBankSizeStr =
UtilXml.checkEmpty(extendEntityElement.getAttribute("sequence-bank-size"));
if (UtilValidate.isNotEmpty(sequenceBankSizeStr)) {
@@ -333,7 +333,7 @@ public class ModelEntity implements Comp
}
}
}
-
+
for (Element fieldElement :
UtilXml.childElementList(extendEntityElement, "field")) {
ModelField newField = ModelField.create(this, fieldElement, false);
ModelField existingField = this.getField(newField.getName());
@@ -457,7 +457,7 @@ public class ModelEntity implements Comp
public void setNeverCache(boolean neverCache) {
this.neverCache = neverCache;
}
-
+
/**
* An indicator to specific if this entity should ignore automatic DB
checks.
* This should be set when the entity is mapped to a database view to
prevent
@@ -466,11 +466,11 @@ public class ModelEntity implements Comp
public boolean getNeverCheck() {
return neverCheck;
}
-
+
public void setNeverCheck(boolean neverCheck) {
this.neverCheck = neverCheck;
}
-
+
public boolean getAutoClearCache() {
return this.autoClearCache;
}
@@ -557,7 +557,7 @@ public class ModelEntity implements Comp
public List<ModelField> getPkFields() {
synchronized (fieldsLock) {
- return new ArrayList<ModelField>(this.pks);
+ return new ArrayList<>(this.pks);
}
}
@@ -586,7 +586,7 @@ public class ModelEntity implements Comp
public List<ModelField> getNopksCopy() {
synchronized (fieldsLock) {
- return new ArrayList<ModelField>(this.nopks);
+ return new ArrayList<>(this.nopks);
}
}
@@ -598,14 +598,14 @@ public class ModelEntity implements Comp
public Iterator<ModelField> getFieldsIterator() {
synchronized (fieldsLock) {
- List<ModelField> newList = new
ArrayList<ModelField>(this.fieldsList);
+ List<ModelField> newList = new ArrayList<>(this.fieldsList);
return newList.iterator();
}
}
public List<ModelField> getFieldsUnmodifiable() {
synchronized (fieldsLock) {
- List<ModelField> newList = new
ArrayList<ModelField>(this.fieldsList);
+ List<ModelField> newList = new ArrayList<>(this.fieldsList);
return Collections.unmodifiableList(newList);
}
}
@@ -661,13 +661,13 @@ public class ModelEntity implements Comp
public List<String> getAllFieldNames() {
synchronized (fieldsLock) {
- return new ArrayList<String>(this.fieldsMap.keySet());
+ return new ArrayList<>(this.fieldsMap.keySet());
}
}
public List<String> getPkFieldNames() {
synchronized (fieldsLock) {
- return new ArrayList<String>(pkFieldNames);
+ return new ArrayList<>(pkFieldNames);
}
}
@@ -676,7 +676,7 @@ public class ModelEntity implements Comp
}
private List<String> getFieldNamesFromFieldVector(List<ModelField>
modelFields) {
- List<String> nameList = new ArrayList<String>(modelFields.size());
+ List<String> nameList = new ArrayList<>(modelFields.size());
for (ModelField field: modelFields) {
nameList.add(field.getName());
}
@@ -687,7 +687,7 @@ public class ModelEntity implements Comp
* @return field names list, managed by entity-engine
*/
public List<String> getAutomaticFieldNames() {
- List<String> nameList = new LinkedList<String>();
+ List<String> nameList = new LinkedList<>();
if (! this.noAutoStamp) {
nameList.add(STAMP_FIELD);
nameList.add(STAMP_TX_FIELD);
@@ -722,7 +722,7 @@ public class ModelEntity implements Comp
}
public List<ModelRelation> getRelationsList(boolean includeOne, boolean
includeOneNoFk, boolean includeMany) {
- List<ModelRelation> relationsList = new LinkedList<ModelRelation>();
+ List<ModelRelation> relationsList = new LinkedList<>();
Iterator<ModelRelation> allIter = this.getRelationsIterator();
while (allIter.hasNext()) {
ModelRelation modelRelation = allIter.next();
@@ -797,7 +797,7 @@ public class ModelEntity implements Comp
public Iterator<String> getViewConvertorsIterator() {
synchronized (viewEntities) {
- return new HashSet<String>(this.viewEntities).iterator();
+ return new HashSet<>(this.viewEntities).iterator();
}
}
@@ -1463,7 +1463,7 @@ public class ModelEntity implements Comp
if (this.getNeverCache()) {
root.setAttribute("never-cache", "true");
}
-
+
if (this.getNeverCheck()) {
root.setAttribute("never-check", "true");
}
@@ -1499,7 +1499,7 @@ public class ModelEntity implements Comp
// append field elements
Iterator<ModelField> fieldIter = this.getFieldsIterator();
- while (fieldIter != null && fieldIter.hasNext()) {
+ while (fieldIter.hasNext()) {
ModelField field = fieldIter.next();
if (!field.getIsAutoCreatedInternal()) {
root.appendChild(field.toXmlElement(document));
@@ -1517,14 +1517,14 @@ public class ModelEntity implements Comp
// append relation elements
Iterator<ModelRelation> relIter = this.getRelationsIterator();
- while (relIter != null && relIter.hasNext()) {
+ while (relIter.hasNext()) {
ModelRelation rel = relIter.next();
root.appendChild(rel.toXmlElement(document));
}
// append index elements
Iterator<ModelIndex> idxIter = this.getIndexesIterator();
- while (idxIter != null && idxIter.hasNext()) {
+ while (idxIter.hasNext()) {
ModelIndex idx = idxIter.next();
root.appendChild(idx.toXmlElement(document));
@@ -1562,14 +1562,14 @@ public class ModelEntity implements Comp
final boolean useRelationshipNames = false;
ModelFieldTypeReader modelFieldTypeReader =
ModelFieldTypeReader.getModelFieldTypeReader(helperName);
- Map<String, Object> topLevelMap = new HashMap<String, Object>();
+ Map<String, Object> topLevelMap = new HashMap<>();
topLevelMap.put("name", this.getEntityName());
topLevelMap.put("externalName", this.getTableName(helperName));
topLevelMap.put("className", "EOGenericRecord");
// for classProperties add field names AND relationship names to get a
nice, complete chart
- List<String> classPropertiesList = new LinkedList<String>();
+ List<String> classPropertiesList = new LinkedList<>();
topLevelMap.put("classProperties", classPropertiesList);
for (ModelField field: this.fieldsList) {
if (field.getIsAutoCreatedInternal()) continue;
@@ -1587,14 +1587,14 @@ public class ModelEntity implements Comp
}
// attributes
- List<Map<String, Object>> attributesList = new LinkedList<Map<String,
Object>>();
+ List<Map<String, Object>> attributesList = new LinkedList<>();
topLevelMap.put("attributes", attributesList);
for (ModelField field: this.fieldsList) {
if (field.getIsAutoCreatedInternal()) continue;
ModelFieldType fieldType =
modelFieldTypeReader.getModelFieldType(field.getType());
- Map<String, Object> attributeMap = new HashMap<String, Object>();
+ Map<String, Object> attributeMap = new HashMap<>();
attributesList.add(attributeMap);
if (field.getIsPk()) {
@@ -1606,15 +1606,15 @@ public class ModelEntity implements Comp
attributeMap.put("valueClassName", fieldType.getJavaType());
String sqlType = fieldType.getSqlType();
- if (sqlType.indexOf("(") >= 0) {
- attributeMap.put("externalType", sqlType.substring(0,
sqlType.indexOf("(")));
+ if (sqlType.indexOf('(') >= 0) {
+ attributeMap.put("externalType", sqlType.substring(0,
sqlType.indexOf('(')));
// since there is a field length set that
- String widthStr = sqlType.substring(sqlType.indexOf("(") + 1,
sqlType.indexOf(")"));
+ String widthStr = sqlType.substring(sqlType.indexOf('(') + 1,
sqlType.indexOf(')'));
// if there is a comma split by it for width,precision
- if (widthStr.indexOf(",") >= 0) {
- attributeMap.put("width", widthStr.substring(0,
widthStr.indexOf(",")));
+ if (widthStr.indexOf(',') >= 0) {
+ attributeMap.put("width", widthStr.substring(0,
widthStr.indexOf(',')));
// since there is a field precision set that
- attributeMap.put("precision",
widthStr.substring(widthStr.indexOf(",") + 1));
+ attributeMap.put("precision",
widthStr.substring(widthStr.indexOf(',') + 1));
} else {
attributeMap.put("width", widthStr);
}
@@ -1624,19 +1624,19 @@ public class ModelEntity implements Comp
}
// primaryKeyAttributes
- List<String> primaryKeyAttributesList = new LinkedList<String>();
+ List<String> primaryKeyAttributesList = new LinkedList<>();
topLevelMap.put("primaryKeyAttributes", primaryKeyAttributesList);
for (ModelField pkField : getPkFields()) {
primaryKeyAttributesList.add(pkField.getName());
}
// relationships
- List<Map<String, Object>> relationshipsMapList = new
LinkedList<Map<String, Object>>();
+ List<Map<String, Object>> relationshipsMapList = new LinkedList<>();
for (ModelRelation relationship: this.relations) {
if
(entityNameIncludeSet.contains(relationship.getRelEntityName())) {
ModelEntity relEntity =
entityModelReader.getModelEntity(relationship.getRelEntityName());
- Map<String, Object> relationshipMap = new HashMap<String,
Object>();
+ Map<String, Object> relationshipMap = new HashMap<>();
relationshipsMapList.add(relationshipMap);
if (useRelationshipNames || relationship.isAutoRelation()) {
@@ -1655,10 +1655,10 @@ public class ModelEntity implements Comp
relationshipMap.put("joinSemantic", "EOInnerJoin");
- List<Map<String, Object>> joinsMapList = new
LinkedList<Map<String, Object>>();
+ List<Map<String, Object>> joinsMapList = new LinkedList<>();
relationshipMap.put("joins", joinsMapList);
for (ModelKeyMap keyMap: relationship.getKeyMaps()) {
- Map<String, Object> joinsMap = new HashMap<String,
Object>();
+ Map<String, Object> joinsMap = new HashMap<>();
joinsMapList.add(joinsMap);
ModelField thisField =
this.getField(keyMap.getFieldName());
Modified:
ofbiz/ofbiz-framework/trunk/framework/entity/src/main/java/org/apache/ofbiz/entity/model/ModelEntityChecker.java
URL:
http://svn.apache.org/viewvc/ofbiz/ofbiz-framework/trunk/framework/entity/src/main/java/org/apache/ofbiz/entity/model/ModelEntityChecker.java?rev=1817559&r1=1817558&r2=1817559&view=diff
==============================================================================
---
ofbiz/ofbiz-framework/trunk/framework/entity/src/main/java/org/apache/ofbiz/entity/model/ModelEntityChecker.java
(original)
+++
ofbiz/ofbiz-framework/trunk/framework/entity/src/main/java/org/apache/ofbiz/entity/model/ModelEntityChecker.java
Fri Dec 8 20:18:41 2017
@@ -23,6 +23,7 @@ import java.util.HashMap;
import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
+import java.util.Locale;
import java.util.Map;
import java.util.Set;
import java.util.TreeSet;
@@ -43,7 +44,7 @@ public class ModelEntityChecker {
public static void checkEntities(Delegator delegator, List<String>
warningList) throws GenericEntityException {
ModelReader reader = delegator.getModelReader();
- Set<String> reservedWords = new HashSet<String>();
+ Set<String> reservedWords = new HashSet<>();
if (Debug.infoOn()) {
Debug.logInfo("[initReservedWords] array length = " +
rwArray.length, module);
}
@@ -51,13 +52,13 @@ public class ModelEntityChecker {
reservedWords.add(rwArray[i]);
}
- Map<String, Set<String>> packages = new HashMap<String, Set<String>>();
- Set<String> packageNames = new TreeSet<String>();
- Set<String> tableNames = new HashSet<String>();
+ Map<String, Set<String>> packages = new HashMap<>();
+ Set<String> packageNames = new TreeSet<>();
+ Set<String> tableNames = new HashSet<>();
//put the entityNames TreeSets in a HashMap by packageName
Collection<String> ec = reader.getEntityNames();
- Set<String> entityNames = new HashSet<String>(ec);
+ Set<String> entityNames = new HashSet<>(ec);
for (String eName: ec) {
ModelEntity ent = reader.getModelEntity(eName);
@@ -68,15 +69,15 @@ public class ModelEntityChecker {
Set<String> entities = packages.get(ent.getPackageName());
if (entities == null) {
- entities = new TreeSet<String>();
+ entities = new TreeSet<>();
packages.put(ent.getPackageName(), entities);
packageNames.add(ent.getPackageName());
}
entities.add(eName);
}
- Set<String> fkNames = new HashSet<String>();
- Set<String> indexNames = new HashSet<String>();
+ Set<String> fkNames = new HashSet<>();
+ Set<String> indexNames = new HashSet<>();
for (String pName: packageNames) {
Set<String> entities = packages.get(pName);
@@ -95,16 +96,16 @@ public class ModelEntityChecker {
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())) {
+ if (entity.getPlainTableName() != null &&
reservedWords.contains(entity.getPlainTableName().toUpperCase(Locale.getDefault())))
{
warningList.add("[TableNameRW] Table name [" +
entity.getPlainTableName() + "] of entity " + entity.getEntityName() + " is a
reserved word.");
}
-
+
// don't check columns/relations/keys when never-check is set
to "true"
if (entity.getNeverCheck()) {
continue;
}
-
- Set<String> ufields = new HashSet<String>();
+
+ Set<String> ufields = new HashSet<>();
Iterator<ModelField> fieldIter = entity.getFieldsIterator();
while (fieldIter.hasNext()) {
ModelField field = fieldIter.next();
@@ -121,7 +122,7 @@ public class ModelEntityChecker {
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()))
+ if
(reservedWords.contains(field.getColName().toUpperCase(Locale.getDefault())))
warningList.add("[FieldNameRW] Column name " +
field.getColName() + " of entity " + entity.getEntityName() + " is a reserved
word.");
if (type == null) {
StringBuilder warningMsg = new StringBuilder();
@@ -167,7 +168,7 @@ public class ModelEntityChecker {
}
}
- Set<String> relations = new HashSet<String>();
+ Set<String> relations = new HashSet<>();
for (int r = 0; r < entity.getRelationsSize(); r++) {
ModelRelation relation = entity.getRelation(r);
@@ -285,7 +286,7 @@ public class ModelEntityChecker {
}
}
- public static final String[] rwArray = { "ABORT", "ABS", "ABSOLUTE",
+ protected static final String[] rwArray = { "ABORT", "ABS", "ABSOLUTE",
"ACCEPT", "ACCES", "ACCESS", "ACS", "ACTION", "ACTIVATE", "ADD",
"ADDFORM",
"ADMIN", "AFTER", "AGGREGATE", "ALIAS", "ALL", "ALLOCATE", "ALTER",
"ANALYZE", "AND", "ANDFILENAME", "ANY", "ANYFINISH", "APPEND",
Modified:
ofbiz/ofbiz-framework/trunk/framework/entity/src/main/java/org/apache/ofbiz/entity/model/ModelField.java
URL:
http://svn.apache.org/viewvc/ofbiz/ofbiz-framework/trunk/framework/entity/src/main/java/org/apache/ofbiz/entity/model/ModelField.java?rev=1817559&r1=1817558&r2=1817559&view=diff
==============================================================================
---
ofbiz/ofbiz-framework/trunk/framework/entity/src/main/java/org/apache/ofbiz/entity/model/ModelField.java
(original)
+++
ofbiz/ofbiz-framework/trunk/framework/entity/src/main/java/org/apache/ofbiz/entity/model/ModelField.java
Fri Dec 8 20:18:41 2017
@@ -22,9 +22,9 @@ import java.util.ArrayList;
import java.util.Collections;
import java.util.Iterator;
import java.util.List;
+import java.util.Locale;
import org.apache.ofbiz.base.lang.ThreadSafe;
-import org.apache.ofbiz.base.util.Debug;
import org.apache.ofbiz.base.util.UtilXml;
import org.apache.ofbiz.entity.jdbc.DatabaseUtil;
import org.w3c.dom.Document;
@@ -147,11 +147,7 @@ public final class ModelField extends Mo
if (isPk) {
isNotNull = true;
}
- EncryptMethod encrypt =
EncryptMethod.valueOf(fieldElement.getAttribute("encrypt").toUpperCase());
- if (encrypt == null) {
- Debug.logWarning("invalid encrypt value: %s", module,
fieldElement.getAttribute("encrypt"));
- encrypt = EncryptMethod.FALSE;
- }
+ EncryptMethod encrypt =
EncryptMethod.valueOf(fieldElement.getAttribute("encrypt").toUpperCase(Locale.getDefault()));
boolean enableAuditLog =
"true".equals(fieldElement.getAttribute("enable-audit-log"));
List<String>validators = Collections.emptyList();
List<? extends Element> elementList =
UtilXml.childElementList(fieldElement, "validate");
@@ -177,7 +173,7 @@ public final class ModelField extends Mo
String name = ModelUtil.dbNameToVarName(colName);
String type = ModelUtil.induceFieldType(ccInfo.typeName,
ccInfo.columnSize, ccInfo.decimalDigits, modelFieldTypeReader);
boolean isPk = ccInfo.isPk;
- boolean isNotNull = "NO".equals(ccInfo.isNullable.toUpperCase());
+ boolean isNotNull =
"NO".equals(ccInfo.isNullable.toUpperCase(Locale.getDefault()));
String description = "";
String colValue = "";
String fieldSet = "";
@@ -303,7 +299,7 @@ public final class ModelField extends Mo
}
root.setAttribute("type", this.getType());
if (this.getEncryptMethod().isEncrypted()) {
- root.setAttribute("encrypt",
this.getEncryptMethod().toString().toLowerCase());
+ root.setAttribute("encrypt",
this.getEncryptMethod().toString().toLowerCase(Locale.getDefault()));
}
if (this.getIsNotNull()) {
root.setAttribute("not-null", "true");
Modified:
ofbiz/ofbiz-framework/trunk/framework/entity/src/main/java/org/apache/ofbiz/entity/model/ModelFieldType.java
URL:
http://svn.apache.org/viewvc/ofbiz/ofbiz-framework/trunk/framework/entity/src/main/java/org/apache/ofbiz/entity/model/ModelFieldType.java?rev=1817559&r1=1817558&r2=1817559&view=diff
==============================================================================
---
ofbiz/ofbiz-framework/trunk/framework/entity/src/main/java/org/apache/ofbiz/entity/model/ModelFieldType.java
(original)
+++
ofbiz/ofbiz-framework/trunk/framework/entity/src/main/java/org/apache/ofbiz/entity/model/ModelFieldType.java
Fri Dec 8 20:18:41 2017
@@ -19,6 +19,7 @@
package org.apache.ofbiz.entity.model;
import java.io.Serializable;
+import java.util.Locale;
import org.apache.ofbiz.base.util.UtilXml;
import org.apache.ofbiz.entity.jdbc.JdbcValueHandler;
@@ -90,18 +91,18 @@ public class ModelFieldType implements S
* @return max length of a String representing the Field value
*/
public int stringLength() {
- String sqlTypeUpperCase = sqlType.toUpperCase();
+ String sqlTypeUpperCase = sqlType.toUpperCase(Locale.getDefault());
if (sqlTypeUpperCase.indexOf("VARCHAR") >= 0) {
- if (sqlTypeUpperCase.indexOf("(") > 0 &&
sqlTypeUpperCase.indexOf(")") > 0) {
- String length =
sqlTypeUpperCase.substring(sqlTypeUpperCase.indexOf("(") + 1,
sqlTypeUpperCase.indexOf(")"));
+ if (sqlTypeUpperCase.indexOf('(') > 0 &&
sqlTypeUpperCase.indexOf(')') > 0) {
+ String length =
sqlTypeUpperCase.substring(sqlTypeUpperCase.indexOf('(') + 1,
sqlTypeUpperCase.indexOf(')'));
return Integer.parseInt(length);
} else {
return 255;
}
} else if (sqlTypeUpperCase.indexOf("CHAR") >= 0) {
- if (sqlTypeUpperCase.indexOf("(") > 0 &&
sqlTypeUpperCase.indexOf(")") > 0) {
- String length =
sqlTypeUpperCase.substring(sqlTypeUpperCase.indexOf("(") + 1,
sqlTypeUpperCase.indexOf(")"));
+ if (sqlTypeUpperCase.indexOf('(') > 0 &&
sqlTypeUpperCase.indexOf(')') > 0) {
+ String length =
sqlTypeUpperCase.substring(sqlTypeUpperCase.indexOf('(') + 1,
sqlTypeUpperCase.indexOf(')'));
return Integer.parseInt(length);
} else {
Modified:
ofbiz/ofbiz-framework/trunk/framework/entity/src/main/java/org/apache/ofbiz/entity/model/ModelGroupReader.java
URL:
http://svn.apache.org/viewvc/ofbiz/ofbiz-framework/trunk/framework/entity/src/main/java/org/apache/ofbiz/entity/model/ModelGroupReader.java?rev=1817559&r1=1817558&r2=1817559&view=diff
==============================================================================
---
ofbiz/ofbiz-framework/trunk/framework/entity/src/main/java/org/apache/ofbiz/entity/model/ModelGroupReader.java
(original)
+++
ofbiz/ofbiz-framework/trunk/framework/entity/src/main/java/org/apache/ofbiz/entity/model/ModelGroupReader.java
Fri Dec 8 20:18:41 2017
@@ -55,11 +55,11 @@ public class ModelGroupReader implements
public static final String module = ModelGroupReader.class.getName();
private static final UtilCache<String, ModelGroupReader> readers =
UtilCache.createUtilCache("entity.ModelGroupReader", 0, 0);
- private Map<String, String> groupCache = null;
+ private volatile Map<String, String> groupCache = null;
private Set<String> groupNames = null;
public String modelName;
- public List<ResourceHandler> entityGroupResourceHandlers = new
LinkedList<ResourceHandler>();
+ public List<ResourceHandler> entityGroupResourceHandlers = new
LinkedList<>();
public static ModelGroupReader getModelGroupReader(String delegatorName)
throws GenericEntityConfException {
DelegatorElement delegatorInfo =
EntityConfig.getInstance().getDelegator(delegatorName);
@@ -105,8 +105,8 @@ public class ModelGroupReader implements
// must check if null again as one of the blocked threads can
still enter
if (this.groupCache == null) {
// now it's safe
- this.groupCache = new HashMap<String, String>();
- this.groupNames = new TreeSet<String>();
+ this.groupCache = new HashMap<>();
+ this.groupNames = new TreeSet<>();
UtilTimer utilTimer = new UtilTimer();
// utilTimer.timerString("[ModelGroupReader.getGroupCache]
Before getDocument");
@@ -141,7 +141,6 @@ public class ModelGroupReader implements
String entityName =
UtilXml.checkEmpty(curEntity.getAttribute("entity")).intern();
String groupName =
UtilXml.checkEmpty(curEntity.getAttribute("group")).intern();
- if (groupName == null || entityName ==
null) continue;
try {
if (null ==
EntityConfig.getInstance().getDelegator(delegatorName).getGroupDataSource(groupName))
{
Debug.logError("The declared group
name " + groupName + " has no corresponding group-map in entityengine.xml: ",
module);
@@ -202,7 +201,7 @@ public class ModelGroupReader implements
}
getGroupCache(delegatorBaseName);
if (this.groupNames == null) return null;
- Set<String> newSet = new HashSet<String>();
+ Set<String> newSet = new HashSet<>();
try {
newSet.add(EntityConfig.getInstance().getDelegator(delegatorBaseName).getDefaultGroupName());
} catch (GenericEntityConfException e) {
@@ -218,7 +217,7 @@ public class ModelGroupReader implements
*/
public Set<String> getEntityNamesByGroup(String delegatorBaseName, String
groupName) {
Map<String, String> gc = getGroupCache(delegatorBaseName);
- Set<String> enames = new HashSet<String>();
+ Set<String> enames = new HashSet<>();
if (UtilValidate.isEmpty(groupName)) return enames;
if (UtilValidate.isEmpty(gc)) return enames;
Modified:
ofbiz/ofbiz-framework/trunk/framework/entity/src/main/java/org/apache/ofbiz/entity/model/ModelIndex.java
URL:
http://svn.apache.org/viewvc/ofbiz/ofbiz-framework/trunk/framework/entity/src/main/java/org/apache/ofbiz/entity/model/ModelIndex.java?rev=1817559&r1=1817558&r2=1817559&view=diff
==============================================================================
---
ofbiz/ofbiz-framework/trunk/framework/entity/src/main/java/org/apache/ofbiz/entity/model/ModelIndex.java
(original)
+++
ofbiz/ofbiz-framework/trunk/framework/entity/src/main/java/org/apache/ofbiz/entity/model/ModelIndex.java
Fri Dec 8 20:18:41 2017
@@ -21,6 +21,7 @@ package org.apache.ofbiz.entity.model;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
+import java.util.Locale;
import org.apache.ofbiz.base.lang.ThreadSafe;
import org.apache.ofbiz.base.util.UtilValidate;
@@ -73,11 +74,12 @@ public final class ModelIndex extends Mo
List<Field>fields = Collections.emptyList();
List<? extends Element> elementList =
UtilXml.childElementList(indexElement, "index-field");
if (!elementList.isEmpty()) {
- fields = new ArrayList<Field>(elementList.size());
+ fields = new ArrayList<>(elementList.size());
for (Element indexFieldElement : elementList) {
String fieldName =
indexFieldElement.getAttribute("name").intern();
String function =
indexFieldElement.getAttribute("function").intern();
- fields.add(new Field(fieldName,
UtilValidate.isNotEmpty(function) ? Function.valueOf(function.toUpperCase()) :
null));
+ fields.add(new Field(fieldName,
UtilValidate.isNotEmpty(function) ? Function.valueOf(function
+ .toUpperCase(Locale.getDefault())) : null));
}
fields = Collections.unmodifiableList(fields);
}
Modified:
ofbiz/ofbiz-framework/trunk/framework/entity/src/main/java/org/apache/ofbiz/entity/model/ModelReader.java
URL:
http://svn.apache.org/viewvc/ofbiz/ofbiz-framework/trunk/framework/entity/src/main/java/org/apache/ofbiz/entity/model/ModelReader.java?rev=1817559&r1=1817558&r2=1817559&view=diff
==============================================================================
---
ofbiz/ofbiz-framework/trunk/framework/entity/src/main/java/org/apache/ofbiz/entity/model/ModelReader.java
(original)
+++
ofbiz/ofbiz-framework/trunk/framework/entity/src/main/java/org/apache/ofbiz/entity/model/ModelReader.java
Fri Dec 8 20:18:41 2017
@@ -60,7 +60,7 @@ public class ModelReader implements Seri
public static final String module = ModelReader.class.getName();
private static final UtilCache<String, ModelReader> readers =
UtilCache.createUtilCache("entity.ModelReader", 0, 0);
- protected Map<String, ModelEntity> entityCache = null;
+ protected volatile Map<String, ModelEntity> entityCache = null;
protected int numEntities = 0;
protected int numViewEntities = 0;
@@ -73,10 +73,16 @@ public class ModelReader implements Seri
/** collection of filenames for entity definitions */
protected Collection<ResourceHandler> entityResourceHandlers;
- /** contains a collection of entity names for each ResourceHandler,
populated as they are loaded */
+ /**
+ * contains a collection of entity names for each ResourceHandler,
populated as
+ * they are loaded
+ */
protected Map<ResourceHandler, Collection<String>> resourceHandlerEntities;
- /** for each entity contains a map to the ResourceHandler that the entity
came from */
+ /**
+ * for each entity contains a map to the ResourceHandler that the entity
came
+ * from
+ */
protected Map<String, ResourceHandler> entityResourceHandlerMap;
public static ModelReader getModelReader(String delegatorName) throws
GenericEntityException {
@@ -100,9 +106,9 @@ public class ModelReader implements Seri
private ModelReader(String modelName) throws GenericEntityException {
this.modelName = modelName;
- entityResourceHandlers = new LinkedList<ResourceHandler>();
- resourceHandlerEntities = new HashMap<ResourceHandler,
Collection<String>>();
- entityResourceHandlerMap = new HashMap<String, ResourceHandler>();
+ entityResourceHandlers = new LinkedList<>();
+ resourceHandlerEntities = new HashMap<>();
+ entityResourceHandlerMap = new HashMap<>();
EntityModelReader entityModelReaderInfo =
EntityConfig.getInstance().getEntityModelReader(modelName);
@@ -110,21 +116,26 @@ public class ModelReader implements Seri
throw new GenericEntityConfException("Cound not find an
entity-model-reader with the name " + modelName);
}
- // get all of the main resource model stuff, ie specified in the
entityengine.xml file
+ // get all of the main resource model stuff, ie specified in the
+ // entityengine.xml file
for (Resource resourceElement :
entityModelReaderInfo.getResourceList()) {
- ResourceHandler handler = new
MainResourceHandler(EntityConfig.ENTITY_ENGINE_XML_FILENAME,
resourceElement.getLoader(), resourceElement.getLocation());
+ ResourceHandler handler = new
MainResourceHandler(EntityConfig.ENTITY_ENGINE_XML_FILENAME, resourceElement
+ .getLoader(), resourceElement.getLocation());
entityResourceHandlers.add(handler);
}
- // get all of the component resource model stuff, ie specified in each
ofbiz-component.xml file
- for (ComponentConfig.EntityResourceInfo componentResourceInfo:
ComponentConfig.getAllEntityResourceInfos("model")) {
+ // get all of the component resource model stuff, ie specified in each
+ // ofbiz-component.xml file
+ for (ComponentConfig.EntityResourceInfo componentResourceInfo :
ComponentConfig.getAllEntityResourceInfos(
+ "model")) {
if (modelName.equals(componentResourceInfo.readerName)) {
entityResourceHandlers.add(componentResourceInfo.createResourceHandler());
}
}
}
- private ModelEntity buildEntity(ResourceHandler entityResourceHandler,
Element curEntityElement, int i, ModelInfo def) throws GenericEntityException {
+ private ModelEntity buildEntity(ResourceHandler entityResourceHandler,
Element curEntityElement, int i,
+ ModelInfo def) throws GenericEntityException {
boolean isEntity = "entity".equals(curEntityElement.getNodeName());
String entityName =
UtilXml.checkEmpty(curEntityElement.getAttribute("entity-name")).intern();
boolean redefinedEntity =
"true".equals(curEntityElement.getAttribute("redefinition"));
@@ -133,7 +144,7 @@ public class ModelReader implements Seri
Collection<String> resourceHandlerEntityNames =
resourceHandlerEntities.get(entityResourceHandler);
if (resourceHandlerEntityNames == null) {
- resourceHandlerEntityNames = new LinkedList<String>();
+ resourceHandlerEntityNames = new LinkedList<>();
resourceHandlerEntities.put(entityResourceHandler,
resourceHandlerEntityNames);
}
resourceHandlerEntityNames.add(entityName);
@@ -141,17 +152,17 @@ public class ModelReader implements Seri
// check to see if entity with same name has already been read
if (entityCache.containsKey(entityName) && !redefinedEntity) {
Debug.logWarning("Entity " + entityName +
- " is defined more than once, most recent will over-write " +
- "previous definition(s)", module);
+ " is defined more than once, most recent will over-write "
+
+ "previous definition(s)", module);
Debug.logWarning("Entity " + entityName + " was found in " +
- entityResourceHandler + ", but was already defined in " +
- entityResourceHandlerMap.get(entityName).toString(), module);
+ entityResourceHandler + ", but was already defined in " +
+ entityResourceHandlerMap.get(entityName).toString(),
module);
}
// add entityName, entityFileName pair to entityResourceHandlerMap map
entityResourceHandlerMap.put(entityName, entityResourceHandler);
- // utilTimer.timerString(" After entityEntityName -- " + i + " --");
+ // utilTimer.timerString(" After entityEntityName -- " + i + " --");
// ModelEntity entity = createModelEntity(curEntity, utilTimer);
ModelEntity modelEntity = null;
@@ -168,18 +179,20 @@ public class ModelReader implements Seri
Debug.logError(e, "Could not get resource URL", module);
}
- // utilTimer.timerString(" After createModelEntity -- " + i + " --");
+ // utilTimer.timerString(" After createModelEntity -- " + i + " --");
if (modelEntity != null) {
modelEntity.setLocation(resourceLocation);
- // utilTimer.timerString(" After entityCache.put -- " + i + "
--");
+ // utilTimer.timerString(" After entityCache.put -- " + i + " --");
if (isEntity) {
- if (Debug.verboseOn()) Debug.logVerbose("-- [Entity]: #" + i +
": " + entityName, module);
+ if (Debug.verboseOn())
+ Debug.logVerbose("-- [Entity]: #" + i + ": " + entityName,
module);
} else {
- if (Debug.verboseOn()) Debug.logVerbose("-- [ViewEntity]: #" +
i + ": " + entityName, module);
+ if (Debug.verboseOn())
+ Debug.logVerbose("-- [ViewEntity]: #" + i + ": " +
entityName, module);
}
} else {
Debug.logWarning("-- -- ENTITYGEN ERROR:getModelEntity: Could not
create " +
- "entity for entityName: " + entityName, module);
+ "entity for entityName: " + entityName, module);
}
return modelEntity;
}
@@ -195,13 +208,13 @@ public class ModelReader implements Seri
numRelations = 0;
numAutoRelations = 0;
- entityCache = new HashMap<String, ModelEntity>();
- List<ModelViewEntity> tempViewEntityList = new
LinkedList<ModelViewEntity>();
- List<Element> tempExtendEntityElementList = new
LinkedList<Element>();
+ entityCache = new HashMap<>();
+ List<ModelViewEntity> tempViewEntityList = new
LinkedList<>();
+ List<Element> tempExtendEntityElementList = new
LinkedList<>();
UtilTimer utilTimer = new UtilTimer();
- for (ResourceHandler entityResourceHandler:
entityResourceHandlers) {
+ for (ResourceHandler entityResourceHandler :
entityResourceHandlers) {
// utilTimer.timerString("Before getDocument in file "
+ entityFileName);
Document document = null;
@@ -212,10 +225,12 @@ public class ModelReader implements Seri
throw new GenericEntityConfException("Error
getting document from resource handler", e);
}
if (document == null) {
- throw new GenericEntityConfException("Could not
get document for " + entityResourceHandler.toString());
+ throw new GenericEntityConfException("Could not
get document for " + entityResourceHandler
+ .toString());
}
- // utilTimer.timerString("Before getDocumentElement in
" + entityResourceHandler.toString());
+ // utilTimer.timerString("Before getDocumentElement in
" +
+ // entityResourceHandler.toString());
Element docElement = document.getDocumentElement();
if (docElement == null) {
@@ -236,8 +251,10 @@ public class ModelReader implements Seri
if ((isEntity || isViewEntity) &&
curChild.getNodeType() == Node.ELEMENT_NODE) {
i++;
- ModelEntity modelEntity =
buildEntity(entityResourceHandler, (Element) curChild, i, def);
- // put the view entity in a list to get
ready for the second pass to populate fields...
+ ModelEntity modelEntity =
buildEntity(entityResourceHandler, (Element) curChild, i,
+ def);
+ // put the view entity in a list to get
ready for the second pass to populate
+ // fields...
if (isViewEntity) {
tempViewEntityList.add((ModelViewEntity) modelEntity);
} else {
@@ -250,14 +267,17 @@ public class ModelReader implements Seri
} else {
Debug.logWarning("No child nodes found.", module);
}
- utilTimer.timerString("Finished " +
entityResourceHandler.toString() + " - Total Entities: " + i + " FINISHED");
+ utilTimer.timerString("Finished " +
entityResourceHandler.toString() + " - Total Entities: " + i
+ + " FINISHED");
}
- // all entity elements in, now go through extend-entity
elements and add their stuff
- for (Element extendEntityElement:
tempExtendEntityElementList) {
+ // all entity elements in, now go through extend-entity
elements and add their
+ // stuff
+ for (Element extendEntityElement :
tempExtendEntityElementList) {
String entityName =
UtilXml.checkEmpty(extendEntityElement.getAttribute("entity-name"));
ModelEntity modelEntity = entityCache.get(entityName);
- if (modelEntity == null) throw new
GenericEntityConfException("Entity to extend does not exist: " + entityName);
+ if (modelEntity == null)
+ throw new GenericEntityConfException("Entity to
extend does not exist: " + entityName);
modelEntity.addExtendEntity(this, extendEntityElement);
}
@@ -266,17 +286,16 @@ public class ModelReader implements Seri
while (!tempViewEntityList.isEmpty()) {
int startSize = tempViewEntityList.size();
Iterator<ModelViewEntity> mveIt =
tempViewEntityList.iterator();
-TEMP_VIEW_LOOP:
- while (mveIt.hasNext()) {
+ TEMP_VIEW_LOOP: while (mveIt.hasNext()) {
ModelViewEntity curViewEntity = mveIt.next();
- for (ModelViewEntity.ModelMemberEntity mve:
curViewEntity.getAllModelMemberEntities()) {
+ for (ModelViewEntity.ModelMemberEntity mve :
curViewEntity.getAllModelMemberEntities()) {
if
(!entityCache.containsKey(mve.getEntityName())) {
continue TEMP_VIEW_LOOP;
}
}
mveIt.remove();
curViewEntity.populateFields(this);
- for (ModelViewEntity.ModelMemberEntity mve:
curViewEntity.getAllModelMemberEntities()) {
+ for (ModelViewEntity.ModelMemberEntity mve :
curViewEntity.getAllModelMemberEntities()) {
ModelEntity me =
entityCache.get(mve.getEntityName());
me.addViewEntity(curViewEntity);
}
@@ -291,13 +310,14 @@ TEMP_VIEW_LOOP:
}
if (!tempViewEntityList.isEmpty()) {
StringBuilder sb = new StringBuilder("View entities
reference non-existant members:\n");
- Set<String> allViews = new HashSet<String>();
- for (ModelViewEntity curViewEntity:
tempViewEntityList) {
+ Set<String> allViews = new HashSet<>();
+ for (ModelViewEntity curViewEntity :
tempViewEntityList) {
allViews.add(curViewEntity.getEntityName());
}
- for (ModelViewEntity curViewEntity:
tempViewEntityList) {
- Set<String> perViewMissingEntities = new
HashSet<String>();
- Iterator<ModelViewEntity.ModelMemberEntity> mmeIt
= curViewEntity.getAllModelMemberEntities().iterator();
+ for (ModelViewEntity curViewEntity :
tempViewEntityList) {
+ Set<String> perViewMissingEntities = new
HashSet<>();
+ Iterator<ModelViewEntity.ModelMemberEntity> mmeIt
= curViewEntity
+ .getAllModelMemberEntities().iterator();
while (mmeIt.hasNext()) {
ModelViewEntity.ModelMemberEntity mme =
mmeIt.next();
String memberEntityName = mme.getEntityName();
@@ -310,8 +330,9 @@ TEMP_VIEW_LOOP:
}
}
}
- for (String perViewMissingEntity:
perViewMissingEntities) {
-
sb.append("\t[").append(curViewEntity.getEntityName()).append("] missing member
entity [").append(perViewMissingEntity).append("]\n");
+ for (String perViewMissingEntity :
perViewMissingEntities) {
+
sb.append("\t[").append(curViewEntity.getEntityName()).append(
+ "] missing member entity
[").append(perViewMissingEntity).append("]\n");
}
}
@@ -319,101 +340,116 @@ TEMP_VIEW_LOOP:
}
// auto-create relationships
- Set<String> orderedMessages = new TreeSet<String>();
- for (String curEntityName: new
TreeSet<String>(this.getEntityNames())) {
+ Set<String> orderedMessages = new TreeSet<>();
+ for (String curEntityName : new
TreeSet<>(this.getEntityNames())) {
ModelEntity curModelEntity =
this.getModelEntity(curEntityName);
if (curModelEntity instanceof ModelViewEntity) {
- // for view-entities auto-create relationships for
all member-entity relationships that have all corresponding fields in the
view-entity
+ // for view-entities auto-create relationships for
all member-entity
+ // relationships that have all corresponding
fields in the view-entity
} else {
// for entities auto-create many relationships for
all type one relationships
- // just in case we add a new relation to the same
entity, keep in a separate list and add them at the end
- List<ModelRelation> newSameEntityRelations = new
LinkedList<ModelRelation>();
+ // just in case we add a new relation to the same
entity, keep in a separate
+ // list and add them at the end
+ List<ModelRelation> newSameEntityRelations = new
LinkedList<>();
Iterator<ModelRelation> relationsIter =
curModelEntity.getRelationsIterator();
while (relationsIter.hasNext()) {
ModelRelation modelRelation =
relationsIter.next();
- if (("one".equals(modelRelation.getType()) ||
"one-nofk".equals(modelRelation.getType())) && !modelRelation.isAutoRelation())
{
+ if (("one".equals(modelRelation.getType()) ||
"one-nofk".equals(modelRelation
+ .getType())) &&
!modelRelation.isAutoRelation()) {
ModelEntity relatedEnt = null;
try {
relatedEnt =
this.getModelEntity(modelRelation.getRelEntityName());
} catch (GenericModelException e) {
- throw new GenericModelException("Error
getting related entity [" + modelRelation.getRelEntityName() + "] definition
from entity [" + curEntityName + "]", e);
+ throw new GenericModelException("Error
getting related entity [" + modelRelation
+ .getRelEntityName() + "]
definition from entity [" + curEntityName
+ + "]", e);
}
- if (relatedEnt != null) {
- // create the new relationship even if
one exists so we can show what we are looking for in the info message
- // don't do relationship to the same
entity, unless title is "Parent", then do a "Child" automatically
- String title =
modelRelation.getTitle();
- if
(curModelEntity.getEntityName().equals(relatedEnt.getEntityName()) &&
"Parent".equals(title)) {
- title = "Child";
- }
- String description = "";
- String type = "";
- String relEntityName =
curModelEntity.getEntityName();
- String fkName = "";
- ArrayList<ModelKeyMap> keyMaps = new
ArrayList<ModelKeyMap>();
- boolean isAutoRelation = true;
- Set<String> curEntityKeyFields = new
HashSet<String>();
- for (ModelKeyMap curkm :
modelRelation.getKeyMaps()) {
- keyMaps.add(new
ModelKeyMap(curkm.getRelFieldName(), curkm.getFieldName()));
-
curEntityKeyFields.add(curkm.getFieldName());
- }
- keyMaps.trimToSize();
- // decide whether it should be one or
many by seeing if the key map represents the complete pk of the relEntity
- if
(curModelEntity.containsAllPkFieldNames(curEntityKeyFields)) {
- // always use one-nofk, we don't
want auto-fks getting in for these automatic ones
- type = "one-nofk";
- // to keep it clean, remove any
additional keys that aren't part of the PK
- List<String> curPkFieldNames =
curModelEntity.getPkFieldNames();
- Iterator<ModelKeyMap> nrkmIter =
keyMaps.iterator();
- while (nrkmIter.hasNext()) {
- ModelKeyMap nrkm
=nrkmIter.next();
- String checkField =
nrkm.getRelFieldName();
- if
(!curPkFieldNames.contains(checkField)) {
- nrkmIter.remove();
- }
+ // create the new relationship even if one
exists so we can show what we are
+ // looking for in the info message
+ // don't do relationship to the same
entity, unless title is "Parent", then do a
+ // "Child" automatically
+ String title = modelRelation.getTitle();
+ if
(curModelEntity.getEntityName().equals(relatedEnt.getEntityName()) && "Parent"
+ .equals(title)) {
+ title = "Child";
+ }
+ String description = "";
+ String type = "";
+ String relEntityName =
curModelEntity.getEntityName();
+ String fkName = "";
+ ArrayList<ModelKeyMap> keyMaps = new
ArrayList<>();
+ boolean isAutoRelation = true;
+ Set<String> curEntityKeyFields = new
HashSet<>();
+ for (ModelKeyMap curkm :
modelRelation.getKeyMaps()) {
+ keyMaps.add(new
ModelKeyMap(curkm.getRelFieldName(), curkm.getFieldName()));
+
curEntityKeyFields.add(curkm.getFieldName());
+ }
+ keyMaps.trimToSize();
+ // decide whether it should be one or many
by seeing if the key map represents
+ // the complete pk of the relEntity
+ if
(curModelEntity.containsAllPkFieldNames(curEntityKeyFields)) {
+ // always use one-nofk, we don't want
auto-fks getting in for these automatic
+ // ones
+ type = "one-nofk";
+ // to keep it clean, remove any
additional keys that aren't part of the PK
+ List<String> curPkFieldNames =
curModelEntity.getPkFieldNames();
+ Iterator<ModelKeyMap> nrkmIter =
keyMaps.iterator();
+ while (nrkmIter.hasNext()) {
+ ModelKeyMap nrkm = nrkmIter.next();
+ String checkField =
nrkm.getRelFieldName();
+ if
(!curPkFieldNames.contains(checkField)) {
+ nrkmIter.remove();
}
- } else {
- type= "many";
}
- ModelRelation newRel =
ModelRelation.create(relatedEnt, description, type, title, relEntityName,
fkName, keyMaps, isAutoRelation);
+ } else {
+ type = "many";
+ }
+ ModelRelation newRel =
ModelRelation.create(relatedEnt, description, type, title,
+ relEntityName, fkName, keyMaps,
isAutoRelation);
- ModelRelation existingRelation =
relatedEnt.getRelation(title + curModelEntity.getEntityName());
- if (existingRelation == null) {
- numAutoRelations++;
- if
(curModelEntity.getEntityName().equals(relatedEnt.getEntityName())) {
-
newSameEntityRelations.add(newRel);
- } else {
- relatedEnt.addRelation(newRel);
- }
+ ModelRelation existingRelation =
relatedEnt.getRelation(title + curModelEntity
+ .getEntityName());
+ if (existingRelation == null) {
+ numAutoRelations++;
+ if
(curModelEntity.getEntityName().equals(relatedEnt.getEntityName())) {
+ newSameEntityRelations.add(newRel);
} else {
- if
(newRel.equals(existingRelation)) {
- // don't warn if the target
title+entity = current title+entity
- if (Debug.infoOn() && !(title
+ curModelEntity.getEntityName()).equals(modelRelation.getTitle() +
modelRelation.getRelEntityName())) {
- //String errorMsg =
"Relation already exists to entity [] with title [" + targetTitle + "],from
entity []";
- String message = "Entity
[" + relatedEnt.getPackageName() + ":" + relatedEnt.getEntityName() + "]
already has identical relationship to entity [" +
-
curModelEntity.getEntityName() + "] title [" + title + "]; would auto-create:
type [" +
- newRel.getType() +
"] and fields [" + newRel.keyMapString(",", "") + "]";
-
orderedMessages.add(message);
- }
- } else {
- String message = "Existing
relationship with the same name, but different specs found from what would be
auto-created for Entity [" + relatedEnt.getEntityName() + "] and relationship
to entity [" +
-
curModelEntity.getEntityName() + "] title [" + title + "]; would auto-create:
type [" +
- newRel.getType() + "]
and fields [" + newRel.keyMapString(",", "") + "]";
- Debug.logVerbose(message,
module);
- }
+ relatedEnt.addRelation(newRel);
}
} else {
- String errorMsg = "Could not find
related entity ["
- +
modelRelation.getRelEntityName() + "], no reverse relation added.";
- Debug.logWarning(errorMsg, module);
+ if (newRel.equals(existingRelation)) {
+ // don't warn if the target
title+entity = current title+entity
+ if (Debug.infoOn() && !(title +
curModelEntity.getEntityName()).equals(
+ modelRelation.getTitle() +
modelRelation.getRelEntityName())) {
+ // String errorMsg = "Relation
already exists to entity [] with title ["
+ // + targetTitle + "],from
entity []";
+ String message = "Entity [" +
relatedEnt.getPackageName() + ":"
+ +
relatedEnt.getEntityName()
+ + "] already has
identical relationship to entity [" +
+
curModelEntity.getEntityName() + "] title [" + title
+ + "]; would
auto-create: type [" +
+ newRel.getType() + "]
and fields [" + newRel.keyMapString(",",
+ "") + "]";
+ orderedMessages.add(message);
+ }
+ } else {
+ String message = "Existing
relationship with the same name, but different specs found from what would be
auto-created for Entity ["
+ +
relatedEnt.getEntityName() + "] and relationship to entity [" +
+
curModelEntity.getEntityName() + "] title [" + title
+ + "]; would auto-create:
type [" +
+ newRel.getType() + "] and
fields [" + newRel.keyMapString(",", "")
+ + "]";
+ Debug.logVerbose(message, module);
+ }
}
}
}
if (newSameEntityRelations.size() > 0) {
- for (ModelRelation newRel:
newSameEntityRelations) {
+ for (ModelRelation newRel :
newSameEntityRelations) {
curModelEntity.addRelation(newRel);
}
}
@@ -423,7 +459,9 @@ TEMP_VIEW_LOOP:
for (String message : orderedMessages) {
Debug.logInfo(message, module);
}
- Debug.logInfo("Finished loading entities; #Entities="
+ numEntities + " #ViewEntities=" + numViewEntities + " #Fields=" + numFields +
" #Relationships=" + numRelations + " #AutoRelationships=" + numAutoRelations,
module);
+ Debug.logInfo("Finished loading entities; #Entities="
+ numEntities + " #ViewEntities="
+ + numViewEntities + " #Fields=" + numFields +
" #Relationships=" + numRelations
+ + " #AutoRelationships=" + numAutoRelations,
module);
}
}
}
@@ -431,13 +469,16 @@ TEMP_VIEW_LOOP:
return entityCache;
}
- /** rebuilds the resourceHandlerEntities Map of Collections based on the
current
- * entityResourceHandlerMap Map, must be done whenever a manual change is
made to the
- * entityResourceHandlerMap Map after the initial load to make them
consistent again.
+ /**
+ * rebuilds the resourceHandlerEntities Map of Collections based on the
current
+ * entityResourceHandlerMap Map, must be done whenever a manual change is
made
+ * to the entityResourceHandlerMap Map after the initial load to make them
+ * consistent again.
*/
public void rebuildResourceHandlerEntities() {
- resourceHandlerEntities = new HashMap<ResourceHandler,
Collection<String>>();
- Iterator<Map.Entry<String, ResourceHandler>> entityResourceIter =
entityResourceHandlerMap.entrySet().iterator();
+ resourceHandlerEntities = new HashMap<>();
+ Iterator<Map.Entry<String, ResourceHandler>> entityResourceIter =
entityResourceHandlerMap.entrySet()
+ .iterator();
while (entityResourceIter.hasNext()) {
Map.Entry<String, ResourceHandler> entry =
entityResourceIter.next();
@@ -445,7 +486,7 @@ TEMP_VIEW_LOOP:
Collection<String> resourceHandlerEntityNames =
resourceHandlerEntities.get(entry.getValue());
if (resourceHandlerEntityNames == null) {
- resourceHandlerEntityNames = new LinkedList<String>();
+ resourceHandlerEntityNames = new LinkedList<>();
resourceHandlerEntities.put(entry.getValue(),
resourceHandlerEntityNames);
}
resourceHandlerEntityNames.add(entry.getKey());
@@ -453,26 +494,34 @@ TEMP_VIEW_LOOP:
}
public Iterator<ResourceHandler> getResourceHandlerEntitiesKeyIterator() {
- if (resourceHandlerEntities == null) return null;
+ if (resourceHandlerEntities == null)
+ return null;
return resourceHandlerEntities.keySet().iterator();
}
public Collection<String> getResourceHandlerEntities(ResourceHandler
resourceHandler) {
- if (resourceHandlerEntities == null) return null;
+ if (resourceHandlerEntities == null)
+ return null;
return resourceHandlerEntities.get(resourceHandler);
}
public void addEntityToResourceHandler(String entityName, String
loaderName, String location) {
- entityResourceHandlerMap.put(entityName, new
MainResourceHandler(EntityConfig.ENTITY_ENGINE_XML_FILENAME, loaderName,
location));
+ entityResourceHandlerMap.put(entityName, new
MainResourceHandler(EntityConfig.ENTITY_ENGINE_XML_FILENAME,
+ loaderName, location));
}
public ResourceHandler getEntityResourceHandler(String entityName) {
return entityResourceHandlerMap.get(entityName);
}
- /** Gets an Entity object based on a definition from the specified XML
Entity descriptor file.
- * @param entityName The entityName of the Entity definition to use.
- * @return An Entity object describing the specified entity of the
specified descriptor file.
+ /**
+ * Gets an Entity object based on a definition from the specified XML
Entity
+ * descriptor file.
+ *
+ * @param entityName
+ * The entityName of the Entity definition to use.
+ * @return An Entity object describing the specified entity of the
specified
+ * descriptor file.
*/
public ModelEntity getModelEntity(String entityName) throws
GenericEntityException {
if (entityName == null) {
@@ -505,7 +554,10 @@ TEMP_VIEW_LOOP:
return modelEntity;
}
- /** Creates a Iterator with the entityName of each Entity defined in the
specified XML Entity Descriptor file.
+ /**
+ * Creates a Iterator with the entityName of each Entity defined in the
+ * specified XML Entity Descriptor file.
+ *
* @return A Iterator of entityName Strings
*/
public Iterator<String> getEntityNamesIterator() throws
GenericEntityException {
@@ -517,7 +569,10 @@ TEMP_VIEW_LOOP:
}
}
- /** Creates a Set with the entityName of each Entity defined in the
specified XML Entity Descriptor file.
+ /**
+ * Creates a Set with the entityName of each Entity defined in the
specified XML
+ * Entity Descriptor file.
+ *
* @return A Set of entityName Strings
*/
public Set<String> getEntityNames() throws GenericEntityException {
@@ -529,10 +584,11 @@ TEMP_VIEW_LOOP:
}
/** Get all entities, organized by package */
- public Map<String, TreeSet<String>> getEntitiesByPackage(Set<String>
packageFilterSet, Set<String> entityFilterSet) throws GenericEntityException {
- Map<String, TreeSet<String>> entitiesByPackage = new HashMap<String,
TreeSet<String>>();
+ public Map<String, TreeSet<String>> getEntitiesByPackage(Set<String>
packageFilterSet, Set<String> entityFilterSet)
+ throws GenericEntityException {
+ Map<String, TreeSet<String>> entitiesByPackage = new HashMap<>();
- //put the entityNames TreeSets in a HashMap by packageName
+ // put the entityNames TreeSets in a HashMap by packageName
Iterator<String> ecIter = this.getEntityNames().iterator();
while (ecIter.hasNext()) {
String entityName = ecIter.next();
@@ -542,24 +598,26 @@ TEMP_VIEW_LOOP:
if (UtilValidate.isNotEmpty(packageFilterSet)) {
// does it match any of these?
boolean foundMatch = false;
- for (String packageFilter: packageFilterSet) {
+ for (String packageFilter : packageFilterSet) {
if (packageName.contains(packageFilter)) {
foundMatch = true;
}
}
if (!foundMatch) {
- //Debug.logInfo("Not including entity " + entityName + "
becuase it is not in the package set: " + packageFilterSet, module);
+ // Debug.logInfo("Not including entity " + entityName + "
becuase it is not in
+ // the package set: " + packageFilterSet, module);
continue;
}
}
if (UtilValidate.isNotEmpty(entityFilterSet) &&
!entityFilterSet.contains(entityName)) {
- //Debug.logInfo("Not including entity " + entityName + "
because it is not in the entity set: " + entityFilterSet, module);
+ // Debug.logInfo("Not including entity " + entityName + "
because it is not in
+ // the entity set: " + entityFilterSet, module);
continue;
}
TreeSet<String> entities =
entitiesByPackage.get(entity.getPackageName());
if (entities == null) {
- entities = new TreeSet<String>();
+ entities = new TreeSet<>();
entitiesByPackage.put(entity.getPackageName(), entities);
}
entities.add(entityName);
@@ -568,9 +626,12 @@ TEMP_VIEW_LOOP:
return entitiesByPackage;
}
- /** Util method to validate an entity name; if no entity is found with the
name,
- * characters are stripped from the beginning of the name until a valid
entity name is found.
- * It is intended to be used to determine the entity name from a relation
name.
+ /**
+ * Util method to validate an entity name; if no entity is found with the
name,
+ * characters are stripped from the beginning of the name until a valid
entity
+ * name is found. It is intended to be used to determine the entity name
from a
+ * relation name.
+ *
* @return A valid entityName or null
*/
public String validateEntityName(String entityName) throws
GenericEntityException {
@@ -581,18 +642,20 @@ TEMP_VIEW_LOOP:
while (!allEntities.contains(entityName) && entityName.length() > 0) {
entityName = entityName.substring(1);
}
- return (entityName.length() > 0? entityName: null);
+ return (entityName.length() > 0 ? entityName : null);
}
ModelEntity createModelEntity(Element entityElement, UtilTimer utilTimer,
ModelInfo def) {
- if (entityElement == null) return null;
+ if (entityElement == null)
+ return null;
this.numEntities++;
ModelEntity entity = new ModelEntity(this, entityElement, utilTimer,
def);
return entity;
}
ModelEntity createModelViewEntity(Element entityElement, UtilTimer
utilTimer, ModelInfo def) {
- if (entityElement == null) return null;
+ if (entityElement == null)
+ return null;
this.numViewEntities++;
ModelViewEntity entity = new ModelViewEntity(this, entityElement,
utilTimer, def);
return entity;
Modified:
ofbiz/ofbiz-framework/trunk/framework/entity/src/main/java/org/apache/ofbiz/entity/model/ModelUtil.java
URL:
http://svn.apache.org/viewvc/ofbiz/ofbiz-framework/trunk/framework/entity/src/main/java/org/apache/ofbiz/entity/model/ModelUtil.java?rev=1817559&r1=1817558&r2=1817559&view=diff
==============================================================================
---
ofbiz/ofbiz-framework/trunk/framework/entity/src/main/java/org/apache/ofbiz/entity/model/ModelUtil.java
(original)
+++
ofbiz/ofbiz-framework/trunk/framework/entity/src/main/java/org/apache/ofbiz/entity/model/ModelUtil.java
Fri Dec 8 20:18:41 2017
@@ -21,6 +21,7 @@ package org.apache.ofbiz.entity.model;
import java.io.File;
import java.util.Iterator;
import java.util.List;
+import java.util.Locale;
import org.apache.ofbiz.base.util.StringUtil;
import org.apache.ofbiz.base.util.UtilMisc;
@@ -45,7 +46,7 @@ public final class ModelUtil {
*/
public static String upperFirstChar(String string) {
if (string == null) return null;
- if (string.length() <= 1) return string.toLowerCase();
+ if (string.length() <= 1) return
string.toLowerCase(Locale.getDefault());
StringBuilder sb = new StringBuilder(string);
sb.setCharAt(0, Character.toUpperCase(sb.charAt(0)));
@@ -60,7 +61,7 @@ public final class ModelUtil {
*/
public static String lowerFirstChar(String string) {
if (string == null) return null;
- if (string.length() <= 1) return string.toLowerCase();
+ if (string.length() <= 1) return
string.toLowerCase(Locale.getDefault());
StringBuilder sb = new StringBuilder(string);
sb.setCharAt(0, Character.toLowerCase(sb.charAt(0)));