%@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)) {
for (int pk = 0; pk < relEntity.getPksSize(); pk++) {
ModelField pkf = relEntity.getPk(pk);
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%>
<%}%>
<%if (entity == null) {%>
Entity not found with name "<%=UtilFormatOut.checkNull(entityName)%>"