📄 entitydataservices.java
字号:
} return header; } private static int readEntityFile(File file, String delimiter, GenericDelegator delegator) throws IOException, GeneralException { String entityName = file.getName().substring(0, file.getName().lastIndexOf('.')); if (entityName == null) { throw new GeneralException("Entity name cannot be null : [" + file.getName() + "]"); } BufferedReader reader = new BufferedReader(new FileReader(file)); String[] header = readEntityHeader(file, delimiter, reader); //Debug.log("Opened data file [" + file.getName() + "] now running...", module); GeneralException exception = null; String line = null; int lineNumber = 1; while ((line = reader.readLine()) != null) { // process the record String fields[] = line.split(delimiter); //Debug.log("Split record", module); if (fields.length < 1) { exception = new GeneralException("Illegal number of fields [" + file.getName() + " / " + lineNumber); break; } GenericValue newValue = makeGenericValue(delegator, entityName, header, fields); //Debug.log("Made value object", module); newValue = delegator.createOrStore(newValue); //Debug.log("Stored record", module); if (lineNumber % 500 == 0 || lineNumber == 1) { Debug.log("Records Stored [" + file.getName() + "]: " + lineNumber, module); //Debug.log("Last record : " + newValue, module); } lineNumber++; } reader.close(); // now that we closed the reader; throw the exception if (exception != null) { throw exception; } return lineNumber; } private static GenericValue makeGenericValue(GenericDelegator delegator, String entityName, String[] header, String[] line) { GenericValue newValue = delegator.makeValue(entityName, null); for (int i = 0; i < header.length; i++) { String name = header[i].trim(); String value = null; if (i < line.length) { value = line[i]; } // check for null values if (value != null && value.length() > 0) { char first = value.charAt(0); if (first == 0x00) { value = null; } // trim non-null values if (value != null) { value = value.trim(); } if (value != null && value.length() == 0) { value = null; } } else { value = null; } // convert and set the fields newValue.setString(name, value); } return newValue; } private String[] getEntityFieldNames(GenericDelegator delegator, String entityName) { ModelEntity entity = delegator.getModelEntity(entityName); if (entity == null) { return null; } List modelFields = entity.getFieldsCopy(); if (modelFields == null) { return null; } String[] fieldNames = new String[modelFields.size()]; for (int i = 0; i < modelFields.size(); i++) { ModelField field = (ModelField) modelFields.get(i); fieldNames[i] = field.getName(); } return fieldNames; } public static Map rebuildAllIndexesAndKeys(DispatchContext dctx, Map context) { GenericDelegator delegator = dctx.getDelegator(); Security security = dctx.getSecurity(); // check permission GenericValue userLogin = (GenericValue) context.get("userLogin"); if (!security.hasPermission("ENTITY_MAINT", userLogin)) { return ServiceUtil.returnError("You do not have permission to run this service."); } String groupName = (String) context.get("groupName"); Boolean fixSizes = (Boolean) context.get("fixColSizes"); if (fixSizes == null) fixSizes = new Boolean(false); List messages = new ArrayList(); String helperName = delegator.getGroupHelperName(groupName); DatabaseUtil dbUtil = new DatabaseUtil(helperName); Map modelEntities = delegator.getModelEntityMapByGroup(groupName); Set modelEntityNames = new TreeSet(modelEntities.keySet()); Iterator modelEntityNameIter = null; // step 1 - remove FK indices Debug.logImportant("Removing all foreign key indices", module); modelEntityNameIter = modelEntityNames.iterator(); while (modelEntityNameIter.hasNext()) { String modelEntityName = (String) modelEntityNameIter.next(); ModelEntity modelEntity = (ModelEntity) modelEntities.get(modelEntityName); dbUtil.deleteForeignKeyIndices(modelEntity, messages); } modelEntityNameIter = null; // step 2 - remove FKs Debug.logImportant("Removing all foreign keys", module); modelEntityNameIter = modelEntityNames.iterator(); while (modelEntityNameIter.hasNext()) { String modelEntityName = (String) modelEntityNameIter.next(); ModelEntity modelEntity = (ModelEntity) modelEntities.get(modelEntityName); dbUtil.deleteForeignKeys(modelEntity, modelEntities, messages); } modelEntityNameIter = null; // step 3 - remove PKs Debug.logImportant("Removing all primary keys", module); modelEntityNameIter = modelEntityNames.iterator(); while (modelEntityNameIter.hasNext()) { String modelEntityName = (String) modelEntityNameIter.next(); ModelEntity modelEntity = (ModelEntity) modelEntities.get(modelEntityName); dbUtil.deletePrimaryKey(modelEntity, messages); } modelEntityNameIter = null; // step 4 - remove declared indices Debug.logImportant("Removing all declared indices", module); modelEntityNameIter = modelEntityNames.iterator(); while (modelEntityNameIter.hasNext()) { String modelEntityName = (String) modelEntityNameIter.next(); ModelEntity modelEntity = (ModelEntity) modelEntities.get(modelEntityName); dbUtil.deleteDeclaredIndices(modelEntity, messages); } modelEntityNameIter = null; // step 5 - repair field sizes if (fixSizes.booleanValue()) { Debug.logImportant("Updating column field size changes", module); List fieldsWrongSize = new LinkedList(); dbUtil.checkDb(modelEntities, fieldsWrongSize, messages, true, true, true, true); if (fieldsWrongSize.size() > 0) { dbUtil.repairColumnSizeChanges(modelEntities, fieldsWrongSize, messages); } else { String thisMsg = "No field sizes to update"; messages.add(thisMsg); Debug.logImportant(thisMsg, module); } } // step 6 - create PKs Debug.logImportant("Creating all primary keys", module); modelEntityNameIter = modelEntityNames.iterator(); while (modelEntityNameIter.hasNext()) { String modelEntityName = (String) modelEntityNameIter.next(); ModelEntity modelEntity = (ModelEntity) modelEntities.get(modelEntityName); dbUtil.createPrimaryKey(modelEntity, messages); } modelEntityNameIter = null; // step 7 - create FK indices Debug.logImportant("Creating all foreign key indices", module); modelEntityNameIter = modelEntityNames.iterator(); while (modelEntityNameIter.hasNext()) { String modelEntityName = (String) modelEntityNameIter.next(); ModelEntity modelEntity = (ModelEntity) modelEntities.get(modelEntityName); dbUtil.createForeignKeyIndices(modelEntity, messages); } modelEntityNameIter = null; // step 8 - create FKs Debug.logImportant("Creating all foreign keys", module); modelEntityNameIter = modelEntityNames.iterator(); while (modelEntityNameIter.hasNext()) { String modelEntityName = (String) modelEntityNameIter.next(); ModelEntity modelEntity = (ModelEntity) modelEntities.get(modelEntityName); dbUtil.createForeignKeys(modelEntity, modelEntities, messages); } modelEntityNameIter = null; // step 8 - create FKs Debug.logImportant("Creating all declared indices", module); modelEntityNameIter = modelEntityNames.iterator(); while (modelEntityNameIter.hasNext()) { String modelEntityName = (String) modelEntityNameIter.next(); ModelEntity modelEntity = (ModelEntity) modelEntities.get(modelEntityName); dbUtil.createDeclaredIndices(modelEntity, messages); } modelEntityNameIter = null; // step 8 - checkdb Debug.logImportant("Running DB check with add missing enabled", module); dbUtil.checkDb(modelEntities, messages, true); Map result = ServiceUtil.returnSuccess(); result.put("messages", messages); return result; }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -