<%@page contentType="text/html"%> <%-- Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. --%> <%@ page import="java.util.*" %> <%@ page import="org.ofbiz.base.util.*, org.ofbiz.base.config.*" %> <%@ page import="org.ofbiz.entity.*" %> <%@ page import="org.ofbiz.entity.model.*" %> <%@ page import="org.ofbiz.entity.util.*" %> <%@ taglib uri="ofbizTags" prefix="ofbiz" %> <% if (security.hasPermission("ENTITY_MAINT", session)) { String entityName = request.getParameter("entityName"); ModelReader reader = delegator.getModelReader(); String event = request.getParameter("event"); ModelEntity entity = null; if (UtilValidate.isNotEmpty(entityName) && !"addEntity".equals(event)) entity = reader.getModelEntity(entityName); ModelViewEntity modelViewEntity = null; if (entity instanceof ModelViewEntity) modelViewEntity = (ModelViewEntity)entity; TreeSet entSet = new TreeSet(reader.getEntityNames()); String errorMsg = ""; ResourceHandler entityResourceHandler = delegator.getModelReader().getEntityResourceHandler(entityName); if ("addEntity".equals(event)) { if (entity == null) { entity = new ModelEntity(); entity.setEntityName(request.getParameter("entityName")); entity.setTableName(ModelUtil.javaNameToDbName(entity.getEntityName())); reader.getEntityCache().put(entity.getEntityName(), entity); entityName = entity.getEntityName(); String entityGroup = request.getParameter("entityGroup"); delegator.getModelGroupReader().getGroupCache().put(entityName, entityGroup); } } else if ("updateEntity".equals(event)) { entity.setTableName(request.getParameter("tableName")); entity.setPackageName(request.getParameter("packageName")); entity.setDependentOn(request.getParameter("dependentOn")); entity.setTitle(request.getParameter("title")); entity.setDescription(request.getParameter("description")); entity.setCopyright(request.getParameter("copyright")); entity.setAuthor(request.getParameter("author")); entity.setVersion(request.getParameter("version")); String entityGroup = request.getParameter("entityGroup"); delegator.getModelGroupReader().getGroupCache().put(entityName, entityGroup); delegator.getModelReader().addEntityToResourceHandler(entityName, request.getParameter("loaderName"), request.getParameter("location")); delegator.getModelReader().rebuildResourceHandlerEntities(); } else if ("removeField".equals(event)) { String fieldName = request.getParameter("fieldName"); entity.removeField(fieldName); } else if ("updateField".equals(event)) { String fieldName = request.getParameter("fieldName"); String fieldType = request.getParameter("fieldType"); String primaryKey = request.getParameter("primaryKey"); ModelField field = entity.getField(fieldName); field.setType(fieldType); if (primaryKey != null) field.setIsPk(true); else field.setIsPk(false); entity.updatePkLists(); } else if ("addField".equals(event)) { ModelField field = new ModelField(); field.setName(request.getParameter("name")); field.setColName(ModelUtil.javaNameToDbName(field.getName())); field.setType(request.getParameter("fieldType")); entity.addField(field); } else if ("addRelation".equals(event)) { String relEntityName = request.getParameter("relEntityName"); String type = request.getParameter("type"); String title = request.getParameter("title"); String fkName = request.getParameter("fkName"); ModelRelation relation = new ModelRelation(); ModelEntity relEntity = reader.getModelEntity(relEntityName); if (relEntity == null) { errorMsg = errorMsg + "
  • Related Entity \"" + relEntityName + "\" not found, not adding."; } else { relation.setRelEntityName(relEntityName); relation.setType(type); relation.setTitle(title); relation.setFkName(fkName); relation.setMainEntity(entity); entity.addRelation(relation); if ("one".equals(type) || "one-nofk".equals(type)) { Iterator pkIterator = relEntity.getPksIterator(); while (pkIterator.hasNext()) { ModelField pkf = pkIterator.next(); ModelKeyMap keyMap = new ModelKeyMap(); keyMap.setFieldName(pkf.getName()); keyMap.setRelFieldName(pkf.getName()); relation.addKeyMap(keyMap); } } } } else if ("updateRelation".equals(event)) { int relNum = Integer.parseInt(request.getParameter("relNum")); String type = request.getParameter("type"); String title = request.getParameter("title"); String fkName = request.getParameter("fkName"); ModelRelation relation = entity.getRelation(relNum); relation.setType(type); relation.setTitle(title); relation.setFkName(fkName); } else if ("removeRelation".equals(event)) { int relNum = Integer.parseInt(request.getParameter("relNum")); if (relNum < entity.getRelationsSize() && relNum >= 0) entity.removeRelation(relNum); else errorMsg = errorMsg + "
  • Relation number " + relNum + " is out of bounds."; } else if ("updateKeyMap".equals(event)) { int relNum = Integer.parseInt(request.getParameter("relNum")); int kmNum = Integer.parseInt(request.getParameter("kmNum")); String fieldName = request.getParameter("fieldName"); String relFieldName = request.getParameter("relFieldName"); ModelRelation relation = entity.getRelation(relNum); ModelEntity relEntity = reader.getModelEntity(relation.getRelEntityName()); ModelKeyMap keyMap = relation.getKeyMap(kmNum); ModelField field = entity.getField(fieldName); ModelField relField = relEntity.getField(relFieldName); keyMap.setFieldName(field.getName()); keyMap.setRelFieldName(relField.getName()); } else if ("removeKeyMap".equals(event)) { int relNum = Integer.parseInt(request.getParameter("relNum")); int kmNum = Integer.parseInt(request.getParameter("kmNum")); ModelRelation relation = entity.getRelation(relNum); relation.removeKeyMap(kmNum); } else if ("addKeyMap".equals(event)) { int relNum = Integer.parseInt(request.getParameter("relNum")); ModelRelation relation = entity.getRelation(relNum); ModelKeyMap keyMap = new ModelKeyMap(); relation.addKeyMap(keyMap); } else if ("addReverse".equals(event)) { int relNum = Integer.parseInt(request.getParameter("relNum")); ModelRelation relation = entity.getRelation(relNum); ModelEntity relatedEnt = reader.getModelEntity(relation.getRelEntityName()); if (relatedEnt != null) { if (relatedEnt.getRelation(relation.getTitle() + entity.getEntityName()) == null) { ModelRelation newRel = new ModelRelation(); relatedEnt.addRelation(newRel); newRel.setRelEntityName(entity.getEntityName()); newRel.setTitle(relation.getTitle()); if ("one".equals(relation.getType()) || "one-nofk".equals(relation.getType())) newRel.setType("many"); else newRel.setType("one"); for (int kmn = 0; kmn < relation.getKeyMapsSize(); kmn++) { ModelKeyMap curkm = relation.getKeyMap(kmn); ModelKeyMap newkm = new ModelKeyMap(); newRel.addKeyMap(newkm); newkm.setFieldName(curkm.getRelFieldName()); newkm.setRelFieldName(curkm.getFieldName()); } newRel.setMainEntity(relatedEnt); } else { errorMsg = errorMsg + "
  • Related entity already has a relation with name " + relation.getTitle() + entity.getEntityName() + ", no reverse relation added."; } } else { errorMsg = errorMsg + "
  • Could not find related entity " + relation.getRelEntityName() + ", no reverse relation added."; } } else if ("addMemberEntity".equals(event)) { String alias = request.getParameter("alias"); String aliasedEntityName = request.getParameter("aliasedEntityName"); if (UtilValidate.isEmpty(alias) || UtilValidate.isEmpty(alias)) { errorMsg = errorMsg + "
  • You must specify an Entity Alias and an Entity Name for addMemberEntity."; } if (modelViewEntity != null) { ModelViewEntity.ModelMemberEntity modelMemberEntity = new ModelViewEntity.ModelMemberEntity(alias, aliasedEntityName); modelViewEntity.addMemberModelMemberEntity(modelMemberEntity); } else { errorMsg = errorMsg + "
  • Cannot run addMemberEntity on a non view-entity."; } } else if ("removeMemberEntity".equals(event)) { String alias = request.getParameter("alias"); if (modelViewEntity != null) { modelViewEntity.removeMemberModelMemberEntity(alias); } else { errorMsg = errorMsg + "
  • Cannot run removeMemberEntity on a non view-entity."; } } else if (event != null) { errorMsg = errorMsg + "
  • The operation specified is not valid: [" + event + "]"; } Collection typesCol = delegator.getEntityFieldTypeNames(entity); TreeSet types = null; if (typesCol != null) types = new TreeSet(typesCol); %>

    Entity Editor

    <%if (errorMsg.length() > 0) {%> The following errors occurred:
      <%=errorMsg%>

    <%}%>

    Entity Name (Java style):
    Entity Group:

    <%if (entity == null) {%>

    Entity not found with name "<%=UtilFormatOut.checkNull(entityName)%>"

    <%}else{%>
    Reload Current Entity: <%=entityName%>

    <%if (modelViewEntity == null) {%> <%}%> <%boolean isFile = entityResourceHandler == null ? true : entityResourceHandler.isFileResource();%>
    Entity Name <%=entityName%>
    Table Name <%=(modelViewEntity == null) ? entity.getPlainTableName() : "What table name? This is a VIEW Entity."%>
    Table Name
    Package Name
    Dependent On Entity
    Title
    Description
    Copyright
    Author
    Version
    Group
    (This group is for the "<%=delegator.getDelegatorName()%>" delegator)
    Resource Loader disabled<%}%>>
    Location disabled<%}%>>

    <%if (modelViewEntity == null) {%> FIELDS <%Iterator fieldIterator = entity.getFieldsIterator(); %> <%while (fieldIterator.hasNext()) {%> <%ModelField field = fieldIterator.next();%> <%}%>
    Field NameColumn Name (Length)Field Type  
    <%=field.getIsPk()?"":""%><%=field.getName()%><%=field.getIsPk()?"":""%> <%=field.getColName()%> (<%=field.getColName().length()%>) <%=field.getType()%>
    >
    Remove
    Add new field with Field Name (Java style) and field type.
    <%} else {%> VIEW MEMBER ENTITIES <%Iterator memberEntityNamesIter = UtilMisc.toIterator(modelViewEntity.getMemberModelMemberEntities().entrySet());%> <%while (memberEntityNamesIter != null && memberEntityNamesIter.hasNext()) {%> <%Map.Entry aliasEntry = (Map.Entry) memberEntityNamesIter.next();%> <%ModelViewEntity.ModelMemberEntity modelMemberEntity = (ModelViewEntity.ModelMemberEntity) aliasEntry.getValue();%> <%}%>
    Entity AliasEntity Name 
    <%=modelMemberEntity.getEntityAlias()%> <%=modelMemberEntity.getEntityName()%> Remove
    Add new member entity with Entity Alias* and Entity Name*.

    VIEW ALIASES
    VIEW LINKS
    NOTE: Editing not yet completed for view entities, try again later (or just edit the XML by hand, and not at the same time you are editing here...)
    <%-- --%> <%}%>
    RELATIONSHIPS <%for (int r = 0; r < entity.getRelationsSize(); r++) {%> <%ModelRelation relation = entity.getRelation(r);%> <%ModelEntity relEntity = reader.getModelEntity(relation.getRelEntityName());%> <%for (int km=0; km <%}%> <%}%>
    <%=relation.getTitle()%><%=relation.getRelEntityName()%> Remove Add KeyMap Add Reverse
    Main: Related: Remove
    Add new relation with Title, FK Name, Related Entity Name* and Relation Type*.
    <%-- --%>
    <%}%> <%} else {%>

    Entity Editor

    ERROR: You do not have permission to use this page (ENTITY_MAINT needed) <%}%>