/* * SwipeMSRActionImpl Class * * 12/02/2003 * * Copyright: * Licensed Materials - Property of IBM * "Restricted Materials of IBM" * 5724-AEF * (C) Copyright IBM Corp. 2003. * * %W% %E% */ package com.ibm.retail.AEF.action; import com.ibm.retail.AEF.automation.*; import com.ibm.retail.AEF.workstation.*; import com.ibm.retail.AEF.session.*; import com.ibm.retail.AEF.util.*; import com.ibm.retail.si.util.*; import com.ibm.retail.si.util.AEFConst; import com.ibm.retail.si.Copyright; import java.util.*; import java.rmi.*; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; /** * SwipeMSRActionImpl is a class which causes track data to be injected to make it look * like it came from the MSR. * */ public class SwipeMSRActionImpl implements AEFAction { static String copyright() { return com.ibm.retail.si.Copyright.IBM_COPYRIGHT_SHORT; } /** * Constructor * * @param request The ActionRequest which contains a Map of arguments. * @exception AEFException * Among the possible AEFException error codes are: * */ public SwipeMSRActionImpl(ActionRequest request) throws AEFException { if (log.isTraceEnabled()) { tempAEFMessage.setMessage("+Enter SwipeMSRActionImpl.SwipeMSRActionImpl()."); log.trace(tempAEFMessage); } try { AEFSession session = SessionContext.getSession(); if (session != null) { sessionID = session.getTerminalNumber(); } else { if (log.isWarnEnabled()) { tempAEFMessage.setMessage("Could not get the session object in the constructor for SwipeMSRActionImpl."); log.warn(tempAEFMessage); } } } catch (RemoteException re) { // Impossible to get here. tempAEFMessage.setMessage("There was a remote exception thrown in the constructor of SwipeMSRActionImpl."); log.error(tempAEFMessage, re); } tempAEFMessage.setSessionID(sessionID); track1Data = (byte[])(request.getArguments().get("TRACK1DATA")); track2Data = (byte[])(request.getArguments().get("TRACK2DATA")); track3Data = (byte[])(request.getArguments().get("TRACK3DATA")); if (log.isTraceEnabled()) { tempAEFMessage.setMessage("-Exit SwipeMSRActionImpl.SwipeMSRActionImpl()."); log.trace(tempAEFMessage); } } /** * Perform the action represented by the ActionRequest and return an ActionResult. * * * @param request The ActionRequest which contains the classname and arguments. * @return Object Null is always returned. * @exception AEFException * @exception com.ibm.retail.AEF.util.AEFException * Among the possible AEFException error codes are: * <br>AEFConst.MSR_HOOK_SWIPE_ERROR, AEFConst.MSR_SET_TO_DECODE * <br>AEFConst.MSR_HOOK_SWIPE_ERROR, AEFConst.MSR_NOT_ENABLED * <br>AEFConst.JAVA_POS_EXCEPTION, see exception cause() for actual javaPos exception */ public Object performAction() throws AEFException { if (log.isTraceEnabled()) { tempAEFMessage.setMessage("+Enter SwipeMSRActionImpl.performAction()."); log.trace(tempAEFMessage); } Workstation workstation = null; try { workstation = SessionContext.getSession().getWorkstation(); workstation.swipeMSR(track1Data, track2Data, track3Data); } catch (RemoteException re) { // Can't get here on a local call. } if (log.isTraceEnabled()) { tempAEFMessage.setMessage("-Exit SwipeMSRActionImpl.performAction()."); log.trace(tempAEFMessage); } return null; } /* Instance Variables */ protected byte[] track1Data; protected byte[] track2Data; protected byte[] track3Data; protected String sessionID = "Unknown"; protected AEFMessage tempAEFMessage = new AEFMessage(sessionID, ""); private static Log log = LogFactory.getLog(SwipeMSRActionImpl.class); }