Skip to content
Snippets Groups Projects
Commit 896147c9 authored by Johannes Hörmann's avatar Johannes Hörmann
Browse files

use SqlBuilder in basic

parent be1c7b9b
No related branches found
No related tags found
No related merge requests found
......@@ -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
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment