From 896147c96dc87bba1fbe2fa22dba909dcf414c20 Mon Sep 17 00:00:00 2001 From: Johannes Hoermann <j.hoermann@adito.de> Date: Mon, 14 Oct 2019 09:26:51 +0200 Subject: [PATCH] use SqlBuilder in basic --- process/Attribute_lib/process.js | 83 +++++++++++++++++--------------- 1 file changed, 43 insertions(+), 40 deletions(-) diff --git a/process/Attribute_lib/process.js b/process/Attribute_lib/process.js index 94546d31f18..0ee28b832aa 100644 --- a/process/Attribute_lib/process.js +++ b/process/Attribute_lib/process.js @@ -919,7 +919,6 @@ AttributeTypeUtil.getContentType = function (pAttributeType) */ AttributeTypeUtil.isGroupType = function (pAttributeType) { - logging.log(JSON.stringify([pAttributeType], null, "\t")) if (pAttributeType) { pAttributeType = pAttributeType.trim(); @@ -1078,40 +1077,36 @@ AttributeUsageUtil.updateChildrenUsages = function (pAttributeId, pOldObjectType .where("AB_ATTRIBUTEUSAGE.OBJECT_TYPE", pNewObjectType) .and("AB_ATTRIBUTEUSAGE.AB_ATTRIBUTE_ID = AB_ATTRIBUTE.AB_ATTRIBUTEID"); - var sqlSelect = SqlBuilder.begin() - .select(["AB_ATTRIBUTEID", "AB_ATTRIBUTEUSAGEID", countSubQuery]) - .from("AB_ATTRIBUTE") - .leftJoin("AB_ATTRIBUTEUSAGE", SqlCondition.begin() - .andPrepare("AB_ATTRIBUTEUSAGE.OBJECT_TYPE", pOldObjectType) - .and("AB_ATTRIBUTEID = AB_ATTRIBUTE_ID")); + var sqlSelect = newSelect((["AB_ATTRIBUTEID", "AB_ATTRIBUTEUSAGEID", countSubQuery]) + .from("AB_ATTRIBUTE") + .leftJoin("AB_ATTRIBUTEUSAGE", newWhere() + .and("AB_ATTRIBUTEUSAGE.OBJECT_TYPE", pOldObjectType) + .and("AB_ATTRIBUTEID = AB_ATTRIBUTE_ID"))); - var updateCond = SqlCondition.begin(); + var updateCond = newWhere(); //it is possible that the new objectType is already in a subordinate attribute //and an update could cause a duplicate entry so one has to be deleted - var deleteCond = SqlCondition.begin(); + var deleteCond = newWhere(); _addUpdateIds(pAttributeId, pOldObjectType); - if (updateCond.isSet()) - db.updateData(table, ["OBJECT_TYPE"], null, [pNewObjectType], updateCond.build("1=2")); - if (deleteCond.isSet()) - db.deleteData(table, deleteCond.build("1=2")); + updateCond.updateData(true, ["OBJECT_TYPE"], null, [pNewObjectType], table); + deleteCond.deleteData(true, table); function _addUpdateIds (pAttributeId) { - var condition = SqlCondition.begin() - .andPrepare("AB_ATTRIBUTE.ATTRIBUTE_TYPE", $AttributeTypes.COMBOVALUE, "# != ?") - .andPrepare("AB_ATTRIBUTE.ATTRIBUTE_PARENT_ID", pAttributeId); - var query = sqlSelect.where(condition); - var attributes = db.table(query.build()); + sqlSelect.and("AB_ATTRIBUTE.ATTRIBUTE_TYPE", $AttributeTypes.COMBOVALUE, "# != ?") + .and("AB_ATTRIBUTE.ATTRIBUTE_PARENT_ID", pAttributeId); + + var attributes = sqlSelect.table(); attributes.forEach(function (row) { if (row[1] && row[2] != "0") - deleteCond.orPrepare("AB_ATTRIBUTEUSAGE.AB_ATTRIBUTEUSAGEID", row[1]); + deleteCond.or("AB_ATTRIBUTEUSAGE.AB_ATTRIBUTEUSAGEID", row[1]); else if (row[1]) - updateCond.orPrepare("AB_ATTRIBUTEUSAGE.AB_ATTRIBUTEUSAGEID", row[1]); + updateCond.or("AB_ATTRIBUTEUSAGE.AB_ATTRIBUTEUSAGEID", row[1]); _addUpdateIds(row[0]); }); } @@ -1128,25 +1123,26 @@ AttributeUsageUtil.deleteChildrenUsages = function (pAttributeId, pObjectType) { var table = "AB_ATTRIBUTEUSAGE"; - var sqlSelect = "select AB_ATTRIBUTEID, AB_ATTRIBUTEUSAGEID " - + " from AB_ATTRIBUTE left join AB_ATTRIBUTEUSAGE on AB_ATTRIBUTEID = AB_ATTRIBUTE_ID and OBJECT_TYPE = '" + pObjectType + "'"; + var attributeSelect = newSelect("AB_ATTRIBUTE") + .from("AB_ATTRIBUTEID, AB_ATTRIBUTEUSAGEID") + .leftJoin("AB_ATTRIBUTEUSAGE", newWhere("AB_ATTRIBUTEID = AB_ATTRIBUTE_ID") + .and("OBJECT_TYPE", pObjectType)); - var deleteCond = SqlCondition.begin(); + var deleteCond = newWhere; _addDeleteIds(pAttributeId, pObjectType); - if (deleteCond.isSet()) - db.deleteData(table, deleteCond.build("1=2")); + + deleteCond.deleteData(true, table) function _addDeleteIds (pAttributeId) { - var condition = SqlCondition.begin() - .andPrepare("AB_ATTRIBUTE.ATTRIBUTE_TYPE", $AttributeTypes.COMBOVALUE, "# != ?") - .andPrepare("AB_ATTRIBUTE.ATTRIBUTE_PARENT_ID", pAttributeId); - var attributes = db.table(condition.buildSql(sqlSelect)); + attributeSelect.where("AB_ATTRIBUTE.ATTRIBUTE_TYPE", $AttributeTypes.COMBOVALUE, "# != ?") + .and("AB_ATTRIBUTE.ATTRIBUTE_PARENT_ID", pAttributeId); + var attributes = attributeSelect.table(); attributes.forEach(function (row) { if (row[1]) - deleteCond.orPrepare("AB_ATTRIBUTEUSAGE.AB_ATTRIBUTEUSAGEID", row[1]) + deleteCond.or("AB_ATTRIBUTEUSAGE.AB_ATTRIBUTEUSAGEID", row[1]) _addDeleteIds(row[0]); }); } @@ -1159,24 +1155,31 @@ AttributeUsageUtil.deleteChildrenUsages = function (pAttributeId, pObjectType) */ AttributeUsageUtil.removeDuplicates = function (pAttributeId) { - var condition = SqlCondition.begin() - .and("exists (select AB_ATTRIBUTEUSAGEID from AB_ATTRIBUTEUSAGE AU where AB_ATTRIBUTEUSAGE.AB_ATTRIBUTE_ID = AU.AB_ATTRIBUTE_ID " - + "and AB_ATTRIBUTEUSAGE.OBJECT_TYPE = AU.OBJECT_TYPE and AB_ATTRIBUTEUSAGE.AB_ATTRIBUTEUSAGEID != AU.AB_ATTRIBUTEUSAGEID)"); - if (pAttributeId) - condition.andPrepare("AB_ATTRIBUTEUSAGE.AB_ATTRIBUTE_ID", pAttributeId); - var duplicates = db.table(condition.buildSql("select AB_ATTRIBUTEUSAGEID, AB_ATTRIBUTE_ID, OBJECT_TYPE from AB_ATTRIBUTEUSAGE")); + + var attributeSelect = newSelect("AB_ATTRIBUTEUSAGEID, AB_ATTRIBUTE_ID, OBJECT_TYPE") + .from("AB_ATTRIBUTEUSAGE") + .and(null, newSelect("AB_ATTRIBUTEUSAGEID") + .from("AB_ATTRIBUTEUSAGE AU") + .where("AB_ATTRIBUTEUSAGE.AB_ATTRIBUTE_ID = AU.AB_ATTRIBUTE_ID") + .and("AB_ATTRIBUTEUSAGE.OBJECT_TYPE = AU.OBJECT_TYPE") + .and("AB_ATTRIBUTEUSAGE.AB_ATTRIBUTEUSAGEID != AU.AB_ATTRIBUTEUSAGEID"), + SqlBuilder.EXISTS()); + + attributeSelect.andIfSet("AB_ATTRIBUTEUSAGE.AB_ATTRIBUTE_ID", pAttributeId); + + var duplicates = attributeSelect.table(); var usageObj = {}; - var deleteCond = SqlCondition.begin(); + var deleteCond = newWhere(); duplicates.forEach(function (row) { if (!(row[1] in this)) this[row[1]] = {}; if (row[2] in this[row[1]]) - deleteCond.orPrepare("AB_ATTRIBUTEUSAGE.AB_ATTRIBUTEUSAGEID", row[0]); + deleteCond.or("AB_ATTRIBUTEUSAGE.AB_ATTRIBUTEUSAGEID", row[0]); this[row[1]][row[2]] = true; }, usageObj); - if (deleteCond.isSet()) - db.deleteData("AB_ATTRIBUTEUSAGE", deleteCond.build("1=2")); + + deleteCond.deleteData(true, "AB_ATTRIBUTEUSAGE"); } \ No newline at end of file -- GitLab