package org.atdl4j.ui.app.impl; import org.atdl4j.config.Atdl4jConfig; import org.atdl4j.config.Atdl4jConfiguration; import org.atdl4j.config.Atdl4jOptions; import org.atdl4j.data.exception.Atdl4jClassLoadException; import org.atdl4j.data.exception.ValidationException; import org.atdl4j.ui.app.Atdl4jTesterPanel; import org.atdl4j.ui.app.Atdl4jTesterPanelListener; import org.atdl4j.ui.impl.SelectedStrategyDetails; /** * Represents the base, non-GUI system-specific "TesterApp" with a main() line. * * @see org.atdl4j.ui.app.Atdl4jCompositePanel for AbstractAtdl4jTesterApp->AbstractAtdl4jTesterPanel->AbstractAtdl4jCompositePanel layering structure. * * * @author Scott Atwell * @version 1.0, Feb 28, 2010 */ public abstract class AbstractAtdl4jTesterApp implements Atdl4jTesterPanelListener { static Atdl4jOptions atdl4jOptions; Object parentOrShell; // SWT: Shell, Swing: JFrame, JDialog, etc Atdl4jTesterPanel atdl4jTesterPanel; private void parseMainLineArgs( String[] args ) { //TODO /*** // Load in a file if passed into the app arguments if (args.length > 0) { try { //TODO 1/18/2010 Scott Atwell added BELOW // getAtdl4jOptions().getInputAndFilterData().init(); if (args.length >= 2) { // -- InputCxlReplaceMode = args[1] (eg "true" or "false") logger.info("args[1]: " + args[1] + " Boolean.parseBoolean() as inputCxlReplaceMode"); getAtdl4jOptions().getInputAndFilterData().setInputCxlReplaceMode( Boolean.parseBoolean( args[1] ) ); } if ( args.length >= 3) { // -- InputHiddenFieldNameValueMap = args[2] (eg "FIX_OrderQty=10000|FIX_Side=1|FIX_OrdType=1") String tempStringToParse = args[2]; logger.info("args[2]: " + tempStringToParse + " parse as InputHiddenFieldNameValueMap (eg \"FIX_OrderQty=10000|FIX_Side=1|FIX_OrdType=1\")"); String[] tempFieldAndValuesArray = tempStringToParse.split( "\\|" ); if ( tempFieldAndValuesArray != null ) { Map<String, String> tempInputHiddenFieldNameValueMap = new HashMap<String, String>(); for (String tempFieldAndValue : tempFieldAndValuesArray ) { String[] tempCombo = tempFieldAndValue.split( "=" ); if ( ( tempCombo != null ) && ( tempCombo.length == 2 ) ) { tempInputHiddenFieldNameValueMap.put( tempCombo[0], tempCombo[1] ); } } logger.info("InputHiddenFieldNameValueMap: " + tempInputHiddenFieldNameValueMap); getAtdl4jOptions().getInputAndFilterData().addMapToInputHiddenFieldNameValueMap( tempInputHiddenFieldNameValueMap ); } } //TODO 1/18/2010 Scott Atwell added ABOVE ****/ } protected void init( String[] args, Atdl4jConfiguration aAtdl4jConfiguration, Atdl4jOptions aAtdl4jOptions, Object aParentOrShell ) { Atdl4jConfig.setConfig( aAtdl4jConfiguration ); setAtdl4jOptions( aAtdl4jOptions ); setParentOrShell( aParentOrShell ); parseMainLineArgs( args ); // -- ** Construct the core GUI component ** -- setAtdl4jTesterPanel( getAtdl4jTesterPanel() ); } /** * @return the atdl4jOptions */ public static Atdl4jOptions getAtdl4jOptions() { return atdl4jOptions; } /** * @param aAtdl4jOptions the atdl4jOptions to set */ private void setAtdl4jOptions(Atdl4jOptions aAtdl4jOptions) { atdl4jOptions = aAtdl4jOptions; } /** * @return the parentOrShell */ public Object getParentOrShell() { return this.parentOrShell; } /** * @param aParentOrShell the parentOrShell to set */ private void setParentOrShell(Object aParentOrShell) { this.parentOrShell = aParentOrShell; } /** * @param aAtdl4jTesterPanel the atdl4jTesterPanel to set */ private void setAtdl4jTesterPanel(Atdl4jTesterPanel aAtdl4jTesterPanel) { this.atdl4jTesterPanel = aAtdl4jTesterPanel; } /** * @return the Atdl4jTesterPanel * @throws Atdl4jClassLoadException */ public Atdl4jTesterPanel getAtdl4jTesterPanel() { if ( atdl4jTesterPanel == null ) { atdl4jTesterPanel = Atdl4jConfig.getConfig().createAtdl4jTesterPanel(); atdl4jTesterPanel.addListener( this ); } return atdl4jTesterPanel; } public void okButtonSelected() { if ( getAtdl4jTesterPanel().getAtdl4jCompositePanel().getSelectedStrategy() != null ) { try { // -- (aPerformValidationFlag = true) -- SelectedStrategyDetails tempSelectedStrategyDetails = getAtdl4jTesterPanel().getAtdl4jCompositePanel().getSelectedStrategyDetails( true ); String tempFixMsgFragment = tempSelectedStrategyDetails.getFixMsgFragment(); getAtdl4jTesterPanel().getAtdl4jUserMessageHandler().displayMessage( "Strategy Selected", "Strategy selected: " + tempSelectedStrategyDetails.getSelectedStrategyUiRepOrName() + "\nFIX msg: " + tempFixMsgFragment ); getAtdl4jTesterPanel().closePanel(); } catch (ValidationException ex) { getAtdl4jTesterPanel().getAtdl4jUserMessageHandler().displayException( "Validation/FIX Message Extraction Error", "Error during Validation/FIX Message extraction.", ex ); } } else { getAtdl4jTesterPanel().getAtdl4jUserMessageHandler().displayMessage( "Select Strategy", "Please select a Strategy" ); } } /* (non-Javadoc) * @see org.atdl4j.ui.app.Atdl4jTesterPanelListener#cancelButtonSelected() */ @Override public void cancelButtonSelected() { getAtdl4jTesterPanel().closePanel(); } }