package scrum.mda; import ilarkesto.base.Str; import ilarkesto.base.time.Date; import ilarkesto.base.time.DateAndTime; import ilarkesto.base.time.Time; import ilarkesto.core.logging.Log; import ilarkesto.core.scope.Scope; import ilarkesto.di.app.ApplicationStarter; import ilarkesto.mda.legacy.model.EntityModel; import ilarkesto.mda.legacy.model.PropertyModel; import ilarkesto.mda.model.CsvFileModelSource; import ilarkesto.mda.model.Model; import ilarkesto.mda.model.ModelProcessor; import ilarkesto.mda.model.ModellingSession; import ilarkesto.mda.model.Node; import ilarkesto.mda.model.NodeTypes; import ilarkesto.mda.swingeditor.Starter; import ilarkesto.mda.swingeditor.Workspace; import java.io.File; import java.util.List; public class ScrumModeller extends Starter { private static Log log = Log.get(ScrumModeller.class); private static ScrumModelApplication scrumModelApplication; public static void main(String[] args) { scrumModelApplication = ApplicationStarter.startApplication(ScrumModelApplication.class); Scope scope = createModellerScope(); ModellingSession modellingSession = scope.getComponent(ModellingSession.class); modellingSession.addProcessor(new LegacyGeneration()); // modellingSession.addProcessor(new TextGeneration()); modellingSession.load(new CsvFileModelSource(new File("src/model.csv"))); appendLegacy(modellingSession.getModel()); scope.getComponent(Workspace.class).showJFrame(); } private static void appendLegacy(Model model) { Node nRoot = model.getRoot(); Node nScrum = nRoot.getChildOrCreate(NodeTypes.GwtModule, "Scrum"); for (EntityModel entity : scrumModelApplication.getEntityModels(false)) { if (!entity.isGwtSupport()) continue; log.info(entity.getName()); String packageName = Str.removePrefix(entity.getPackageName(), "scrum.server."); Node nPackage = nScrum.getChildOrCreate(NodeTypes.Package, packageName); Node nEntity = nPackage.getChildOrCreate("Entity", entity.getName()); for (PropertyModel property : entity.getProperties()) { Node nProperty; if (property.isReference()) { nProperty = nEntity.getChildOrCreate(NodeTypes.ReferenceProperty, property.getName()); } else if (property.getType().equals(String.class.getName())) { nProperty = nEntity.getChildOrCreate(NodeTypes.TextProperty, property.getName()); } else if (property.getType().equals(Integer.class.getName())) { nProperty = nEntity.getChildOrCreate(NodeTypes.IntegerProperty, property.getName()); } else if (property.getType().equals(int.class.getName())) { nProperty = nEntity.getChildOrCreate(NodeTypes.IntegerProperty, property.getName()); } else if (property.getType().equals(Float.class.getName())) { nProperty = nEntity.getChildOrCreate(NodeTypes.FloatProperty, property.getName()); } else if (property.getType().equals(float.class.getName())) { nProperty = nEntity.getChildOrCreate(NodeTypes.FloatProperty, property.getName()); } else if (property.getType().equals(Boolean.class.getName())) { nProperty = nEntity.getChildOrCreate(NodeTypes.BooleanProperty, property.getName()); } else if (property.getType().equals(boolean.class.getName())) { nProperty = nEntity.getChildOrCreate(NodeTypes.BooleanProperty, property.getName()); } else if (property.getType().equals(Date.class.getName())) { nProperty = nEntity.getChildOrCreate(NodeTypes.DateProperty, property.getName()); } else if (property.getType().equals(Time.class.getName())) { nProperty = nEntity.getChildOrCreate(NodeTypes.TimeProperty, property.getName()); } else if (property.getType().equals(DateAndTime.class.getName())) { nProperty = nEntity.getChildOrCreate(NodeTypes.DateAndTimeProperty, property.getName()); } else { log.error("Unsupported type:", property.getType()); continue; } } } } static class LegacyGeneration implements ModelProcessor { public void processModel(Model model) { scrumModelApplication.generateClasses().shutdown(); } } static class TextGeneration implements ModelProcessor { public void processModel(Model model) { List<Node> nodes = model.getRoot().getChildrenByTypeRecursive(NodeTypes.EN); for (Node n : nodes) { System.out.println(""); System.out.println("<h2>" + Str.uppercaseFirstLetter(n.getParent().getValue()) + "</h2>"); System.out.println(n.getValue()); } } } }