diff --git a/o2server/x_query_assemble_designer/src/main/java/com/x/query/assemble/designer/jaxrs/input/ActionCover.java b/o2server/x_query_assemble_designer/src/main/java/com/x/query/assemble/designer/jaxrs/input/ActionCover.java index f5417f0fd2257475f1297c947e6252b57f71b94e..7cec6cdbefe536dd6d9ea7c426e0010edb0bec5b 100644 --- a/o2server/x_query_assemble_designer/src/main/java/com/x/query/assemble/designer/jaxrs/input/ActionCover.java +++ b/o2server/x_query_assemble_designer/src/main/java/com/x/query/assemble/designer/jaxrs/input/ActionCover.java @@ -128,10 +128,10 @@ class ActionCover extends BaseAction { } if (StringUtils.isNotEmpty(obj.getAlias())) { obj.setAlias( - this.idleAliasWithQuery(business, query.getId(), obj.getAlias(), Table.class, obj.getId())); + this.idleAliasWithQuery(business, null, obj.getAlias(), Table.class, obj.getId())); } if (StringUtils.isNotEmpty(obj.getName())) { - obj.setName(this.idleNameWithQuery(business, query.getId(), obj.getName(), Table.class, obj.getId())); + obj.setName(this.idleNameWithQuery(business, null, obj.getName(), Table.class, obj.getId())); } obj.setQuery(query.getId()); } @@ -145,10 +145,10 @@ class ActionCover extends BaseAction { } if (StringUtils.isNotEmpty(obj.getAlias())) { obj.setAlias( - this.idleAliasWithQuery(business, query.getId(), obj.getAlias(), Statement.class, obj.getId())); + this.idleAliasWithQuery(business, null, obj.getAlias(), Statement.class, obj.getId())); } if (StringUtils.isNotEmpty(obj.getName())) { - obj.setName(this.idleNameWithQuery(business, query.getId(), obj.getName(), Statement.class, obj.getId())); + obj.setName(this.idleNameWithQuery(business, null, obj.getName(), Statement.class, obj.getId())); } obj.setQuery(query.getId()); } @@ -181,58 +181,6 @@ class ActionCover extends BaseAction { return query; } - private String idleNameWithQuery(Business business, String queryId, String name, Class cls, - String excludeId) throws Exception { - if (StringUtils.isEmpty(name)) { - return ""; - } - List list = new ArrayList<>(); - list.add(name); - for (int i = 1; i < 99; i++) { - list.add(name + String.format("%02d", i)); - } - list.add(StringTools.uniqueToken()); - EntityManager em = business.entityManagerContainer().get(cls); - CriteriaBuilder cb = em.getCriteriaBuilder(); - CriteriaQuery cq = cb.createQuery(String.class); - Root root = cq.from(cls); - Predicate p = root.get("name").in(list); - p = cb.and(p, cb.equal(root.get("query"), queryId)); - if (StringUtils.isNotEmpty(excludeId)) { - p = cb.and(p, cb.notEqual(root.get(JpaObject.id_FIELDNAME), excludeId)); - } - cq.select(root.get("name")).where(p); - List os = em.createQuery(cq).getResultList(); - list = ListUtils.subtract(list, os); - return list.get(0); - } - - private String idleAliasWithQuery(Business business, String queryId, String alias, - Class cls, String excludeId) throws Exception { - if (StringUtils.isEmpty(alias)) { - return ""; - } - List list = new ArrayList<>(); - list.add(alias); - for (int i = 1; i < 99; i++) { - list.add(alias + String.format("%02d", i)); - } - list.add(StringTools.uniqueToken()); - EntityManager em = business.entityManagerContainer().get(cls); - CriteriaBuilder cb = em.getCriteriaBuilder(); - CriteriaQuery cq = cb.createQuery(String.class); - Root root = cq.from(cls); - Predicate p = root.get("alias").in(list); - p = cb.and(p, cb.equal(root.get("query"), queryId)); - if (StringUtils.isNotEmpty(excludeId)) { - p = cb.and(p, cb.notEqual(root.get(JpaObject.id_FIELDNAME), excludeId)); - } - cq.select(root.get("alias")).where(p); - List os = em.createQuery(cq).getResultList(); - list = ListUtils.subtract(list, os); - return list.get(0); - } - public static class Wi extends WrapQuery { private static final long serialVersionUID = -4612391443319365035L; diff --git a/o2server/x_query_assemble_designer/src/main/java/com/x/query/assemble/designer/jaxrs/input/ActionCreate.java b/o2server/x_query_assemble_designer/src/main/java/com/x/query/assemble/designer/jaxrs/input/ActionCreate.java index 9bb6bbf978a320561f4d1ca7ac7de33a68e7e23d..3040bf26310fd6d88680024c613ea7dd98debc69 100644 --- a/o2server/x_query_assemble_designer/src/main/java/com/x/query/assemble/designer/jaxrs/input/ActionCreate.java +++ b/o2server/x_query_assemble_designer/src/main/java/com/x/query/assemble/designer/jaxrs/input/ActionCreate.java @@ -22,6 +22,7 @@ import com.x.query.core.entity.View; import com.x.query.core.entity.schema.Statement; import com.x.query.core.entity.schema.Table; import com.x.query.core.entity.wrap.*; +import org.apache.commons.lang3.StringUtils; class ActionCreate extends BaseAction { @@ -79,6 +80,13 @@ class ActionCreate extends BaseAction { } obj = WrapTable.inCopier.copy(_o); obj.setQuery(query.getId()); + if (StringUtils.isNotEmpty(obj.getAlias())) { + obj.setAlias( + this.idleAliasWithQuery(business, null, obj.getAlias(), Table.class, obj.getId())); + } + if (StringUtils.isNotEmpty(obj.getName())) { + obj.setName(this.idleNameWithQuery(business, null, obj.getName(), Table.class, obj.getId())); + } persistObjects.add(obj); } for (WrapStatement _o : wi.getStatementList()) { @@ -88,6 +96,13 @@ class ActionCreate extends BaseAction { } obj = WrapStatement.inCopier.copy(_o); obj.setQuery(query.getId()); + if (StringUtils.isNotEmpty(obj.getAlias())) { + obj.setAlias( + this.idleAliasWithQuery(business, null, obj.getAlias(), Statement.class, obj.getId())); + } + if (StringUtils.isNotEmpty(obj.getName())) { + obj.setName(this.idleNameWithQuery(business, null, obj.getName(), Statement.class, obj.getId())); + } persistObjects.add(obj); } for (WrapReveal _o : wi.getRevealList()) { diff --git a/o2server/x_query_assemble_designer/src/main/java/com/x/query/assemble/designer/jaxrs/input/BaseAction.java b/o2server/x_query_assemble_designer/src/main/java/com/x/query/assemble/designer/jaxrs/input/BaseAction.java index 63912b319ac59ce8a056b6a1259470c93de3929f..d8c4fb444e1f3e4b00ef20a5cc34fd6f0f91062b 100644 --- a/o2server/x_query_assemble_designer/src/main/java/com/x/query/assemble/designer/jaxrs/input/BaseAction.java +++ b/o2server/x_query_assemble_designer/src/main/java/com/x/query/assemble/designer/jaxrs/input/BaseAction.java @@ -95,4 +95,60 @@ abstract class BaseAction extends StandardJaxrsAction { return list.get(0); } + protected String idleNameWithQuery(Business business, String queryId, String name, Class cls, + String excludeId) throws Exception { + if (StringUtils.isEmpty(name)) { + return ""; + } + List list = new ArrayList<>(); + list.add(name); + for (int i = 1; i < 99; i++) { + list.add(name + String.format("%02d", i)); + } + list.add(StringTools.uniqueToken()); + EntityManager em = business.entityManagerContainer().get(cls); + CriteriaBuilder cb = em.getCriteriaBuilder(); + CriteriaQuery cq = cb.createQuery(String.class); + Root root = cq.from(cls); + Predicate p = root.get("name").in(list); + if (StringUtils.isNotEmpty(queryId)) { + p = cb.and(p, cb.equal(root.get("query"), queryId)); + } + if (StringUtils.isNotEmpty(excludeId)) { + p = cb.and(p, cb.notEqual(root.get(JpaObject.id_FIELDNAME), excludeId)); + } + cq.select(root.get("name")).where(p); + List os = em.createQuery(cq).getResultList(); + list = ListUtils.subtract(list, os); + return list.get(0); + } + + protected String idleAliasWithQuery(Business business, String queryId, String alias, + Class cls, String excludeId) throws Exception { + if (StringUtils.isEmpty(alias)) { + return ""; + } + List list = new ArrayList<>(); + list.add(alias); + for (int i = 1; i < 99; i++) { + list.add(alias + String.format("%02d", i)); + } + list.add(StringTools.uniqueToken()); + EntityManager em = business.entityManagerContainer().get(cls); + CriteriaBuilder cb = em.getCriteriaBuilder(); + CriteriaQuery cq = cb.createQuery(String.class); + Root root = cq.from(cls); + Predicate p = root.get("alias").in(list); + if (StringUtils.isNotEmpty(queryId)) { + p = cb.and(p, cb.equal(root.get("query"), queryId)); + } + if (StringUtils.isNotEmpty(excludeId)) { + p = cb.and(p, cb.notEqual(root.get(JpaObject.id_FIELDNAME), excludeId)); + } + cq.select(root.get("alias")).where(p); + List os = em.createQuery(cq).getResultList(); + list = ListUtils.subtract(list, os); + return list.get(0); + } + } \ No newline at end of file