diff --git a/process/Loghistory_lib/process.js b/process/Loghistory_lib/process.js index 6da79882e406d48228cbc816987f3013f3cb670e..8bcf8047359944e3bdccf6f6927e72685a064850 100644 --- a/process/Loghistory_lib/process.js +++ b/process/Loghistory_lib/process.js @@ -27,36 +27,14 @@ function LogHistoryExecutor(pTable, pUser, pColumns, pNewValues, pOldValues, pTi this.sqlAction = pAction; this.idValue = pIdValue; this.columns = pColumns.map(function (v){ - return v.toUpperCase(); - }); + return v.toUpperCase(); + }); this.translationLanguage = LogHistoryExecutor.TRANSLATION_LANGUAGE(); } -LogHistoryExecutor.TRANSLATION_LANGUAGE = function(){ - return "DE_de"; -} - - -LogHistoryExecutor.prototype._addEntryForInsert = function (pTablename, pTablenameId, pSourceTablename, pSourceTablenameId, pDescription) -{ - if (this.toInsert == undefined) - { - //the "SOURCE_TABLENAME" and "SOURCE_TABLENAMEID" are reserved for later usage in the change-notification-subscriptions //TODO: check if they are really needed - this.toInsert = { - statements: [] - ,cols: ["AB_LOGHISTORYID", "LOGTYPE","TABLENAME","TABLENAMEID","DESCRIPTION", "SOURCE_TABLENAME", "SOURCE_TABLENAMEID", "DATE_NEW","USER_NEW"] - }; - this.toInsert.types = db.getColumnTypes("AB_LOGHISTORY", this.toInsert.cols);//load only once for better performance - } - - var vals = [util.getNewUUID(), this.sqlAction, pTablename, pTablenameId, pDescription, pSourceTablename, pSourceTablenameId, this.timestamp, this.triggeringUser]; - this.toInsert.statements.push(["AB_LOGHISTORY", this.toInsert.cols, this.toInsert.types, vals]); -}; - -LogHistoryExecutor.prototype._insertLoghistEntry = function () +LogHistoryExecutor.TRANSLATION_LANGUAGE = function() { - if (this.toInsert && this.toInsert.statements) - db.inserts(this.toInsert.statements); + return "DE_de"; }; LogHistoryExecutor.prototype.execute = function () @@ -136,7 +114,7 @@ LogHistoryExecutor.prototype.execute = function () } else if(this.affectedTable == "COMMUNICATION") { - description.push(translate.withArguments("%0 medium from \"%1\" to \"%2\"", [conf.Description, olddata[0], newdata[0]], this.translationLanguage))); + description.push(translate.withArguments("%0 medium from \"%1\" to \"%2\"", [conf.Description, olddata[0], newdata[0]], this.translationLanguage)); } } if (conf.RefTable) this.affectedTable = conf.RefTable; @@ -153,7 +131,7 @@ LogHistoryExecutor.prototype.execute = function () for (var i = 0; i < this.columns.length; i++) { if (this.affectedTable == "ASYS_CALENDARBACKEND" && this.columns[i] == "VCOMPONENT") - _getCalendarDescription(this.sqlAction, i, this.newValues, this.oldValues); + this._getCalendarDescription(i); if (references[this.columns[i]]) { @@ -190,7 +168,7 @@ LogHistoryExecutor.prototype.execute = function () { if (this.sqlAction == 'I') description = translate.withArguments("%0 added.", [description.join(", ")], this.translationLanguage); if (this.sqlAction == 'U') description = translate.withArguments("%0 modified.", [description.join(", ")], this.translationLanguage); - if (this.sqlAction == 'D') description = translate.withArguments("%0 deleted.", [description.join(", ")], this.translationLanguage); + if (this.sqlAction == 'D') description = translate.withArguments("%0 deleted.", [description.join(", ")], this.translationLanguage); for (index in references) { if (references[index].id != "") @@ -208,6 +186,30 @@ LogHistoryExecutor.prototype.execute = function () return null; }; +LogHistoryExecutor.prototype._addEntryForInsert = function (pTablename, pTablenameId, pSourceTablename, pSourceTablenameId, pDescription) +{ + if (this.toInsert == undefined) + { + //the "SOURCE_TABLENAME" and "SOURCE_TABLENAMEID" are reserved for later usage in the change-notification-subscriptions //TODO: check if they are really needed + this.toInsert = { + statements: [] + , + cols: ["AB_LOGHISTORYID", "LOGTYPE","TABLENAME","TABLENAMEID","DESCRIPTION", "SOURCE_TABLENAME", "SOURCE_TABLENAMEID", "DATE_NEW","USER_NEW"] + }; + this.toInsert.types = db.getColumnTypes("AB_LOGHISTORY", this.toInsert.cols);//load only once for better performance + } + + var vals = [util.getNewUUID(), this.sqlAction, pTablename, pTablenameId, pDescription, pSourceTablename, pSourceTablenameId, this.timestamp, this.triggeringUser]; + this.toInsert.statements.push(["AB_LOGHISTORY", this.toInsert.cols, this.toInsert.types, vals]); +}; + +LogHistoryExecutor.prototype._insertLoghistEntry = function () +{ + if (this.toInsert && this.toInsert.statements) + db.inserts(this.toInsert.statements); +}; + + /* * Creates the data for the tables with special cases * @@ -221,7 +223,8 @@ LogHistoryExecutor.prototype._getDataForExtras = function(pId, pValues) var data = []; if (this.affectedTable == "AB_ATTRIBUTERELATION") - data = [AttributeUtil.getFullAttributeName(pId), pValues[(new AttributeHandler(pId)).getDatabaseField()]]; + data[0] = AttributeUtil.getFullAttributeName(pId); + data[1] = AttributeRelationUtils.getAttribute(pId, (pValues["OBJECT_ROWID"]), null, true); if (this.affectedTable == "COMMUNICATION") { data[0] = KeywordUtils.getResolvedTitleSqlPart("MediumOrgPers", pId, false); @@ -231,6 +234,26 @@ LogHistoryExecutor.prototype._getDataForExtras = function(pId, pValues) }; +/* +* Creates the description for changes in the calendar +* +* @param {String} pIndex calendarfield index (position) within the values +* +* @return {String} the description of the action +*/ +LogHistoryExecutor.prototype._getCalendarDescription = function (pIndex) +{ + if (this.sqlAction != "D") this.newValues[pIndex] = _getEntry("DESCRIPTION:", this.newValues[pIndex]); + if (this.sqlAction != "I") this.oldValues[pIndex] = _getEntry("DESCRIPTION:", this.oldValues[pIndex]); + + function _getEntry(pWert, pVcomponent) + { + var value = pVcomponent.toString().match(new RegExp(pWert + ".+\r")); + if (value != null) return value.toString().replace(pWert, "").replace(/\\R\\N/g, "\r\n"); + else return ""; + } +}; + /* * Creates an Array of AB_LOGHISTORY data for display in a view * @@ -255,9 +278,11 @@ LogHistoryExecutor._getFormattedValue = function (pDescription, pValue, pLocale) else if (pDescription.translate4Log != null && pDescription.translate4Log != "") { var params = { - rowId: this.idValue - ,value: pValue.toString() - ,action: this.sqlAction + rowId: this.idValue + , + value: pValue.toString() + , + action: this.sqlAction }; pValue = process.executeScript("LogHistoryExecutor._getFormattedValue ", pDescription.translate4Log, params); @@ -285,27 +310,4 @@ LogHistoryExecutor._getFormattedValue = function (pDescription, pValue, pLocale) } } return pValue; -} - -/* -* Creates the description for changes in the calendar -* -* @param {String} pAction the user action -* @param {String} pId the talbe id -* @param {String} pNewValue the old entry -* @param {String} pOldValue the new entry -* -* @return {String} the description of the action -*/ -function _getCalendarDescription(pAction, pId, pNewValue, pOldValue) -{ - if (pAction != "D") pNewValue[pId] = _getEntry("DESCRIPTION:", pNewValue[pId]); - if (pAction != "I") pOldValue[pId] = _getEntry("DESCRIPTION:", pOldValue[pId]); - - function _getEntry(pWert, pVcomponent) - { - var value = pVcomponent.toString().match(new RegExp(pWert + ".+\r")); - if (value != null) return value.toString().replace(pWert, "").replace(/\\R\\N/g, "\r\n"); - else return ""; - } -} +} \ No newline at end of file