diff --git a/migration/iD11/oracle/202305020844_IDEMPIERE-5697.sql b/migration/iD11/oracle/202305020844_IDEMPIERE-5697.sql new file mode 100644 index 0000000000..16fd2b9f1d --- /dev/null +++ b/migration/iD11/oracle/202305020844_IDEMPIERE-5697.sql @@ -0,0 +1,91 @@ +-- IDEMPIERE-5697 +-- add PInstanceLogType to AD_PInstance_Log +SELECT register_migration_script('202305020844_IDEMPIERE-5697.sql') FROM dual; + +SET SQLBLANKLINES ON +SET DEFINE OFF + +-- May 2, 2023, 8:44:21 AM CEST +INSERT INTO AD_Element (AD_Element_ID,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,ColumnName,Name,Description,PrintName,EntityType,AD_Element_UU) VALUES (203809,0,0,'Y',TO_TIMESTAMP('2023-05-02 08:44:21','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2023-05-02 08:44:21','YYYY-MM-DD HH24:MI:SS'),100,'PInstanceLogType','Log Type','Process Audit Log Type','Log Type','D','7925b5b3-a3ae-434c-9d72-f9f55f97c44e') +; + +-- May 2, 2023, 8:45:02 AM CEST +INSERT INTO AD_Reference (AD_Reference_ID,Name,ValidationType,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,EntityType,IsOrderByValue,AD_Reference_UU,ShowInactive) VALUES (200242,'AD_PInstance PInstanceLogType','L',0,0,'Y',TO_TIMESTAMP('2023-05-02 08:45:02','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2023-05-02 08:45:02','YYYY-MM-DD HH24:MI:SS'),100,'D','N','6a5f9e08-d4c5-4724-a9dc-8e981e734eaa','N') +; + +-- May 2, 2023, 8:46:13 AM CEST +INSERT INTO AD_Ref_List (AD_Ref_List_ID,Name,Description,AD_Reference_ID,Value,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,EntityType,AD_Ref_List_UU) VALUES (200637,'Status','Shows the current status of a process metric, e.g. progress in percents.',200242,'S',0,0,'Y',TO_TIMESTAMP('2023-05-02 08:46:13','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2023-05-02 08:46:13','YYYY-MM-DD HH24:MI:SS'),100,'D','c168a678-1b2b-4fe2-9270-8aeb29b635c3') +; + +-- May 2, 2023, 8:47:11 AM CEST +INSERT INTO AD_Ref_List (AD_Ref_List_ID,Name,Description,AD_Reference_ID,Value,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,EntityType,AD_Ref_List_UU) VALUES (200638,'Progress','Logs, that are created continuously during the execution of the process.',200242,'P',0,0,'Y',TO_TIMESTAMP('2023-05-02 08:47:11','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2023-05-02 08:47:11','YYYY-MM-DD HH24:MI:SS'),100,'D','2cc965b7-abf2-413a-930e-eff43afd5f81') +; + +-- May 2, 2023, 8:47:50 AM CEST +INSERT INTO AD_Ref_List (AD_Ref_List_ID,Name,Description,AD_Reference_ID,Value,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,EntityType,AD_Ref_List_UU) VALUES (200639,'Result','Logs created after the process is executed.',200242,'R',0,0,'Y',TO_TIMESTAMP('2023-05-02 08:47:49','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2023-05-02 08:47:49','YYYY-MM-DD HH24:MI:SS'),100,'D','aadce9f4-214c-4c52-b89d-d2696649172b') +; + +-- May 2, 2023, 8:47:56 AM CEST +UPDATE AD_Ref_List SET Description='Logs created continuously during the execution of the process.',Updated=TO_TIMESTAMP('2023-05-02 08:47:56','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Ref_List_ID=200638 +; + +-- May 2, 2023, 8:48:39 AM CEST +UPDATE AD_Reference SET Name='AD_PInstance_Log PInstanceLogType',Updated=TO_TIMESTAMP('2023-05-02 08:48:39','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Reference_ID=200242 +; + +-- May 2, 2023, 8:49:30 AM CEST +INSERT INTO AD_Column (AD_Column_ID,Version,Name,Description,AD_Table_ID,ColumnName,FieldLength,IsKey,IsParent,IsMandatory,IsTranslated,IsIdentifier,SeqNo,IsEncrypted,AD_Reference_ID,AD_Reference_Value_ID,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,AD_Element_ID,IsUpdateable,IsSelectionColumn,EntityType,IsSyncDatabase,IsAlwaysUpdateable,IsAutocomplete,IsAllowLogging,AD_Column_UU,IsAllowCopy,SeqNoSelection,IsToolbarButton,IsSecure,IsHtml) VALUES (215837,0,'Log Type','Process Audit Log Type',578,'PInstanceLogType',3,'N','N','N','N','N',0,'N',17,200242,0,0,'Y',TO_TIMESTAMP('2023-05-02 08:49:30','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2023-05-02 08:49:30','YYYY-MM-DD HH24:MI:SS'),100,203809,'Y','N','D','N','N','N','Y','066ccbf0-3e44-407a-bdc0-d8b0ae888998','Y',0,'N','N','N') +; + +-- May 2, 2023, 8:49:50 AM CEST +INSERT INTO AD_Field (AD_Field_ID,Name,Description,AD_Tab_ID,AD_Column_ID,IsDisplayed,DisplayLength,SeqNo,IsSameLine,IsHeading,IsFieldOnly,IsEncrypted,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,IsReadOnly,IsCentrallyMaintained,EntityType,AD_Field_UU,IsDisplayedGrid,SeqNoGrid,ColumnSpan) VALUES (207622,'Log Type','Process Audit Log Type',665,215837,'Y',3,90,'N','N','N','N',0,0,'Y',TO_TIMESTAMP('2023-05-02 08:49:50','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2023-05-02 08:49:50','YYYY-MM-DD HH24:MI:SS'),100,'N','Y','D','ba79279a-3101-45e7-86f5-17b6ef3991d5','Y',90,2) +; + +-- May 2, 2023, 9:10:25 AM CEST +ALTER TABLE AD_PInstance_Log ADD PInstanceLogType VARCHAR2(3 CHAR) DEFAULT 'R' +; + +-- May 15, 2023, 10:36:39 AM CEST +UPDATE AD_Column SET IsKey='N',Updated=TO_TIMESTAMP('2023-05-15 10:36:39','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Column_ID=8779 +; + +-- May 15, 2023, 10:42:19 AM CEST +UPDATE AD_Column SET AD_Reference_ID=11,Updated=TO_TIMESTAMP('2023-05-15 10:42:19','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Column_ID=8779 +; + +-- May 15, 2023, 10:49:33 AM CEST +UPDATE AD_TableIndex SET Name='ad_pinstance_log_uu', IsKey='Y',Updated=TO_TIMESTAMP('2023-05-15 10:49:33','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_TableIndex_ID=200138 +; + +-- May 15, 2023, 10:49:54 AM CEST +ALTER TABLE AD_PInstance_Log DROP CONSTRAINT ad_pinstance_log_uu_idx CASCADE +; + +-- May 15, 2023, 10:49:54 AM CEST +ALTER TABLE AD_PInstance_Log DROP PRIMARY KEY +; + +-- May 15, 2023, 10:50:19 AM CEST +ALTER TABLE AD_PInstance_Log ADD CONSTRAINT ad_pinstance_log_uu PRIMARY KEY (AD_PInstance_Log_UU) +; + +-- May 15, 2023, 3:03:52 PM CEST +INSERT INTO AD_TableIndex (AD_Client_ID,AD_Org_ID,AD_TableIndex_ID,AD_TableIndex_UU,Created,CreatedBy,EntityType,IsActive,Name,Updated,UpdatedBy,AD_Table_ID,IsCreateConstraint,IsUnique,Processing,IsKey) VALUES (0,0,201246,'f348e791-5d5e-40f2-89bd-7f8be0850217',TO_TIMESTAMP('2023-05-15 15:03:52','YYYY-MM-DD HH24:MI:SS'),100,'D','Y','ad_pinstance_id_log_id',TO_TIMESTAMP('2023-05-15 15:03:52','YYYY-MM-DD HH24:MI:SS'),100,578,'Y','Y','N','N') +; + +-- May 15, 2023, 3:04:03 PM CEST +INSERT INTO AD_IndexColumn (AD_Client_ID,AD_Org_ID,AD_IndexColumn_ID,AD_IndexColumn_UU,Created,CreatedBy,EntityType,IsActive,Updated,UpdatedBy,AD_Column_ID,AD_TableIndex_ID,SeqNo) VALUES (0,0,201684,'ecebad1f-2b24-4cae-afbf-dfed57ed4071',TO_TIMESTAMP('2023-05-15 15:04:03','YYYY-MM-DD HH24:MI:SS'),100,'D','Y',TO_TIMESTAMP('2023-05-15 15:04:03','YYYY-MM-DD HH24:MI:SS'),100,8780,201246,10) +; + +-- May 15, 2023, 3:04:08 PM CEST +INSERT INTO AD_IndexColumn (AD_Client_ID,AD_Org_ID,AD_IndexColumn_ID,AD_IndexColumn_UU,Created,CreatedBy,EntityType,IsActive,Updated,UpdatedBy,AD_Column_ID,AD_TableIndex_ID,SeqNo) VALUES (0,0,201685,'b83c67d5-260d-4b8a-9978-3bd823ecedb5',TO_TIMESTAMP('2023-05-15 15:04:07','YYYY-MM-DD HH24:MI:SS'),100,'D','Y',TO_TIMESTAMP('2023-05-15 15:04:07','YYYY-MM-DD HH24:MI:SS'),100,8779,201246,20) +; + +-- May 15, 2023, 3:04:13 PM CEST +ALTER TABLE AD_PInstance_Log ADD CONSTRAINT ad_pinstance_id_log_id UNIQUE (AD_PInstance_ID,Log_ID) +; + +-- May 29, 2023, 12:06:17 PM CEST +UPDATE AD_Column SET DefaultValue='R',Updated=TO_TIMESTAMP('2023-05-29 12:06:17','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Column_ID=215837 +; + diff --git a/migration/iD11/postgresql/202305020844_IDEMPIERE-5697.sql b/migration/iD11/postgresql/202305020844_IDEMPIERE-5697.sql new file mode 100644 index 0000000000..2666996b36 --- /dev/null +++ b/migration/iD11/postgresql/202305020844_IDEMPIERE-5697.sql @@ -0,0 +1,88 @@ +-- IDEMPIERE-5697 +-- add PInstanceLogType to AD_PInstance_Log +SELECT register_migration_script('202305020844_IDEMPIERE-5697.sql') FROM dual; + +-- May 2, 2023, 8:44:21 AM CEST +INSERT INTO AD_Element (AD_Element_ID,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,ColumnName,Name,Description,PrintName,EntityType,AD_Element_UU) VALUES (203809,0,0,'Y',TO_TIMESTAMP('2023-05-02 08:44:21','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2023-05-02 08:44:21','YYYY-MM-DD HH24:MI:SS'),100,'PInstanceLogType','Log Type','Process Audit Log Type','Log Type','D','7925b5b3-a3ae-434c-9d72-f9f55f97c44e') +; + +-- May 2, 2023, 8:45:02 AM CEST +INSERT INTO AD_Reference (AD_Reference_ID,Name,ValidationType,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,EntityType,IsOrderByValue,AD_Reference_UU,ShowInactive) VALUES (200242,'AD_PInstance PInstanceLogType','L',0,0,'Y',TO_TIMESTAMP('2023-05-02 08:45:02','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2023-05-02 08:45:02','YYYY-MM-DD HH24:MI:SS'),100,'D','N','6a5f9e08-d4c5-4724-a9dc-8e981e734eaa','N') +; + +-- May 2, 2023, 8:46:13 AM CEST +INSERT INTO AD_Ref_List (AD_Ref_List_ID,Name,Description,AD_Reference_ID,Value,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,EntityType,AD_Ref_List_UU) VALUES (200637,'Status','Shows the current status of a process metric, e.g. progress in percents.',200242,'S',0,0,'Y',TO_TIMESTAMP('2023-05-02 08:46:13','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2023-05-02 08:46:13','YYYY-MM-DD HH24:MI:SS'),100,'D','c168a678-1b2b-4fe2-9270-8aeb29b635c3') +; + +-- May 2, 2023, 8:47:11 AM CEST +INSERT INTO AD_Ref_List (AD_Ref_List_ID,Name,Description,AD_Reference_ID,Value,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,EntityType,AD_Ref_List_UU) VALUES (200638,'Progress','Logs, that are created continuously during the execution of the process.',200242,'P',0,0,'Y',TO_TIMESTAMP('2023-05-02 08:47:11','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2023-05-02 08:47:11','YYYY-MM-DD HH24:MI:SS'),100,'D','2cc965b7-abf2-413a-930e-eff43afd5f81') +; + +-- May 2, 2023, 8:47:50 AM CEST +INSERT INTO AD_Ref_List (AD_Ref_List_ID,Name,Description,AD_Reference_ID,Value,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,EntityType,AD_Ref_List_UU) VALUES (200639,'Result','Logs created after the process is executed.',200242,'R',0,0,'Y',TO_TIMESTAMP('2023-05-02 08:47:49','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2023-05-02 08:47:49','YYYY-MM-DD HH24:MI:SS'),100,'D','aadce9f4-214c-4c52-b89d-d2696649172b') +; + +-- May 2, 2023, 8:47:56 AM CEST +UPDATE AD_Ref_List SET Description='Logs created continuously during the execution of the process.',Updated=TO_TIMESTAMP('2023-05-02 08:47:56','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Ref_List_ID=200638 +; + +-- May 2, 2023, 8:48:39 AM CEST +UPDATE AD_Reference SET Name='AD_PInstance_Log PInstanceLogType',Updated=TO_TIMESTAMP('2023-05-02 08:48:39','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Reference_ID=200242 +; + +-- May 2, 2023, 8:49:30 AM CEST +INSERT INTO AD_Column (AD_Column_ID,Version,Name,Description,AD_Table_ID,ColumnName,FieldLength,IsKey,IsParent,IsMandatory,IsTranslated,IsIdentifier,SeqNo,IsEncrypted,AD_Reference_ID,AD_Reference_Value_ID,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,AD_Element_ID,IsUpdateable,IsSelectionColumn,EntityType,IsSyncDatabase,IsAlwaysUpdateable,IsAutocomplete,IsAllowLogging,AD_Column_UU,IsAllowCopy,SeqNoSelection,IsToolbarButton,IsSecure,IsHtml) VALUES (215837,0,'Log Type','Process Audit Log Type',578,'PInstanceLogType',3,'N','N','N','N','N',0,'N',17,200242,0,0,'Y',TO_TIMESTAMP('2023-05-02 08:49:30','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2023-05-02 08:49:30','YYYY-MM-DD HH24:MI:SS'),100,203809,'Y','N','D','N','N','N','Y','066ccbf0-3e44-407a-bdc0-d8b0ae888998','Y',0,'N','N','N') +; + +-- May 2, 2023, 8:49:50 AM CEST +INSERT INTO AD_Field (AD_Field_ID,Name,Description,AD_Tab_ID,AD_Column_ID,IsDisplayed,DisplayLength,SeqNo,IsSameLine,IsHeading,IsFieldOnly,IsEncrypted,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,IsReadOnly,IsCentrallyMaintained,EntityType,AD_Field_UU,IsDisplayedGrid,SeqNoGrid,ColumnSpan) VALUES (207622,'Log Type','Process Audit Log Type',665,215837,'Y',3,90,'N','N','N','N',0,0,'Y',TO_TIMESTAMP('2023-05-02 08:49:50','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2023-05-02 08:49:50','YYYY-MM-DD HH24:MI:SS'),100,'N','Y','D','ba79279a-3101-45e7-86f5-17b6ef3991d5','Y',90,2) +; + +-- May 2, 2023, 9:10:25 AM CEST +ALTER TABLE AD_PInstance_Log ADD COLUMN PInstanceLogType VARCHAR(3) DEFAULT 'R' +; + +-- May 15, 2023, 10:36:39 AM CEST +UPDATE AD_Column SET IsKey='N',Updated=TO_TIMESTAMP('2023-05-15 10:36:39','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Column_ID=8779 +; + +-- May 15, 2023, 10:42:19 AM CEST +UPDATE AD_Column SET AD_Reference_ID=11,Updated=TO_TIMESTAMP('2023-05-15 10:42:19','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Column_ID=8779 +; + +-- May 15, 2023, 10:49:33 AM CEST +UPDATE AD_TableIndex SET Name='ad_pinstance_log_uu', IsKey='Y',Updated=TO_TIMESTAMP('2023-05-15 10:49:33','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_TableIndex_ID=200138 +; + +-- May 15, 2023, 10:49:54 AM CEST +ALTER TABLE AD_PInstance_Log DROP CONSTRAINT ad_pinstance_log_uu_idx CASCADE +; + +-- May 15, 2023, 10:49:54 AM CEST +ALTER TABLE AD_PInstance_Log DROP CONSTRAINT ad_pinstance_log_pkey CASCADE +; + +-- May 15, 2023, 10:50:19 AM CEST +ALTER TABLE AD_PInstance_Log ADD CONSTRAINT ad_pinstance_log_uu PRIMARY KEY (AD_PInstance_Log_UU) +; + +-- May 15, 2023, 3:03:52 PM CEST +INSERT INTO AD_TableIndex (AD_Client_ID,AD_Org_ID,AD_TableIndex_ID,AD_TableIndex_UU,Created,CreatedBy,EntityType,IsActive,Name,Updated,UpdatedBy,AD_Table_ID,IsCreateConstraint,IsUnique,Processing,IsKey) VALUES (0,0,201246,'f348e791-5d5e-40f2-89bd-7f8be0850217',TO_TIMESTAMP('2023-05-15 15:03:52','YYYY-MM-DD HH24:MI:SS'),100,'D','Y','ad_pinstance_id_log_id',TO_TIMESTAMP('2023-05-15 15:03:52','YYYY-MM-DD HH24:MI:SS'),100,578,'Y','Y','N','N') +; + +-- May 15, 2023, 3:04:03 PM CEST +INSERT INTO AD_IndexColumn (AD_Client_ID,AD_Org_ID,AD_IndexColumn_ID,AD_IndexColumn_UU,Created,CreatedBy,EntityType,IsActive,Updated,UpdatedBy,AD_Column_ID,AD_TableIndex_ID,SeqNo) VALUES (0,0,201684,'ecebad1f-2b24-4cae-afbf-dfed57ed4071',TO_TIMESTAMP('2023-05-15 15:04:03','YYYY-MM-DD HH24:MI:SS'),100,'D','Y',TO_TIMESTAMP('2023-05-15 15:04:03','YYYY-MM-DD HH24:MI:SS'),100,8780,201246,10) +; + +-- May 15, 2023, 3:04:08 PM CEST +INSERT INTO AD_IndexColumn (AD_Client_ID,AD_Org_ID,AD_IndexColumn_ID,AD_IndexColumn_UU,Created,CreatedBy,EntityType,IsActive,Updated,UpdatedBy,AD_Column_ID,AD_TableIndex_ID,SeqNo) VALUES (0,0,201685,'b83c67d5-260d-4b8a-9978-3bd823ecedb5',TO_TIMESTAMP('2023-05-15 15:04:07','YYYY-MM-DD HH24:MI:SS'),100,'D','Y',TO_TIMESTAMP('2023-05-15 15:04:07','YYYY-MM-DD HH24:MI:SS'),100,8779,201246,20) +; + +-- May 15, 2023, 3:04:13 PM CEST +ALTER TABLE AD_PInstance_Log ADD CONSTRAINT ad_pinstance_id_log_id UNIQUE (AD_PInstance_ID,Log_ID) +; + +-- May 29, 2023, 12:06:17 PM CEST +UPDATE AD_Column SET DefaultValue='R',Updated=TO_TIMESTAMP('2023-05-29 12:06:17','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Column_ID=215837 +; + diff --git a/org.adempiere.base/src/org/compiere/model/I_AD_PInstance_Log.java b/org.adempiere.base/src/org/compiere/model/I_AD_PInstance_Log.java index 1761c595d1..9225df4449 100644 --- a/org.adempiere.base/src/org/compiere/model/I_AD_PInstance_Log.java +++ b/org.adempiere.base/src/org/compiere/model/I_AD_PInstance_Log.java @@ -89,6 +89,19 @@ public interface I_AD_PInstance_Log /** Get Log */ public int getLog_ID(); + /** Column name PInstanceLogType */ + public static final String COLUMNNAME_PInstanceLogType = "PInstanceLogType"; + + /** Set Log Type. + * Process Audit Log Type + */ + public void setPInstanceLogType (String PInstanceLogType); + + /** Get Log Type. + * Process Audit Log Type + */ + public String getPInstanceLogType(); + /** Column name P_Date */ public static final String COLUMNNAME_P_Date = "P_Date"; diff --git a/org.adempiere.base/src/org/compiere/model/MPInstanceLog.java b/org.adempiere.base/src/org/compiere/model/MPInstanceLog.java index 32f15cf651..bab8a4fad4 100644 --- a/org.adempiere.base/src/org/compiere/model/MPInstanceLog.java +++ b/org.adempiere.base/src/org/compiere/model/MPInstanceLog.java @@ -20,10 +20,12 @@ import java.math.BigDecimal; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Timestamp; +import java.util.ArrayList; import java.util.UUID; import org.compiere.util.DB; import org.compiere.util.Env; +import org.compiere.util.Util; /** * Process Instance Log Model. @@ -46,11 +48,11 @@ public class MPInstanceLog public MPInstanceLog (int AD_PInstance_ID, int Log_ID, Timestamp P_Date, int P_ID, BigDecimal P_Number, String P_Msg) { - this(AD_PInstance_ID, Log_ID, P_Date, P_ID, P_Number, P_Msg, 0, 0); + this(AD_PInstance_ID, Log_ID, P_Date, P_ID, P_Number, P_Msg, 0, 0, X_AD_PInstance_Log.PINSTANCELOGTYPE_Result); } // MPInstance_Log /** - * Full Constructor + * Constructor without PInstanceLogType * @param AD_PInstance_ID * @param Log_ID * @param P_Date @@ -62,6 +64,43 @@ public class MPInstanceLog */ public MPInstanceLog (int AD_PInstance_ID, int Log_ID, Timestamp P_Date, int P_ID, BigDecimal P_Number, String P_Msg, int AD_Table_ID, int Record_ID) + { + this(AD_PInstance_ID, Log_ID, P_Date, P_ID, P_Number, P_Msg, AD_Table_ID, Record_ID, X_AD_PInstance_Log.PINSTANCELOGTYPE_Result); + } // MPInstance_Log + + /** + * Constructor without AD_PInstance_Log_UU + * @param AD_PInstance_ID + * @param Log_ID + * @param P_Date + * @param P_ID + * @param P_Number + * @param P_Msg + * @param AD_Table_ID + * @param Record_ID + * @param PInstanceLogType Log Type + */ + public MPInstanceLog (int AD_PInstance_ID, int Log_ID, Timestamp P_Date, + int P_ID, BigDecimal P_Number, String P_Msg, int AD_Table_ID, int Record_ID, String PInstanceLogType) + { + this("", AD_PInstance_ID, Log_ID, P_Date, P_ID, P_Number, P_Msg, AD_Table_ID, Record_ID, PInstanceLogType); + } + + /** + * Full Constructor + * @param AD_PInstance_Log_UU + * @param AD_PInstance_ID + * @param Log_ID + * @param P_Date + * @param P_ID + * @param P_Number + * @param P_Msg + * @param AD_Table_ID + * @param Record_ID + * @param PInstanceLogType Log Type + */ + public MPInstanceLog (String AD_PInstance_Log_UU, int AD_PInstance_ID, int Log_ID, Timestamp P_Date, + int P_ID, BigDecimal P_Number, String P_Msg, int AD_Table_ID, int Record_ID, String PInstanceLogType) { setAD_PInstance_ID(AD_PInstance_ID); setLog_ID(Log_ID); @@ -71,6 +110,9 @@ public class MPInstanceLog setP_Msg(P_Msg); setAD_Table_ID(AD_Table_ID); setRecord_ID(Record_ID); + setPInstanceLogType(PInstanceLogType); + if(!Util.isEmpty(AD_PInstance_Log_UU)) + setAD_PInstance_Log_UU(AD_PInstance_Log_UU); } // MPInstance_Log /** @@ -97,6 +139,8 @@ public class MPInstanceLog private String m_P_Msg; private int m_AD_Table_ID; private int m_Record_ID; + private String m_PInstanceLogType; + private String m_AD_PInstance_Log_UU; /** @@ -121,8 +165,18 @@ public class MPInstanceLog private final static String insertSql = "INSERT INTO AD_PInstance_Log " - + "(AD_PInstance_ID, Log_ID, P_Date, P_ID, P_Number, P_Msg, AD_Table_ID, Record_ID, AD_PInstance_Log_UU)" - + " VALUES (?,?,?,?,?,?,?,?,?)"; + + "(AD_PInstance_ID, Log_ID, P_Date, P_ID, P_Number, P_Msg, AD_Table_ID, Record_ID, AD_PInstance_Log_UU, PInstanceLogType)" + + " VALUES (?,?,?,?,?,?,?,?,?,?) "; + + private final static String updateSql = "UPDATE AD_PInstance_Log " + + " SET P_Date = ?, " + + " P_ID = ?, " + + " P_Number = ?, " + + " P_Msg = ?, " + + " AD_Table_ID = ?, " + + " Record_ID = ?, " + + " PInstanceLogType = ? " + + " WHERE AD_PInstance_Log_UU = ? "; /** * Save to Database @@ -130,7 +184,7 @@ public class MPInstanceLog */ public boolean save () { - int no = DB.executeUpdate(insertSql, getInsertParams(), false, null); // outside of trx + int no = DB.executeUpdate(insertSql, getParams(true), false, null); // outside of trx return no == 1; } // save @@ -139,35 +193,70 @@ public class MPInstanceLog */ public void saveEx () { - DB.executeUpdateEx(insertSql, getInsertParams(), null); // outside of trx + DB.executeUpdateEx(insertSql, getParams(true), null); // outside of trx } // saveEx - private Object[] getInsertParams() { + /** + * Update record in Database + * @return true if saved + */ + public boolean update () + { + int no = DB.executeUpdate(updateSql, getParams(false), false, null); // outside of trx + return no == 1; + } // update + + /** + * Update record in Database, throwing Exception + */ + public void updateEx () + { + DB.executeUpdateEx(updateSql, getParams(false), null); // outside of trx + } // updateEx + + /** + * Get parameters for SQL INSERT or UPDATE + * @param isInsert - if true, get parameters for INSERT, else get parameters for UPDATE + * @return Object[] parameters + */ + private Object[] getParams(boolean isInsert) { MColumn colMsg = MColumn.get(Env.getCtx(), I_AD_PInstance_Log.Table_Name, I_AD_PInstance_Log.COLUMNNAME_P_Msg); int maxMsgLength = colMsg.getFieldLength(); - Object[] params = new Object[9]; - params[0] = m_AD_PInstance_ID; - params[1] = m_Log_ID; - if (m_P_Date != null) - params[2] = m_P_Date; - if (m_P_ID != 0) - params[3] = m_P_ID; - if (m_P_Number != null) - params[4] = m_P_Number; - if (m_P_Msg != null) { - if (m_P_Msg.length() > maxMsgLength) - params[5] = m_P_Msg.substring(0, maxMsgLength); - else - params[5] = m_P_Msg; + ArrayList params = new ArrayList (); + + + if(isInsert) { + params.add(m_AD_PInstance_ID); + params.add(m_Log_ID); } - if (m_AD_Table_ID != 0) - params[6] = m_AD_Table_ID; - if (m_Record_ID != 0) - params[7] = m_Record_ID; - params[8] = UUID.randomUUID().toString(); - return params; - } - + params.add(m_P_Date != null ? m_P_Date : null); + + params.add(m_P_ID != 0 ? m_P_ID : null); + + params.add(m_P_Number != null ? m_P_Number : null); + + if (m_P_Msg != null) { + params.add(m_P_Msg.length() > maxMsgLength ? m_P_Msg.substring(0, maxMsgLength) : m_P_Msg); + } + else { + params.add(null); + } + + params.add(m_AD_Table_ID != 0 ? m_AD_Table_ID : null); + + params.add(m_Record_ID != 0 ? m_Record_ID : null); + + if(isInsert) + params.add(getAD_PInstance_Log_UU()); + + params.add(m_PInstanceLogType); + + if(!isInsert) + params.add(getAD_PInstance_Log_UU()); + + return params.toArray(); + } // getParams + /** * Get AD_PInstance_ID * @return Instance id @@ -312,4 +401,38 @@ public class MPInstanceLog m_Record_ID = recordId; } + /** + * Get Log Type + * @return Log Type + */ + public String getPInstanceLogType() { + return m_PInstanceLogType; + } + + /** + * Set Log Type + * @param m_PInstanceLogType + */ + public void setPInstanceLogType(String m_PInstanceLogType) { + this.m_PInstanceLogType = m_PInstanceLogType; + } + + /** + * Set AD_PInstance_Log_UU + * @return Sting AD_PInstance_Log_UU + */ + public String getAD_PInstance_Log_UU() { + if(Util.isEmpty(m_AD_PInstance_Log_UU)) + m_AD_PInstance_Log_UU = UUID.randomUUID().toString(); + return m_AD_PInstance_Log_UU; + } + + /** + * Get AD_PInstance_Log_UU + * @param m_AD_PInstance_Log_UU + */ + public void setAD_PInstance_Log_UU(String m_AD_PInstance_Log_UU) { + this.m_AD_PInstance_Log_UU = m_AD_PInstance_Log_UU; + } + } // MPInstance_Log diff --git a/org.adempiere.base/src/org/compiere/model/X_AD_PInstance_Log.java b/org.adempiere.base/src/org/compiere/model/X_AD_PInstance_Log.java index da8d010d09..a00568c36f 100644 --- a/org.adempiere.base/src/org/compiere/model/X_AD_PInstance_Log.java +++ b/org.adempiere.base/src/org/compiere/model/X_AD_PInstance_Log.java @@ -33,7 +33,7 @@ public class X_AD_PInstance_Log extends PO implements I_AD_PInstance_Log, I_Pers /** * */ - private static final long serialVersionUID = 20230409L; + private static final long serialVersionUID = 20230515L; /** Standard Constructor */ public X_AD_PInstance_Log (Properties ctx, int AD_PInstance_Log_ID, String trxName) @@ -103,7 +103,8 @@ public class X_AD_PInstance_Log extends PO implements I_AD_PInstance_Log, I_Pers public String toString() { StringBuilder sb = new StringBuilder ("X_AD_PInstance_Log[") - .append(get_ID()).append("]"); + .append(get_ID()).append(", ") + .append(get_UUID()).append("]"); return sb.toString(); } @@ -199,6 +200,31 @@ public class X_AD_PInstance_Log extends PO implements I_AD_PInstance_Log, I_Pers return ii.intValue(); } + /** PInstanceLogType AD_Reference_ID=200242 */ + public static final int PINSTANCELOGTYPE_AD_Reference_ID=200242; + /** Progress = P */ + public static final String PINSTANCELOGTYPE_Progress = "P"; + /** Result = R */ + public static final String PINSTANCELOGTYPE_Result = "R"; + /** Status = S */ + public static final String PINSTANCELOGTYPE_Status = "S"; + /** Set Log Type. + @param PInstanceLogType Process Audit Log Type + */ + public void setPInstanceLogType (String PInstanceLogType) + { + + set_Value (COLUMNNAME_PInstanceLogType, PInstanceLogType); + } + + /** Get Log Type. + @return Process Audit Log Type + */ + public String getPInstanceLogType() + { + return (String)get_Value(COLUMNNAME_PInstanceLogType); + } + /** Set Process Date. @param P_Date Process Parameter */ diff --git a/org.adempiere.base/src/org/compiere/process/ProcessInfo.java b/org.adempiere.base/src/org/compiere/process/ProcessInfo.java index 68e9d410ec..540d2bebd7 100644 --- a/org.adempiere.base/src/org/compiere/process/ProcessInfo.java +++ b/org.adempiere.base/src/org/compiere/process/ProcessInfo.java @@ -26,12 +26,14 @@ import java.util.List; import org.adempiere.util.IProcessUI; import org.compiere.model.MPInstance; +import org.compiere.model.MPInstanceLog; import org.compiere.model.MPInstancePara; import org.compiere.model.MProcess; import org.compiere.model.MSession; import org.compiere.model.MSysConfig; import org.compiere.model.PO; import org.compiere.model.Query; +import org.compiere.model.X_AD_PInstance_Log; import org.compiere.util.CLogger; import org.compiere.util.DisplayType; import org.compiere.util.Env; @@ -691,6 +693,90 @@ public class ProcessInfo implements Serializable return logs; } // getLogs + /** + * Save Status Log to DB immediately + * @param P_ID Process ID + * @param P_Date Process Date + * @param P_Number Process Number + * @param P_Msg Process Message + * @return String AD_PInstance_Log_UU + */ + public String saveStatus (int P_ID, Timestamp P_Date, BigDecimal P_Number, String P_Msg) + { + return saveLog (new ProcessInfoLog (P_ID, P_Date, P_Number, P_Msg, 0, 0, X_AD_PInstance_Log.PINSTANCELOGTYPE_Status)); + } // saveLog + + /** + * Save Progress Log to DB immediately + * @param P_ID Process ID + * @param P_Date Process Date + * @param P_Number Process Number + * @param P_Msg Process Message + * @return String AD_PInstance_Log_UU + */ + public String saveProgress (int P_ID, Timestamp P_Date, BigDecimal P_Number, String P_Msg) + { + return saveLog (new ProcessInfoLog (P_ID, P_Date, P_Number, P_Msg, 0, 0, X_AD_PInstance_Log.PINSTANCELOGTYPE_Progress)); + } // saveLog + + /** + * Save Log to DB immediately + * @param logEntry log entry + * @return String AD_PInstance_Log_UU + */ + public String saveLog (ProcessInfoLog logEntry) + { + if (logEntry == null) + return ""; + MPInstanceLog il = new MPInstanceLog(getAD_PInstance_ID(), + logEntry.getLog_ID(), + logEntry.getP_Date(), + logEntry.getP_ID(), + logEntry.getP_Number(), + logEntry.getP_Msg(), + logEntry.getAD_Table_ID(), + logEntry.getRecord_ID(), + logEntry.getPInstanceLogType()); + il.saveEx(); + return il.getAD_PInstance_Log_UU(); + } // saveLog + + /** + * Update Progress Log to DB immediately + * @param pInstanceLogUU AD_PInstance_Log_UU + * @param P_ID Process ID + * @param P_Date Process Date + * @param P_Number Process Number + * @param P_Msg Process Message + * @return true if log is successfully updated + */ + public boolean updateProgress (String pInstanceLogUU, int P_ID, Timestamp P_Date, BigDecimal P_Number, String P_Msg) + { + return updateLog (new ProcessInfoLog (pInstanceLogUU, P_ID, P_Date, P_Number, P_Msg, X_AD_PInstance_Log.PINSTANCELOGTYPE_Progress)); + } // updateLog + + /** + * Update existing Log immediately + * @param logEntry log entry + * @return true if log is successfully updated + */ + public boolean updateLog (ProcessInfoLog logEntry) + { + if (logEntry == null) + return false; + MPInstanceLog il = new MPInstanceLog(logEntry.getAD_PInstance_Log_UU(), + getAD_PInstance_ID(), + logEntry.getLog_ID(), + logEntry.getP_Date(), + logEntry.getP_ID(), + logEntry.getP_Number(), + logEntry.getP_Msg(), + logEntry.getAD_Table_ID(), + logEntry.getRecord_ID(), + logEntry.getPInstanceLogType()); + return il.update(); + } // saveLog + /** * Method getIDs * @return int[] diff --git a/org.adempiere.base/src/org/compiere/process/ProcessInfoLog.java b/org.adempiere.base/src/org/compiere/process/ProcessInfoLog.java index deb41ebfa9..3fabcafbe4 100644 --- a/org.adempiere.base/src/org/compiere/process/ProcessInfoLog.java +++ b/org.adempiere.base/src/org/compiere/process/ProcessInfoLog.java @@ -35,12 +35,17 @@ public class ProcessInfoLog implements Serializable /** * Create Process Info Log. + * @param AD_PInstance_Log_UU Log UU + * @param Log_ID Log ID * @param P_ID Process ID * @param P_Date Process Date * @param P_Number Process Number - * @param P_Msg Process Messagre + * @param P_Msg Process Message + * @param AD_Table_ID Table ID + * @param Record_ID Record ID + * @param PInstanceLogType Log Type */ - public ProcessInfoLog (int Log_ID,int P_ID, Timestamp P_Date, BigDecimal P_Number, String P_Msg, int AD_Table_ID ,int Record_ID) + public ProcessInfoLog (String AD_PInstance_Log_UU, int Log_ID,int P_ID, Timestamp P_Date, BigDecimal P_Number, String P_Msg, int AD_Table_ID ,int Record_ID, String PInstanceLogType) { setLog_ID (Log_ID); setP_ID (P_ID); @@ -49,9 +54,65 @@ public class ProcessInfoLog implements Serializable setP_Msg (P_Msg); setAD_Table_ID(AD_Table_ID); setRecord_ID(Record_ID); + setPInstanceLogType(PInstanceLogType); + setAD_PInstance_Log_UU(AD_PInstance_Log_UU); } // ProcessInfoLog + + /** + * Create Process Info Log. + * @param Log_ID Log ID + * @param P_ID Process ID + * @param P_Date Process Date + * @param P_Number Process Number + * @param P_Msg Process Message + * @param AD_Table_ID Table ID + * @param Record_ID Record ID + */ + public ProcessInfoLog (int Log_ID,int P_ID, Timestamp P_Date, BigDecimal P_Number, String P_Msg, int AD_Table_ID ,int Record_ID) + { + this("", Log_ID, P_ID, P_Date, P_Number, P_Msg, AD_Table_ID, Record_ID, null); + } + + /** + * Create Process Info Log. + * @param P_ID Process ID + * @param P_Date Process Date + * @param P_Number Process Number + * @param P_Msg Process Message + * @param AD_Table_ID Table ID + * @param Record_ID Record ID + * @param PInstanceLogType Log Type + */ + public ProcessInfoLog (int P_ID, Timestamp P_Date, BigDecimal P_Number, String P_Msg, int AD_Table_ID ,int Record_ID, String PInstanceLogType) + { + this("", s_Log_ID++, P_ID, P_Date, P_Number, P_Msg, AD_Table_ID, Record_ID, PInstanceLogType); + } + + /** + * Create Process Info Log. + * @param AD_PInstance_Log_UU Log UU + * @param P_ID Process ID + * @param P_Date Process Date + * @param P_Number Process Number + * @param P_Msg Process Message + * @param AD_Table_ID Table ID + * @param Record_ID Record ID + */ + public ProcessInfoLog (String AD_PInstance_Log_UU, int P_ID, Timestamp P_Date, BigDecimal P_Number, String P_Msg, int AD_Table_ID ,int Record_ID) + { + this(AD_PInstance_Log_UU, s_Log_ID++, P_ID, P_Date, P_Number, P_Msg, AD_Table_ID, Record_ID, null); + } + /** + * Create Process Info Log. + * @param P_ID Process ID + * @param P_Date Process Date + * @param P_Number Process Number + * @param P_Msg Process Message + * @param AD_Table_ID Table ID + * @param Record_ID Record ID + */ public ProcessInfoLog (int P_ID, Timestamp P_Date, BigDecimal P_Number, String P_Msg , int AD_Table_ID ,int Record_ID) { this (s_Log_ID++, P_ID, P_Date, P_Number, P_Msg, AD_Table_ID,Record_ID); @@ -62,7 +123,7 @@ public class ProcessInfoLog implements Serializable * @param P_ID Process ID * @param P_Date Process Date * @param P_Number Process Number - * @param P_Msg Process Messagre + * @param P_Msg Process Message */ public ProcessInfoLog (int P_ID, Timestamp P_Date, BigDecimal P_Number, String P_Msg) { @@ -75,12 +136,53 @@ public class ProcessInfoLog implements Serializable * @param P_ID Process ID * @param P_Date Process Date * @param P_Number Process Number - * @param P_Msg Process Messagre + * @param P_Msg Process Message */ public ProcessInfoLog (int Log_ID, int P_ID, Timestamp P_Date, BigDecimal P_Number, String P_Msg) { this (Log_ID, P_ID, P_Date, P_Number, P_Msg, 0,0); } // ProcessInfoLog + + /** + * Create Process Info Log. + * @param AD_PInstance_Log_UU Log UU + * @param P_ID Process ID + * @param P_Date Process Date + * @param P_Number Process Number + * @param P_Msg Process Message + * @param PInstanceLogType Log Type + */ + public ProcessInfoLog (String AD_PInstance_Log_UU, int P_ID, Timestamp P_Date, BigDecimal P_Number, String P_Msg, String PInstanceLogType) + { + this (AD_PInstance_Log_UU, s_Log_ID++, P_ID, P_Date, P_Number, P_Msg, 0, 0, PInstanceLogType); + } // ProcessInfoLog + + /** + * Create Process Info Log. + * @param AD_PInstance_Log_UU Log UU + * @param P_ID Process ID + * @param P_Date Process Date + * @param P_Number Process Number + * @param P_Msg Process Message + */ + public ProcessInfoLog (String AD_PInstance_Log_UU, int P_ID, Timestamp P_Date, BigDecimal P_Number, String P_Msg) + { + this (AD_PInstance_Log_UU, s_Log_ID++, P_ID, P_Date, P_Number, P_Msg, 0,0,null); + } // ProcessInfoLog + + /** + * Create Process Info Log. + * @param Log_ID Log ID + * @param P_ID Process ID + * @param P_Date Process Date + * @param P_Number Process Number + * @param P_Msg Process Message + * @param PInstanceLogType Log Type + */ + public ProcessInfoLog (int Log_ID, int P_ID, Timestamp P_Date, BigDecimal P_Number, String P_Msg, String PInstanceLogType) + { + this ("", Log_ID, P_ID, P_Date, P_Number, P_Msg, 0, 0, PInstanceLogType); + } // ProcessInfoLog private static int s_Log_ID = 0; @@ -91,6 +193,8 @@ public class ProcessInfoLog implements Serializable private String m_P_Msg; private int m_AD_Table_ID; private int m_Record_ID; + private String m_PInstanceLogType; + private String m_AD_PInstance_Log_UU; public int getAD_Table_ID() { return m_AD_Table_ID; @@ -192,4 +296,36 @@ public class ProcessInfoLog implements Serializable m_P_Msg = P_Msg; } + /** + * Get Log Type + * @return Log Type + */ + public String getPInstanceLogType() { + return m_PInstanceLogType; + } + + /** + * Set Log Type + * @param m_PInstanceLogType + */ + public void setPInstanceLogType(String m_PInstanceLogType) { + this.m_PInstanceLogType = m_PInstanceLogType; + } + + /** + * Set AD_PInstance_Log_UU + * @return Sting AD_PInstance_Log_UU + */ + public String getAD_PInstance_Log_UU() { + return m_AD_PInstance_Log_UU; + } + + /** + * Get AD_PInstance_Log_UU + * @param m_AD_PInstance_Log_UU + */ + public void setAD_PInstance_Log_UU(String m_AD_PInstance_Log_UU) { + this.m_AD_PInstance_Log_UU = m_AD_PInstance_Log_UU; + } + } // ProcessInfoLog diff --git a/org.adempiere.base/src/org/compiere/process/ProcessInfoUtil.java b/org.adempiere.base/src/org/compiere/process/ProcessInfoUtil.java index 2a3bc8bc35..f666e3857f 100644 --- a/org.adempiere.base/src/org/compiere/process/ProcessInfoUtil.java +++ b/org.adempiere.base/src/org/compiere/process/ProcessInfoUtil.java @@ -23,10 +23,12 @@ import java.util.ArrayList; import java.util.logging.Level; import org.compiere.model.MPInstanceLog; +import org.compiere.model.X_AD_PInstance_Log; import org.compiere.util.CLogger; import org.compiere.util.DB; import org.compiere.util.Env; import org.compiere.util.Msg; +import org.compiere.util.Util; /** * Process Info with Utilities @@ -172,7 +174,8 @@ public class ProcessInfoUtil { MPInstanceLog il = new MPInstanceLog(pi.getAD_PInstance_ID(), logs[i].getLog_ID(), logs[i].getP_Date(), logs[i].getP_ID(), logs[i].getP_Number(), logs[i].getP_Msg(), - logs[i].getAD_Table_ID(), logs[i].getRecord_ID()); + logs[i].getAD_Table_ID(), logs[i].getRecord_ID(), + !Util.isEmpty(logs[i].getPInstanceLogType()) ? logs[i].getPInstanceLogType() : X_AD_PInstance_Log.PINSTANCELOGTYPE_Result); il.save(); } } // saveLogToDB diff --git a/org.adempiere.base/src/org/compiere/process/SvrProcess.java b/org.adempiere.base/src/org/compiere/process/SvrProcess.java index a4184ddbec..b627dc5fce 100644 --- a/org.adempiere.base/src/org/compiere/process/SvrProcess.java +++ b/org.adempiere.base/src/org/compiere/process/SvrProcess.java @@ -617,7 +617,55 @@ public abstract class SvrProcess implements ProcessCall } listEntryLog = null; // flushed - to avoid flushing it again in case is called } + + /** + * Save Progress Log Entry to DB immediately + * @param date date or null + * @param id record id or 0 + * @param number number or null + * @param msg message or null + * @return String AD_PInstance_Log_UU + */ + public String saveProgress (int id, Timestamp date, BigDecimal number, String msg) + { + if (log.isLoggable(Level.INFO)) log.info(id + " - " + date + " - " + number + " - " + msg); + if (m_pi != null) + return m_pi.saveProgress(id, date, number, msg); + return ""; + } // saveProgress + /** + * Save Status Log Entry to DB immediately + * @param date date or null + * @param id record id or 0 + * @param number number or null + * @param msg message or null + * @return String AD_PInstance_Log_UU + */ + public String saveStatus (int id, Timestamp date, BigDecimal number, String msg) + { + if (log.isLoggable(Level.INFO)) log.info(id + " - " + date + " - " + number + " - " + msg); + if (m_pi != null) + return m_pi.saveStatus(id, date, number, msg); + return ""; + } // saveStatus + + /** + * Update Progress Log Entry with the specified AD_PInstance_Log_UU, update if exists + * @param pInstanceLogUU AD_PInstance_Log_UU + * @param id record id or 0 + * @param date date or null + * @param number number or null + * @param msg message or null + */ + public void updateProgress (String pInstanceLogUU, int id, Timestamp date, BigDecimal number, String msg) + { + if (m_pi != null) + m_pi.updateProgress(pInstanceLogUU, id, date, number, msg); + + if (log.isLoggable(Level.INFO)) log.info(pInstanceLogUU + " - " + id + " - " + date + " - " + number + " - " + msg); + } // saveLog + /************************************************************************** * Execute function * @param className class