package com.constellio.app.modules.rm.wrappers.structures; import com.constellio.model.entities.schemas.ModifiableStructure; import com.constellio.model.entities.schemas.StructureFactory; import java.util.StringTokenizer; public class DecomListFolderDetailFactory implements StructureFactory { private static final String NULL = "~null~"; @Override public ModifiableStructure build(String string) { StringTokenizer stringTokenizer = new StringTokenizer(string, ":"); DecomListFolderDetail decomListFolderDetail = new DecomListFolderDetail(); decomListFolderDetail.setFolderId(readString(stringTokenizer)); decomListFolderDetail.folderExcluded = Boolean.valueOf(readString(stringTokenizer)); // Skip deprecated fields validationUserId, validationUserName and ValidationDate readString(stringTokenizer); readString(stringTokenizer); readString(stringTokenizer); decomListFolderDetail.setContainerRecordId(readString(stringTokenizer)); decomListFolderDetail.setReversedSort(Boolean.valueOf(readString(stringTokenizer))); decomListFolderDetail.setFolderLinearSize(readDouble(stringTokenizer)); try { decomListFolderDetail.setIsPlacedInContainer(Boolean.valueOf(readString(stringTokenizer))); } catch (Exception e) { decomListFolderDetail.setIsPlacedInContainer(false); } decomListFolderDetail.dirty = false; return decomListFolderDetail; } @Override public String toString(ModifiableStructure structure) { DecomListFolderDetail decomListFolderDetail = (DecomListFolderDetail) structure; StringBuilder stringBuilder = new StringBuilder(); writeString(stringBuilder, decomListFolderDetail.getFolderId()); writeString(stringBuilder, String.valueOf(decomListFolderDetail.isFolderExcluded())); // Skip deprecated fields validationUserId, validationUserName and ValidationDate writeString(stringBuilder, null); writeString(stringBuilder, null); writeString(stringBuilder, null); writeString(stringBuilder, decomListFolderDetail.getContainerRecordId()); writeString(stringBuilder, String.valueOf(decomListFolderDetail.isReversedSort())); writeDouble(stringBuilder, decomListFolderDetail.getFolderLinearSize()); writeString(stringBuilder, "" + decomListFolderDetail.isPlacedInContainer() == null ? String.valueOf(false) : String.valueOf(decomListFolderDetail.isPlacedInContainer())); return stringBuilder.toString(); } private Double readDouble(StringTokenizer stringTokenizer) { String value = readString(stringTokenizer); return value == null ? null : Double.valueOf(value); } private String readString(StringTokenizer stringTokenizer) { if (!stringTokenizer.hasMoreElements()) { return null; } String value = stringTokenizer.nextToken(); if (NULL.equals(value)) { return null; } else { return value.replace("~~~", ":"); } } private void writeDouble(StringBuilder stringBuilder, Double value) { if (stringBuilder.length() != 0) { stringBuilder.append(":"); } if (value == null) { stringBuilder.append(NULL); } else { stringBuilder.append(String.valueOf(value)); } } private void writeString(StringBuilder stringBuilder, String value) { if (stringBuilder.length() != 0) { stringBuilder.append(":"); } if (value == null) { stringBuilder.append(NULL); } else { stringBuilder.append(value.replace(":", "~~~")); } } }