/** * */ package org.opentides.bean; import java.util.Map; import java.util.Set; import org.opentides.util.NamingUtil; /** * @author allantan * */ public class BeanDefinition implements Definition { private String className; private String modelName; private String displayName; private String formName; private String prefix; private String modelPackage; private String package_; private Set<AnnotationDefinition> annotations; private Set<FieldDefinition> fields; private Map<String, Object> params; /** * Constructor using fully qualified class name * * @param qualifiedName - fully qualified name (e.g. org.opentides.bean.SystemCodes) */ public BeanDefinition(String qualifiedName) { this(NamingUtil.getPackageName(qualifiedName), NamingUtil.getSimpleName(qualifiedName)); } /** * Constructor using package and class name. * * Attributes are initialized based on convention below: * className - SystemCodes * modelName - systemCodes * displayName - System Codes * formName - system-codes * prefix - system-codes * modelPackage - org.opentides.bean * package - org.opentides * * @param package_ - name of the package (e.g. org.opentides.bean) * @param name - name of the class (e.g. SystemCodes) */ public BeanDefinition(String package_, String name) { this.className = name; this.modelName = NamingUtil.toAttributeName(name); this.displayName = NamingUtil.toDisplayName(name); this.formName = NamingUtil.toElementName(name); this.prefix = NamingUtil.toElementName(name); this.modelPackage = package_; int t = package_.lastIndexOf("."); if (t > 0) this.package_ = package_.substring(0, t); else this.package_ = ""; } public boolean containsDate() { for (FieldDefinition field:fields) { System.out.println("Field =" + field.getType() +":" + field.getFieldName()); if ("java.util.Date".equals(field.getType())) return true; } return false; } public boolean containsList() { for (FieldDefinition field:fields) { if ("java.util.List".equals(field.getType())) return true; } return false; } public boolean containsByOptions() { for (FieldDefinition field:fields) { if (field.isByOptions()) { return true; } } return false; } public boolean containsValidation() { if(fields!=null) { for(FieldDefinition field: fields) { if(field.getAnnotations().containsKey("Validation")) { return true; } } } return false; } public boolean containsByCategory() { for (FieldDefinition field:fields) { if (field.isByCategory()) return true; } return false; } /** * @return the className */ public final String getClassName() { return className; } /** * @return the modelName */ public final String getModelName() { return modelName; } /** * @return the displayName */ public final String getDisplayName() { return displayName; } /** * @return the formName */ public final String getFormName() { return formName; } /** * @return the prefix */ public final String getPrefix() { return prefix; } /** * @return the modelPackage */ public final String getModelPackage() { return modelPackage; } /** * @return the package_ */ public final String getPackage_() { return package_; } /** * @return the annotations */ public final Set<AnnotationDefinition> getAnnotations() { return annotations; } /** * Returns the attribute setting for the given annotation. * @param name * @return */ public final Object getAttribute(String attribute) { if(annotations!=null){ for (AnnotationDefinition defn:annotations) { if (defn.getParams() != null && defn.getParams().containsKey(attribute)) return defn.getParams().get(attribute); } } return ""; } /** * @param annotations the annotations to set */ public final void setAnnotations(Set<AnnotationDefinition> annotations) { this.annotations = annotations; } /** * @return the fields */ public final Set<FieldDefinition> getFields() { return fields; } /** * @param fields the fields to set */ public final void setFields(Set<FieldDefinition> fields) { this.fields = fields; } /** * @return the params */ public final Map<String, Object> getParams() { return params; } /** * @return fully qualified class name */ public final String getQualifiedName() { return modelPackage + "." + className; } /* (non-Javadoc) * @see java.lang.Object#hashCode() */ @Override public int hashCode() { final int prime = 31; int result = 1; result = prime * result + ((className == null) ? 0 : className.hashCode()); result = prime * result + ((modelPackage == null) ? 0 : modelPackage.hashCode()); return result; } /* (non-Javadoc) * @see java.lang.Object#equals(java.lang.Object) */ @Override public boolean equals(Object obj) { if (this == obj) return true; if (obj == null) return false; if (getClass() != obj.getClass()) return false; BeanDefinition other = (BeanDefinition) obj; if (className == null) { if (other.className != null) return false; } else if (!className.equals(other.className)) return false; if (modelPackage == null) { if (other.modelPackage != null) return false; } else if (!modelPackage.equals(other.modelPackage)) return false; return true; } /* (non-Javadoc) * @see java.lang.Object#toString() */ @Override public String toString() { return modelPackage + "." + className; } }