package com.akjava.lib.common.form;
import java.util.ArrayList;
import java.util.List;
import com.akjava.lib.common.param.Parameter;
import com.akjava.lib.common.tag.LabelAndValue;
import com.google.common.base.Joiner;
import com.google.common.collect.Lists;
public class FormFieldData {
private String name;
private String key;
private int type;
private FormData parent;
public FormData getParent() {
return parent;
}
public void setParent(FormData parent) {
this.parent = parent;
}
public int getType() {
return type;
}
public void setType(int type) {
this.type = type;
}
private String defaultValue;
public String getDefaultValue() {
return defaultValue;
}
public void setDefaultValue(String defaultValue) {
this.defaultValue = defaultValue;
}
private boolean createAuto;
private List<LabelAndValue> optionValues=new ArrayList<LabelAndValue>();
private List<Validator> validators=new ArrayList<Validator>();
private List<Modifier> modifiers=new ArrayList<Modifier>();
public List<Modifier> getModifiers() {
return modifiers;
}
public void setModifiers(List<Modifier> modifiers) {
this.modifiers = modifiers;
}
private String placeHolder;
private String comment;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getKey() {
return key;
}
public void setKey(String key) {
this.key = key;
}
public boolean isCreateAuto() {
return createAuto;
}
public void setCreateAuto(boolean createAuto) {
this.createAuto = createAuto;
}
private String optionText;
public String getOptionText() {
return optionText;
}
public void setOptionText(String optionText) {
this.optionText = optionText;
}
public List<LabelAndValue> getOptionValues() {
return optionValues;
}
public void setOptionValues(List<LabelAndValue> optionValues) {
this.optionValues = optionValues;
}
public List<Validator> getValidators() {
return validators;
}
public void setValidators(List<Validator> validators) {
this.validators = validators;
}
public String getPlaceHolder() {
return placeHolder;
}
public void setPlaceHolder(String placeHolder) {
this.placeHolder = placeHolder;
}
public String getComment() {
return comment;
}
public void setComment(String comment) {
this.comment = comment;
}
public static final int TYPE_TEXT_SHORT=0;
public static final int TYPE_TEXT_LONG=1;
public static final int TYPE_ID=2;
public static final int TYPE_CHECK=3;
public static final int TYPE_SELECT_SINGLE=4;
public static final int TYPE_SELECT_MULTI=5;
public static final int TYPE_CREATE_DATE=6;
public static final int TYPE_CREATE_USER=7;
public static final int TYPE_MODIFIED_DATE=8;
public static final int TYPE_MODIFIED_USER=9;
public static final int TYPE_NUMBER=10;//long
public static final int TYPE_INTEGER=11;//int
public static final int TYPE_POINT=12;//a decimal point
public static final int TYPE_HIDDEN=13;
public static final String VALUE_TYPE_TEXT_SHORT="text";
public static final String VALUE_TYPE_TEXT_LONG="text_long";
public static final String VALUE_TYPE_ID="id";
public static final String VALUE_TYPE_CHECK="check";
public static final String VALUE_TYPE_SELECT_SINGLE="select";
public static final String VALUE_TYPE_SELECT_MULTI="select_multi";
public static final String VALUE_TYPE_CREATE_DATE="create_date";
public static final String VALUE_TYPE_CREATE_USER="create_user";
public static final String VALUE_TYPE_MODIFIED_DATE="modified_date";
public static final String VALUE_TYPE_MODIFIED_USER="modified_user";
public static final String VALUE_TYPE_NUMBER="number";//long
public static final String VALUE_TYPE_INTEGER="int";
public static final String VALUE_TYPE_POINT="point";
public static final String VALUE_TYPE_HIDDEN="hidden";
public static String getTypeByNumber(int value){
switch(value){
case TYPE_TEXT_LONG:
return VALUE_TYPE_TEXT_LONG;
case TYPE_ID:
return VALUE_TYPE_ID;
case TYPE_CHECK:
return VALUE_TYPE_CHECK;
case TYPE_SELECT_SINGLE:
return VALUE_TYPE_SELECT_SINGLE;
case TYPE_SELECT_MULTI:
return VALUE_TYPE_SELECT_MULTI;
case TYPE_CREATE_DATE:
return VALUE_TYPE_CREATE_DATE;
case TYPE_CREATE_USER:
return VALUE_TYPE_CREATE_USER;
case TYPE_MODIFIED_DATE:
return VALUE_TYPE_MODIFIED_DATE;
case TYPE_MODIFIED_USER:
return VALUE_TYPE_MODIFIED_USER;
case TYPE_NUMBER:
return VALUE_TYPE_NUMBER;
case TYPE_INTEGER:
return VALUE_TYPE_INTEGER;
case TYPE_POINT:
return VALUE_TYPE_POINT;
case TYPE_HIDDEN:
return VALUE_TYPE_HIDDEN;
default:
return VALUE_TYPE_TEXT_SHORT;
}
}
public static final List<String> TYPES=Lists.newArrayList(VALUE_TYPE_TEXT_SHORT,"text_short",
VALUE_TYPE_TEXT_LONG,VALUE_TYPE_ID,VALUE_TYPE_CHECK,
VALUE_TYPE_SELECT_SINGLE,"select_single",
VALUE_TYPE_SELECT_MULTI,VALUE_TYPE_CREATE_DATE,VALUE_TYPE_CREATE_USER,VALUE_TYPE_MODIFIED_DATE,VALUE_TYPE_MODIFIED_USER,VALUE_TYPE_NUMBER,"long",VALUE_TYPE_INTEGER,VALUE_TYPE_POINT,VALUE_TYPE_HIDDEN);
public static int getTypeByLabel(String v){
int type=0;
if(v.equals(VALUE_TYPE_TEXT_SHORT)||v.equals("text_short")){
type=TYPE_TEXT_SHORT;
}else if(v.equals(VALUE_TYPE_TEXT_LONG)){
type=TYPE_TEXT_LONG;
}else if(v.equals(VALUE_TYPE_ID)){
type=TYPE_ID;
}else if(v.equals(VALUE_TYPE_CHECK)){
type=TYPE_CHECK;
}else if(v.equals(VALUE_TYPE_SELECT_SINGLE)||v.equals("select_single")){
type=TYPE_SELECT_SINGLE;
}else if(v.equals(VALUE_TYPE_SELECT_MULTI)){
type=TYPE_SELECT_MULTI;
}else if(v.equals(VALUE_TYPE_CREATE_DATE)){
type=TYPE_CREATE_DATE;
}else if(v.equals(VALUE_TYPE_CREATE_USER)){
type=TYPE_CREATE_USER;
}else if(v.equals(VALUE_TYPE_MODIFIED_DATE)){
type=TYPE_CREATE_DATE;
}else if(v.equals(VALUE_TYPE_MODIFIED_USER)){
type=TYPE_MODIFIED_USER;
}else if(v.equals(VALUE_TYPE_NUMBER)||v.equals("long")){
type=TYPE_NUMBER;
}else if(v.equals(VALUE_TYPE_INTEGER)){
type=TYPE_INTEGER;
}else if(v.equals(VALUE_TYPE_POINT)||v.equals("double")){
type=TYPE_POINT;
}else if(v.equals(VALUE_TYPE_HIDDEN)){
type=TYPE_HIDDEN;
}
return type;
}
/**
* text_short not tested so much
* @param type
* @return
*/
public static boolean isSupportRelativeOptionType(int type){
return type==TYPE_SELECT_MULTI||type==TYPE_SELECT_SINGLE||type==TYPE_NUMBER||type==TYPE_TEXT_SHORT;
}
public static boolean isSelectionType(int type){
return type==TYPE_SELECT_MULTI||type==TYPE_SELECT_SINGLE;
}
public boolean isRelativeField(){
Parameter parameter=FormDataDto.parseParameter(getOptionText());
return parameter!=null;
}
public String toString(){
return Joiner.on(";").withKeyValueSeparator("=").useForNull("null").join(FormFieldDataDto.formDataToMap(this));
}
}