/*
* 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:
*
AEFConst.MSR_HOOK_SWIPE_ERROR, AEFConst.MSR_SET_TO_DECODE
*
AEFConst.MSR_HOOK_SWIPE_ERROR, AEFConst.MSR_NOT_ENABLED
*
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);
}