This repository has been archived on 2021-09-09. You can view files and clone it, but cannot push or open issues or pull requests.
geoportal-service/src/main/java/org/gcube/application/geoportal/service/utils/Serialization.java

93 lines
2.9 KiB
Java
Raw Normal View History

2020-11-18 18:06:38 +01:00
package org.gcube.application.geoportal.service.utils;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.DeserializationFeature;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule;
import java.io.IOException;
import java.time.format.DateTimeFormatter;
2021-08-06 18:33:34 +02:00
import java.util.Iterator;
2020-11-18 18:06:38 +01:00
public class Serialization {
2020-12-18 18:24:20 +01:00
public static final DateTimeFormatter FULL_FORMATTER=DateTimeFormatter.ofPattern("uuuuMMdd_HH-mm-ss");
2020-11-18 18:06:38 +01:00
public static ObjectMapper mapper;
static {
mapper=new ObjectMapper();
mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES,false);
2020-11-26 16:08:41 +01:00
mapper.registerModule(new JavaTimeModule());
2020-11-18 18:06:38 +01:00
}
public static <T> T read(String jsonString,Class<T> clazz) throws JsonProcessingException, IOException {
return mapper.readerFor(clazz).readValue(jsonString);
}
2021-08-06 18:33:34 +02:00
public static <T> Iterator<T> readCollection(String jsonString, Class<T> clazz) throws IOException {
return mapper.readerFor(clazz).readValues(jsonString);
}
2020-11-19 17:38:56 +01:00
public static String write(Object toWrite) throws JsonProcessingException {
// if(toWrite instanceof Concessione)
// detach((Concessione) toWrite);
2020-11-26 16:08:41 +01:00
String toReturn= mapper.writeValueAsString(toWrite);
// if(toWrite instanceof Concessione)
// reattach((Concessione) toWrite);
2020-11-26 16:08:41 +01:00
return toReturn;
}
2020-11-26 16:08:41 +01:00
// Avoid infiniteLoop in JPA
// private static void detach(Concessione c) {
// if (c!=null) {
// detach(c.getRelazioneScavo());
// detach(c.getPosizionamentoScavo());
// if(c.getPianteFineScavo()!=null)
// c.getPianteFineScavo().forEach((LayerConcessione l)->{detach(l);});
// if(c.getImmaginiRappresentative()!=null)
// c.getImmaginiRappresentative().forEach(((UploadedImage u)->{detach(u);}));
// if(c.getGenericContent()!=null)
// c.getGenericContent().forEach(((OtherContent u)->{detach(u);}));
// }
// }
//
// private static void detach(AssociatedContent a) {
// if(a!=null) {
// a.setRecord(null);
// if(a.getActualContent()!=null)
// a.getActualContent().forEach((PersistedContent p)->{p.setAssociated(null);});
// }
// }
//
//
// private static void reattach(Concessione c) {
// if(c!=null) {
// reattach(c.getRelazioneScavo(),c);
// reattach(c.getPosizionamentoScavo(),c);
// if(c.getPianteFineScavo()!=null)
// c.getPianteFineScavo().forEach((LayerConcessione l)->{reattach(l,c);});
// if(c.getImmaginiRappresentative()!=null)
// c.getImmaginiRappresentative().forEach(((UploadedImage u)->{reattach(u,c);}));
// if(c.getGenericContent()!=null)
// c.getGenericContent().forEach(((OtherContent u)->{reattach(u,c);}));
// }
// }
//
// private static void reattach(AssociatedContent a,Record r) {
// if(a!=null) {
// a.setRecord(r);
// if(a.getActualContent()!=null)
// a.getActualContent().forEach((PersistedContent p)->{p.setAssociated(a);});
// }
// }
2020-11-18 18:06:38 +01:00
}