package com.constellio.model.entities.structures;
import org.apache.commons.lang3.StringUtils;
import org.apache.commons.lang3.builder.EqualsBuilder;
import org.apache.commons.lang3.builder.HashCodeBuilder;
import com.constellio.model.entities.schemas.ModifiableStructure;
import com.constellio.model.entities.schemas.StructureFactory;
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import com.google.gson.reflect.TypeToken;
public class MapStringListStringStructureFactory implements StructureFactory {
private transient GsonBuilder gsonBuilder;
private transient Gson gson;
public MapStringListStringStructureFactory() {
gsonBuilder = new GsonBuilder();
gson = gsonBuilder.create();
}
@Override
public String toString(ModifiableStructure structure) {
return gson.toJson(structure);
}
@Override
public ModifiableStructure build(String structure) {
MapStringListStringStructure mapStringListStringStructure = new MapStringListStringStructure();
if (StringUtils.isNotBlank(structure)) {
TypeToken<MapStringListStringStructure> listTypeToken = new TypeToken<MapStringListStringStructure>() {
};
mapStringListStringStructure = gson.fromJson(structure, listTypeToken.getType());
mapStringListStringStructure.dirty = false;
}
return mapStringListStringStructure;
}
@Override
public int hashCode() {
return HashCodeBuilder.reflectionHashCode(this);
}
@Override
public boolean equals(Object obj) {
return EqualsBuilder.reflectionEquals(this, obj);
}
}