package ilarkesto.mda.model; import ilarkesto.core.event.EventBus; import ilarkesto.core.logging.Log; import ilarkesto.core.scope.In; import ilarkesto.mda.model.processor.GwtClassesGenerator; import java.util.ArrayList; import java.util.List; public class ModellingSession { private static Log log = Log.get(ModellingSession.class); @In protected EventBus eventBus; private ModelSource source; private Model model = new Model(); private RuleSet ruleSet = new RuleSet(); private List<ModelProcessor> processors = new ArrayList<ModelProcessor>(); public ModellingSession() { addProcessor(new GwtClassesGenerator()); } public Model getModel() { return model; } public RuleSet getRuleSet() { return ruleSet; } public void addProcessor(ModelProcessor processor) { processors.add(processor); log.debug("Processor added:", processor); } public void process() { for (ModelProcessor processor : processors) { processor.processModel(model); } } public void load(ModelSource source) { model = new Model(); this.source = source; source.load(model); eventBus.fireEvent(new ModelChangedEvent()); } public void save(ModelSource source) { this.source = source; save(); } public void save() { if (source == null) throw new IllegalStateException("source == null"); source.save(model); } }