From ed32b91ee6426ee4daefd7aae1a78826d92f7817 Mon Sep 17 00:00:00 2001 From: Alan Davis Date: Sat, 31 Jan 2015 11:34:18 +0000 Subject: [PATCH] Merged HEAD-BUG-FIX (5.1/Cloud) to HEAD (5.1/Cloud) 91564: Merged 5.0.N (5.0.1) to HEAD-BUG-FIX (5.1/Cloud) 91556: Merged V4.2-BUG-FIX (4.2.5) to 5.0.N (5.0.1) 91472: Merged V4.2.4 (4.2.4) to V4.2-BUG-FIX (4.2.5) 91406: Merged DEV (4.2.4) to V4.2.4 (4.2.4) 91352: MNT-12716 : 3.4 -> 4.2 Upgrade does not migrate locales of translated documents - We can now specify default value in --ASSIGN directive using ftl-like way (var=col_name!-1). git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@94811 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261 --- .../migrate-locale-multilingual.sql | 2 +- .../migrate-locale-multilingual.sql | 2 +- .../repo/domain/schema/SchemaBootstrap.java | 18 ++++++++++++++++-- 3 files changed, 18 insertions(+), 4 deletions(-) diff --git a/config/alfresco/dbscripts/upgrade/4.2/org.hibernate.dialect.MySQLInnoDBDialect/migrate-locale-multilingual.sql b/config/alfresco/dbscripts/upgrade/4.2/org.hibernate.dialect.MySQLInnoDBDialect/migrate-locale-multilingual.sql index 92924790f5..02a2d4283c 100644 --- a/config/alfresco/dbscripts/upgrade/4.2/org.hibernate.dialect.MySQLInnoDBDialect/migrate-locale-multilingual.sql +++ b/config/alfresco/dbscripts/upgrade/4.2/org.hibernate.dialect.MySQLInnoDBDialect/migrate-locale-multilingual.sql @@ -15,7 +15,7 @@ CREATE TABLE tmp_locale_upgrade KEY idx_tmp_loc_str_v (string_value(42)) ) ENGINE=InnoDB; ---ASSIGN:locale_qname_id=id +--ASSIGN:locale_qname_id=id!-1 SELECT alf_qname.id AS id FROM alf_qname JOIN alf_namespace ON (alf_namespace.id = alf_qname.ns_id) WHERE diff --git a/config/alfresco/dbscripts/upgrade/4.2/org.hibernate.dialect.PostgreSQLDialect/migrate-locale-multilingual.sql b/config/alfresco/dbscripts/upgrade/4.2/org.hibernate.dialect.PostgreSQLDialect/migrate-locale-multilingual.sql index c808e382aa..ce878ec266 100644 --- a/config/alfresco/dbscripts/upgrade/4.2/org.hibernate.dialect.PostgreSQLDialect/migrate-locale-multilingual.sql +++ b/config/alfresco/dbscripts/upgrade/4.2/org.hibernate.dialect.PostgreSQLDialect/migrate-locale-multilingual.sql @@ -16,7 +16,7 @@ CREATE TABLE tmp_locale_upgrade CREATE INDEX idx_tmp_loc_n_id ON tmp_locale_upgrade (node_id); CREATE INDEX idx_tmp_loc_str_v ON tmp_locale_upgrade (string_value); ---ASSIGN:locale_qname_id=id +--ASSIGN:locale_qname_id=id!-1 SELECT alf_qname.id AS id FROM alf_qname JOIN alf_namespace ON (alf_namespace.id = alf_qname.ns_id) WHERE diff --git a/source/java/org/alfresco/repo/domain/schema/SchemaBootstrap.java b/source/java/org/alfresco/repo/domain/schema/SchemaBootstrap.java index a29e10e4c7..2150226578 100644 --- a/source/java/org/alfresco/repo/domain/schema/SchemaBootstrap.java +++ b/source/java/org/alfresco/repo/domain/schema/SchemaBootstrap.java @@ -1254,6 +1254,7 @@ public class SchemaBootstrap extends AbstractLifecycleBean StringBuilder sb = new StringBuilder(1024); String fetchVarName = null; String fetchColumnName = null; + Object defaultFetchValue = null; boolean doBatch = false; int batchUpperLimit = 0; int batchSize = 1; @@ -1314,13 +1315,18 @@ public class SchemaBootstrap extends AbstractLifecycleBean throw AlfrescoRuntimeException.create(ERR_STATEMENT_VAR_ASSIGNMENT_BEFORE_SQL, (line - 1), scriptUrl); } String assignStr = sql.substring(9, sql.length()); - String[] assigns = assignStr.split("="); + String[] fetchMapping = assignStr.split("!"); + String[] assigns = fetchMapping[0].split("="); if (assigns.length != 2 || assigns[0].length() == 0 || assigns[1].length() == 0) { throw AlfrescoRuntimeException.create(ERR_STATEMENT_VAR_ASSIGNMENT_FORMAT, (line - 1), scriptUrl); } fetchVarName = assigns[0]; fetchColumnName = assigns[1]; + if (fetchMapping.length > 1 && fetchMapping[1].length() > 0) + { + defaultFetchValue = fetchMapping[1]; + } continue; } // Handle looping control @@ -1474,12 +1480,20 @@ public class SchemaBootstrap extends AbstractLifecycleBean Object fetchedVal = executeStatement(connection, sql, fetchColumnName, optional, line, scriptFile); if (fetchVarName != null && fetchColumnName != null) { - varAssignments.put(fetchVarName, fetchedVal); + if (fetchedVal != null) + { + varAssignments.put(fetchVarName, fetchedVal); + } + else + { + varAssignments.put(fetchVarName, defaultFetchValue); + } } } sb.setLength(0); fetchVarName = null; fetchColumnName = null; + defaultFetchValue = null; doBatch = false; batchUpperLimit = 0; batchSize = 1;