Tutorials > Program model > Create new business logic > Code reference
MyNewControllerCmdImpl sample code
Example of MyNewControllerCmdImpl sample code.
package com.ibm.commerce.sample.commands; //*------------------------------------------------------------------- //* Licensed Materials - Property of IBM //* //* WebSphere Commerce //* //* (c) Copyright International Business Machines Corporation. 2001, 2003, 2005 //* All rights reserved. //* //* US Government Users Restricted Rights - Use, duplication or //* disclosure restricted by GSA ADP Schedule Contract with IBM Corp. //* //*------------------------------------------------------------------- //* The sample contained herein is provided to you "AS IS". //* //* It is furnished by IBM as a simple example and has not been //* thoroughly tested under all conditions. IBM, therefore, cannot guarantee its //* reliability, serviceability or functionality. //* //* This sample may include the names of individuals, companies, brands //* and products in order to illustrate concepts as completely as //* possible. All of these names //* are fictitious and any similarity to the names and addresses used by //* actual persons or business enterprises is entirely coincidental. //*--------------------------------------------------------------------- /* /// Import Section 1 /////////////////////////////// import com.ibm.commerce.sample.databeans.MyNewDataBean; /// End of Import Section 1 //////////////////////// */ /* /// Import Section 2 /////////////////////////////// import com.ibm.commerce.extension.objects.BonusAccessBean; import com.ibm.commerce.sample.databeans.BonusDataBean; /// End of Import Section 2 //////////////////////// */ import com.ibm.commerce.datatype.TypedProperty; import com.ibm.commerce.user.objects.UserRegistryAccessBean; import com.ibm.commerce.exception.ECApplicationException; import com.ibm.commerce.exception.ECException; import com.ibm.commerce.exception.ECSystemException; import com.ibm.commerce.exception.ParameterNotFoundException; import com.ibm.commerce.ras.ECMessage; import com.ibm.commerce.ras.ECMessageHelper; import com.ibm.commerce.server.ECConstants; import com.ibm.commerce.command.CommandFactory; import com.ibm.commerce.command.ControllerCommandImpl; import com.ibm.commerce.accesscontrol.AccessVector; public class MyNewControllerCmdImpl extends ControllerCommandImpl implements MyNewControllerCmd { private static final String COPYRIGHT = com.ibm.commerce.copyright.IBMCopyright.SHORT_COPYRIGHT; /* /// Section 1 //////////////////////////////////////////////// /// create and implement controller command's fields and accessors (setter/getter methods) private java.lang.String userName = null; private java.lang.Integer points; public java.lang.Integer getPoints() { return points; } public java.lang.String getUserName() { return userName; } public void setPoints(java.lang.Integer newPoints) { points = newPoints; } public void setUserName(java.lang.String newUserName) { userName = newUserName; } /// End of Section 1 ///////////////////////////////////////// */ /* /// Section 2 //////////////////////////////////////////////// /// create a user registry accessbean resource instance variable private UserRegistryAccessBean rrb = null; /// End of Section 2 ///////////////////////////////////////// */ /* /// Section 3 //////////////////////////////////////////////// /// Create an instance variable of type AccessVector to hold the resources /// and a BonusAccessBean instance variable for access control purposes. private AccessVector resources = null; private BonusAccessBean bb = null; /// End of Section 3 ///////////////////////////////////////// */ /* /// AccessControl Section //////////////////////////////////// public AccessVector getResources() throws ECException{ if (resources == null ) { /// use UserRegistryAccessBean to check user reference number String refNum = null; String methodName = "getResources"; rrb = new UserRegistryAccessBean(); try { rrb = rrb.findByUserLogonId(getUserName()); refNum = rrb.getUserId(); } catch (javax.ejb.FinderException e) { throw new ECSystemException(ECMessage._ERR_FINDER_EXCEPTION,this.getClass().getName(),methodName,e); } catch (javax.naming.NamingException e) { throw new ECSystemException(ECMessage._ERR_NAMING_EXCEPTION,this.getClass().getName(), methodName,e); } catch (java.rmi.RemoteException e) { throw new ECSystemException(ECMessage._ERR_REMOTE_EXCEPTION,this.getClass().getName(), methodName,e); } catch (javax.ejb.CreateException e) { throw new ECSystemException(ECMessage._ERR_CREATE_EXCEPTION,this.getClass().getName(), methodName,e); } /// find the bonus bean for this registered user bb = new com.ibm.commerce.extension.objects.BonusAccessBean(); try { if (refNum != null) { bb.setInitKey_memberId(new Long(refNum)); bb.refreshCopyHelper(); resources = new AccessVector(bb); } } catch (javax.ejb.FinderException e) { ///doesn't have a bonus object so return the container that will hold the bonus object when it is created resources = new AccessVector(rrb); return resources; } catch (javax.naming.NamingException e) { throw new ECSystemException(ECMessage._ERR_NAMING_EXCEPTION, this.getClass().getName(), methodName); } catch (java.rmi.RemoteException e) { throw new ECSystemException(ECMessage._ERR_REMOTE_EXCEPTION, this.getClass().getName(), methodName); } catch (javax.ejb.CreateException e) { throw new ECSystemException(ECMessage._ERR_CREATE_EXCEPTION, this.getClass().getName(), methodName); } } return resources; } /// End of AccessControl Section ////////////////////////////////// */ /** * This constructor calls the superclass constructor. */ public MyNewControllerCmdImpl() { super(); } /** * The business logic for this controller command. For this default implementation * we simply call validateParameters. Command writers who overwrite this method * call super() as the first line in their method if they want to call validateParameters. * * @exception com.ibm.commerce.exception.ECException An ECException is thrown in the case of an error . */ public void performExecute() throws ECException { /// perform server side parameter checking super.performExecute(); /* /// Section 1 //////////////////////////////////////////////// /// Create a new TypedProperties for output purposes. TypedProperty rspProp = new TypedProperty(); /// End of section 1 ///////////////////////////////////////// */ /* /// Section 2 //////////////////////////////////////////////// /// The controller command pass in variables to the JSP page /// add additional parameters in controller command to rspProp for response String message1 = "Hello from IBM!"; rspProp.put("controllerParm1", message1); rspProp.put("controllerParm2", "Have a nice day!"); /// End of section 2///////////////////////////////////////// */ /* /// Section 3A///////////////////////////////////////// /// instantiate the MyNewDataBean databean and set the properties, then add the instance to resProp for response MyNewDataBean mndb = new MyNewDataBean(); mndb.setCallingCommandName(this.getClass().getName()); mndb.setCalledByControllerCmd(true); /// end of section 3A///////////////////////////////////////// */ /* /// Section 3C///////////////////////////////////////// // pass the input information to the databean mndb.setUserName(this.getUserName()); mndb.setPoints(this.getPoints()); /// end of section 3C///////////////////////////////////////// */ /* /// Section 3B///////////////////////////////////////// rspProp.put("mndbInstance", mndb); /// end of section 3B///////////////////////////////////////// */ /// Area 4 //////////////////////////////////////////////// /* /// Section 4A /// The controller command calls a task command MyNewTaskCmd cmd = null; try { cmd = (MyNewTaskCmd) CommandFactory.createCommand("com.ibm.commerce.sample.commands.MyNewTaskCmd", getStoreId()); // this is required for all commands cmd.setCommandContext(getCommandContext()); /// set input parameters to task command cmd.setInputUserName(getUserName()); cmd.setInputPoints(getPoints()); // change to Integer /// End Section 4A /////////////////////////////////////// */ /* // Section 4D //////////////////////////////////// /// pass rrb instance variable to the task command cmd.setUserRegistryAccessBean(rrb); // End of section 4D ///////////////////////////// */ /* // Section 4E //////////////////////////////////// /// pass bb instance variable to the task command cmd.setBonusAccessBean(bb); // End of section 4E ///////////////////////////// */ /* /// Section 4B /////////////////////////////////// /// invoke the command's performExecute method cmd.execute(); /// retrieve output parameter from task command, then put it to response properties rspProp.put("taskOutputGreetings", cmd.getGreetings()); /// End Section 4B ///////////////////////////////////// */ /* // Section 4F /////////////////////////////////////// ///using access bean to get information from databse if (cmd.getFoundUserId() != null) { rspProp.put("taskOutputUserId", cmd.getFoundUserId()); } // End of section 4F ///////////////////////////// */ /* // Section 4G /////////////////////////////////////// if (cmd.getOldBonusPoints() != null) { rspProp.put("oldBonusPoints", cmd.getOldBonusPoints()); } // End of section 4G ///////////////////////////// */ /* // Section 4H /////////////////////////////////////// ///Instantiate the bonus databean , then put it into response properties BonusDataBean bdb = new com.ibm.commerce.sample.databeans.BonusDataBean(cmd.getBonusAccessBean()); rspProp.put("bdbInstance", bdb ); // End of section 4H //////////////////////////////// */ /* /// Start Section 4C //////////////////////////////////// } catch (ECException ex) { /// throw the exception as is throw (ECException) ex; } /// End Section 4C ////////////////////////////////////// */ /// End of Area 4/////////////////////////////////////////// /* /// Section 5 ///////////////////////////////////////////////// /// see how controller command call a JSP rspProp.put(ECConstants.EC_VIEWTASKNAME, "MyNewView"); setResponseProperties(rspProp); /// End of section 5/////////////////////////////////////////// */ } /** * * ControllerCommandImpl calls validateParameter in performExecute. * It is the responsibility of the command writers to implements * this method if they want to perform server side parameter checking. * They should either calls validateParameters inside their performExecute * or calls super.performExecute() as the first statement in the * performExecute method. * * * @exception CommandException. */ public void validateParameters() throws ECException { /* /// Section 1 ///////////////////////////////////////////////// /// uncomment to check parameters final String strMethodName = "validateParameters"; TypedProperty prop = getRequestProperties(); /// retrieve required parameters try { setUserName(prop.getString("input1")); } catch (ParameterNotFoundException e) { /// the next exception uses _ERR_CMD_MISSING_PARAM ECMessage object defined in ECMessage class throw new ECApplicationException(ECMessage._ERR_CMD_MISSING_PARAM, this.getClass().getName(), strMethodName, ECMessageHelper.generateMsgParms(e.getParamName())); } /// retrieve optional Integer // set input2 = 0 if no input value setPoints(prop.getInteger("input2",0)); /// End of section 1////////////////////////////////////////////////////////// */ } }