diff --git a/base/src/org/compiere/model/MChangeLog.java b/base/src/org/compiere/model/MChangeLog.java index cbdf5ed662..6d1d30e4bb 100644 --- a/base/src/org/compiere/model/MChangeLog.java +++ b/base/src/org/compiere/model/MChangeLog.java @@ -121,6 +121,21 @@ public class MChangeLog extends X_AD_ChangeLog super (ctx, 0, trxName); } // MChangeLog + /** + * Preserved for backward compatibility + *@deprecated + */ + public MChangeLog (Properties ctx, + int AD_ChangeLog_ID, String TrxName, int AD_Session_ID, + int AD_Table_ID, int AD_Column_ID, int Record_ID, + int AD_Client_ID, int AD_Org_ID, + Object OldValue, Object NewValue) + { + this(ctx, AD_ChangeLog_ID, TrxName, AD_Session_ID, AD_Table_ID, + AD_Column_ID, Record_ID, AD_Client_ID, AD_Org_ID, OldValue, + NewValue, (String) null /*event*/ ); + } // MChangeLog + /** * Full Constructor * @param ctx context @@ -139,7 +154,7 @@ public class MChangeLog extends X_AD_ChangeLog int AD_ChangeLog_ID, String TrxName, int AD_Session_ID, int AD_Table_ID, int AD_Column_ID, int Record_ID, int AD_Client_ID, int AD_Org_ID, - Object OldValue, Object NewValue) + Object OldValue, Object NewValue, String event) { this (ctx, 0, TrxName); if (AD_ChangeLog_ID == 0) @@ -160,9 +175,13 @@ public class MChangeLog extends X_AD_ChangeLog // setOldValue (OldValue); setNewValue (NewValue); - // R2.5.2f_2005-09-25 2.5.2f_20050925-2201 - setDescription(Adempiere.MAIN_VERSION + "_" - + Adempiere.DATE_VERSION + " " + Adempiere.getImplementationVersion()); + // EVENT / Release 3.3.1t_2007-12-05 ADempiere + if (event != null) + setDescription(event + " / " + Adempiere.MAIN_VERSION + "_" + + Adempiere.DATE_VERSION + " " + Adempiere.getImplementationVersion()); + else + setDescription(Adempiere.MAIN_VERSION + "_" + + Adempiere.DATE_VERSION + " " + Adempiere.getImplementationVersion()); } // MChangeLog diff --git a/base/src/org/compiere/model/MSession.java b/base/src/org/compiere/model/MSession.java index 7d7ec260d0..9da8b9c27e 100644 --- a/base/src/org/compiere/model/MSession.java +++ b/base/src/org/compiere/model/MSession.java @@ -215,6 +215,20 @@ public class MSession extends X_AD_Session log.info(TimeUtil.formatElapsed(getCreated(), getUpdated())); } // logout + /** + * Preserved for backward compatibility + *@deprecated + */ + public MChangeLog changeLog ( + String TrxName, int AD_ChangeLog_ID, + int AD_Table_ID, int AD_Column_ID, int Record_ID, + int AD_Client_ID, int AD_Org_ID, + Object OldValue, Object NewValue) + { + return changeLog(TrxName, AD_ChangeLog_ID, AD_Table_ID, AD_Column_ID, + Record_ID, AD_Client_ID, AD_Org_ID, OldValue, NewValue, + (String) null); + } // changeLog /** * Create Change Log only if table is logged @@ -233,7 +247,7 @@ public class MSession extends X_AD_Session String TrxName, int AD_ChangeLog_ID, int AD_Table_ID, int AD_Column_ID, int Record_ID, int AD_Client_ID, int AD_Org_ID, - Object OldValue, Object NewValue) + Object OldValue, Object NewValue, String event) { // Null handling if (OldValue == null && NewValue == null) @@ -268,7 +282,7 @@ public class MSession extends X_AD_Session MChangeLog cl = new MChangeLog(getCtx(), AD_ChangeLog_ID, TrxName, getAD_Session_ID(), AD_Table_ID, AD_Column_ID, Record_ID, AD_Client_ID, AD_Org_ID, - OldValue, NewValue); + OldValue, NewValue, event); if (cl.save()) return cl; } diff --git a/base/src/org/compiere/model/PO.java b/base/src/org/compiere/model/PO.java index 4e49b61f1e..4a5754ea0d 100644 --- a/base/src/org/compiere/model/PO.java +++ b/base/src/org/compiere/model/PO.java @@ -2165,11 +2165,11 @@ public abstract class PO oldV = null; if (newV != null && newV == Null.NULL) newV = null; - // + // change log on update MChangeLog cLog = session.changeLog ( m_trxName, AD_ChangeLog_ID, p_info.getAD_Table_ID(), p_info.getColumn(i).AD_Column_ID, - get_ID(), getAD_Client_ID(), getAD_Org_ID(), oldV, newV); + get_ID(), getAD_Client_ID(), getAD_Org_ID(), oldV, newV, "UPDATE"); if (cLog != null) AD_ChangeLog_ID = cLog.getAD_ChangeLog_ID(); } @@ -2296,6 +2296,12 @@ public abstract class PO } lobReset(); + + // Change Log + MSession session = MSession.get (p_ctx, false); + if (session == null) + log.fine("No Session found"); + int AD_ChangeLog_ID = 0; // SQL StringBuffer sqlInsert = new StringBuffer("INSERT INTO "); @@ -2368,6 +2374,25 @@ public abstract class PO log.log(Level.SEVERE, msg, e); throw new DBException(e); // fini } + + // Change Log - Only + if (session != null + && m_IDs.length == 1 + && !p_info.isEncrypted(i) // not encrypted + && !p_info.isVirtualColumn(i) // no virtual column + && !"Password".equals(columnName) + && p_info.getColumn(i).IsKey // log just the key - to log all columns comment this line + ) + { + // change log on new + MChangeLog cLog = session.changeLog ( + m_trxName, AD_ChangeLog_ID, + p_info.getAD_Table_ID(), p_info.getColumn(i).AD_Column_ID, + get_ID(), getAD_Client_ID(), getAD_Org_ID(), null, value, "INSERT"); + if (cLog != null) + AD_ChangeLog_ID = cLog.getAD_ChangeLog_ID(); + } + } // Custom Columns if (m_custom != null) @@ -2625,10 +2650,11 @@ public abstract class PO && !"Password".equals(p_info.getColumnName(i)) ) { + // change log on delete MChangeLog cLog = session.changeLog ( m_trxName != null ? m_trxName : localTrxName, AD_ChangeLog_ID, AD_Table_ID, p_info.getColumn(i).AD_Column_ID, - Record_ID, getAD_Client_ID(), getAD_Org_ID(), value, null); + Record_ID, getAD_Client_ID(), getAD_Org_ID(), value, null, "DELETE"); if (cLog != null) AD_ChangeLog_ID = cLog.getAD_ChangeLog_ID(); }