package com.constellio.model.entities.records.wrappers.structure; import com.constellio.model.entities.schemas.ModifiableStructure; import com.constellio.model.entities.schemas.StructureFactory; import org.apache.commons.exec.util.StringUtils; import org.apache.commons.lang3.builder.EqualsBuilder; import org.apache.commons.lang3.builder.HashCodeBuilder; public class ReportedMetadataFactory implements StructureFactory { private static final String ELEMENTS_SEPARATOR = "~#~"; @Override public ModifiableStructure build(String string) { String[] tokens = StringUtils.split(string, ELEMENTS_SEPARATOR); String metadataCode = readString(tokens[0]); int xPosition = readInt(tokens[1]); int yPosition = readInt(tokens[2]); return new ReportedMetadata(metadataCode, xPosition, yPosition); } private int readInt(String token) { return Integer.valueOf(token); } @Override public String toString(ModifiableStructure structure) { ReportedMetadata reportedMetadata = (ReportedMetadata) structure; StringBuilder stringBuilder = new StringBuilder(); stringBuilder.append(reportedMetadata.getMetadataCode() + ELEMENTS_SEPARATOR); stringBuilder.append(reportedMetadata.getXPosition() + ELEMENTS_SEPARATOR); stringBuilder.append(reportedMetadata.getYPosition() + ELEMENTS_SEPARATOR); return stringBuilder.toString(); } private String readString(String value) { if ("null".equals(value)) { return null; } else { return value; } } @Override public int hashCode() { return HashCodeBuilder.reflectionHashCode(this); } @Override public boolean equals(Object obj) { return EqualsBuilder.reflectionEquals(this, obj); } }