All Downloads are FREE. Search and download functionalities are using the official Maven repository.

net.anotheria.asg.generator.meta.MetaProperty Maven / Gradle / Ivy

There is a newer version: 4.3.0
Show newest version
package net.anotheria.asg.generator.meta;

import net.anotheria.util.StringUtils;


/**
 * Represents a single property of a document. A property may be basic, like int, boolean, long, or complex, like list or table.
 * This class defines single one typed property mainly.
 *
 * @author another
 * @version $Id: $Id
 */
public class MetaProperty implements Cloneable{
	
	public static enum Type{
		STRING("string"),
        PASSWORD("password"),
		TEXT("text"),
		BOOLEAN("boolean"),
		INT("int"),
		LONG("long"),
		DOUBLE("double"),
		FLOAT("float"),
		LIST("list"),
		IMAGE("image");
		

		String name;
		Type(String aName){
			name = aName;
		}
		
		public String getName(){
			return name;
		}
		
		public static Type findTypeByName(String name){
			for(Type t: values())
				if(t.getName().equals(name))
					return t;
			return null;
		}

		@Override
		public String toString() {
			return "Type{" +
					"name='" + name + '\'' +
					'}';
		}
	}
	
	/**
	 * The type of the property as string.
	 */
	private Type type;
	/**
	 * Name of the property.
	 */
	private String name;
	/**
	 * Resolved property type.
	 */
	private IMetaType metaType;
	/**
	 * True if the property is multilingual.
	 */
	private boolean multilingual;
	/**
	 * True if the property is readonly. For example id is a readonly property. Basically this is only used by the view, 
	 * the application itself still free to change a readonly property.
	 */
	private boolean readonly;
	/**
	 * Creates a new MetaProperty with given name and type description.
	 *
	 * @param aName a {@link java.lang.String} object.
	 * @param aType a {@link net.anotheria.asg.generator.meta.MetaProperty.Type} object.
	 */
	public MetaProperty(String aName, Type aType){
		this(aName, aType, false);
	}
	
	/**
	 * 

Constructor for MetaProperty.

* * @param aName a {@link java.lang.String} object. * @param aType a {@link net.anotheria.asg.generator.meta.MetaProperty.Type} object. * @param aMultilingual a boolean. */ public MetaProperty(String aName, Type aType, boolean aMultilingual){ name = aName; type = aType; metaType = TypeFactory.createType(aType); multilingual = aMultilingual; if (name==null) throw new IllegalArgumentException("name is null"); } /** *

Constructor for MetaProperty.

* * @param aName a {@link java.lang.String} object. * @param aType a {@link net.anotheria.asg.generator.meta.IMetaType} object. */ public MetaProperty(String aName, IMetaType aType){ name = aName; metaType = aType; multilingual = false; if (name==null) throw new IllegalArgumentException("name is null"); } /** *

Getter for the field name.

* * @return a {@link java.lang.String} object. */ public String getName() { return name; } /** * Returns the internal name of the property for language variant. * * @param language a {@link java.lang.String} object. * @return a {@link java.lang.String} object. */ public String getName(String language) { return language == null || !isMultilingual()? getName() : name+StringUtils.capitalize(language); } /** *

Getter for the field name.

* * @param addOn a {@link java.lang.String} object. * @param language a {@link java.lang.String} object. * @return a {@link java.lang.String} object. */ public String getName(String addOn, String language) { return language == null ? getName()+addOn : name+addOn+StringUtils.capitalize(language); } /** *

Getter for the field type.

* * @return a {@link net.anotheria.asg.generator.meta.MetaProperty.Type} object. */ public Type getType() { return type; } /** *

Setter for the field name.

* * @param string a {@link java.lang.String} object. */ public void setName(String string) { name = string; } /** *

toNameConstant.

* * @return a {@link java.lang.String} object. */ public String toNameConstant(){ return "PROP_"+getNameConstantBase(); } /** *

toNameConstant.

* * @param language a {@link java.lang.String} object. * @return a {@link java.lang.String} object. */ public String toNameConstant(String language){ return "PROP_"+getNameConstantBase()+"_"+language.toUpperCase(); } private String getNameConstantBase(){ String ret = ""; for (int i=0; igetAccesserName.

* * @return a {@link java.lang.String} object. */ public String getAccesserName(){ return Character.toUpperCase(name.charAt(0))+name.substring(1); } /** *

getAccesserName.

* * @param language a {@link java.lang.String} object. * @return a {@link java.lang.String} object. */ public String getAccesserName(String language){ return language == null ? getAccesserName() : Character.toUpperCase(name.charAt(0))+name.substring(1)+Character.toUpperCase(language.charAt(0))+language.substring(1); } /** *

toJavaType.

* * @return a {@link java.lang.String} object. */ public String toJavaType(){ return metaType.toJava(); } /** *

toJavaErasedType.

* * @return a {@link java.lang.String} object. */ public String toJavaErasedType(){ return metaType.toJava(); } /** *

toJavaObjectType.

* * @return a {@link java.lang.String} object. */ public String toJavaObjectType(){ return metaType.toJavaObject(); } /** *

toPropertyGetter.

* * @return a {@link java.lang.String} object. */ public String toPropertyGetter(){ return metaType.toPropertyGetter(); } /** *

toPropertySetter.

* * @return a {@link java.lang.String} object. */ public String toPropertySetter(){ return metaType.toPropertySetter(); } /** *

toBeanGetter.

* * @return a {@link java.lang.String} object. */ public String toBeanGetter(){ return metaType.toBeanGetter(name); } /** *

toBeanGetter.

* * @param language a {@link java.lang.String} object. * @return a {@link java.lang.String} object. */ public String toBeanGetter(String language){ return language == null ? toBeanGetter() : metaType.toBeanGetter(name)+StringUtils.capitalize(language); } /** *

toBeanSetter.

* * @return a {@link java.lang.String} object. */ public String toBeanSetter(){ return metaType.toBeanSetter(name); } /** *

toBeanSetter.

* * @param language a {@link java.lang.String} object. * @return a {@link java.lang.String} object. */ public String toBeanSetter(String language){ return language == null ? toBeanSetter() : metaType.toBeanSetter(name)+StringUtils.capitalize(language); } /** {@inheritDoc} */ @Override public String toString(){ return type+" "+name; } /** *

isLinked.

* * @return a boolean. */ public boolean isLinked(){ return false; } /** *

toSetter.

* * @param language a {@link java.lang.String} object. * @return a {@link java.lang.String} object. */ public String toSetter(String language){ return "set"+getAccesserName(language); } /** *

toSetter.

* * @return a {@link java.lang.String} object. */ public String toSetter(){ return "set"+getAccesserName(); } /** *

toGetter.

* * @return a {@link java.lang.String} object. */ public String toGetter(){ return "get"+getAccesserName(); } /** *

toGetter.

* * @param language a {@link java.lang.String} object. * @return a {@link java.lang.String} object. */ public String toGetter(String language){ return "get"+getAccesserName(language); } /** * Returns the metatype of this property. * * @return a {@link net.anotheria.asg.generator.meta.IMetaType} object. */ public IMetaType getMetaType(){ return metaType; } /** * Returns true if the property is multilingual. * * @return a boolean. */ public boolean isMultilingual() { return multilingual; } /** * Sets the multilingual support of the property. * * @param multilingual a boolean. */ public void setMultilingual(boolean multilingual) { this.multilingual = multilingual; } /** * Returns true if the property is read only. * * @return a boolean. */ public boolean isReadonly() { return readonly; } /** *

Setter for the field readonly.

* * @param readonly a boolean. */ public void setReadonly(boolean readonly) { this.readonly = readonly; } /** {@inheritDoc} */ @Override public Object clone(){ try{ return super.clone(); }catch(CloneNotSupportedException e){ //ignore } throw new AssertionError("Can't happen"); } }




© 2015 - 2025 Weber Informatics LLC | Privacy Policy