From f3925d267aa693e87b5b00a24c0b5ebb33996b7d Mon Sep 17 00:00:00 2001 From: Terekhin Alexander Date: Thu, 17 Sep 2020 19:30:33 +0300 Subject: [PATCH] Unmarshaller hierarhy save --- src/main/java/me/bearns/fias/domain/Addrobj.java | 6 +++--- src/main/java/me/bearns/fias/domain/House.java | 2 +- src/main/java/me/bearns/fias/helpers/Catalog.java | 4 ++++ src/main/java/me/bearns/fias/helpers/UpdaterImpl.java | 7 ------- src/main/java/me/bearns/fias/xml/AddrObjAdapter.java | 11 +++++------ .../java/me/bearns/fias/service/StreamSaverTest.java | 5 +++++ 6 files changed, 18 insertions(+), 17 deletions(-) diff --git a/src/main/java/me/bearns/fias/domain/Addrobj.java b/src/main/java/me/bearns/fias/domain/Addrobj.java index 3e17bc0..4bbcc02 100644 --- a/src/main/java/me/bearns/fias/domain/Addrobj.java +++ b/src/main/java/me/bearns/fias/domain/Addrobj.java @@ -185,15 +185,15 @@ public class Addrobj implements Serializable { } public void setEnddate(GregorianCalendar enddate) { - this.enddate = dtf.newXMLGregorianCalendar(enddate); + this.enddate = enddate!= null ? dtf.newXMLGregorianCalendar(enddate) : null; } public void setStartdate(GregorianCalendar startdate) { - this.startdate = dtf.newXMLGregorianCalendar(startdate); + this.startdate = startdate != null ? dtf.newXMLGregorianCalendar(startdate) : null; } public void setUpdatedate(GregorianCalendar updatedate) { - this.updatedate = dtf.newXMLGregorianCalendar(updatedate); + this.updatedate = updatedate != null ? dtf.newXMLGregorianCalendar(updatedate) : null; } public Addrobj aoguid(String aoguid) { diff --git a/src/main/java/me/bearns/fias/domain/House.java b/src/main/java/me/bearns/fias/domain/House.java index 1da27a4..5553718 100644 --- a/src/main/java/me/bearns/fias/domain/House.java +++ b/src/main/java/me/bearns/fias/domain/House.java @@ -45,7 +45,7 @@ public class House implements Serializable { //@Type(type="uuid-char") @XmlAttribute(name = "AOGUID", required = true) //@Column(name = "aoguid") - @ManyToOne(targetEntity = Addrobj.class) + @ManyToOne(targetEntity = Addrobj.class, cascade = CascadeType.ALL) @JoinColumn(name = "aoguid", referencedColumnName = "aoguid") @XmlJavaTypeAdapter(AddrObjAdapter.class) public Addrobj aoguid; diff --git a/src/main/java/me/bearns/fias/helpers/Catalog.java b/src/main/java/me/bearns/fias/helpers/Catalog.java index f2984d3..699cd29 100644 --- a/src/main/java/me/bearns/fias/helpers/Catalog.java +++ b/src/main/java/me/bearns/fias/helpers/Catalog.java @@ -6,6 +6,7 @@ import me.bearns.fias.domain.House; import me.bearns.fias.domain.Houses; import me.bearns.fias.repository.AddrobjRepository; import me.bearns.fias.repository.HouseRepository; +import me.bearns.fias.xml.AddrObjAdapter; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.stereotype.Component; @@ -37,6 +38,9 @@ public class Catalog { Houses.class ) ); + + //init AddrObjAdapter + AddrObjAdapter.setRepository(ADDROBJ_REPOSITORY); } public Item getByPrefix(String s){ diff --git a/src/main/java/me/bearns/fias/helpers/UpdaterImpl.java b/src/main/java/me/bearns/fias/helpers/UpdaterImpl.java index 6cea7d8..8b586b6 100644 --- a/src/main/java/me/bearns/fias/helpers/UpdaterImpl.java +++ b/src/main/java/me/bearns/fias/helpers/UpdaterImpl.java @@ -45,7 +45,6 @@ public class UpdaterImpl implements UpdateHelper { @Autowired private static StreamSaver unmarshaller; - //transaction from here @Transactional(rollbackFor = Exception.class) public void processUpdates(List updates, boolean reloadFlag) throws CommonException { @@ -124,12 +123,6 @@ public class UpdaterImpl implements UpdateHelper { final UnmarshallerParameters config = catalog.getByPrefix(name); if(config!=null) { - - final JpaRepository repository = config.getRepository(); - if(repository instanceof AddrobjRepository){ - AddrObjAdapter.setRepository((AddrobjRepository) repository); - } - try (InputStream is = zipFile.getInputStream(entry)) { log.debug("Process '{}' in zip", name); unmarshaller.process(is, config, filter); diff --git a/src/main/java/me/bearns/fias/xml/AddrObjAdapter.java b/src/main/java/me/bearns/fias/xml/AddrObjAdapter.java index 8ac7a39..68cbf43 100644 --- a/src/main/java/me/bearns/fias/xml/AddrObjAdapter.java +++ b/src/main/java/me/bearns/fias/xml/AddrObjAdapter.java @@ -2,16 +2,12 @@ package me.bearns.fias.xml; import me.bearns.fias.domain.Addrobj; import me.bearns.fias.repository.AddrobjRepository; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Component; import javax.xml.bind.annotation.adapters.XmlAdapter; -import java.util.Optional; import java.util.UUID; public class AddrObjAdapter extends XmlAdapter { - private static AddrobjRepository repository; @Override @@ -20,8 +16,11 @@ public class AddrObjAdapter extends XmlAdapter { final UUID aoguid = UUID.fromString(v); final Addrobj addrobj = repository.findByAoguid(aoguid).orElseGet(Addrobj::new); //final Addrobj addrobj = new Addrobj(); //TODO FIX IT - addrobj.aoguid = aoguid; - addrobj.aoid = aoguid; + if(addrobj.aoid == null) { + addrobj.aoid = aoguid; + addrobj.aoguid = aoguid; + //repository.save(addrobj); + } return addrobj; } diff --git a/src/test/java/me/bearns/fias/service/StreamSaverTest.java b/src/test/java/me/bearns/fias/service/StreamSaverTest.java index 5a4ad06..6bf3705 100644 --- a/src/test/java/me/bearns/fias/service/StreamSaverTest.java +++ b/src/test/java/me/bearns/fias/service/StreamSaverTest.java @@ -4,6 +4,7 @@ import me.bearns.fias.exceptions.CommonException; import me.bearns.fias.helper.XMLSourceHelper; import me.bearns.fias.helpers.Catalog; import me.bearns.fias.helpers.UnmarshallerParameters; +import me.bearns.fias.helpers.UpdateHelper; import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.beans.factory.annotation.Autowired; @@ -28,6 +29,10 @@ public class StreamSaverTest { @Autowired private Catalog catalog; + @Autowired + private UpdateHelper helper; + + @Test public void addrobjTest() throws CommonException {