package simplefsmtest.fsm.adapters.fsmmt;
import fr.inria.diverse.melange.adapters.AdaptersFactory;
import fr.inria.diverse.melange.adapters.EObjectAdapter;
import fsm.FSM;
import fsm.State;
import fsm.Transition;
import java.util.WeakHashMap;
import org.eclipse.emf.ecore.EObject;
import org.eclipse.emf.ecore.resource.Resource;
import simplefsmtest.fsm.adapters.fsmmt.fsm.FSMAdapter;
import simplefsmtest.fsm.adapters.fsmmt.fsm.StateAdapter;
import simplefsmtest.fsm.adapters.fsmmt.fsm.TransitionAdapter;
@SuppressWarnings("all")
public class FsmMTAdaptersFactory implements AdaptersFactory {
private static FsmMTAdaptersFactory instance;
public static FsmMTAdaptersFactory getInstance() {
if (instance == null) {
instance = new simplefsmtest.fsm.adapters.fsmmt.FsmMTAdaptersFactory();
}
return instance;
}
private WeakHashMap<EObject, EObjectAdapter> register;
public FsmMTAdaptersFactory() {
register = new WeakHashMap();
}
public EObjectAdapter createAdapter(final EObject o, final Resource res) {
if (o instanceof fsm.FSM){
return createFSMAdapter((fsm.FSM) o, res);
}
if (o instanceof fsm.State){
return createStateAdapter((fsm.State) o, res);
}
if (o instanceof fsm.Transition){
return createTransitionAdapter((fsm.Transition) o, res);
}
return null;
}
public FSMAdapter createFSMAdapter(final FSM adaptee, final Resource res) {
if (adaptee == null)
return null;
EObjectAdapter adapter = register.get(adaptee);
if(adapter != null)
return (simplefsmtest.fsm.adapters.fsmmt.fsm.FSMAdapter) adapter;
else {
adapter = new simplefsmtest.fsm.adapters.fsmmt.fsm.FSMAdapter();
adapter.setAdaptee(adaptee);
adapter.setResource(res);
register.put(adaptee, adapter);
return (simplefsmtest.fsm.adapters.fsmmt.fsm.FSMAdapter) adapter;
}
}
public StateAdapter createStateAdapter(final State adaptee, final Resource res) {
if (adaptee == null)
return null;
EObjectAdapter adapter = register.get(adaptee);
if(adapter != null)
return (simplefsmtest.fsm.adapters.fsmmt.fsm.StateAdapter) adapter;
else {
adapter = new simplefsmtest.fsm.adapters.fsmmt.fsm.StateAdapter();
adapter.setAdaptee(adaptee);
adapter.setResource(res);
register.put(adaptee, adapter);
return (simplefsmtest.fsm.adapters.fsmmt.fsm.StateAdapter) adapter;
}
}
public TransitionAdapter createTransitionAdapter(final Transition adaptee, final Resource res) {
if (adaptee == null)
return null;
EObjectAdapter adapter = register.get(adaptee);
if(adapter != null)
return (simplefsmtest.fsm.adapters.fsmmt.fsm.TransitionAdapter) adapter;
else {
adapter = new simplefsmtest.fsm.adapters.fsmmt.fsm.TransitionAdapter();
adapter.setAdaptee(adaptee);
adapter.setResource(res);
register.put(adaptee, adapter);
return (simplefsmtest.fsm.adapters.fsmmt.fsm.TransitionAdapter) adapter;
}
}
}