package net.techreadiness.service.common;
import java.util.LinkedHashMap;
import java.util.Map;
import net.techreadiness.persistence.domain.EntityFieldDO;
import net.techreadiness.persistence.domain.ViewDefFieldDO;
import org.apache.commons.lang3.StringUtils;
/**
* Defines the display and validation characteristics for entity's attribute.
*/
public class ViewField extends ViewComponent {
private static final long serialVersionUID = 1L;
public static enum LabelPosition {
STANDARD, HIDDEN, AFTER
}
public static enum DataType {
STRING, NUMBER, BOOLEAN;
}
public static enum InputType {
DROPDOWN, RADIO;
}
private String overrideName;
private Long entityFieldId;
private Long viewDefFieldId;
private String code;
private String description;
private Integer maxLength;
private Integer minLength;
private String regex;
private String regexDisplay;
private Map<String, String> options = new LinkedHashMap<>();
private boolean readOnly;
private boolean visible;
private boolean required;
private boolean sortable;
private Integer columnNumber;
private String labelPosition;
private String labelStyle;
private String inputStyle;
private String dataType;
private String inputType;
private String displayWidth;
public ViewField() {
}
public ViewField(EntityFieldDO ef, ViewField vf) {
this(ef);
setDisplayOrder(vf.getDisplayOrder());
setInputType(vf.getInputType());
setColumnNumber(vf.getColumnNumber());
setLabelPosition(vf.getLabelPosition());
setDisplayWidth(vf.getDisplayWidth());
setLabelStyle(vf.getLabelStyle());
setInputStyle(vf.getInputStyle());
setViewDefFieldId(vf.getViewDefFieldId());
setOverrideName(vf.getOverrideName());
setReadOnly(vf.isReadOnly());
setDisplayRuleId(vf.getDisplayRuleId());
setEditRuleId(vf.getEditRuleId());
if (StringUtils.isNotBlank(vf.getOverrideName())) {
setName(vf.getOverrideName());
}
}
public ViewField(EntityFieldDO ef, ViewDefFieldDO vdf) {
this(ef);
setOverrideName(vdf.getOverrideName());
if (StringUtils.isNotBlank(vdf.getOverrideName())) {
setName(vdf.getOverrideName());
}
setDisplayOrder(vdf.getDisplayOrder());
setReadOnly(vdf.getReadOnly());
setInputType(vdf.getInputType());
setColumnNumber(vdf.getColumnNumber());
setLabelPosition(vdf.getLabelPosition());
setDisplayWidth(vdf.getDisplayWidth());
setLabelStyle(vdf.getLabelStyle());
setInputStyle(vdf.getInputStyle());
setViewDefFieldId(vdf.getViewDefFieldId());
if (vdf.getDisplayRule() != null) {
setDisplayRuleId(vdf.getDisplayRule().getEntityRuleId());
}
if (vdf.getEditRule() != null) {
setEditRuleId(vdf.getEditRule().getEntityRuleId());
}
}
public ViewField(EntityFieldDO ef) {
super();
setEntityFieldId(ef.getEntityFieldId());
setCode(ef.getCode());
setName(ef.getName());
setDescription(ef.getDescription());
setMaxLength(ef.getMaxLength());
setMinLength(ef.getMinLength());
setRegex(ef.getRegex());
setRegexDisplay(ef.getRegexDisplay());
if (ef.getOptionList() != null) {
setOptions(ef.getOptionList().getOptionListAsMap());
}
setDataType(ef.getEntityDataType().getCode());
setRequired(ef.getRequired());
setVisible(true);
setReadOnly(false);
setDisplayOrder(-1);
}
@Override
public String toString() {
StringBuilder sb = new StringBuilder();
sb.append(code);
sb.append("(");
sb.append("name=" + name);
sb.append(", type=" + dataType);
sb.append(", order=" + displayOrder);
sb.append(", req=" + required);
sb.append(", vis=" + visible);
sb.append(", ro=" + readOnly);
sb.append(", length=" + (minLength == null ? 0 : minLength.intValue()));
sb.append(", sortable=" + sortable);
sb.append("-" + (maxLength == null ? "na" : maxLength));
if (options != null && options.size() > 0) {
sb.append(", options=[" + StringUtils.join(options.entrySet().toArray()) + "]");
}
sb.append(")");
return sb.toString();
}
@Override
public boolean equals(Object o) {
if (o instanceof ViewField) {
ViewField ea = (ViewField) o;
if (getName().equals(ea.getName())) {
return true;
}
}
return false;
}
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + (getName() == null ? 0 : getName().hashCode());
return result;
}
public String getCode() {
return code;
}
public void setCode(String code) {
this.code = code;
}
public String getDescription() {
return description;
}
public void setDescription(String description) {
this.description = description;
}
public Integer getMaxLength() {
return maxLength;
}
public void setMaxLength(Integer maxLength) {
this.maxLength = maxLength;
}
public Integer getMinLength() {
return minLength;
}
public void setMinLength(Integer minLength) {
this.minLength = minLength;
}
public String getRegex() {
return regex;
}
public void setRegex(String regex) {
this.regex = regex;
}
public String getRegexDisplay() {
return regexDisplay;
}
public void setRegexDisplay(String regexDisplay) {
this.regexDisplay = regexDisplay;
}
public boolean isReadOnly() {
return readOnly;
}
public void setReadOnly(boolean readOnly) {
this.readOnly = readOnly;
}
public boolean isRequired() {
return required;
}
public void setRequired(boolean required) {
this.required = required;
}
public Map<String, String> getOptions() {
return options;
}
public void setOptions(Map<String, String> options) {
this.options = options;
}
public boolean isVisible() {
return visible;
}
public void setVisible(boolean visible) {
this.visible = visible;
}
public Integer getColumnNumber() {
return columnNumber;
}
public void setColumnNumber(Integer columnNumber) {
this.columnNumber = columnNumber;
}
public Long getEntityFieldId() {
return entityFieldId;
}
public void setEntityFieldId(Long entityFieldId) {
this.entityFieldId = entityFieldId;
}
public Long getViewDefFieldId() {
return viewDefFieldId;
}
public void setViewDefFieldId(Long viewDefFieldId) {
this.viewDefFieldId = viewDefFieldId;
}
public String getLabelPosition() {
return labelPosition;
}
public void setLabelPosition(String labelPosition) {
this.labelPosition = labelPosition;
}
public String getDataType() {
return dataType;
}
public void setDataType(String dataType) {
this.dataType = dataType;
}
public String getInputType() {
return inputType;
}
public void setInputType(String inputType) {
this.inputType = inputType;
}
public String getOverrideName() {
return overrideName;
}
public void setOverrideName(String overrideName) {
this.overrideName = overrideName;
}
public String getDisplayWidth() {
return displayWidth;
}
public void setDisplayWidth(String displayWidth) {
this.displayWidth = displayWidth;
}
public String getLabelStyle() {
return labelStyle;
}
public void setLabelStyle(String labelStyle) {
this.labelStyle = labelStyle;
}
public String getInputStyle() {
return inputStyle;
}
public void setInputStyle(String inputStyle) {
this.inputStyle = inputStyle;
}
}