argos/dmp-backend/web/src/main/java/eu/eudat/models/data/admin/components/datasetprofile/Field.java

159 lines
4.9 KiB
Java

package eu.eudat.models.data.admin.components.datasetprofile;
import eu.eudat.commons.enums.FieldValidationType;
import eu.eudat.commons.types.common.DatabaseViewStyleDefinition;
import eu.eudat.model.publicapi.datasetwizard.DefaultValueEntity;
import eu.eudat.model.publicapi.datasetwizard.FieldDescriptionEntity;
import eu.eudat.model.publicapi.datasetwizard.VisibilityEntity;
import eu.eudat.commons.types.descriptiontemplate.FieldEntity;
import eu.eudat.logic.utilities.interfaces.ViewStyleDefinition;
import org.apache.commons.lang3.NotImplementedException;
import org.apache.commons.lang3.RandomStringUtils;
import java.util.List;
import java.util.stream.Collectors;
public class Field implements DatabaseViewStyleDefinition, ViewStyleDefinition<FieldEntity>, Comparable {
private String id;
private Integer ordinal;
private List<String> schematics;
private String value;
private FieldDescriptionEntity viewStyle;
private String datatype;
private int page;
private DefaultValueEntity defaultValue;
private Object data;
private VisibilityEntity visible;
private List<FieldValidationType> validations;
private Boolean export;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public int getOrdinal() {
return ordinal;
}
public void setOrdinal(int ordinal) {
this.ordinal = ordinal;
}
public List<String> getSchematics() {
return schematics;
}
public void setSchematics(List<String> schematics) {
this.schematics = schematics;
}
public String getValue() {
return value;
}
public void setValue(String value) {
this.value = value;
}
public FieldDescriptionEntity getViewStyle() {
return viewStyle;
}
public void setViewStyle(FieldDescriptionEntity viewStyle) {
this.viewStyle = viewStyle;
}
public int getPage() {
return page;
}
public void setPage(int page) {
this.page = page;
}
public DefaultValueEntity getDefaultValue() {
return defaultValue;
}
public void setDefaultValue(DefaultValueEntity defaultValue) {
this.defaultValue = defaultValue;
}
public String getDatatype() {
return datatype;
}
public void setDatatype(String datatype) {
this.datatype = datatype;
}
public Object getData() {
return data;
}
public void setData(Object data) {
this.data = data;
}
public VisibilityEntity getVisible() {
return visible;
}
public void setVisible(VisibilityEntity visible) {
this.visible = visible;
}
public List<Integer> getValidations() {
return this.validations.stream().map(item -> (int) item.getValue()).collect(Collectors.toList());
}
public void setValidations(List<Integer> validations) {
this.validations = validations.stream().map(x-> FieldValidationType.of(x.shortValue())).collect(Collectors.toList());
}
public Boolean getExport() {
return export;
}
public void setExport(Boolean export) {
this.export = export;
}
@Override
public FieldEntity toDatabaseDefinition(FieldEntity fieldEntity) {
if (this.id == null || this.id.isEmpty()) this.id = "field_" + RandomStringUtils.random(5, true, true);
fieldEntity.setId(this.id);
fieldEntity.setOrdinal(this.ordinal);
throw new NotImplementedException(" Use new logic");
//TODO: Use new logic
// fieldEntity.setData(new FieldDataHelper().toFieldData(data, this.viewStyle.getFieldType()));
// fieldEntity.setVisibilityRules(this.visible.getRules());
// fieldEntity.setDefaultValue(this.defaultValue.getValue());
// fieldEntity.setValidations(this.validations);
// fieldEntity.setSchematics(this.schematics);
// fieldEntity.setIncludeInExport(this.export);
// return fieldEntity;
}
@Override
public void fromDatabaseDefinition(FieldEntity item) {
this.id = item.getId();
this.ordinal = item.getOrdinal();
FieldDescriptionEntity fieldDescription = new FieldDescriptionEntity();
fieldDescription.setFieldType(item.getData().getFieldType());
this.viewStyle = fieldDescription;
this.data = item.getData();
VisibilityEntity visibilityEntity = new VisibilityEntity();
visibilityEntity.setRules(item.getVisibilityRules());
this.visible = visibilityEntity;
DefaultValueEntity defaultValueEntity = new DefaultValueEntity();
defaultValueEntity.setValue(item.getDefaultValue());
this.defaultValue = defaultValueEntity;
this.validations = item.getValidations();
this.schematics = item.getSchematics();
this.export = item.getIncludeInExport();
}
@Override
public int compareTo(Object o) {
return this.ordinal.compareTo(((Field) o).ordinal);
}
}