package ilarkesto.mda.legacy.model; import ilarkesto.base.Str; import ilarkesto.persistence.AEntity; import java.util.LinkedHashSet; import java.util.Set; public class DatobModel extends BeanModel { private Set<PropertyModel> properties = new LinkedHashSet<PropertyModel>(); private boolean searchable; private boolean gwtSupport; public DatobModel(String name, String packageName) { super(name, packageName); } @Override public boolean isValueObject() { return true; } public boolean isGwtSupport() { return gwtSupport; } public void setGwtSupport(boolean gwtSupport) { this.gwtSupport = gwtSupport; } public void setSearchable(boolean searchable) { this.searchable = searchable; } public final boolean isSearchable() { if (searchable) return true; for (PropertyModel p : getProperties()) { if (p.isSearchable()) return true; } return false; } public final Set<PropertyModel> getProperties() { return properties; } public StringPropertyModel addStringProperty(String name) { StringPropertyModel propertyModel = new StringPropertyModel(this, name); properties.add(propertyModel); return propertyModel; } public IntegerPropertyModel addIntegerProperty(String name) { IntegerPropertyModel propertyModel = new IntegerPropertyModel(this, name); properties.add(propertyModel); return propertyModel; } public SimplePropertyModel addProperty(String name, Class type) { SimplePropertyModel propertyModel = new SimplePropertyModel(this, name, false, false, type.getName()); properties.add(propertyModel); return propertyModel; } public ListPropertyModel addListProperty(String name, Class type) { ListPropertyModel propertyModel = new ListPropertyModel(this, name, false, type); properties.add(propertyModel); return propertyModel; } public SetPropertyModel addSetProperty(String name, Class type) { SetPropertyModel propertyModel = new SetPropertyModel(this, name, false, type); properties.add(propertyModel); return propertyModel; } public SetPropertyModel addSetProperty(String name, BeanModel type) { boolean valueObject = type.isValueObject(); SetPropertyModel propertyModel = new SetPropertyModel(this, name, false, valueObject, type.getPackageName() + "." + type.getName()); propertyModel.setSearchable(true); properties.add(propertyModel); return propertyModel; } public SimplePropertyModel addReference(String name, EntityModel type) { String className = type.getPackageName() + "." + type.getName(); SimplePropertyModel propertyModel = new SimplePropertyModel(this, name, type); propertyModel.setAbstract(type.isAbstract()); properties.add(propertyModel); if (!"User".equals(type.getName()) && !AEntity.class.getName().equals(className) && !type.isAbstract() && !type.equals(this)) addDependency(type.getPackageName() + "." + type.getName() + "Dao", Str.lowercaseFirstLetter((type .getName())) + "Dao"); return propertyModel; } public SetPropertyModel addSetReference(String name, BeanModel type) { String className = type.getPackageName() + "." + type.getName(); SetPropertyModel propertyModel = new SetPropertyModel(this, name, true, false, className); propertyModel.setAbstract(type.isAbstract()); properties.add(propertyModel); if (!"User".equals(type.getName()) && !AEntity.class.getName().equals(className)) addDependency(type.getPackageName() + "." + type.getName() + "Dao", Str.lowercaseFirstLetter((type .getName())) + "Dao"); return propertyModel; } public ListPropertyModel addListReference(String name, BeanModel type) { String className = type.getPackageName() + "." + type.getName(); ListPropertyModel propertyModel = new ListPropertyModel(this, name, true, false, className); propertyModel.setAbstract(type.isAbstract()); properties.add(propertyModel); if (!"User".equals(type.getName()) && !AEntity.class.getName().equals(className)) addDependency(type.getPackageName() + "." + type.getName() + "Dao", Str.lowercaseFirstLetter((type .getName())) + "Dao"); return propertyModel; } }