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 MapStringStringStructureFactory implements StructureFactory { private GsonBuilder gsonBuilder; private Gson gson; public MapStringStringStructureFactory() { gsonBuilder = new GsonBuilder(); gson = gsonBuilder.create(); } @Override public String toString(ModifiableStructure structure) { return gson.toJson(structure); } @Override public ModifiableStructure build(String structure) { MapStringStringStructure mapStringStringStructure = new MapStringStringStructure(); if (StringUtils.isNotBlank(structure)) { TypeToken<MapStringStringStructure> listTypeToken = new TypeToken<MapStringStringStructure>() { }; mapStringStringStructure = gson.fromJson(structure, listTypeToken.getType()); mapStringStringStructure.dirty = false; } return mapStringStringStructure; } @Override public int hashCode() { return HashCodeBuilder.reflectionHashCode(this); } @Override public boolean equals(Object obj) { return EqualsBuilder.reflectionEquals(this, obj); } }