package com.constellio.app.modules.rm.wrappers.structures;
import java.util.StringTokenizer;
import org.joda.time.LocalDate;
import com.constellio.model.entities.schemas.ModifiableStructure;
import com.constellio.model.entities.schemas.StructureFactory;
public class DecomListValidationFactory implements StructureFactory {
private static final String NULL = "~null~";
private static final String ELEMENT_SEPARATOR = ":";
@Override
public ModifiableStructure build(String string) {
StringTokenizer stringTokenizer = new StringTokenizer(string, ":");
DecomListValidation decomListFolderDetail = new DecomListValidation();
decomListFolderDetail.userId = readString(stringTokenizer);
decomListFolderDetail.requestDate = readLocalDate(stringTokenizer);
decomListFolderDetail.validationDate = readLocalDate(stringTokenizer);
return decomListFolderDetail;
}
@Override
public String toString(ModifiableStructure structure) {
DecomListValidation validation = (DecomListValidation) structure;
StringBuilder stringBuilder = new StringBuilder();
writeString(stringBuilder, validation.getUserId());
writeLocalDate(stringBuilder, validation.getRequestDate());
writeLocalDate(stringBuilder, validation.getValidationDate());
return stringBuilder.toString();
}
private LocalDate readLocalDate(StringTokenizer stringTokenizer) {
String localDate = readString(stringTokenizer);
return localDate == null ? null : LocalDate.parse(localDate);
}
private String readString(StringTokenizer stringTokenizer) {
if (!stringTokenizer.hasMoreElements()) {
return null;
}
String value = stringTokenizer.nextToken();
if (NULL.equals(value)) {
return null;
} else {
return value.replace("~~~", ELEMENT_SEPARATOR);
}
}
private void writeLocalDate(StringBuilder stringBuilder, LocalDate value) {
if (stringBuilder.length() != 0) {
stringBuilder.append(ELEMENT_SEPARATOR);
}
if (value == null) {
stringBuilder.append(NULL);
} else {
stringBuilder.append(value.toString("yyyy-MM-dd"));
}
}
private void writeString(StringBuilder stringBuilder, String value) {
if (stringBuilder.length() != 0) {
stringBuilder.append(ELEMENT_SEPARATOR);
}
if (value == null) {
stringBuilder.append(NULL);
} else {
stringBuilder.append(value.replace(ELEMENT_SEPARATOR, "~~~"));
}
}
}