package com.constellio.app.modules.es.ui.entities;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
import org.apache.commons.lang3.StringUtils;
import com.constellio.app.modules.es.services.mapping.ConnectorField;
import com.constellio.app.ui.entities.MetadataVO;
import com.constellio.model.entities.schemas.MetadataValueType;
public class MappingVO implements Serializable {
public static final String METADATA_LABEL = "metadataLabel";
public static final String FIELD_LABELS = "fieldLabels";
private MetadataVO metadata;
private List<ConnectorField> fields;
public MappingVO() {
fields = new ArrayList<>();
}
public MappingVO(MetadataVO metadata, List<ConnectorField> fields) {
this.metadata = metadata;
this.fields = fields;
}
public MetadataVO getMetadata() {
return metadata;
}
public void setMetadata(MetadataVO metadata) {
this.metadata = metadata;
}
public String getMetadataLabel() {
return metadata != null ? metadata.getLabel() : null;
}
public String getMetadataLocalCode() {
return metadata != null ? metadata.getLocalCode() : null;
}
public MetadataValueType getMetadataType() {
return metadata != null ? metadata.getType() : null;
}
public List<ConnectorField> getFields() {
return fields;
}
public void setFields(List<ConnectorField> fields) {
this.fields = fields;
}
public String getFieldLabels() {
List<String> labels = new ArrayList<>();
for (ConnectorField field : fields) {
labels.add(field.getLabel());
}
return StringUtils.join(labels, ", ");
}
public List<String> getFieldIds() {
List<String> result = new ArrayList<>();
for (ConnectorField field : fields) {
result.add(field.getId());
}
return result;
}
public List<FieldMapper> getFieldMappers() {
List<FieldMapper> result = new ArrayList<>();
for (int i = 0; i < fields.size(); i++) {
result.add(new FieldMapper(i));
}
return result;
}
public class FieldMapper implements Serializable {
private final int index;
public FieldMapper(int index) {
this.index = index;
}
public ConnectorField getField() {
return fields.get(index);
}
public void setField(ConnectorField field) {
fields.set(index, field);
}
public String getFieldId() {
ConnectorField field = getField();
return field != null ? field.getId() : null;
}
}
}