diff --git a/entity/Offer_entity/recordcontainers/db/onDBInsert.js b/entity/Offer_entity/recordcontainers/db/onDBInsert.js index cbd146d2878aa365cd24c7beb64ba9d8a0e71e9d..dee3726f2ed43d0d95ca7a19780beaaff7b8e5b8 100644 --- a/entity/Offer_entity/recordcontainers/db/onDBInsert.js +++ b/entity/Offer_entity/recordcontainers/db/onDBInsert.js @@ -18,8 +18,6 @@ if (vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW) if (vars.exists("$param.OfferOriginal_Id_param") && vars.get("$param.OfferOriginal_Id_param")) OfferUtils.copyOfferItems(vars.getString("$param.OfferOriginal_Id_param"), offerId, discount); - var binaryColumns; - var binaries; var activityId = vars.get("$param.ActivityId_param"); if (activityId) { @@ -30,30 +28,14 @@ if (vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW) "OBJECT_TYPE": ContextUtils.getCurrentContextId(), "OBJECT_ROWID": offerId }, "ACTIVITYLINK", "ACTIVITYLINKID"); - - binaryColumns = "BINDATA, FILENAME, DESCRIPTION, KEYWORD"; - binaries = newSelect(binaryColumns, SqlUtils.getBinariesAlias()) - .from("ASYS_BINARIES") - .where("ASYS_BINARIES.ROW_ID", activityId) - .table() - for (i = 0; i < binaries.length; i++) - { - SingleBinaryUtils.insert("OFFER", "DOCUMENT", offerId, binaries[i][0], binaries[i][1], binaries[i][2], binaries[i][3], SqlUtils.getBinariesAlias()) - } + BinaryUtils.copyBinaries("ACTIVITY", activityId, "OFFER", offerId, "DOCUMENT"); } + var taskId = vars.get("$param.TaskId_param"); if (taskId) { - binaryColumns = "BINDATA, FILENAME, DESCRIPTION, KEYWORD"; - binaries = newSelect(binaryColumns, SqlUtils.getBinariesAlias()) - .from("ASYS_BINARIES") - .where("ASYS_BINARIES.ROW_ID", taskId) - .table() - for (i = 0; i < binaries.length; i++) - { - SingleBinaryUtils.insert("OFFER", "DOCUMENT", taskId, binaries[i][0], binaries[i][1], binaries[i][2], binaries[i][3], SqlUtils.getBinariesAlias()) - } + BinaryUtils.copyBinaries("TASK", taskId, "OFFER", offerId, "DOCUMENT"); } } -WorkflowSignalSender.inserted(); \ No newline at end of file +WorkflowSignalSender.inserted(); diff --git a/process/Binary_lib/process.js b/process/Binary_lib/process.js index a1a13b0307be55f2056f24961b76f93f1f89f338..64a4248d912b75af1cc439a0229441112876ad7c 100644 --- a/process/Binary_lib/process.js +++ b/process/Binary_lib/process.js @@ -3,6 +3,51 @@ import("system.vars"); import("system.db"); import("Sql_lib"); +/** + * A static utility class for binarys using database binary functions. + * It provides methods to handle multiple binary data.<br> + * <p> + * <b><u>Do not create an instance of this!</u></b> + * @class + */ +function BinaryUtils() {} + +/** + * Copies the binaries + * + * @param {String} pSourceAssignmentTable <p> + * The source table from which the binary data will fetched.<br> + * (e.g.: ASYS_BINARIES).<br> + * @param {String} pSourceAssignmentRowId <p> + * The source row id.<br> + * (e.g.: UUID of the record)<br> + * @param {String} pTargetAssignmentTable <p> + * The target table from which the binary data will fetched.<br> + * (e.g.: ASYS_BINARIES).<br> + * @param {String} pTargetAssignmentRowId <p> + * The target row id.<br> + * (e.g.: UUID of the record)<br> + * @param {String} pAssignmentName <p> + * The name of the assignment/container name.<br> + * (e.g.: DOCUMENT)<br> + * @param {String} pAlias=SqlUtils.getBinariesAlias() <p> + * The database alias.<br> + * (e.g.: _____SYSTEMALIAS) + */ +BinaryUtils.copyBinaries = function(pSourceAssignmentTable, pSourceAssignmentRowId, pTargetAssignmentTable, pTargetAssignmentRowId, pAssignmentName, pAlias) +{ + pAlias = pAlias || SqlUtils.getBinariesAlias(); + var binMetadata = db.getBinaryMetadata(pSourceAssignmentTable, pAssignmentName, pSourceAssignmentRowId, false, pAlias); + var binContents = db.getBinaryContents(binMetadata.map(function(curr){return curr.id}), pAlias); + for(var i = 0; i < binMetadata.length; i++) + { + db.insertBinary( + pTargetAssignmentTable, pAssignmentName, pTargetAssignmentRowId, "", binContents[i], + binMetadata[i].filename, binMetadata[i].description, binMetadata[i].keyword, pAlias + ); + } +} + /** * A static utility class for binarys using database binary functions. * It provides methods to ensure that only one binary for a AssignmentTable, AssignmentName and AssignmentRowId exist.<br>