package foundation.state; import java.util.HashMap; import java.util.List; import java.util.Map; import foundation.dao.preload.Bucket; import foundation.util.Util; public class MachineBucket extends Bucket { private static Object locker = new Object(); private static MachineBucket instance; private Map dataMachineMap; public MachineBucket() { dataMachineMap = new HashMap(); } public static MachineBucket getInstance() { if (instance == null) { synchronized (locker) { if (instance == null) { instance = new MachineBucket(); } } } return instance; } public static MachineBucket newInstance() { return new MachineBucket(); } @Override public void activate() { instance = this; } public void loadtarget(String dataName, StateMachine machine) { dataMachineMap.put(dataName, machine); } public static StateMachine getMachineByDataName(String dataName) { StateMachine result = instance.dataMachineMap.get(dataName); if (result == null) { logger.error("数据对象{}对应的状态机没有找到", dataName); } return result; } public static StateMachine getMachineById(String machineId) { StateMachine result = instance.get(machineId); if (result == null) { logger.error("状态机{}没有找到", machineId); } return result; } public static boolean isInFreedom(String dataName, String stateCode) { if (Util.isEmpty(stateCode)) { return true; } StateMachine machine = getMachineByDataName(dataName); if (machine == null) { return false; } State state = machine.getState(stateCode); if (state == null) { return false; } return state.isInFreedom(); } public static StateField getStateField(String dataName) { StateMachine machine = getMachineByDataName(dataName); if (machine == null) { return null; } return machine.getStateField(); } }