package foundation.io.action; import java.lang.reflect.Method; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; import foundation.dao.DataReader; import foundation.dao.DataWriter; import foundation.data.entity.EntitySet; import foundation.handler.Handler; import foundation.handler.MethodPublisher; import foundation.io.define.DataIO; import foundation.io.define.IOTask; public abstract class IOActionProvider extends MethodPublisher { protected static Logger logger; protected boolean terminated; protected DataReader dataReader; protected DataWriter dataWriter; static { logger = LogManager.getLogger(Handler.class); } public void init(DataReader dataReader, DataWriter dataWriter) { this.dataReader = dataReader; this.dataWriter = dataWriter; } public void exec(String methodName, IOTask ioTask, DataIO dataIO, EntitySet entitySet) { Method method = getMethod(methodName); if (method == null) { logger.error("method exec error: {} not exists", methodName); return; } try { method.invoke(this, ioTask, dataIO, entitySet); } catch (Exception e) { e.printStackTrace(); } } public void terminate() { terminated = true; } public boolean isTerminated() { return terminated; } }