roo00 6 лет назад
Родитель
Сommit
af5d74de87
34 измененных файлов с 338 добавлено и 486 удалено
  1. 56 56
      o2server/x_query_assemble_designer/src/main/java/com/x/query/assemble/designer/Business.java
  2. 14 8
      o2server/x_query_assemble_designer/src/main/java/com/x/query/assemble/designer/jaxrs/statement/ActionCreate.java
  3. 2 5
      o2server/x_query_assemble_designer/src/main/java/com/x/query/assemble/designer/jaxrs/statement/ActionDelete.java
  4. 13 7
      o2server/x_query_assemble_designer/src/main/java/com/x/query/assemble/designer/jaxrs/statement/ActionEdit.java
  5. 2 5
      o2server/x_query_assemble_designer/src/main/java/com/x/query/assemble/designer/jaxrs/statement/ActionExecute.java
  6. 2 5
      o2server/x_query_assemble_designer/src/main/java/com/x/query/assemble/designer/jaxrs/statement/ActionGet.java
  7. 0 56
      o2server/x_query_assemble_designer/src/main/java/com/x/query/assemble/designer/jaxrs/statement/ActionListNext.java
  8. 0 56
      o2server/x_query_assemble_designer/src/main/java/com/x/query/assemble/designer/jaxrs/statement/ActionListPrev.java
  9. 21 0
      o2server/x_query_assemble_designer/src/main/java/com/x/query/assemble/designer/jaxrs/statement/BaseAction.java
  10. 0 38
      o2server/x_query_assemble_designer/src/main/java/com/x/query/assemble/designer/jaxrs/statement/StatementAction.java
  11. 17 5
      o2server/x_query_assemble_designer/src/main/java/com/x/query/assemble/designer/jaxrs/table/ActionBuildAll.java
  12. 12 4
      o2server/x_query_assemble_designer/src/main/java/com/x/query/assemble/designer/jaxrs/table/ActionCreate.java
  13. 3 5
      o2server/x_query_assemble_designer/src/main/java/com/x/query/assemble/designer/jaxrs/table/ActionDelete.java
  14. 3 4
      o2server/x_query_assemble_designer/src/main/java/com/x/query/assemble/designer/jaxrs/table/ActionEdit.java
  15. 108 0
      o2server/x_query_assemble_designer/src/main/java/com/x/query/assemble/designer/jaxrs/table/ActionExecute.java
  16. 3 4
      o2server/x_query_assemble_designer/src/main/java/com/x/query/assemble/designer/jaxrs/table/ActionGet.java
  17. 0 56
      o2server/x_query_assemble_designer/src/main/java/com/x/query/assemble/designer/jaxrs/table/ActionListNext.java
  18. 0 56
      o2server/x_query_assemble_designer/src/main/java/com/x/query/assemble/designer/jaxrs/table/ActionListPrev.java
  19. 4 7
      o2server/x_query_assemble_designer/src/main/java/com/x/query/assemble/designer/jaxrs/table/ActionListRowNext.java
  20. 6 11
      o2server/x_query_assemble_designer/src/main/java/com/x/query/assemble/designer/jaxrs/table/ActionListRowPrev.java
  21. 1 4
      o2server/x_query_assemble_designer/src/main/java/com/x/query/assemble/designer/jaxrs/table/ActionListRowSelectWhere.java
  22. 2 3
      o2server/x_query_assemble_designer/src/main/java/com/x/query/assemble/designer/jaxrs/table/ActionRowCountWhere.java
  23. 2 3
      o2server/x_query_assemble_designer/src/main/java/com/x/query/assemble/designer/jaxrs/table/ActionRowDelete.java
  24. 4 7
      o2server/x_query_assemble_designer/src/main/java/com/x/query/assemble/designer/jaxrs/table/ActionRowDeleteAll.java
  25. 1 3
      o2server/x_query_assemble_designer/src/main/java/com/x/query/assemble/designer/jaxrs/table/ActionRowDeleteBatch.java
  26. 1 3
      o2server/x_query_assemble_designer/src/main/java/com/x/query/assemble/designer/jaxrs/table/ActionRowGet.java
  27. 1 3
      o2server/x_query_assemble_designer/src/main/java/com/x/query/assemble/designer/jaxrs/table/ActionRowInsert.java
  28. 1 3
      o2server/x_query_assemble_designer/src/main/java/com/x/query/assemble/designer/jaxrs/table/ActionRowUpdate.java
  29. 3 9
      o2server/x_query_assemble_designer/src/main/java/com/x/query/assemble/designer/jaxrs/table/ActionStatusBuild.java
  30. 1 3
      o2server/x_query_assemble_designer/src/main/java/com/x/query/assemble/designer/jaxrs/table/ActionStatusDraft.java
  31. 16 0
      o2server/x_query_assemble_designer/src/main/java/com/x/query/assemble/designer/jaxrs/table/BaseAction.java
  32. 0 12
      o2server/x_query_assemble_designer/src/main/java/com/x/query/assemble/designer/jaxrs/table/ExceptionEmptyDraftData.java
  33. 18 38
      o2server/x_query_assemble_designer/src/main/java/com/x/query/assemble/designer/jaxrs/table/TableAction.java
  34. 21 7
      o2server/x_query_core_entity/src/main/java/com/x/query/core/entity/schema/Table.java

+ 56 - 56
o2server/x_query_assemble_designer/src/main/java/com/x/query/assemble/designer/Business.java

@@ -125,62 +125,62 @@ public class Business {
 		return result;
 	}
 
-	public boolean readable(EffectivePerson effectivePerson, Table o) throws Exception {
-		boolean result = false;
-		if (null != o) {
-			if (ListTools.isEmpty(o.getReadPersonList()) && ListTools.isEmpty(o.getReadUnitList())) {
-				result = true;
-			}
-			if (!result) {
-				if (effectivePerson.isManager() || (this.organization().person().hasRole(effectivePerson,
-						OrganizationDefinition.Manager, OrganizationDefinition.QueryManager))) {
-					result = true;
-				}
-				if (!result) {
-					if (effectivePerson.isPerson(o.getEditPersonList())
-							|| effectivePerson.isPerson(o.getReadPersonList())) {
-						result = true;
-					}
-					if (!result && (ListTools.isNotEmpty(o.getEditUnitList())
-							|| ListTools.isNotEmpty(o.getReadUnitList()))) {
-						List<String> units = this.organization().unit()
-								.listWithPerson(effectivePerson.getDistinguishedName());
-						if (ListTools.containsAny(units, o.getEditUnitList())
-								|| ListTools.containsAny(units, o.getReadUnitList())) {
-							result = true;
-						}
-					}
-				}
-			}
-		}
-		return result;
-	}
-
-	public boolean editable(EffectivePerson effectivePerson, Table o) throws Exception {
-		boolean result = false;
-		if (effectivePerson.isManager() || (this.organization().person().hasRole(effectivePerson,
-				OrganizationDefinition.Manager, OrganizationDefinition.QueryManager))) {
-			result = true;
-		}
-		if (!result && (null != o)) {
-			if (ListTools.isEmpty(o.getEditPersonList()) && ListTools.isEmpty(o.getEditUnitList())) {
-				result = true;
-				if (!result) {
-					if (effectivePerson.isPerson(o.getEditPersonList())) {
-						result = true;
-					}
-					if (!result && ListTools.isNotEmpty(o.getEditUnitList())) {
-						List<String> units = this.organization().unit()
-								.listWithPerson(effectivePerson.getDistinguishedName());
-						if (ListTools.containsAny(units, o.getEditUnitList())) {
-							result = true;
-						}
-					}
-				}
-			}
-		}
-		return result;
-	}
+//	public boolean readable(EffectivePerson effectivePerson, Table o) throws Exception {
+//		boolean result = false;
+//		if (null != o) {
+//			if (ListTools.isEmpty(o.getReadPersonList()) && ListTools.isEmpty(o.getReadUnitList())) {
+//				result = true;
+//			}
+//			if (!result) {
+//				if (effectivePerson.isManager() || (this.organization().person().hasRole(effectivePerson,
+//						OrganizationDefinition.Manager, OrganizationDefinition.QueryManager))) {
+//					result = true;
+//				}
+//				if (!result) {
+//					if (effectivePerson.isPerson(o.getEditPersonList())
+//							|| effectivePerson.isPerson(o.getReadPersonList())) {
+//						result = true;
+//					}
+//					if (!result && (ListTools.isNotEmpty(o.getEditUnitList())
+//							|| ListTools.isNotEmpty(o.getReadUnitList()))) {
+//						List<String> units = this.organization().unit()
+//								.listWithPerson(effectivePerson.getDistinguishedName());
+//						if (ListTools.containsAny(units, o.getEditUnitList())
+//								|| ListTools.containsAny(units, o.getReadUnitList())) {
+//							result = true;
+//						}
+//					}
+//				}
+//			}
+//		}
+//		return result;
+//	}
+
+//	public boolean editable(EffectivePerson effectivePerson, Table o) throws Exception {
+//		boolean result = false;
+//		if (effectivePerson.isManager() || (this.organization().person().hasRole(effectivePerson,
+//				OrganizationDefinition.Manager, OrganizationDefinition.QueryManager))) {
+//			result = true;
+//		}
+//		if (!result && (null != o)) {
+//			if (ListTools.isEmpty(o.getEditPersonList()) && ListTools.isEmpty(o.getEditUnitList())) {
+//				result = true;
+//				if (!result) {
+//					if (effectivePerson.isPerson(o.getEditPersonList())) {
+//						result = true;
+//					}
+//					if (!result && ListTools.isNotEmpty(o.getEditUnitList())) {
+//						List<String> units = this.organization().unit()
+//								.listWithPerson(effectivePerson.getDistinguishedName());
+//						if (ListTools.containsAny(units, o.getEditUnitList())) {
+//							result = true;
+//						}
+//					}
+//				}
+//			}
+//		}
+//		return result;
+//	}
 
 	public boolean executable(EffectivePerson effectivePerson, Statement o) throws Exception {
 		boolean result = false;

+ 14 - 8
o2server/x_query_assemble_designer/src/main/java/com/x/query/assemble/designer/jaxrs/statement/ActionCreate.java

@@ -21,6 +21,7 @@ import com.x.base.core.project.http.EffectivePerson;
 import com.x.base.core.project.jaxrs.WoId;
 import com.x.base.core.project.tools.ListTools;
 import com.x.query.assemble.designer.Business;
+import com.x.query.core.entity.Query;
 import com.x.query.core.entity.schema.Statement;
 import com.x.query.core.entity.schema.Table;
 
@@ -28,24 +29,29 @@ class ActionCreate extends BaseAction {
 	ActionResult<Wo> execute(EffectivePerson effectivePerson, JsonElement jsonElement) throws Exception {
 		try (EntityManagerContainer emc = EntityManagerContainerFactory.instance().create()) {
 			ActionResult<Wo> result = new ActionResult<>();
-			Wi wi = this.convertToWrapIn(jsonElement, Wi.class);
 			Business business = new Business(emc);
-			if (!business.controllable(effectivePerson)) {
-				throw new ExceptionAccessDenied(effectivePerson);
-			}
+			Wi wi = this.convertToWrapIn(jsonElement, Wi.class);
 			Statement statement = Wi.copier.copy(wi);
+			Table table = emc.flag(wi.getTable(), Table.class);
+			if (null == table) {
+				throw new ExceptionEntityNotExist(wi.getTable(), Table.class);
+			}
+			Query query = emc.flag(wi.getQuery(), Query.class);
+			if (null == query) {
+				throw new ExceptionEntityNotExist(table.getQuery(), Query.class);
+			}
+			if (!business.editable(effectivePerson, query)) {
+				throw new ExceptionAccessDenied(effectivePerson, query);
+			}
 			if (StringUtils.isEmpty(statement.getName())) {
 				throw new ExceptionEntityFieldEmpty(Statement.class, Table.name_FIELDNAME);
 			}
 			if (StringUtils.isNotEmpty(emc.conflict(Statement.class, statement))) {
 				throw new ExceptionDuplicateFlag(Statement.class, emc.conflict(Statement.class, statement));
 			}
-			Table table = emc.flag(statement.getTable(), Table.class);
-			if (null == table) {
-				throw new ExceptionEntityNotExist(statement.getTable(), Table.class);
-			}
 			emc.beginTransaction(Statement.class);
 			statement.setTable(table.getId());
+			statement.setQuery(table.getQuery());
 			statement.setCreatorPerson(effectivePerson.getDistinguishedName());
 			statement.setLastUpdatePerson(effectivePerson.getDistinguishedName());
 			statement.setLastUpdateTime(new Date());

+ 2 - 5
o2server/x_query_assemble_designer/src/main/java/com/x/query/assemble/designer/jaxrs/statement/ActionDelete.java

@@ -3,7 +3,6 @@ package com.x.query.assemble.designer.jaxrs.statement;
 import com.x.base.core.container.EntityManagerContainer;
 import com.x.base.core.container.factory.EntityManagerContainerFactory;
 import com.x.base.core.project.cache.ApplicationCache;
-import com.x.base.core.project.exception.ExceptionAccessDenied;
 import com.x.base.core.project.exception.ExceptionEntityNotExist;
 import com.x.base.core.project.http.ActionResult;
 import com.x.base.core.project.http.EffectivePerson;
@@ -15,14 +14,12 @@ class ActionDelete extends BaseAction {
 	ActionResult<Wo> execute(EffectivePerson effectivePerson, String flag) throws Exception {
 		try (EntityManagerContainer emc = EntityManagerContainerFactory.instance().create()) {
 			ActionResult<Wo> result = new ActionResult<>();
+			Business business = new Business(emc);
 			Statement statement = emc.flag(flag, Statement.class);
 			if (null == statement) {
 				throw new ExceptionEntityNotExist(flag, Statement.class);
 			}
-			Business business = new Business(emc);
-			if (!business.controllable(effectivePerson)) {
-				throw new ExceptionAccessDenied(effectivePerson, statement);
-			}
+			this.check(effectivePerson, business, statement);
 			emc.beginTransaction(Statement.class);
 			emc.remove(statement);
 			emc.commit();

+ 13 - 7
o2server/x_query_assemble_designer/src/main/java/com/x/query/assemble/designer/jaxrs/statement/ActionEdit.java

@@ -21,6 +21,7 @@ import com.x.base.core.project.http.EffectivePerson;
 import com.x.base.core.project.jaxrs.WoId;
 import com.x.base.core.project.tools.ListTools;
 import com.x.query.assemble.designer.Business;
+import com.x.query.core.entity.Query;
 import com.x.query.core.entity.schema.Statement;
 import com.x.query.core.entity.schema.Table;
 
@@ -28,13 +29,21 @@ class ActionEdit extends BaseAction {
 	ActionResult<Wo> execute(EffectivePerson effectivePerson, String flag, JsonElement jsonElement) throws Exception {
 		try (EntityManagerContainer emc = EntityManagerContainerFactory.instance().create()) {
 			ActionResult<Wo> result = new ActionResult<>();
+			Business business = new Business(emc);
 			Statement statement = emc.flag(flag, Statement.class);
 			if (null == statement) {
 				throw new ExceptionEntityNotExist(flag, Statement.class);
 			}
-			Business business = new Business(emc);
-			if (!business.controllable(effectivePerson)) {
-				throw new ExceptionAccessDenied(effectivePerson, statement);
+			Table table = emc.flag(statement.getTable(), Table.class);
+			if (null == table) {
+				throw new ExceptionEntityNotExist(statement.getTable(), Table.class);
+			}
+			Query query = emc.flag(table.getQuery(), Query.class);
+			if (null == query) {
+				throw new ExceptionEntityNotExist(table.getQuery(), Query.class);
+			}
+			if (!business.editable(effectivePerson, query)) {
+				throw new ExceptionAccessDenied(effectivePerson, query);
 			}
 			Wi wi = this.convertToWrapIn(jsonElement, Wi.class);
 			Wi.copier.copy(wi, statement);
@@ -44,12 +53,9 @@ class ActionEdit extends BaseAction {
 			if (StringUtils.isNotEmpty(emc.conflict(Statement.class, statement))) {
 				throw new ExceptionDuplicateFlag(Statement.class, emc.conflict(Statement.class, statement));
 			}
-			Table table = emc.flag(statement.getTable(), Table.class);
-			if (null == table) {
-				throw new ExceptionEntityNotExist(statement.getTable(), Table.class);
-			}
 			emc.beginTransaction(Statement.class);
 			statement.setTable(table.getId());
+			statement.setQuery(query.getId());
 			statement.setLastUpdatePerson(effectivePerson.getDistinguishedName());
 			statement.setLastUpdateTime(new Date());
 			emc.check(statement, CheckPersistType.all);

+ 2 - 5
o2server/x_query_assemble_designer/src/main/java/com/x/query/assemble/designer/jaxrs/statement/ActionExecute.java

@@ -38,14 +38,11 @@ class ActionExecute extends BaseAction {
 			if (null == statement) {
 				throw new ExceptionEntityNotExist(flag, Statement.class);
 			}
-			if (!business.executable(effectivePerson, statement)) {
-				throw new ExceptionAccessDenied(effectivePerson, statement);
-			}
-			Table table = emc.find(statement.getTable(), Table.class);
+			this.check(effectivePerson, business, statement);
+			Table table = emc.flag(statement.getTable(), Table.class);
 			if (null == table) {
 				throw new ExceptionEntityNotExist(statement.getTable(), Table.class);
 			}
-
 			Map<String, Object> parameter = XGsonBuilder.instance().fromJson(jsonElement,
 					new TypeToken<Map<String, Object>>() {
 					}.getType());

+ 2 - 5
o2server/x_query_assemble_designer/src/main/java/com/x/query/assemble/designer/jaxrs/statement/ActionGet.java

@@ -5,7 +5,6 @@ import com.x.base.core.container.factory.EntityManagerContainerFactory;
 import com.x.base.core.entity.JpaObject;
 import com.x.base.core.project.bean.WrapCopier;
 import com.x.base.core.project.bean.WrapCopierFactory;
-import com.x.base.core.project.exception.ExceptionAccessDenied;
 import com.x.base.core.project.exception.ExceptionEntityNotExist;
 import com.x.base.core.project.http.ActionResult;
 import com.x.base.core.project.http.EffectivePerson;
@@ -16,14 +15,12 @@ class ActionGet extends BaseAction {
 	ActionResult<Wo> execute(EffectivePerson effectivePerson, String flag) throws Exception {
 		try (EntityManagerContainer emc = EntityManagerContainerFactory.instance().create()) {
 			ActionResult<Wo> result = new ActionResult<>();
+			Business business = new Business(emc);
 			Statement statement = emc.flag(flag, Statement.class);
 			if (null == statement) {
 				throw new ExceptionEntityNotExist(flag, Statement.class);
 			}
-			Business business = new Business(emc);
-			if (!business.controllable(effectivePerson)) {
-				throw new ExceptionAccessDenied(effectivePerson, statement);
-			}
+			this.check(effectivePerson, business, statement);
 			Wo wo = Wo.copier.copy(statement);
 			result.setData(wo);
 			return result;

+ 0 - 56
o2server/x_query_assemble_designer/src/main/java/com/x/query/assemble/designer/jaxrs/statement/ActionListNext.java

@@ -1,56 +0,0 @@
-package com.x.query.assemble.designer.jaxrs.statement;
-
-import java.util.List;
-
-import com.x.base.core.container.EntityManagerContainer;
-import com.x.base.core.container.factory.EntityManagerContainerFactory;
-import com.x.base.core.entity.JpaObject;
-import com.x.base.core.project.annotation.FieldDescribe;
-import com.x.base.core.project.bean.WrapCopier;
-import com.x.base.core.project.bean.WrapCopierFactory;
-import com.x.base.core.project.exception.ExceptionAccessDenied;
-import com.x.base.core.project.http.ActionResult;
-import com.x.base.core.project.http.EffectivePerson;
-import com.x.base.core.project.logger.Logger;
-import com.x.base.core.project.logger.LoggerFactory;
-import com.x.query.assemble.designer.Business;
-import com.x.query.core.entity.schema.Statement;
-
-class ActionListNext extends BaseAction {
-
-	private static Logger logger = LoggerFactory.getLogger(ActionListNext.class);
-
-	ActionResult<List<Wo>> execute(EffectivePerson effectivePerson, String id, Integer count) throws Exception {
-		try (EntityManagerContainer emc = EntityManagerContainerFactory.instance().create()) {
-			logger.debug(effectivePerson, "id:{}, count:{}.", id, count);
-			Business business = new Business(emc);
-			if (!business.controllable(effectivePerson)) {
-				throw new ExceptionAccessDenied(effectivePerson.getDistinguishedName());
-			}
-			ActionResult<List<Wo>> result = new ActionResult<>();
-			result = this.standardListNext(Wo.copier, id, count, JpaObject.sequence_FIELDNAME, null, null, null, null,
-					null, null, null, null, true, DESC);
-			return result;
-		}
-	}
-
-	public static class Wo extends Statement {
-
-		private static final long serialVersionUID = 2886873983211744188L;
-
-		static WrapCopier<Statement, Wo> copier = WrapCopierFactory.wo(Statement.class, Wo.class,
-				JpaObject.singularAttributeField(Statement.class, true, true), null);
-
-		@FieldDescribe("排序号")
-		private Long rank;
-
-		public Long getRank() {
-			return rank;
-		}
-
-		public void setRank(Long rank) {
-			this.rank = rank;
-		}
-
-	}
-}

+ 0 - 56
o2server/x_query_assemble_designer/src/main/java/com/x/query/assemble/designer/jaxrs/statement/ActionListPrev.java

@@ -1,56 +0,0 @@
-package com.x.query.assemble.designer.jaxrs.statement;
-
-import java.util.List;
-
-import com.x.base.core.container.EntityManagerContainer;
-import com.x.base.core.container.factory.EntityManagerContainerFactory;
-import com.x.base.core.entity.JpaObject;
-import com.x.base.core.project.annotation.FieldDescribe;
-import com.x.base.core.project.bean.WrapCopier;
-import com.x.base.core.project.bean.WrapCopierFactory;
-import com.x.base.core.project.exception.ExceptionAccessDenied;
-import com.x.base.core.project.http.ActionResult;
-import com.x.base.core.project.http.EffectivePerson;
-import com.x.base.core.project.logger.Logger;
-import com.x.base.core.project.logger.LoggerFactory;
-import com.x.query.assemble.designer.Business;
-import com.x.query.core.entity.schema.Statement;
-
-class ActionListPrev extends BaseAction {
-
-	private static Logger logger = LoggerFactory.getLogger(ActionListPrev.class);
-
-	ActionResult<List<Wo>> execute(EffectivePerson effectivePerson, String id, Integer count) throws Exception {
-		try (EntityManagerContainer emc = EntityManagerContainerFactory.instance().create()) {
-			logger.debug(effectivePerson, "id:{}, count:{}.", id, count);
-			Business business = new Business(emc);
-			if (!business.controllable(effectivePerson)) {
-				throw new ExceptionAccessDenied(effectivePerson.getDistinguishedName());
-			}
-			ActionResult<List<Wo>> result = new ActionResult<>();
-			result = this.standardFetchAttributeListPrev(emc, Wo.copier, id, count, JpaObject.sequence_FIELDNAME, null,
-					null, null, null, null, null, null, true, DESC);
-			return result;
-		}
-	}
-
-	public static class Wo extends Statement {
-
-		private static final long serialVersionUID = 2886873983211744188L;
-
-		static WrapCopier<Statement, Wo> copier = WrapCopierFactory.wo(Statement.class, Wo.class,
-				JpaObject.singularAttributeField(Statement.class, true, true), null);
-
-		@FieldDescribe("排序号")
-		private Long rank;
-
-		public Long getRank() {
-			return rank;
-		}
-
-		public void setRank(Long rank) {
-			this.rank = rank;
-		}
-
-	}
-}

+ 21 - 0
o2server/x_query_assemble_designer/src/main/java/com/x/query/assemble/designer/jaxrs/statement/BaseAction.java

@@ -1,7 +1,28 @@
 package com.x.query.assemble.designer.jaxrs.statement;
 
+import com.x.base.core.project.exception.ExceptionAccessDenied;
+import com.x.base.core.project.exception.ExceptionEntityNotExist;
+import com.x.base.core.project.http.EffectivePerson;
 import com.x.base.core.project.jaxrs.StandardJaxrsAction;
+import com.x.query.assemble.designer.Business;
+import com.x.query.core.entity.Query;
+import com.x.query.core.entity.schema.Statement;
+import com.x.query.core.entity.schema.Table;
 
 abstract class BaseAction extends StandardJaxrsAction {
 
+	protected void check(EffectivePerson effectivePerson, Business business, Statement statement) throws Exception {
+		Table table = business.entityManagerContainer().flag(statement.getTable(), Table.class);
+		if (null == table) {
+			throw new ExceptionEntityNotExist(statement.getTable(), Table.class);
+		}
+		Query query = business.entityManagerContainer().flag(table.getQuery(), Query.class);
+		if (null == query) {
+			throw new ExceptionEntityNotExist(table.getQuery(), Query.class);
+		}
+		if (!business.editable(effectivePerson, query)) {
+			throw new ExceptionAccessDenied(effectivePerson, query);
+		}
+	}
+
 }

+ 0 - 38
o2server/x_query_assemble_designer/src/main/java/com/x/query/assemble/designer/jaxrs/statement/StatementAction.java

@@ -70,44 +70,6 @@ public class StatementAction extends StandardJaxrsAction {
 		asyncResponse.resume(ResponseFactory.getDefaultActionResultResponse(result));
 	}
 
-	@JaxrsMethodDescribe(value = "列示语句对象,下一页.", action = ActionListNext.class)
-	@GET
-	@Path("list/{id}/next/{count}")
-	@Produces(HttpMediaType.APPLICATION_JSON_UTF_8)
-	@Consumes(MediaType.APPLICATION_JSON)
-	public void listNext(@Suspended final AsyncResponse asyncResponse, @Context HttpServletRequest request,
-			@JaxrsParameterDescribe("标识") @PathParam("id") String id,
-			@JaxrsParameterDescribe("数量") @PathParam("count") Integer count) {
-		ActionResult<List<ActionListNext.Wo>> result = new ActionResult<>();
-		EffectivePerson effectivePerson = this.effectivePerson(request);
-		try {
-			result = new ActionListNext().execute(effectivePerson, id, count);
-		} catch (Exception e) {
-			logger.error(e, effectivePerson, request, null);
-			result.error(e);
-		}
-		asyncResponse.resume(ResponseFactory.getDefaultActionResultResponse(result));
-	}
-
-	@JaxrsMethodDescribe(value = "列示语句对象,上一页.", action = ActionListPrev.class)
-	@GET
-	@Path("list/{id}/prev/{count}")
-	@Produces(HttpMediaType.APPLICATION_JSON_UTF_8)
-	@Consumes(MediaType.APPLICATION_JSON)
-	public void listPrev(@Suspended final AsyncResponse asyncResponse, @Context HttpServletRequest request,
-			@JaxrsParameterDescribe("标识") @PathParam("id") String id,
-			@JaxrsParameterDescribe("数量") @PathParam("count") Integer count) {
-		ActionResult<List<ActionListPrev.Wo>> result = new ActionResult<>();
-		EffectivePerson effectivePerson = this.effectivePerson(request);
-		try {
-			result = new ActionListPrev().execute(effectivePerson, id, count);
-		} catch (Exception e) {
-			logger.error(e, effectivePerson, request, null);
-			result.error(e);
-		}
-		asyncResponse.resume(ResponseFactory.getDefaultActionResultResponse(result));
-	}
-
 	@JaxrsMethodDescribe(value = "创建语句.", action = ActionCreate.class)
 	@POST
 	@Produces(HttpMediaType.APPLICATION_JSON_UTF_8)

+ 17 - 5
o2server/x_query_assemble_designer/src/main/java/com/x/query/assemble/designer/jaxrs/table/ActionBuildAll.java

@@ -53,12 +53,24 @@ class ActionBuildAll extends BaseAction {
 			File target = Config.dir_local_temp_dynamic_target(true);
 			FileUtils.cleanDirectory(src);
 			FileUtils.cleanDirectory(target);
-			List<Table> tables = emc.listEqual(Table.class, Table.status_FIELDNAME, Table.STATUS_build);
+			List<Table> tables = emc.listAll(Table.class);
 			for (Table table : tables) {
-				DynamicEntity dynamicEntity = XGsonBuilder.instance().fromJson(table.getData(), DynamicEntity.class);
-				dynamicEntity.setName(table.getName());
-				DynamicEntityBuilder builder = new DynamicEntityBuilder(dynamicEntity, src);
-				builder.build();
+				emc.beginTransaction(Table.class);
+				table.setBuildSuccess(false);
+				try {
+					if (StringUtils.equals(table.getStatus(), Table.STATUS_build)) {
+						DynamicEntity dynamicEntity = XGsonBuilder.instance().fromJson(table.getData(),
+								DynamicEntity.class);
+						dynamicEntity.setName(table.getName());
+						DynamicEntityBuilder builder = new DynamicEntityBuilder(dynamicEntity, src);
+						builder.build();
+						table.setBuildSuccess(true);
+					}
+				} catch (Exception e) {
+					throw e;
+				} finally {
+					emc.commit();
+				}
 			}
 
 			List<File> classPath = new ArrayList<>();

+ 12 - 4
o2server/x_query_assemble_designer/src/main/java/com/x/query/assemble/designer/jaxrs/table/ActionCreate.java

@@ -16,12 +16,14 @@ import com.x.base.core.project.cache.ApplicationCache;
 import com.x.base.core.project.exception.ExceptionAccessDenied;
 import com.x.base.core.project.exception.ExceptionDuplicateFlag;
 import com.x.base.core.project.exception.ExceptionEntityFieldEmpty;
+import com.x.base.core.project.exception.ExceptionEntityNotExist;
 import com.x.base.core.project.gson.XGsonBuilder;
 import com.x.base.core.project.http.ActionResult;
 import com.x.base.core.project.http.EffectivePerson;
 import com.x.base.core.project.jaxrs.WoId;
 import com.x.base.core.project.tools.ListTools;
 import com.x.query.assemble.designer.Business;
+import com.x.query.core.entity.Query;
 import com.x.query.core.entity.schema.Table;
 
 class ActionCreate extends BaseAction {
@@ -29,12 +31,17 @@ class ActionCreate extends BaseAction {
 	ActionResult<Wo> execute(EffectivePerson effectivePerson, JsonElement jsonElement) throws Exception {
 		try (EntityManagerContainer emc = EntityManagerContainerFactory.instance().create()) {
 			ActionResult<Wo> result = new ActionResult<>();
-			Wi wi = this.convertToWrapIn(jsonElement, Wi.class);
-			Table table = Wi.copier.copy(wi);
 			Business business = new Business(emc);
-			if (!business.editable(effectivePerson, table)) {
-				throw new ExceptionAccessDenied(effectivePerson, table);
+			Wi wi = this.convertToWrapIn(jsonElement, Wi.class);
+			Query query = emc.flag(wi.getQuery(), Query.class);
+			if (null == query) {
+				throw new ExceptionEntityNotExist(wi.getQuery());
 			}
+			if (!business.editable(effectivePerson, query)) {
+				throw new ExceptionAccessDenied(effectivePerson, query);
+			}
+			Table table = Wi.copier.copy(wi);
+			table.setQuery(query.getId());
 			if (StringUtils.isEmpty(table.getName())) {
 				throw new ExceptionEntityFieldEmpty(Table.class, Table.name_FIELDNAME);
 			}
@@ -44,6 +51,7 @@ class ActionCreate extends BaseAction {
 			emc.beginTransaction(Table.class);
 			XGsonBuilder.instance().fromJson(table.getData(), DynamicEntity.class);
 			table.setCreatorPerson(effectivePerson.getDistinguishedName());
+			table.setBuildSuccess(false);
 			table.setLastUpdatePerson(effectivePerson.getDistinguishedName());
 			table.setLastUpdateTime(new Date());
 			table.setStatus(Table.STATUS_draft);

+ 3 - 5
o2server/x_query_assemble_designer/src/main/java/com/x/query/assemble/designer/jaxrs/table/ActionDelete.java

@@ -12,6 +12,7 @@ import com.x.base.core.project.http.ActionResult;
 import com.x.base.core.project.http.EffectivePerson;
 import com.x.base.core.project.jaxrs.WoId;
 import com.x.query.assemble.designer.Business;
+import com.x.query.core.entity.Query;
 import com.x.query.core.entity.schema.Statement;
 import com.x.query.core.entity.schema.Table;
 
@@ -19,15 +20,12 @@ class ActionDelete extends BaseAction {
 	ActionResult<Wo> execute(EffectivePerson effectivePerson, String flag) throws Exception {
 		try (EntityManagerContainer emc = EntityManagerContainerFactory.instance().create()) {
 			ActionResult<Wo> result = new ActionResult<>();
+			Business business = new Business(emc);
 			Table table = emc.flag(flag, Table.class);
 			if (null == table) {
 				throw new ExceptionEntityNotExist(flag, Table.class);
 			}
-			Business business = new Business(emc);
-			if (!business.editable(effectivePerson, table)) {
-				throw new ExceptionAccessDenied(effectivePerson, table);
-			}
-			emc.beginTransaction(Statement.class);
+			this.check(effectivePerson, business, table);
 			List<Statement> statements = emc.listEqual(Statement.class, Statement.table_FIELDNAME, table.getId());
 			emc.beginTransaction(Statement.class);
 			emc.beginTransaction(Table.class);

+ 3 - 4
o2server/x_query_assemble_designer/src/main/java/com/x/query/assemble/designer/jaxrs/table/ActionEdit.java

@@ -23,6 +23,7 @@ import com.x.base.core.project.http.EffectivePerson;
 import com.x.base.core.project.jaxrs.WoId;
 import com.x.base.core.project.tools.ListTools;
 import com.x.query.assemble.designer.Business;
+import com.x.query.core.entity.Query;
 import com.x.query.core.entity.schema.Statement;
 import com.x.query.core.entity.schema.Table;
 
@@ -30,14 +31,12 @@ class ActionEdit extends BaseAction {
 	ActionResult<Wo> execute(EffectivePerson effectivePerson, String flag, JsonElement jsonElement) throws Exception {
 		try (EntityManagerContainer emc = EntityManagerContainerFactory.instance().create()) {
 			ActionResult<Wo> result = new ActionResult<>();
+			Business business = new Business(emc);
 			Table table = emc.flag(flag, Table.class);
 			if (null == table) {
 				throw new ExceptionEntityNotExist(flag, Table.class);
 			}
-			Business business = new Business(emc);
-			if (!business.editable(effectivePerson, table)) {
-				throw new ExceptionAccessDenied(effectivePerson, table);
-			}
+			this.check(effectivePerson, business, table);
 			Wi wi = this.convertToWrapIn(jsonElement, Wi.class);
 			Wi.copier.copy(wi, table);
 			if (StringUtils.isEmpty(table.getName())) {

+ 108 - 0
o2server/x_query_assemble_designer/src/main/java/com/x/query/assemble/designer/jaxrs/table/ActionExecute.java

@@ -0,0 +1,108 @@
+package com.x.query.assemble.designer.jaxrs.table;
+
+import javax.persistence.EntityManager;
+import javax.persistence.Query;
+
+import org.apache.commons.lang3.StringUtils;
+
+import com.google.gson.JsonElement;
+import com.x.base.core.container.EntityManagerContainer;
+import com.x.base.core.container.factory.EntityManagerContainerFactory;
+import com.x.base.core.entity.JpaObject;
+import com.x.base.core.entity.dynamic.DynamicEntity;
+import com.x.base.core.project.annotation.FieldDescribe;
+import com.x.base.core.project.exception.ExceptionEntityNotExist;
+import com.x.base.core.project.gson.GsonPropertyObject;
+import com.x.base.core.project.http.ActionResult;
+import com.x.base.core.project.http.EffectivePerson;
+import com.x.query.assemble.designer.Business;
+import com.x.query.core.entity.schema.Statement;
+import com.x.query.core.entity.schema.Table;
+
+class ActionExecute extends BaseAction {
+
+	ActionResult<Object> execute(EffectivePerson effectivePerson, String flag, JsonElement jsonElement)
+			throws Exception {
+
+		try (EntityManagerContainer emc = EntityManagerContainerFactory.instance().create()) {
+			ActionResult<Object> result = new ActionResult<>();
+			Business business = new Business(emc);
+			Wi wi = this.convertToWrapIn(jsonElement, Wi.class);
+			Table table = emc.flag(flag, Table.class);
+			if (null == table) {
+				throw new ExceptionEntityNotExist(flag, Table.class);
+			}
+			this.check(effectivePerson, business, table);
+			DynamicEntity dynamicEntity = new DynamicEntity(table.getName());
+			@SuppressWarnings("unchecked")
+			Class<? extends JpaObject> cls = (Class<JpaObject>) Class.forName(dynamicEntity.className());
+			EntityManager em = emc.get(cls);
+			Query query = em.createQuery(wi.getData());
+			Object data = null;
+			if (StringUtils.equalsIgnoreCase(wi.getType(), Statement.TYPE_SELECT)) {
+				if ((null != wi.getFirstResult()) && (wi.getFirstResult() > 0)) {
+					query.setFirstResult(wi.getFirstResult());
+				}
+				if ((null != wi.getMaxResults()) && (wi.getMaxResults() > 0)) {
+					query.setMaxResults(wi.getMaxResults());
+				}
+				data = query.getResultList();
+			} else {
+				emc.beginTransaction(cls);
+				data = query.executeUpdate();
+				emc.commit();
+			}
+			result.setData(data);
+			return result;
+		}
+	}
+
+	public static class Wi extends GsonPropertyObject {
+
+		@FieldDescribe("类型")
+		private String type;
+
+		@FieldDescribe("jpql语句.")
+		private String data;
+
+		@FieldDescribe("返回最大结果集.")
+		private Integer maxResults;
+
+		@FieldDescribe("返回结果开始于.")
+		private Integer firstResult;
+
+		public String getType() {
+			return type;
+		}
+
+		public void setType(String type) {
+			this.type = type;
+		}
+
+		public String getData() {
+			return data;
+		}
+
+		public void setData(String data) {
+			this.data = data;
+		}
+
+		public Integer getFirstResult() {
+			return firstResult;
+		}
+
+		public void setFirstResult(Integer firstResult) {
+			this.firstResult = firstResult;
+		}
+
+		public Integer getMaxResults() {
+			return maxResults;
+		}
+
+		public void setMaxResults(Integer maxResults) {
+			this.maxResults = maxResults;
+		}
+
+	}
+
+}

+ 3 - 4
o2server/x_query_assemble_designer/src/main/java/com/x/query/assemble/designer/jaxrs/table/ActionGet.java

@@ -10,20 +10,19 @@ import com.x.base.core.project.exception.ExceptionEntityNotExist;
 import com.x.base.core.project.http.ActionResult;
 import com.x.base.core.project.http.EffectivePerson;
 import com.x.query.assemble.designer.Business;
+import com.x.query.core.entity.Query;
 import com.x.query.core.entity.schema.Table;
 
 class ActionGet extends BaseAction {
 	ActionResult<Wo> execute(EffectivePerson effectivePerson, String flag) throws Exception {
 		try (EntityManagerContainer emc = EntityManagerContainerFactory.instance().create()) {
 			ActionResult<Wo> result = new ActionResult<>();
+			Business business = new Business(emc);
 			Table table = emc.flag(flag, Table.class);
 			if (null == table) {
 				throw new ExceptionEntityNotExist(flag, Table.class);
 			}
-			Business business = new Business(emc);
-			if (!business.editable(effectivePerson, table)) {
-				throw new ExceptionAccessDenied(effectivePerson, table);
-			}
+			this.check(effectivePerson, business, table);
 			Wo wo = Wo.copier.copy(table);
 			result.setData(wo);
 			return result;

+ 0 - 56
o2server/x_query_assemble_designer/src/main/java/com/x/query/assemble/designer/jaxrs/table/ActionListNext.java

@@ -1,56 +0,0 @@
-package com.x.query.assemble.designer.jaxrs.table;
-
-import java.util.List;
-
-import com.x.base.core.container.EntityManagerContainer;
-import com.x.base.core.container.factory.EntityManagerContainerFactory;
-import com.x.base.core.entity.JpaObject;
-import com.x.base.core.project.annotation.FieldDescribe;
-import com.x.base.core.project.bean.WrapCopier;
-import com.x.base.core.project.bean.WrapCopierFactory;
-import com.x.base.core.project.exception.ExceptionAccessDenied;
-import com.x.base.core.project.http.ActionResult;
-import com.x.base.core.project.http.EffectivePerson;
-import com.x.base.core.project.logger.Logger;
-import com.x.base.core.project.logger.LoggerFactory;
-import com.x.query.assemble.designer.Business;
-import com.x.query.core.entity.schema.Table;
-
-class ActionListNext extends BaseAction {
-
-	private static Logger logger = LoggerFactory.getLogger(ActionListNext.class);
-
-	ActionResult<List<Wo>> execute(EffectivePerson effectivePerson, String id, Integer count) throws Exception {
-		try (EntityManagerContainer emc = EntityManagerContainerFactory.instance().create()) {
-			logger.debug(effectivePerson, "id:{}, count:{}.", id, count);
-			Business business = new Business(emc);
-			if (!business.editable(effectivePerson, new Table())) {
-				throw new ExceptionAccessDenied(effectivePerson.getDistinguishedName());
-			}
-			ActionResult<List<Wo>> result = new ActionResult<>();
-			result = this.standardListNext(Wo.copier, id, count, JpaObject.sequence_FIELDNAME, null, null, null, null, null, null, null,
-					null, true, DESC);
-			return result;
-		}
-	}
-
-	public static class Wo extends Table {
-
-		private static final long serialVersionUID = 2886873983211744188L;
-
-		static WrapCopier<Table, Wo> copier = WrapCopierFactory.wo(Table.class, Wo.class,
-				JpaObject.singularAttributeField(Table.class, true, true), null);
-
-		@FieldDescribe("排序号")
-		private Long rank;
-
-		public Long getRank() {
-			return rank;
-		}
-
-		public void setRank(Long rank) {
-			this.rank = rank;
-		}
-
-	}
-}

+ 0 - 56
o2server/x_query_assemble_designer/src/main/java/com/x/query/assemble/designer/jaxrs/table/ActionListPrev.java

@@ -1,56 +0,0 @@
-package com.x.query.assemble.designer.jaxrs.table;
-
-import java.util.List;
-
-import com.x.base.core.container.EntityManagerContainer;
-import com.x.base.core.container.factory.EntityManagerContainerFactory;
-import com.x.base.core.entity.JpaObject;
-import com.x.base.core.project.annotation.FieldDescribe;
-import com.x.base.core.project.bean.WrapCopier;
-import com.x.base.core.project.bean.WrapCopierFactory;
-import com.x.base.core.project.exception.ExceptionAccessDenied;
-import com.x.base.core.project.http.ActionResult;
-import com.x.base.core.project.http.EffectivePerson;
-import com.x.base.core.project.logger.Logger;
-import com.x.base.core.project.logger.LoggerFactory;
-import com.x.query.assemble.designer.Business;
-import com.x.query.core.entity.schema.Table;
-
-class ActionListPrev extends BaseAction {
-
-	private static Logger logger = LoggerFactory.getLogger(ActionListPrev.class);
-
-	ActionResult<List<Wo>> execute(EffectivePerson effectivePerson, String id, Integer count) throws Exception {
-		try (EntityManagerContainer emc = EntityManagerContainerFactory.instance().create()) {
-			logger.debug(effectivePerson, "id:{}, count:{}.", id, count);
-			Business business = new Business(emc);
-			if (!business.editable(effectivePerson, new Table())) {
-				throw new ExceptionAccessDenied(effectivePerson.getDistinguishedName());
-			}
-			ActionResult<List<Wo>> result = new ActionResult<>();
-			result = this.standardFetchAttributeListPrev(emc, Wo.copier, id, count, JpaObject.sequence_FIELDNAME, null,
-					null, null, null, null, null, null, true, DESC);
-			return result;
-		}
-	}
-
-	public static class Wo extends Table {
-
-		private static final long serialVersionUID = 2886873983211744188L;
-
-		static WrapCopier<Table, Wo> copier = WrapCopierFactory.wo(Table.class, Wo.class,
-				JpaObject.singularAttributeField(Table.class, true, true), null);
-
-		@FieldDescribe("排序号")
-		private Long rank;
-
-		public Long getRank() {
-			return rank;
-		}
-
-		public void setRank(Long rank) {
-			this.rank = rank;
-		}
-
-	}
-}

+ 4 - 7
o2server/x_query_assemble_designer/src/main/java/com/x/query/assemble/designer/jaxrs/table/ActionListRowNext.java

@@ -13,7 +13,6 @@ import com.x.base.core.container.EntityManagerContainer;
 import com.x.base.core.container.factory.EntityManagerContainerFactory;
 import com.x.base.core.entity.JpaObject;
 import com.x.base.core.entity.dynamic.DynamicEntity;
-import com.x.base.core.project.exception.ExceptionAccessDenied;
 import com.x.base.core.project.exception.ExceptionEntityNotExist;
 import com.x.base.core.project.gson.XGsonBuilder;
 import com.x.base.core.project.http.ActionResult;
@@ -39,9 +38,7 @@ class ActionListRowNext extends BaseAction {
 			if (null == table) {
 				throw new ExceptionEntityNotExist(tableFlag, Table.class);
 			}
-			if (!business.readable(effectivePerson, table)) {
-				throw new ExceptionAccessDenied(effectivePerson.getDistinguishedName());
-			}
+			this.check(effectivePerson, business, table);
 			DynamicEntity dynamicEntity = new DynamicEntity(table.getName());
 			Class<? extends JpaObject> cls = dynamicEntity.getObjectClass();
 			EntityManager em = emc.get(cls);
@@ -65,11 +62,11 @@ class ActionListRowNext extends BaseAction {
 				rank = emc.countGreaterThanOrEqualTo(cls, JpaObject.sequence_FIELDNAME, sequence);
 			}
 			sql += " order by o." + JpaObject.sequence_FIELDNAME + " DESC";
-			Query query = em.createQuery(sql, Object[].class);
+			Query q = em.createQuery(sql, Object[].class);
 			if (null != sequence) {
-				query.setParameter(1, sequence);
+				q.setParameter(1, sequence);
 			}
-			List<Object[]> list = query.setMaxResults(Math.max(Math.min(count, list_max), list_min)).getResultList();
+			List<Object[]> list = q.setMaxResults(Math.max(Math.min(count, list_max), list_min)).getResultList();
 			List<JsonObject> wos = new ArrayList<>();
 			result.setCount(emc.count(cls));
 			for (Object[] os : list) {

+ 6 - 11
o2server/x_query_assemble_designer/src/main/java/com/x/query/assemble/designer/jaxrs/table/ActionListRowPrev.java

@@ -14,7 +14,6 @@ import com.x.base.core.container.EntityManagerContainer;
 import com.x.base.core.container.factory.EntityManagerContainerFactory;
 import com.x.base.core.entity.JpaObject;
 import com.x.base.core.entity.dynamic.DynamicEntity;
-import com.x.base.core.project.exception.ExceptionAccessDenied;
 import com.x.base.core.project.exception.ExceptionEntityNotExist;
 import com.x.base.core.project.gson.XGsonBuilder;
 import com.x.base.core.project.http.ActionResult;
@@ -40,9 +39,7 @@ class ActionListRowPrev extends BaseAction {
 			if (null == table) {
 				throw new ExceptionEntityNotExist(tableFlag, Table.class);
 			}
-			if (!business.readable(effectivePerson, table)) {
-				throw new ExceptionAccessDenied(effectivePerson.getDistinguishedName());
-			}
+			this.check(effectivePerson, business, table);
 			DynamicEntity dynamicEntity = new DynamicEntity(table.getName());
 			Class<? extends JpaObject> cls = dynamicEntity.getObjectClass();
 			EntityManager em = emc.get(cls);
@@ -67,10 +64,9 @@ class ActionListRowPrev extends BaseAction {
 				sql += " where o." + JpaObject.sequence_FIELDNAME + " > ?1 order by o." + JpaObject.sequence_FIELDNAME
 						+ " ASC";
 				rank = emc.countGreaterThan(cls, JpaObject.sequence_FIELDNAME, sequence);
-				Query query = em.createQuery(sql, Object[].class);
-				query.setParameter(1, sequence);
-				List<Object[]> list = query.setMaxResults(Math.max(Math.min(count, list_max), list_min))
-						.getResultList();
+				Query q = em.createQuery(sql, Object[].class);
+				q.setParameter(1, sequence);
+				List<Object[]> list = q.setMaxResults(Math.max(Math.min(count, list_max), list_min)).getResultList();
 				for (Object[] os : list) {
 					JsonObject jsonObject = XGsonBuilder.instance().toJsonTree(JpaObject.cast(cls, fields, os))
 							.getAsJsonObject();
@@ -80,9 +76,8 @@ class ActionListRowPrev extends BaseAction {
 			} else {
 				sql += " order by o." + JpaObject.sequence_FIELDNAME + " ASC";
 				rank = result.getCount();
-				Query query = em.createQuery(sql, Object[].class);
-				List<Object[]> list = query.setMaxResults(Math.max(Math.min(count, list_max), list_min))
-						.getResultList();
+				Query q = em.createQuery(sql, Object[].class);
+				List<Object[]> list = q.setMaxResults(Math.max(Math.min(count, list_max), list_min)).getResultList();
 				for (Object[] os : list) {
 					JsonObject jsonObject = XGsonBuilder.instance().toJsonTree(JpaObject.cast(cls, fields, os))
 							.getAsJsonObject();

+ 1 - 4
o2server/x_query_assemble_designer/src/main/java/com/x/query/assemble/designer/jaxrs/table/ActionListRowSelectWhere.java

@@ -10,7 +10,6 @@ import com.x.base.core.container.EntityManagerContainer;
 import com.x.base.core.container.factory.EntityManagerContainerFactory;
 import com.x.base.core.entity.JpaObject;
 import com.x.base.core.entity.dynamic.DynamicEntity;
-import com.x.base.core.project.exception.ExceptionAccessDenied;
 import com.x.base.core.project.exception.ExceptionEntityNotExist;
 import com.x.base.core.project.http.ActionResult;
 import com.x.base.core.project.http.EffectivePerson;
@@ -27,9 +26,7 @@ class ActionListRowSelectWhere extends BaseAction {
 			if (null == table) {
 				throw new ExceptionEntityNotExist(tableFlag, Table.class);
 			}
-			if (!business.editable(effectivePerson, table)) {
-				throw new ExceptionAccessDenied(effectivePerson, table);
-			}
+			this.check(effectivePerson, business, table);
 			DynamicEntity dynamicEntity = new DynamicEntity(table.getName());
 			@SuppressWarnings("unchecked")
 			Class<? extends JpaObject> clz = (Class<JpaObject>) Class.forName(dynamicEntity.className());

+ 2 - 3
o2server/x_query_assemble_designer/src/main/java/com/x/query/assemble/designer/jaxrs/table/ActionRowCountWhere.java

@@ -14,6 +14,7 @@ import com.x.base.core.project.http.ActionResult;
 import com.x.base.core.project.http.EffectivePerson;
 import com.x.base.core.project.jaxrs.WrapLong;
 import com.x.query.assemble.designer.Business;
+import com.x.query.core.entity.Query;
 import com.x.query.core.entity.schema.Table;
 
 class ActionRowCountWhere extends BaseAction {
@@ -27,9 +28,7 @@ class ActionRowCountWhere extends BaseAction {
 			if (null == table) {
 				throw new ExceptionEntityNotExist(tableFlag, Table.class);
 			}
-			if (!business.editable(effectivePerson, table)) {
-				throw new ExceptionAccessDenied(effectivePerson, table);
-			}
+			this.check(effectivePerson, business, table);
 			DynamicEntity dynamicEntity = new DynamicEntity(table.getName());
 			@SuppressWarnings("unchecked")
 			Class<? extends JpaObject> cls = (Class<JpaObject>) Class.forName(dynamicEntity.className());

+ 2 - 3
o2server/x_query_assemble_designer/src/main/java/com/x/query/assemble/designer/jaxrs/table/ActionRowDelete.java

@@ -10,6 +10,7 @@ import com.x.base.core.project.http.ActionResult;
 import com.x.base.core.project.http.EffectivePerson;
 import com.x.base.core.project.jaxrs.WrapBoolean;
 import com.x.query.assemble.designer.Business;
+import com.x.query.core.entity.Query;
 import com.x.query.core.entity.schema.Table;
 
 class ActionRowDelete extends BaseAction {
@@ -21,9 +22,7 @@ class ActionRowDelete extends BaseAction {
 			if (null == table) {
 				throw new ExceptionEntityNotExist(tableFlag, Table.class);
 			}
-			if (!business.editable(effectivePerson, table)) {
-				throw new ExceptionAccessDenied(effectivePerson, table);
-			}
+			this.check(effectivePerson, business, table);
 			DynamicEntity dynamicEntity = new DynamicEntity(table.getName());
 			@SuppressWarnings("unchecked")
 			Class<? extends JpaObject> cls = (Class<JpaObject>) Class.forName(dynamicEntity.className());

+ 4 - 7
o2server/x_query_assemble_designer/src/main/java/com/x/query/assemble/designer/jaxrs/table/ActionRowDeleteAll.java

@@ -12,7 +12,6 @@ import com.x.base.core.container.EntityManagerContainer;
 import com.x.base.core.container.factory.EntityManagerContainerFactory;
 import com.x.base.core.entity.JpaObject;
 import com.x.base.core.entity.dynamic.DynamicEntity;
-import com.x.base.core.project.exception.ExceptionAccessDenied;
 import com.x.base.core.project.exception.ExceptionEntityNotExist;
 import com.x.base.core.project.http.ActionResult;
 import com.x.base.core.project.http.EffectivePerson;
@@ -29,9 +28,7 @@ class ActionRowDeleteAll extends BaseAction {
 			if (null == table) {
 				throw new ExceptionEntityNotExist(tableFlag, Table.class);
 			}
-			if (!business.editable(effectivePerson, table)) {
-				throw new ExceptionAccessDenied(effectivePerson, table);
-			}
+			this.check(effectivePerson, business, table);
 			DynamicEntity dynamicEntity = new DynamicEntity(table.getName());
 			@SuppressWarnings("unchecked")
 			Class<? extends JpaObject> cls = (Class<JpaObject>) Class.forName(dynamicEntity.className());
@@ -65,9 +62,9 @@ class ActionRowDeleteAll extends BaseAction {
 
 	private <T extends JpaObject> Integer delete(Business business, Class<T> cls, List<String> ids) throws Exception {
 		EntityManager em = business.entityManagerContainer().get(cls);
-		Query query = em.createQuery("delete from " + cls.getName() + " o where o.id in :ids");
-		query.setParameter("ids", ids);
-		return query.executeUpdate();
+		Query q = em.createQuery("delete from " + cls.getName() + " o where o.id in :ids");
+		q.setParameter("ids", ids);
+		return q.executeUpdate();
 	}
 
 	public static class Wo extends WrapLong {

+ 1 - 3
o2server/x_query_assemble_designer/src/main/java/com/x/query/assemble/designer/jaxrs/table/ActionRowDeleteBatch.java

@@ -33,9 +33,7 @@ class ActionRowDeleteBatch extends BaseAction {
 			if (null == table) {
 				throw new ExceptionEntityNotExist(tableFlag, Table.class);
 			}
-			if (!business.editable(effectivePerson, table)) {
-				throw new ExceptionAccessDenied(effectivePerson, table);
-			}
+			this.check(effectivePerson, business, table);
 			DynamicEntity dynamicEntity = new DynamicEntity(table.getName());
 			@SuppressWarnings("unchecked")
 			Class<? extends JpaObject> cls = (Class<JpaObject>) Class.forName(dynamicEntity.className());

+ 1 - 3
o2server/x_query_assemble_designer/src/main/java/com/x/query/assemble/designer/jaxrs/table/ActionRowGet.java

@@ -20,9 +20,7 @@ class ActionRowGet extends BaseAction {
 			if (null == table) {
 				throw new ExceptionEntityNotExist(tableFlag, Table.class);
 			}
-			if (!business.editable(effectivePerson, table)) {
-				throw new ExceptionAccessDenied(effectivePerson, table);
-			}
+			this.check(effectivePerson, business, table);
 			DynamicEntity dynamicEntity = new DynamicEntity(table.getName());
 			@SuppressWarnings("unchecked")
 			Class<? extends JpaObject> cls = (Class<JpaObject>) Class.forName(dynamicEntity.className());

+ 1 - 3
o2server/x_query_assemble_designer/src/main/java/com/x/query/assemble/designer/jaxrs/table/ActionRowInsert.java

@@ -27,9 +27,7 @@ class ActionRowInsert extends BaseAction {
 			if (null == table) {
 				throw new ExceptionEntityNotExist(tableFlag, Table.class);
 			}
-			if (!business.editable(effectivePerson, table)) {
-				throw new ExceptionAccessDenied(effectivePerson, table);
-			}
+			this.check(effectivePerson, business, table);
 			DynamicEntity dynamicEntity = new DynamicEntity(table.getName());
 			@SuppressWarnings("unchecked")
 			Class<? extends JpaObject> cls = (Class<JpaObject>) Class.forName(dynamicEntity.className());

+ 1 - 3
o2server/x_query_assemble_designer/src/main/java/com/x/query/assemble/designer/jaxrs/table/ActionRowUpdate.java

@@ -25,9 +25,7 @@ class ActionRowUpdate extends BaseAction {
 			if (null == table) {
 				throw new ExceptionEntityNotExist(tableFlag, Table.class);
 			}
-			if (!business.editable(effectivePerson, table)) {
-				throw new ExceptionAccessDenied(effectivePerson, table);
-			}
+			this.check(effectivePerson, business, table);
 			DynamicEntity dynamicEntity = new DynamicEntity(table.getName());
 			@SuppressWarnings("unchecked")
 			Class<? extends JpaObject> cls = (Class<JpaObject>) Class.forName(dynamicEntity.className());

+ 3 - 9
o2server/x_query_assemble_designer/src/main/java/com/x/query/assemble/designer/jaxrs/table/ActionStatusBuild.java

@@ -4,7 +4,7 @@ import com.alibaba.druid.util.StringUtils;
 import com.x.base.core.container.EntityManagerContainer;
 import com.x.base.core.container.factory.EntityManagerContainerFactory;
 import com.x.base.core.project.cache.ApplicationCache;
-import com.x.base.core.project.exception.ExceptionAccessDenied;
+import com.x.base.core.project.exception.ExceptionEntityFieldEmpty;
 import com.x.base.core.project.exception.ExceptionEntityNotExist;
 import com.x.base.core.project.http.ActionResult;
 import com.x.base.core.project.http.EffectivePerson;
@@ -22,20 +22,14 @@ class ActionStatusBuild extends BaseAction {
 				throw new ExceptionEntityNotExist(flag, Table.class);
 			}
 			Business business = new Business(emc);
-			if (!business.editable(effectivePerson, table)) {
-				throw new ExceptionAccessDenied(effectivePerson, table);
-			}
+			this.check(effectivePerson, business, table);
 			if (StringUtils.isEmpty(table.getDraftData())) {
-				throw new ExceptionEmptyDraftData(flag);
+				throw new ExceptionEntityFieldEmpty(Table.class, Table.draftData_FIELDNAME);
 			}
 			emc.beginTransaction(Table.class);
-
 			table.setData(table.getDraftData());
-
 			table.setStatus(Table.STATUS_build);
-
 			emc.commit();
-
 			ApplicationCache.notify(Table.class);
 			ApplicationCache.notify(Statement.class);
 			Wo wo = new Wo();

+ 1 - 3
o2server/x_query_assemble_designer/src/main/java/com/x/query/assemble/designer/jaxrs/table/ActionStatusDraft.java

@@ -21,9 +21,7 @@ class ActionStatusDraft extends BaseAction {
 				throw new ExceptionEntityNotExist(flag, Table.class);
 			}
 			Business business = new Business(emc);
-			if (!business.editable(effectivePerson, table)) {
-				throw new ExceptionAccessDenied(effectivePerson, table);
-			}
+			this.check(effectivePerson, business, table);
 			emc.beginTransaction(Table.class);
 			table.setStatus(Table.STATUS_draft);
 			emc.commit();

+ 16 - 0
o2server/x_query_assemble_designer/src/main/java/com/x/query/assemble/designer/jaxrs/table/BaseAction.java

@@ -1,7 +1,23 @@
 package com.x.query.assemble.designer.jaxrs.table;
 
+import com.x.base.core.project.exception.ExceptionAccessDenied;
+import com.x.base.core.project.exception.ExceptionEntityNotExist;
+import com.x.base.core.project.http.EffectivePerson;
 import com.x.base.core.project.jaxrs.StandardJaxrsAction;
+import com.x.query.assemble.designer.Business;
+import com.x.query.core.entity.Query;
+import com.x.query.core.entity.schema.Table;
 
 abstract class BaseAction extends StandardJaxrsAction {
 
+	protected void check(EffectivePerson effectivePerson, Business business, Table table) throws Exception {
+		Query query = business.entityManagerContainer().flag(table.getQuery(), Query.class);
+		if (null == query) {
+			throw new ExceptionEntityNotExist(table.getQuery(), Query.class);
+		}
+		if (!business.editable(effectivePerson, query)) {
+			throw new ExceptionAccessDenied(effectivePerson, query);
+		}
+	}
+
 }

+ 0 - 12
o2server/x_query_assemble_designer/src/main/java/com/x/query/assemble/designer/jaxrs/table/ExceptionEmptyDraftData.java

@@ -1,12 +0,0 @@
-package com.x.query.assemble.designer.jaxrs.table;
-
-import com.x.base.core.project.exception.PromptException;
-
-class ExceptionEmptyDraftData extends PromptException {
-
-	private static final long serialVersionUID = -9089355008820123519L;
-
-	ExceptionEmptyDraftData(String flag) {
-		super("表: {}, 的设计结构为空.", flag);
-	}
-}

+ 18 - 38
o2server/x_query_assemble_designer/src/main/java/com/x/query/assemble/designer/jaxrs/table/TableAction.java

@@ -124,44 +124,6 @@ public class TableAction extends StandardJaxrsAction {
 		asyncResponse.resume(ResponseFactory.getDefaultActionResultResponse(result));
 	}
 
-	@JaxrsMethodDescribe(value = "列示表对象,下一页.", action = ActionListNext.class)
-	@GET
-	@Path("list/{id}/next/{count}")
-	@Produces(HttpMediaType.APPLICATION_JSON_UTF_8)
-	@Consumes(MediaType.APPLICATION_JSON)
-	public void listNext(@Suspended final AsyncResponse asyncResponse, @Context HttpServletRequest request,
-			@JaxrsParameterDescribe("标识") @PathParam("id") String id,
-			@JaxrsParameterDescribe("数量") @PathParam("count") Integer count) {
-		ActionResult<List<ActionListNext.Wo>> result = new ActionResult<>();
-		EffectivePerson effectivePerson = this.effectivePerson(request);
-		try {
-			result = new ActionListNext().execute(effectivePerson, id, count);
-		} catch (Exception e) {
-			logger.error(e, effectivePerson, request, null);
-			result.error(e);
-		}
-		asyncResponse.resume(ResponseFactory.getDefaultActionResultResponse(result));
-	}
-
-	@JaxrsMethodDescribe(value = "列示Stat对象,上一页.", action = ActionListPrev.class)
-	@GET
-	@Path("list/{id}/prev/{count}")
-	@Produces(HttpMediaType.APPLICATION_JSON_UTF_8)
-	@Consumes(MediaType.APPLICATION_JSON)
-	public void listPrev(@Suspended final AsyncResponse asyncResponse, @Context HttpServletRequest request,
-			@JaxrsParameterDescribe("标识") @PathParam("id") String id,
-			@JaxrsParameterDescribe("数量") @PathParam("count") Integer count) {
-		ActionResult<List<ActionListPrev.Wo>> result = new ActionResult<>();
-		EffectivePerson effectivePerson = this.effectivePerson(request);
-		try {
-			result = new ActionListPrev().execute(effectivePerson, id, count);
-		} catch (Exception e) {
-			logger.error(e, effectivePerson, request, null);
-			result.error(e);
-		}
-		asyncResponse.resume(ResponseFactory.getDefaultActionResultResponse(result));
-	}
-
 	@JaxrsMethodDescribe(value = "创建表.", action = ActionCreate.class)
 	@POST
 	@Produces(HttpMediaType.APPLICATION_JSON_UTF_8)
@@ -386,4 +348,22 @@ public class TableAction extends StandardJaxrsAction {
 		asyncResponse.resume(ResponseFactory.getDefaultActionResultResponse(result));
 	}
 
+	@JaxrsMethodDescribe(value = "执行语句.", action = ActionExecute.class)
+	@POST
+	@Path("{flag}/execute")
+	@Produces(HttpMediaType.APPLICATION_JSON_UTF_8)
+	@Consumes(MediaType.APPLICATION_JSON)
+	public void execute(@Suspended final AsyncResponse asyncResponse, @Context HttpServletRequest request,
+			@JaxrsParameterDescribe("标识") @PathParam("flag") String flag, JsonElement jsonElement) {
+		ActionResult<Object> result = new ActionResult<>();
+		EffectivePerson effectivePerson = this.effectivePerson(request);
+		try {
+			result = new ActionExecute().execute(effectivePerson, flag, jsonElement);
+		} catch (Exception e) {
+			logger.error(e, effectivePerson, request, jsonElement);
+			result.error(e);
+		}
+		asyncResponse.resume(ResponseFactory.getDefaultActionResultResponse(result));
+	}
+
 }

+ 21 - 7
o2server/x_query_core_entity/src/main/java/com/x/query/core/entity/schema/Table.java

@@ -77,6 +77,13 @@ public class Table extends SliceJpaObject {
 
 	/* 更新运行方法 */
 
+	public static final String query_FIELDNAME = "query";
+	@FieldDescribe("所属查询.")
+	@Column(length = JpaObject.length_id, name = ColumnNamePrefix + query_FIELDNAME)
+	@Index(name = TABLE + ColumnNamePrefix + query_FIELDNAME)
+	@CheckPersist(allowEmpty = false, citationExists = { @CitationExist(type = Query.class) })
+	private String query;
+
 	public static final String name_FIELDNAME = "name";
 	@Flag
 	@FieldDescribe("表名,最大32个字符.")
@@ -99,13 +106,6 @@ public class Table extends SliceJpaObject {
 	@CheckPersist(allowEmpty = true)
 	private String description;
 
-	public static final String query_FIELDNAME = "query";
-	@FieldDescribe("所属查询.")
-	@Column(length = JpaObject.length_id, name = ColumnNamePrefix + query_FIELDNAME)
-	@Index(name = TABLE + ColumnNamePrefix + query_FIELDNAME)
-	@CheckPersist(allowEmpty = false, citationExists = { @CitationExist(type = Query.class) })
-	private String query;
-
 	public static final String readPersonList_FIELDNAME = "readPersonList";
 	@FieldDescribe("可以访问数据的用户.")
 	@PersistentCollection(fetch = FetchType.EAGER)
@@ -190,6 +190,12 @@ public class Table extends SliceJpaObject {
 	@Column(length = length_32B, name = ColumnNamePrefix + status_FIELDNAME)
 	private String status;
 
+	public static final String buildSuccess_FIELDNAME = "buildSuccess";
+	@FieldDescribe("是否编译成功.")
+	@CheckPersist(allowEmpty = false)
+	@Column(name = ColumnNamePrefix + buildSuccess_FIELDNAME)
+	private Boolean buildSuccess;
+
 	public String getName() {
 		return name;
 	}
@@ -302,4 +308,12 @@ public class Table extends SliceJpaObject {
 		this.status = status;
 	}
 
+	public Boolean getBuildSuccess() {
+		return buildSuccess;
+	}
+
+	public void setBuildSuccess(Boolean buildSuccess) {
+		this.buildSuccess = buildSuccess;
+	}
+
 }