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