Integrate [ 2074600 ] Housekeeping - Process to delete historic information

Contribution from d_ruiz
This commit is contained in:
Carlos Ruiz 2008-09-07 05:45:06 +00:00
parent f1d051f148
commit 76dbf6e3c2
5 changed files with 3207 additions and 0 deletions

View File

@ -0,0 +1,146 @@
/**********************************************************************
* This file is part of Adempiere ERP Bazaar *
* http://www.adempiere.org *
* *
* Copyright (C) Diego Ruiz *
* Copyright (C) Contributors *
* *
* This program is free software; you can redistribute it and/or *
* modify it under the terms of the GNU General Public License *
* as published by the Free Software Foundation; either version 2 *
* of the License, or (at your option) any later version. *
* *
* This program is distributed in the hope that it will be useful, *
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
* GNU General Public License for more details. *
* *
* You should have received a copy of the GNU General Public License *
* along with this program; if not, write to the Free Software *
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, *
* MA 02110-1301, USA. *
* *
* Contributors: *
* - Diego Ruiz (d_ruiz@users.sourceforge.net) *
* *
* Sponsors: *
* - GlobalQSS (http://www.globalqss.com) *
***********************************************************************/
package org.adempiere.process;
import java.io.File;
import java.io.FileWriter;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.Timestamp;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.logging.Level;
import org.adempiere.model.GenericPO;
import org.compiere.model.MTable;
import org.compiere.model.X_AD_HouseKeeping;
import org.compiere.process.ProcessInfoParameter;
import org.compiere.process.SvrProcess;
import org.compiere.util.AdempiereSystemError;
import org.compiere.util.DB;
import org.compiere.util.Msg;
/**
* House Keeping
*
* @author Diego Ruiz - globalqss
*/
public class HouseKeeping extends SvrProcess{
private int p_AD_HouseKeeping_ID = 0;
protected void prepare() {
ProcessInfoParameter[] parameter = getParameter();
for (int i = 0; i < parameter.length; i++)
{
String name = parameter[i].getParameterName();
if (parameter[i].getParameter() == null);
else if (name.equals("AD_HouseKeeping_ID"))
p_AD_HouseKeeping_ID = parameter[i].getParameterAsInt();
else
log.log(Level.SEVERE, "Unknown Parameter: " + name);
}
if (p_AD_HouseKeeping_ID == 0)
p_AD_HouseKeeping_ID = getRecord_ID();
} //prepare
protected String doIt() throws Exception {
X_AD_HouseKeeping houseKeeping = new X_AD_HouseKeeping(getCtx(), p_AD_HouseKeeping_ID,get_TrxName());
int tableID = houseKeeping.getAD_Table_ID();
MTable table = new MTable(getCtx(), tableID, get_TrxName());
String tableName = table.getTableName();
String whereClause = houseKeeping.getWhereClause();
int noins = 0;
int noexp = 0;
int nodel = 0;
if (houseKeeping.isSaveInHistoric()){
String sql = "INSERT INTO hst_"+tableName + " SELECT * FROM " + tableName;
if (whereClause != null && whereClause.length() > 0)
sql = sql + " WHERE " + whereClause;
noins = DB.executeUpdate(sql, get_TrxName());
if (noins == -1)
throw new AdempiereSystemError("Cannot insert into hst_"+tableName);
addLog("@Inserted@ " + noins);
} //saveInHistoric
Date date = new Date();
if (houseKeeping.isExportXMLBackup()){
String pathFile = houseKeeping.getBackupFolder();
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyyMMddHHmmss");
String dateString = dateFormat.format(date);
FileWriter file = new FileWriter(pathFile+File.separator+tableName+dateString+".xml");
String sql = "SELECT * FROM " + tableName;
if (whereClause != null && whereClause.length() > 0)
sql = sql + " WHERE " + whereClause;
PreparedStatement pstmt = null;
ResultSet rs = null;
StringBuffer linexml = null;
try
{
pstmt = DB.prepareStatement(sql, get_TrxName());
rs = pstmt.executeQuery();
while (rs.next()) {
GenericPO po = new GenericPO(tableName, getCtx(), rs, get_TrxName());
linexml = po.get_xmlString(linexml);
noexp++;
}
if(linexml != null)
file.write(linexml.toString());
file.close();
}
catch (Exception e)
{
throw e;
}
finally
{
DB.close(rs, pstmt);
pstmt = null;
rs=null;
}
addLog("@Exported@ " + noexp);
}//XmlExport
String sql = "DELETE FROM " + tableName;
if (whereClause != null && whereClause.length() > 0)
sql = sql + " WHERE " + whereClause;
nodel = DB.executeUpdate(sql, get_TrxName());
if (nodel == -1)
throw new AdempiereSystemError("Cannot delete from " + tableName);
Timestamp time = new Timestamp(date.getTime());
houseKeeping.setLastRun(time);
houseKeeping.setLastDeleted(nodel);
houseKeeping.saveEx();
addLog("@Deleted@ " + nodel);
String msg = Msg.translate(getCtx(), tableName + "_ID") + " #" + nodel;
return msg;
}//doIt
}

View File

@ -0,0 +1,202 @@
/**********************************************************************
* This file is part of Adempiere ERP Bazaar *
* http://www.adempiere.org *
* *
* Copyright (C) Trifon Trifonov. *
* Copyright (C) Contributors *
* *
* This program is free software, you can redistribute it and/or *
* modify it under the terms of the GNU General Public License *
* as published by the Free Software Foundation, either version 2 *
* of the License, or (at your option) any later version. *
* *
* This program is distributed in the hope that it will be useful, *
* but WITHOUT ANY WARRANTY, without even the implied warranty of *
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
* GNU General Public License for more details. *
* *
* You should have received a copy of the GNU General Public License *
* along with this program, if not, write to the Free Software *
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, *
* MA 02110-1301, USA. *
* *
* Contributors: *
* - Trifon Trifonov (trifonnt@users.sourceforge.net) *
* *
* Sponsors: *
* - Company (http://www.site.com) *
**********************************************************************/
package org.compiere.model;
import java.math.BigDecimal;
import java.sql.Timestamp;
import org.compiere.util.KeyNamePair;
/** Generated Interface for AD_HouseKeeping
* @author Adempiere (generated)
* @version Release 3.5.2a
*/
public interface I_AD_HouseKeeping
{
/** TableName=AD_HouseKeeping */
public static final String Table_Name = "AD_HouseKeeping";
/** AD_Table_ID=53147 */
public static final int Table_ID = MTable.getTable_ID(Table_Name);
KeyNamePair Model = new KeyNamePair(Table_ID, Table_Name);
/** AccessLevel = 4 - System
*/
BigDecimal accessLevel = BigDecimal.valueOf(4);
/** Load Meta Data */
/** Column name AD_HouseKeeping_ID */
public static final String COLUMNNAME_AD_HouseKeeping_ID = "AD_HouseKeeping_ID";
/** Set House Keeping Configuration */
public void setAD_HouseKeeping_ID (int AD_HouseKeeping_ID);
/** Get House Keeping Configuration */
public int getAD_HouseKeeping_ID();
/** Column name AD_Table_ID */
public static final String COLUMNNAME_AD_Table_ID = "AD_Table_ID";
/** Set Table.
* Database Table information
*/
public void setAD_Table_ID (int AD_Table_ID);
/** Get Table.
* Database Table information
*/
public int getAD_Table_ID();
public I_AD_Table getAD_Table() throws Exception;
/** Column name BackupFolder */
public static final String COLUMNNAME_BackupFolder = "BackupFolder";
/** Set Backup Folder.
* Backup Folder
*/
public void setBackupFolder (String BackupFolder);
/** Get Backup Folder.
* Backup Folder
*/
public String getBackupFolder();
/** Column name Description */
public static final String COLUMNNAME_Description = "Description";
/** Set Description.
* Optional short description of the record
*/
public void setDescription (String Description);
/** Get Description.
* Optional short description of the record
*/
public String getDescription();
/** Column name Help */
public static final String COLUMNNAME_Help = "Help";
/** Set Comment/Help.
* Comment or Hint
*/
public void setHelp (String Help);
/** Get Comment/Help.
* Comment or Hint
*/
public String getHelp();
/** Column name IsExportXMLBackup */
public static final String COLUMNNAME_IsExportXMLBackup = "IsExportXMLBackup";
/** Set Export XML Backup */
public void setIsExportXMLBackup (boolean IsExportXMLBackup);
/** Get Export XML Backup */
public boolean isExportXMLBackup();
/** Column name IsSaveInHistoric */
public static final String COLUMNNAME_IsSaveInHistoric = "IsSaveInHistoric";
/** Set Save In Historic */
public void setIsSaveInHistoric (boolean IsSaveInHistoric);
/** Get Save In Historic */
public boolean isSaveInHistoric();
/** Column name LastDeleted */
public static final String COLUMNNAME_LastDeleted = "LastDeleted";
/** Set Last Deleted */
public void setLastDeleted (int LastDeleted);
/** Get Last Deleted */
public int getLastDeleted();
/** Column name LastRun */
public static final String COLUMNNAME_LastRun = "LastRun";
/** Set Last Run */
public void setLastRun (Timestamp LastRun);
/** Get Last Run */
public Timestamp getLastRun();
/** Column name Name */
public static final String COLUMNNAME_Name = "Name";
/** Set Name.
* Alphanumeric identifier of the entity
*/
public void setName (String Name);
/** Get Name.
* Alphanumeric identifier of the entity
*/
public String getName();
/** Column name Processing */
public static final String COLUMNNAME_Processing = "Processing";
/** Set Process Now */
public void setProcessing (boolean Processing);
/** Get Process Now */
public boolean isProcessing();
/** Column name Value */
public static final String COLUMNNAME_Value = "Value";
/** Set Search Key.
* Search key for the record in the format required - must be unique
*/
public void setValue (String Value);
/** Get Search Key.
* Search key for the record in the format required - must be unique
*/
public String getValue();
/** Column name WhereClause */
public static final String COLUMNNAME_WhereClause = "WhereClause";
/** Set Sql WHERE.
* Fully qualified SQL WHERE clause
*/
public void setWhereClause (String WhereClause);
/** Get Sql WHERE.
* Fully qualified SQL WHERE clause
*/
public String getWhereClause();
}

View File

@ -0,0 +1,343 @@
/******************************************************************************
* Product: Adempiere ERP & CRM Smart Business Solution *
* Copyright (C) 1999-2007 ComPiere, Inc. All Rights Reserved. *
* This program is free software; you can redistribute it and/or modify it *
* under the terms version 2 of the GNU General Public License as published *
* by the Free Software Foundation. This program is distributed in the hope *
* that it will be useful, but WITHOUT ANY WARRANTY; without even the implied *
* warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. *
* See the GNU General Public License for more details. *
* You should have received a copy of the GNU General Public License along *
* with this program; if not, write to the Free Software Foundation, Inc., *
* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. *
* For the text or an alternative of this public license, you may reach us *
* ComPiere, Inc., 2620 Augustine Dr. #245, Santa Clara, CA 95054, USA *
* or via info@compiere.org or http://www.compiere.org/license.html *
*****************************************************************************/
/** Generated Model - DO NOT CHANGE */
package org.compiere.model;
import java.lang.reflect.Constructor;
import java.sql.ResultSet;
import java.sql.Timestamp;
import java.util.Properties;
import java.util.logging.Level;
import org.compiere.util.KeyNamePair;
/** Generated Model for AD_HouseKeeping
* @author Adempiere (generated)
* @version Release 3.5.2a - $Id$ */
public class X_AD_HouseKeeping extends PO implements I_AD_HouseKeeping, I_Persistent
{
/**
*
*/
private static final long serialVersionUID = 1L;
/** Standard Constructor */
public X_AD_HouseKeeping (Properties ctx, int AD_HouseKeeping_ID, String trxName)
{
super (ctx, AD_HouseKeeping_ID, trxName);
/** if (AD_HouseKeeping_ID == 0)
{
setAD_HouseKeeping_ID (0);
setAD_Table_ID (0);
setName (null);
setValue (null);
} */
}
/** Load Constructor */
public X_AD_HouseKeeping (Properties ctx, ResultSet rs, String trxName)
{
super (ctx, rs, trxName);
}
/** AccessLevel
* @return 4 - System
*/
protected int get_AccessLevel()
{
return accessLevel.intValue();
}
/** Load Meta Data */
protected POInfo initPO (Properties ctx)
{
POInfo poi = POInfo.getPOInfo (ctx, Table_ID, get_TrxName());
return poi;
}
public String toString()
{
StringBuffer sb = new StringBuffer ("X_AD_HouseKeeping[")
.append(get_ID()).append("]");
return sb.toString();
}
/** Set House Keeping Configuration.
@param AD_HouseKeeping_ID House Keeping Configuration */
public void setAD_HouseKeeping_ID (int AD_HouseKeeping_ID)
{
if (AD_HouseKeeping_ID < 1)
throw new IllegalArgumentException ("AD_HouseKeeping_ID is mandatory.");
set_ValueNoCheck (COLUMNNAME_AD_HouseKeeping_ID, Integer.valueOf(AD_HouseKeeping_ID));
}
/** Get House Keeping Configuration.
@return House Keeping Configuration */
public int getAD_HouseKeeping_ID ()
{
Integer ii = (Integer)get_Value(COLUMNNAME_AD_HouseKeeping_ID);
if (ii == null)
return 0;
return ii.intValue();
}
public I_AD_Table getAD_Table() throws Exception
{
Class<?> clazz = MTable.getClass(I_AD_Table.Table_Name);
I_AD_Table result = null;
try {
Constructor<?> constructor = null;
constructor = clazz.getDeclaredConstructor(new Class[]{Properties.class, int.class, String.class});
result = (I_AD_Table)constructor.newInstance(new Object[] {getCtx(), new Integer(getAD_Table_ID()), get_TrxName()});
} catch (Exception e) {
log.log(Level.SEVERE, "(id) - Table=" + Table_Name + ",Class=" + clazz, e);
log.saveError("Error", "Table=" + Table_Name + ",Class=" + clazz);
throw e;
}
return result;
}
/** Set Table.
@param AD_Table_ID
Database Table information
*/
public void setAD_Table_ID (int AD_Table_ID)
{
if (AD_Table_ID < 1)
throw new IllegalArgumentException ("AD_Table_ID is mandatory.");
set_Value (COLUMNNAME_AD_Table_ID, Integer.valueOf(AD_Table_ID));
}
/** Get Table.
@return Database Table information
*/
public int getAD_Table_ID ()
{
Integer ii = (Integer)get_Value(COLUMNNAME_AD_Table_ID);
if (ii == null)
return 0;
return ii.intValue();
}
/** Set Backup Folder.
@param BackupFolder
Backup Folder
*/
public void setBackupFolder (String BackupFolder)
{
set_Value (COLUMNNAME_BackupFolder, BackupFolder);
}
/** Get Backup Folder.
@return Backup Folder
*/
public String getBackupFolder ()
{
return (String)get_Value(COLUMNNAME_BackupFolder);
}
/** Set Description.
@param Description
Optional short description of the record
*/
public void setDescription (String Description)
{
set_Value (COLUMNNAME_Description, Description);
}
/** Get Description.
@return Optional short description of the record
*/
public String getDescription ()
{
return (String)get_Value(COLUMNNAME_Description);
}
/** Set Comment/Help.
@param Help
Comment or Hint
*/
public void setHelp (String Help)
{
set_Value (COLUMNNAME_Help, Help);
}
/** Get Comment/Help.
@return Comment or Hint
*/
public String getHelp ()
{
return (String)get_Value(COLUMNNAME_Help);
}
/** Set Export XML Backup.
@param IsExportXMLBackup Export XML Backup */
public void setIsExportXMLBackup (boolean IsExportXMLBackup)
{
set_Value (COLUMNNAME_IsExportXMLBackup, Boolean.valueOf(IsExportXMLBackup));
}
/** Get Export XML Backup.
@return Export XML Backup */
public boolean isExportXMLBackup ()
{
Object oo = get_Value(COLUMNNAME_IsExportXMLBackup);
if (oo != null)
{
if (oo instanceof Boolean)
return ((Boolean)oo).booleanValue();
return "Y".equals(oo);
}
return false;
}
/** Set Save In Historic.
@param IsSaveInHistoric Save In Historic */
public void setIsSaveInHistoric (boolean IsSaveInHistoric)
{
set_Value (COLUMNNAME_IsSaveInHistoric, Boolean.valueOf(IsSaveInHistoric));
}
/** Get Save In Historic.
@return Save In Historic */
public boolean isSaveInHistoric ()
{
Object oo = get_Value(COLUMNNAME_IsSaveInHistoric);
if (oo != null)
{
if (oo instanceof Boolean)
return ((Boolean)oo).booleanValue();
return "Y".equals(oo);
}
return false;
}
/** Set Last Deleted.
@param LastDeleted Last Deleted */
public void setLastDeleted (int LastDeleted)
{
set_Value (COLUMNNAME_LastDeleted, Integer.valueOf(LastDeleted));
}
/** Get Last Deleted.
@return Last Deleted */
public int getLastDeleted ()
{
Integer ii = (Integer)get_Value(COLUMNNAME_LastDeleted);
if (ii == null)
return 0;
return ii.intValue();
}
/** Set Last Run.
@param LastRun Last Run */
public void setLastRun (Timestamp LastRun)
{
set_Value (COLUMNNAME_LastRun, LastRun);
}
/** Get Last Run.
@return Last Run */
public Timestamp getLastRun ()
{
return (Timestamp)get_Value(COLUMNNAME_LastRun);
}
/** Set Name.
@param Name
Alphanumeric identifier of the entity
*/
public void setName (String Name)
{
if (Name == null)
throw new IllegalArgumentException ("Name is mandatory.");
set_Value (COLUMNNAME_Name, Name);
}
/** Get Name.
@return Alphanumeric identifier of the entity
*/
public String getName ()
{
return (String)get_Value(COLUMNNAME_Name);
}
/** Get Record ID/ColumnName
@return ID/ColumnName pair
*/
public KeyNamePair getKeyNamePair()
{
return new KeyNamePair(get_ID(), getName());
}
/** Set Process Now.
@param Processing Process Now */
public void setProcessing (boolean Processing)
{
set_Value (COLUMNNAME_Processing, Boolean.valueOf(Processing));
}
/** Get Process Now.
@return Process Now */
public boolean isProcessing ()
{
Object oo = get_Value(COLUMNNAME_Processing);
if (oo != null)
{
if (oo instanceof Boolean)
return ((Boolean)oo).booleanValue();
return "Y".equals(oo);
}
return false;
}
/** Set Search Key.
@param Value
Search key for the record in the format required - must be unique
*/
public void setValue (String Value)
{
if (Value == null)
throw new IllegalArgumentException ("Value is mandatory.");
set_Value (COLUMNNAME_Value, Value);
}
/** Get Search Key.
@return Search key for the record in the format required - must be unique
*/
public String getValue ()
{
return (String)get_Value(COLUMNNAME_Value);
}
/** Set Sql WHERE.
@param WhereClause
Fully qualified SQL WHERE clause
*/
public void setWhereClause (String WhereClause)
{
set_Value (COLUMNNAME_WhereClause, WhereClause);
}
/** Get Sql WHERE.
@return Fully qualified SQL WHERE clause
*/
public String getWhereClause ()
{
return (String)get_Value(COLUMNNAME_WhereClause);
}
}

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff