From b37285df4400919b3bb6939fc8b5669e888b00ff Mon Sep 17 00:00:00 2001
From: Johannes Hoermann <j.hoermann@adito.de>
Date: Fri, 11 Oct 2019 10:56:39 +0200
Subject: [PATCH] Use sqlbuilder in basic

---
 .../defaultaddressid_param/valueProcess.js    |  8 +--
 .../children/personid_param/valueProcess.js   |  7 +-
 .../recordcontainers/jdito/contentProcess.js  |  2 +-
 .../pricelist/displayValueProcess.js          |  2 +-
 process/ActivityTask_lib/process.js           | 67 +++++++++++--------
 process/Attribute_lib/process.js              | 37 +++++-----
 6 files changed, 64 insertions(+), 59 deletions(-)

diff --git a/entity/Address_entity/entityfields/defaultaddressid_param/valueProcess.js b/entity/Address_entity/entityfields/defaultaddressid_param/valueProcess.js
index 4e767b5397..f48ba8fc6f 100644
--- a/entity/Address_entity/entityfields/defaultaddressid_param/valueProcess.js
+++ b/entity/Address_entity/entityfields/defaultaddressid_param/valueProcess.js
@@ -12,10 +12,10 @@ import("system.vars");
 var contactId = vars.get("$param.ContactId_param");
 if (contactId)
 {
-    var organisation = newSelect("CONTACT.ADDRESS_ID")
-                .from("CONTACT")
-                .where("CONTACT.CONTACTID", contactId)
+    var organisationId = newSelect("CONTACT.ADDRESS_ID")
+                            .from("CONTACT")
+                            .where("CONTACT.CONTACTID", contactId)
+                            .cell();
 
-    var organisationId = sql.cell();
     result.string(organisationId);
 }
\ No newline at end of file
diff --git a/entity/Contact_entity/entityfields/personscontactsexceptown/children/personid_param/valueProcess.js b/entity/Contact_entity/entityfields/personscontactsexceptown/children/personid_param/valueProcess.js
index 6778e04249..1b454992c6 100644
--- a/entity/Contact_entity/entityfields/personscontactsexceptown/children/personid_param/valueProcess.js
+++ b/entity/Contact_entity/entityfields/personscontactsexceptown/children/personid_param/valueProcess.js
@@ -1,15 +1,14 @@
 import("system.result");
 import("system.vars");
-import("system.db");
 import("Sql_lib");
 
 var contactId = vars.get("$param.OwnContactId_param");
 if (contactId)
 {
     var personId = newSelect("CONTACT.PERSON_ID")
-                .from("CONTACT")
-                .and("CONTACT.CONTACTID", contactId)
-                .cell();
+                        .from("CONTACT")
+                        .where("CONTACT.CONTACTID", contactId)
+                        .cell();
 
     result.string(personId);
 }
\ No newline at end of file
diff --git a/entity/ModuleTree_entity/recordcontainers/jdito/contentProcess.js b/entity/ModuleTree_entity/recordcontainers/jdito/contentProcess.js
index 893eaaf2fd..0747bea559 100644
--- a/entity/ModuleTree_entity/recordcontainers/jdito/contentProcess.js
+++ b/entity/ModuleTree_entity/recordcontainers/jdito/contentProcess.js
@@ -101,7 +101,7 @@ function queryChildrenElements (pContextName, pID) {
 function queryRootElement (pContextName, pID, pGetFirst) {
     var resultArray;
     if (pContextName === "Task") {
-        resultArray = mewSelect("TASKID, PARENT_ID, PARENT_CONTEXT, SUBJECT, DESCRIPTION")
+        resultArray = newSelect("TASKID, PARENT_ID, PARENT_CONTEXT, SUBJECT, DESCRIPTION")
                         .from("TASK")
                         .where("TASK.TASKID", pID)
                         .arrayRow();
diff --git a/entity/Productprice_entity/entityfields/pricelist/displayValueProcess.js b/entity/Productprice_entity/entityfields/pricelist/displayValueProcess.js
index 34d03f9306..e54cffa449 100644
--- a/entity/Productprice_entity/entityfields/pricelist/displayValueProcess.js
+++ b/entity/Productprice_entity/entityfields/pricelist/displayValueProcess.js
@@ -14,7 +14,7 @@ if (!pricelistname)
                     .from("CONTACT")
                     .join("ORGANISATION", "CONTACT.ORGANISATION_ID = ORGANISATION.ORGANISATIONID", undefined, "inner")
                     .orderBy("NAME")
-                    .where("CONTACT.CONTACTID", "$field.CONTACT_ID")
+                    .whereIfSet("CONTACT.CONTACTID", "$field.CONTACT_ID")
                     .cell(true);
     
     result.string(orgname);
diff --git a/process/ActivityTask_lib/process.js b/process/ActivityTask_lib/process.js
index ba99fe2549..0347969322 100644
--- a/process/ActivityTask_lib/process.js
+++ b/process/ActivityTask_lib/process.js
@@ -163,14 +163,14 @@ ActivityUtils.getLastActivityDate = function(pRowId)
 {
     var context = ContextUtils.getCurrentContextId();
     var sqlUtil = new SqlMaskingUtils();
-    var activitySql = "select " + sqlUtil.max("ENTRYDATE") + " from ACTIVITY "
-        + " join ACTIVITYLINK on ACTIVITY.ACTIVITYID = ACTIVITYLINK.ACTIVITY_ID";
-    activitySql = SqlCondition.begin()
-        .andPrepare("ACTIVITYLINK.OBJECT_TYPE", context)
-        .andPrepare("ACTIVITYLINK.OBJECT_ROWID", pRowId)
-        .buildSql(activitySql);
-    
-    var entryDate = db.cell(activitySql);
+
+    var entryDate = newSelect(sqlUtil.max("ENTRYDATE"))
+                        .from("ACTIVITY")
+                        .join("ACTIVITYLINK", "ACTIVITY.ACTIVITYID = ACTIVITYLINK.ACTIVITY_ID")
+                        .where("ACTIVITYLINK.OBJECT_TYPE", context)
+                        .and("ACTIVITYLINK.OBJECT_ROWID", pRowId)
+                        .cell();
+
     if (entryDate != "")
         return parseInt(entryDate);
     return null;
@@ -192,9 +192,11 @@ ActivityUtils.hasActivities = function (pRowId, pObjectType)
 {
     if (pRowId && pObjectType)
     {
-        var cond = SqlCondition.begin().andPrepare("ACTIVITYLINK.OBJECT_TYPE", pObjectType)
-                                       .andPrepare("ACTIVITYLINK.OBJECT_ROWID", pRowId);
-        var taskCount = db.cell(cond.buildSql("select count(*) from ACTIVITYLINK"));
+        var taskCount = newSelect("count(*)")
+                            .from("ACTIVITYLINK")
+                            .where("ACTIVITYLINK.OBJECT_TYPE", pObjectType)
+                            .and("ACTIVITYLINK.OBJECT_ROWID", pRowId)
+                            .cell();
         if (taskCount != "0")
             return true;
         return false;
@@ -250,9 +252,12 @@ TaskUtils.hasTasks = function(pRowId, pObjectType)
 {
     if (pRowId != "" && pObjectType != "")
     {
-        var cond = SqlCondition.begin().andPrepare("TASKLINK.OBJECT_TYPE", pObjectType)
-                                       .andPrepare("TASKLINK.OBJECT_ROWID", pRowId);
-        var taskCount = db.cell(cond.buildSql("select count(*) from TASKLINK"));
+        var taskCount = newSelect("count(*)")
+                            .from("TASKLINK")
+                            .where("TASKLINK.OBJECT_TYPE", pObjectType)
+                            .and("TASKLINK.OBJECT_ROWID", pRowId)
+                            .cell();
+                            
         if (taskCount != "0")
             return true;
         else 
@@ -281,11 +286,13 @@ TaskUtils.addLinkRecords= function(pObjectIdField, pRowIdField, pAdditionalLinks
 
 TaskUtils.getOpenTaskCount = function(pRowId, pObjectType)
 {
-    var cond = SqlCondition.begin()
-        .andPrepare("TASKLINK.OBJECT_TYPE", pObjectType)
-        .andPrepare("TASKLINK.OBJECT_ROWID", pRowId)
-        .andPrepare("TASK.STATUS", $KeywordRegistry.taskStatus$ended(), "# != ?")
-    var taskCount = db.cell(cond.buildSql("select count(*) from TASKLINK join TASK on TASKLINK.TASK_ID = TASK.TASKID"));
+    var taskCount = newSelect("count(*)")
+                        .from("TASKLINK")
+                        .join("TASK", "TASKLINK.TASK_ID = TASK.TASKID")
+                        .where("TASKLINK.OBJECT_TYPE", pObjectType)
+                        .and("TASKLINK.OBJECT_ROWID", pRowId)
+                        .and("TASK.STATUS", $KeywordRegistry.taskStatus$ended(), "# <> ?")
+                        .cell();
     
     return parseInt(taskCount);
 }
@@ -367,19 +374,23 @@ _ActivityTaskUtils._addLinkRecords = function(pObjectIdField, pRowIdField, pAddi
         switch (vars.get(pParentContextField))
         {
             case "Activity":
-                presetLinks = presetLinks.concat(db.table(SqlCondition.begin()
-                             .andPrepare("ACTIVITYLINK.ACTIVITY_ID", vars.get(pParentIdField))
-                             .buildSql("select OBJECT_TYPE, OBJECT_ROWID from ACTIVITYLINK", "1=2")));
+                presetLinks = presetLinks.concat(newSelect("OBJECT_TYPE, OBJECT_ROWID")
+                                                    .from("ACTIVITYLINK")
+                                                    .where("ACTIVITYLINK.ACTIVITY_ID", vars.get(pParentIdField))
+                                                    .table());
                 break;
             case "Task":
-                presetLinks = presetLinks.concat(db.table(SqlCondition.begin()
-                             .andPrepare("TASKLINK.TASK_ID", vars.get(pParentIdField))
-                             .buildSql("select OBJECT_TYPE, OBJECT_ROWID from TASKLINK", "1=2")));
+                presetLinks = presetLinks.concat(newSelect("OBJECT_TYPE, OBJECT_ROWID")
+                                                    .from("TASKLINK")
+                                                    .where("TASKLINK.TASK_ID", vars.get(pParentIdField))
+                                                    .table());
                 break;
             case "SupportTicket":
-                presetLinks = presetLinks.concat(db.table(SqlCondition.begin()
-                             .andPrepare("TICKET.TICKETID", vars.get(pParentIdField))
-                             .buildSql("select OBJECT_TYPE, OBJECT_ROWID from TICKET join TASKLINK on TASKLINK.TASK_ID = TICKET.TASK_ID", "1=2")));
+                presetLinks = presetLinks.concat(newSelect("OBJECT_TYPE, OBJECT_ROWID")
+                                                    .from("TICKET")
+                                                    .join("TASKLINK", "TASKLINK.TASK_ID = TICKET.TASK_ID")
+                                                    .where("TICKET.TICKETID", vars.get(pParentIdField))
+                                                    .table());
                 break;
         }
         
diff --git a/process/Attribute_lib/process.js b/process/Attribute_lib/process.js
index 73a5f9a4ac..8172a5948b 100644
--- a/process/Attribute_lib/process.js
+++ b/process/Attribute_lib/process.js
@@ -58,42 +58,37 @@ AttributeUtil.getPossibleAttributes = function (pObjectType, pIncludeGroups, pFi
     if (pObjectType == null || (pFilteredAttributeIds && pFilteredAttributeIds.length == 0))
         return [];
     
-    var attrSql = "select AB_ATTRIBUTEID, ATTRIBUTE_PARENT_ID, ATTRIBUTE_TYPE from AB_ATTRIBUTE"
-        + " join AB_ATTRIBUTEUSAGE  on AB_ATTRIBUTEID = AB_ATTRIBUTE_ID";
-    var attrCond = SqlCondition.begin()
-        .andPrepare("AB_ATTRIBUTEUSAGE.OBJECT_TYPE", pObjectType)
-        .andPrepare("AB_ATTRIBUTE.ATTRIBUTE_TYPE", $AttributeTypes.COMBOVALUE, "# != ?")
-        .and("ATTRIBUTE_ACTIVE = 1");
-    
+    var attrSelect = newSelect("AB_ATTRIBUTEID, ATTRIBUTE_PARENT_ID, ATTRIBUTE_TYPE")
+                        .from("AB_ATTRIBUTE")
+                        .join("AB_ATTRIBUTEUSAGE", "AB_ATTRIBUTEID = AB_ATTRIBUTE_ID")
+                        .where("AB_ATTRIBUTEUSAGE.OBJECT_TYPE", pObjectType)
+                        .and("AB_ATTRIBUTE.ATTRIBUTE_TYPE", $AttributeTypes.COMBOVALUE, "# != ?")
+                        .and("ATTRIBUTE_ACTIVE = 1");
+
     if (pAttributeCount)
     {
         for (let attributeId in pAttributeCount)
         {
-            attrCond.andSqlCondition(
-                SqlCondition.begin()
-                    .orPrepare("AB_ATTRIBUTEUSAGE.AB_ATTRIBUTE_ID", attributeId, "# != ?")
-                    .orPrepare("AB_ATTRIBUTEUSAGE.MAX_COUNT", pAttributeCount[attributeId], "# > ?")
-                    .or("AB_ATTRIBUTEUSAGE.MAX_COUNT is null")
+            attrSelect.and(newWhere()
+                            .or("AB_ATTRIBUTEUSAGE.AB_ATTRIBUTE_ID", attributeId, "# != ?")
+                            .or("AB_ATTRIBUTEUSAGE.MAX_COUNT", pAttributeCount[attributeId], "# > ?")
+                            .or("AB_ATTRIBUTEUSAGE.MAX_COUNT is null")
             );
         }
     }
         
     if (pFilteredAttributeIds)
     {
-        var filteredIdsCondition = new SqlCondition();
         var filteredIdChildren = AttributeUtil.getAllChildren(pFilteredAttributeIds);
-        pFilteredAttributeIds.concat(filteredIdChildren).forEach(function(id) 
-        {
-            this.orPrepare("AB_ATTRIBUTE.AB_ATTRIBUTEID", id);
-        }, filteredIdsCondition);
-
-        attrCond.andSqlCondition(filteredIdsCondition);
+        var allFilteredIds = pFilteredAttributeIds.concat(filteredIdChildren);
+        
+        attrSelect.andIfSet("AB_ATTRIBUTE.AB_ATTRIBUTEID", allFilteredIds, SqlBuilder.IN())
     }
 
     if (!pIncludeGroups)
-        attrCond.andPrepare("AB_ATTRIBUTE.ATTRIBUTE_TYPE", $AttributeTypes.GROUP, "# != ?");
+        attrSelect.and("AB_ATTRIBUTE.ATTRIBUTE_TYPE", $AttributeTypes.GROUP, "# != ?");
     
-    var attributes = db.table(attrCond.buildSql(attrSql));
+    var attributes = attrSelect.table();
     
     //filter out groups without usable children
     if (pIncludeGroups && pAttributeCount)
-- 
GitLab