package com.aincc.lib.network.common; /** * * <h3><b>BaseTrans</b></h3></br> * * abstract base transaction class * * @author aincc@barusoft.com * @version 1.0.0 * @since 1.0.0 */ public abstract class BaseTrans { /** * tag */ // private static final String TAG = BaseTrans.class.getSimpleName(); /** * base request parameter * * @since 1.0.0 */ protected BaseParam param; /** * create new instance * * @since 1.0.0 * @param packet * @return new instance * @throws Exception */ public static BaseTrans newInstance(IPacket packet) throws Exception { Class<? extends BaseTrans> transactionClass = Class.forName(packet.getTransCode()).asSubclass(BaseTrans.class); BaseTrans transaction = (BaseTrans) transactionClass.newInstance(); transaction.setPacket(packet); return transaction; } /** * create new instance * * @since 1.0.0 * @param packet * @param transactionClass * @return BaseTrans object * @throws Exception */ public static BaseTrans newInstance(IPacket packet, Class<? extends BaseTrans> transactionClass) throws Exception { BaseTrans transaction = (BaseTrans) transactionClass.newInstance(); transaction.setPacket(packet); return transaction; } /** * create new instance * * @since 1.0.0 * @param packet * @param transactionClass * @param param * @return BaseTrans object * @throws Exception */ public static BaseTrans newInstance(IPacket packet, Class<? extends BaseTrans> transactionClass, BaseParam param) throws Exception { BaseTrans transaction = (BaseTrans) transactionClass.newInstance(); transaction.setParam(param); transaction.setPacket(packet); return transaction; } /** * @return the param */ public BaseParam getParam() { return param; } /** * @param param * the param to set */ public void setParam(BaseParam param) { this.param = param; } /** * make packet * * @since 1.0.0 * @param packet * @throws Exception */ public abstract void setPacket(IPacket packet) throws Exception; /** * get packet (for send message) * * @since 1.0.0 * @return IPacket * @throws Exception */ public abstract IPacket getPacket() throws Exception; }