/* * EODTask.java * * Created on February 1, 2005, 2:34 PM */ package com.gpc.server.eod.dataaccess; import java.sql.Connection; import java.sql.Statement; import java.sql.ResultSet; import java.sql.SQLException; import java.util.ArrayList; import com.gpc.backofficecommon.constants.schema.Sch_Tables; import com.gpc.backofficecommon.constants.schema.Sch_RefEODTask; import com.gpc.backofficecommon.constants.schema.Sch_EODTaskDetails; import com.gpc.common.util.BooleanParser; import com.gpc.common.exception.ApplicationRuntimeException; import com.gpc.common.exception.ApplicationException; import com.gpc.server.util.ServerUtil; import com.gpc.valueobjects.endofday.RefEODTaskVO; import com.gpc.tams.eod.task.offlinetask.OffLineTaskHandler; import com.gpc.server.util.JDBCUtil; import org.apache.log4j.Logger; /** * * @author tshortell */ public class EODTask { private static final Logger logger = Logger.getLogger(EODTask.class); /** Creates a new instance of EODTask */ public EODTask() { } public static ArrayList getRefEODTaskVOs(Integer loc) { return EODTask.getEODTaskVOList(" <> 'O' ", loc); } public static ArrayList getOffLineRefEODTaskVOs(Integer loc) { return EODTask.getEODTaskVOList(" = 'O' ", loc); } public static RefEODTaskVO getRefEODTaskVO(String taskObjectName, Integer loc) { ArrayList list = getEODTaskVOWhere(Sch_RefEODTask.TASK_OBJECT_NAME + " = '" + taskObjectName + "'", loc); return (list.size() == 1) ? (RefEODTaskVO)list.get(0) : null; } public static RefEODTaskVO getRefEODTaskVO(Integer taskId, Integer loc) { ArrayList list = getEODTaskVOWhere(Sch_RefEODTask.ID + " = " + taskId, loc); return (list.size() == 1) ? (RefEODTaskVO)list.get(0) : null; } public static int updateEODTaskDetails(RefEODTaskVO refEODTaskVO) throws ApplicationException { Connection conn = null; Statement stmt = null; StringBuffer sql = new StringBuffer(); sql.append("UPDATE " + Sch_Tables.EOD_TASK_DETAILS + " SET "); sql.append(Sch_EODTaskDetails.ACTIVE + " = '" + BooleanParser.toYN(refEODTaskVO.isActive().booleanValue())); sql.append("' WHERE " + Sch_Tables.EOD_TASK_DETAILS + "."); sql.append(Sch_EODTaskDetails.REF_EOD_TASK_ID + " = "); sql.append(refEODTaskVO.getId()); sql.append(" AND " + Sch_EODTaskDetails.LOC + " = " + refEODTaskVO.getLoc()); logger.debug("SQL: " + sql.toString()); try { conn = ServerUtil.getConnection(); stmt = conn.createStatement(); return stmt.executeUpdate(sql.toString()); } catch(SQLException e) { logger.error(e.toString(), e); throw new ApplicationException(e); } finally { JDBCUtil.closeStatement(stmt); ServerUtil.releaseConnection(conn); } } public static ArrayList getOffLineEODTaskHandlers(Integer loc) { ArrayList refEODTaskVOs = getOffLineRefEODTaskVOs(loc); if(refEODTaskVOs == null || refEODTaskVOs.size() == 0) { return new ArrayList(); } ArrayList handlers = new ArrayList(refEODTaskVOs.size()); for(int i = 0; i < refEODTaskVOs.size(); i++) { try { RefEODTaskVO task = (RefEODTaskVO)refEODTaskVOs.get(i); OffLineTaskHandler handler = (OffLineTaskHandler)task.getTaskClass().newInstance(); if(handler != null) { handler.setRefEODTaskVO(task); handlers.add(handler); } } catch(ClassNotFoundException e) { logger.error(e.toString(), e); } catch(InstantiationException e) { logger.error(e.toString(), e); } catch(IllegalAccessException e) { logger.error(e.toString(), e); } } return handlers; } private static ArrayList getEODTaskVOList(String objectType, Integer loc) { return getEODTaskVOWhere(Sch_RefEODTask.TASK_OBJECT_TYPE + objectType + " AND " + Sch_EODTaskDetails.ACTIVE + " = 'Y' ", loc); } public static ArrayList getEODInactiveTaskVOList(Integer loc) { return getEODTaskVOWhere("ACTIVE = 'N' ", loc); } private static ArrayList getEODTaskVOWhere(String where, Integer loc) { ArrayList taskVOs = new ArrayList(); Connection conn = null; Statement stmt = null; ResultSet rs = null; StringBuffer sql = new StringBuffer(); sql.append("SELECT " + Sch_RefEODTask.ID + ", "); sql.append(Sch_RefEODTask.CRITICAL + ", "); sql.append(Sch_RefEODTask.EXECUTION_ORDER + ", "); sql.append(Sch_RefEODTask.LOG_TEXT + ", "); sql.append(Sch_RefEODTask.TASK_OBJECT_NAME + ", "); sql.append(Sch_RefEODTask.TASK_OBJECT_TYPE + ", "); sql.append(Sch_EODTaskDetails.ACTIVE); sql.append(" FROM " + Sch_Tables.REF_EOD_TASK + ", "); sql.append(Sch_Tables.EOD_TASK_DETAILS); sql.append(" WHERE " + Sch_Tables.EOD_TASK_DETAILS + "."); sql.append(Sch_EODTaskDetails.REF_EOD_TASK_ID + " = "); sql.append(Sch_Tables.REF_EOD_TASK + "." + Sch_RefEODTask.ID); sql.append(" AND " + Sch_Tables.EOD_TASK_DETAILS + "."); sql.append(Sch_EODTaskDetails.LOC + " = " + loc); sql.append(" AND " + where); sql.append(" ORDER BY " + Sch_RefEODTask.EXECUTION_ORDER + " ASC"); logger.debug("SQL: " + sql.toString()); try { conn = ServerUtil.getConnection(); stmt = conn.createStatement(); rs = stmt.executeQuery(sql.toString()); RefEODTaskVO refEODTaskVO; while(rs.next()) { refEODTaskVO = new RefEODTaskVO(); refEODTaskVO.setId((Integer)rs.getObject(Sch_RefEODTask.ID)); refEODTaskVO.setCritical(new Boolean(BooleanParser.parseYN((String)rs.getObject(Sch_RefEODTask.CRITICAL)))); refEODTaskVO.setExecutionOrder((Integer)rs.getObject(Sch_RefEODTask.EXECUTION_ORDER)); refEODTaskVO.setLogText((String)rs.getObject(Sch_RefEODTask.LOG_TEXT)); refEODTaskVO.setTaskObjectName((String)rs.getObject(Sch_RefEODTask.TASK_OBJECT_NAME)); refEODTaskVO.setTaskObjectType((String)rs.getObject(Sch_RefEODTask.TASK_OBJECT_TYPE)); refEODTaskVO.setActive(new Boolean(BooleanParser.parseYN((String)rs.getObject(Sch_EODTaskDetails.ACTIVE)))); refEODTaskVO.setLoc(loc); taskVOs.add(refEODTaskVO); } } catch(SQLException e) { logger.error(e.toString(), e); throw new ApplicationRuntimeException(e); } finally { JDBCUtil.closeResultSet(rs); JDBCUtil.closeStatement(stmt); ServerUtil.releaseConnection(conn); } return taskVOs; } public static String[] refEODTasksList(){ return new String[]{"Invoice Costing", "Change/Void Invoices", "Reportable Sales Audit", "Cash Received Journal Update", "Apply Payments to Balance Forward Accounts", "Payment Card Settlement Trigger Transmission", "Stamp Generic E-Invoices and Returns", "Transmission for Jobber Accounting Invoices", "Transmission for Jobber Accounting Payments", "Transmission for Local Detail", "Transmission for WLC Authorization", "Transmission for MIO", "Transmission for NAPA ACCESS", "Transmission for Customer File Activity", "Transmission for Disbursements Checks", "Transmission for Major Accounts", "Transmission for Buyout Orders", "Transmission for KRONOS", "Transmission for A/R Journal Entries", "Transmission for JOEI Statistics", "Transmission for Sales Journal Totals", "Transmission for Monthly Reported Sales", "Transmission for Monthly Reported Sales by Customer", "Transmission for Monthly JSA Sales", "Audit On-Order Quantities in Inventory", "Print Management Reports", "Print User Scheduled Reports", "Update Inventory from DVD", "Calendar Year End Processing", "Fiscal Year End Processing", "Increment Days on Order in Inventory", "Create Branch AR File", "End of Day Class Job Requests", "Create Daily Data Warehouse Transmission File", "Create Monthly Data Warehouse Transmission File", "Protobase Reports", "Create McGladrey Reports Transmission File", "Process Received Communications", "Unattended Backup", "Monthly Database Purge", "Automatic Min/Max Review", "Create Start of Day Messages", "End Of Month Update Ending Inventory Value", "Daily Database Purge", "Run Off Line Tasks", "Multi Store Purge", "Database Log Trim", "Archive LOG4J Log Files", "Archiving Communications Logs", "TAMS Software Update", "Convert and Post Sales History", "Send EOM updates to Multi-Store", "Transmit Branch AR File", "Inventory Line Value Change Report", "Purge MACS History Files", "Unattended Catalog Update", "Download Non-Required files from DVD", "Transmission for Monthly Core Tracking Data", "Transmission for Alternate Core Account Numbers", "Create Custom Pricing Files for Data Warehouse", "Update Kit Details", "RADS Discrepancy Report", "Generate and Print Bin Labels", "File Activity Review & Purge", "Control File Update", "Daily Sensitive Data Mask", "Historical Sensitive Data Mask", "Transmission for Inventory File Activity", "Inventory Status Report", "Run EOD Scripts", "Daily Data Extract", "Retrieve Electronic Catalog File", "Transmission for Indago Inventory Feed", "Run Zone Pricing", "Regulation load"}; } }