IDEMPIERE-4858 : Helper process "Make Table a Document" - fixes for t… (#990)

* IDEMPIERE-4858 : Helper process "Make Table a Document" - fixes for translation tables

see details in tickets

* IDEMPIERE-4858 : Helper process "Make Table a Document" - add TableIndex records

* IDEMPIERE-4858 : Helper process "Make Table a Document" - AD_Message / tick IsTranslated on main table

Co-Authored-By: Carlos Ruiz <carg67@gmail.com>

* Delete pr990_PR.txt

commited by error

Co-authored-by: Carlos Ruiz <carg67@gmail.com>
This commit is contained in:
Nicolas Micoud 2021-11-19 17:02:54 +01:00 committed by GitHub
parent ceb056e6d8
commit 2486ff8148
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 60 additions and 5 deletions

View File

@ -0,0 +1,11 @@
SET SQLBLANKLINES ON
SET DEFINE OFF
-- IDEMPIERE-4858 Helper process "Make Table a Document"
-- Nov 19, 2021, 3:18:02 PM CET
INSERT INTO AD_Message (MsgType,MsgText,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,AD_Message_ID,Value,EntityType,AD_Message_UU) VALUES ('I','Table Index records have been added on the Translation table - do not forget to execute ''Index Validate'' process after you run ''Sync Column''',0,0,'Y',TO_DATE('2021-11-19 15:18:01','YYYY-MM-DD HH24:MI:SS'),100,TO_DATE('2021-11-19 15:18:01','YYYY-MM-DD HH24:MI:SS'),100,200721,'TrlCreatedSyncColumnValidateIndex','D','81b87d52-17c3-46cd-bfdf-e08cdfc11851')
;
SELECT register_migration_script('202111191531_IDEMPIERE-4858.sql') FROM dual
;

View File

@ -0,0 +1,8 @@
-- IDEMPIERE-4858 Helper process "Make Table a Document"
-- Nov 19, 2021, 3:18:02 PM CET
INSERT INTO AD_Message (MsgType,MsgText,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,AD_Message_ID,Value,EntityType,AD_Message_UU) VALUES ('I','Table Index records have been added on the Translation table - do not forget to execute ''Index Validate'' process after you run ''Sync Column''',0,0,'Y',TO_TIMESTAMP('2021-11-19 15:18:01','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2021-11-19 15:18:01','YYYY-MM-DD HH24:MI:SS'),100,200721,'TrlCreatedSyncColumnValidateIndex','D','81b87d52-17c3-46cd-bfdf-e08cdfc11851')
;
SELECT register_migration_script('202111191531_IDEMPIERE-4858.sql') FROM dual
;

View File

@ -45,8 +45,10 @@ import java.util.logging.Level;
import org.adempiere.exceptions.AdempiereException; import org.adempiere.exceptions.AdempiereException;
import org.compiere.acct.Doc; import org.compiere.acct.Doc;
import org.compiere.model.MColumn; import org.compiere.model.MColumn;
import org.compiere.model.MIndexColumn;
import org.compiere.model.MProcess; import org.compiere.model.MProcess;
import org.compiere.model.MTable; import org.compiere.model.MTable;
import org.compiere.model.MTableIndex;
import org.compiere.model.M_Element; import org.compiere.model.M_Element;
import org.compiere.model.Query; import org.compiere.model.Query;
import org.compiere.model.X_AD_WF_Node; import org.compiere.model.X_AD_WF_Node;
@ -55,6 +57,7 @@ import org.compiere.process.DocAction;
import org.compiere.process.ProcessInfoParameter; import org.compiere.process.ProcessInfoParameter;
import org.compiere.process.SvrProcess; import org.compiere.process.SvrProcess;
import org.compiere.util.DisplayType; import org.compiere.util.DisplayType;
import org.compiere.util.Msg;
import org.compiere.util.Util; import org.compiere.util.Util;
import org.compiere.wf.MWFNode; import org.compiere.wf.MWFNode;
import org.compiere.wf.MWFNodeNext; import org.compiere.wf.MWFNodeNext;
@ -312,8 +315,9 @@ public class CreateTable extends SvrProcess {
if (p_isCreateTranslationTable) { if (p_isCreateTranslationTable) {
MTable tableTrl = createTable(true); MTable tableTrl = createTable(true);
int colElementID = 0;
if (elementID != null) if (elementID != null)
createColumn(tableTrl, elementID.getColumnName()); // <TableName>_ID (ID of parent table) colElementID = createColumn(tableTrl, elementID.getColumnName()); // <TableName>_ID (ID of parent table)
M_Element elementTrlUU = M_Element.get(getCtx(), tableTrl.getTableName() + "_UU"); M_Element elementTrlUU = M_Element.get(getCtx(), tableTrl.getTableName() + "_UU");
if (elementTrlUU == null) { if (elementTrlUU == null) {
@ -322,9 +326,14 @@ public class CreateTable extends SvrProcess {
} }
createColumn(tableTrl, elementTrlUU.getColumnName()); // <TableName>_Trl_UU createColumn(tableTrl, elementTrlUU.getColumnName()); // <TableName>_Trl_UU
createColumn(tableTrl, "AD_Language"); int colLanguageID = createColumn(tableTrl, "AD_Language");
createColumn(tableTrl, "IsTranslated"); createColumn(tableTrl, "IsTranslated");
for (MColumn column : MTable.get(getCtx(), p_tableName).getColumns(false)) {
if (column.isTranslated())
createColumn(tableTrl, column.getColumnName());
}
if (p_isCreateColName) if (p_isCreateColName)
createColumn(tableTrl, "Name"); createColumn(tableTrl, "Name");
if (p_isCreateColDescription) if (p_isCreateColDescription)
@ -332,6 +341,19 @@ public class CreateTable extends SvrProcess {
if (p_isCreateColHelp) if (p_isCreateColHelp)
createColumn(tableTrl, "Help"); createColumn(tableTrl, "Help");
// Index
MTableIndex ti = new MTableIndex(tableTrl, tableTrl.getTableName() + "_pkey");
ti.setIsCreateConstraint(true);
ti.setIsUnique(true);
ti.setIsKey(true);
ti.saveEx();
MIndexColumn ic = new MIndexColumn(ti, new MColumn(getCtx(), colLanguageID, get_TrxName()), 1);
ic.saveEx();
ic = new MIndexColumn(ti, new MColumn(getCtx(), colElementID, get_TrxName()), 2);
ic.saveEx();
addLog(Msg.getMsg(getCtx(), "TrlCreatedSyncColumnValidateIndex"));
} }
return "@ProcessOK@"; return "@ProcessOK@";
@ -405,9 +427,20 @@ public class CreateTable extends SvrProcess {
* @param table * @param table
* @param columnName * @param columnName
*/ */
private void createColumn(MTable table, String columnName) { private int createColumn(MTable table, String columnName) {
if (getColumn(table, columnName) != null) MColumn columnThatExists = getColumn(table, columnName);
return; if (columnThatExists != null) {
if ( p_isCreateTranslationTable
&& !columnThatExists.isTranslated()
&& !table.getTableName().toUpperCase().endsWith("_TRL")
&& ( (p_isCreateColName && columnName.equals("Name"))
|| (p_isCreateColHelp && columnName.equals("Help"))
|| (p_isCreateColDescription && columnName.equals("Description")))) {
columnThatExists.setIsTranslated(true);
columnThatExists.saveEx();
}
return -1;
}
MColumn column = new MColumn(table); MColumn column = new MColumn(table);
@ -571,9 +604,11 @@ public class CreateTable extends SvrProcess {
column.setAD_Reference_ID(DisplayType.Search); column.setAD_Reference_ID(DisplayType.Search);
column.setIsParent(true); column.setIsParent(true);
column.setIsMandatory(true); column.setIsMandatory(true);
column.setFKConstraintType(MColumn.FKCONSTRAINTTYPE_Cascade);
} }
column.saveEx(); column.saveEx();
return column.getAD_Column_ID();
} }
/** /**

View File

@ -62,6 +62,7 @@ public class MIndexColumn extends X_AD_IndexColumn {
setAD_TableIndex_ID(parent.getAD_TableIndex_ID()); setAD_TableIndex_ID(parent.getAD_TableIndex_ID());
setAD_Column_ID(column.getAD_Column_ID()); setAD_Column_ID(column.getAD_Column_ID());
setSeqNo(seqNo); setSeqNo(seqNo);
setEntityType(parent.getEntityType());
} }
/** /**