From 1e8b779a0fc59d83fe7ea95d01b07b8797d1dce3 Mon Sep 17 00:00:00 2001 From: Terekhin Alexander Date: Thu, 13 Aug 2020 19:04:21 +0300 Subject: [PATCH] fix UpdaterImpl for new UnmarshallerParameters interface --- .../me/bearns/fias/service/FiasUpdater.java | 16 +++++----- .../me/bearns/fias/service/StreamSaver.java | 5 ++-- .../bearns/fias/service/StreamSaverImpl.java | 7 ++--- .../java/me/bearns/fias/util/Catalog.java | 29 ++++++++++++------- ...gItem.java => UnmarshallerParameters.java} | 2 +- 5 files changed, 32 insertions(+), 27 deletions(-) rename src/main/java/me/bearns/fias/util/{CatalogItem.java => UnmarshallerParameters.java} (86%) diff --git a/src/main/java/me/bearns/fias/service/FiasUpdater.java b/src/main/java/me/bearns/fias/service/FiasUpdater.java index 121d5f3..10ffe99 100644 --- a/src/main/java/me/bearns/fias/service/FiasUpdater.java +++ b/src/main/java/me/bearns/fias/service/FiasUpdater.java @@ -5,6 +5,8 @@ import me.bearns.fias.exceptions.CommonException; import me.bearns.fias.exceptions.DownloadException; import me.bearns.fias.exceptions.UnzipException; import me.bearns.fias.repository.FiasVersionRepository; +import me.bearns.fias.util.Catalog; +import me.bearns.fias.util.UnmarshallerParameters; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -31,6 +33,9 @@ public class FiasUpdater implements Updater { @Autowired private static OnlineVersion clientStub; + @Autowired + private static Catalog catalog; + @Override public void update() throws CommonException { @@ -117,9 +122,11 @@ public class FiasUpdater implements Updater { final ZipEntry entry = entries.nextElement(); - if(check(entry)) { //todo + final UnmarshallerParameters config = catalog.getByPrefix(entry.getName()); + + if(config!=null) { //todo try (InputStream is = zipFile.getInputStream(entry)) { - unmarshaller.process(is, null, null); + unmarshaller.process(is, config, null); } } } @@ -131,9 +138,4 @@ public class FiasUpdater implements Updater { } } - - private boolean check(ZipEntry entry){ - //todo - return true; - } } \ No newline at end of file diff --git a/src/main/java/me/bearns/fias/service/StreamSaver.java b/src/main/java/me/bearns/fias/service/StreamSaver.java index d1d5651..3e77894 100644 --- a/src/main/java/me/bearns/fias/service/StreamSaver.java +++ b/src/main/java/me/bearns/fias/service/StreamSaver.java @@ -1,12 +1,11 @@ package me.bearns.fias.service; -import me.bearns.fias.util.CatalogItem; -import org.springframework.data.jpa.repository.JpaRepository; +import me.bearns.fias.util.UnmarshallerParameters; import java.io.InputStream; import java.util.function.Predicate; public interface StreamSaver { - public void process(InputStream is, CatalogItem conf, Predicate filter); + public void process(InputStream is, UnmarshallerParameters conf, Predicate filter); } diff --git a/src/main/java/me/bearns/fias/service/StreamSaverImpl.java b/src/main/java/me/bearns/fias/service/StreamSaverImpl.java index 3300222..cd1d909 100644 --- a/src/main/java/me/bearns/fias/service/StreamSaverImpl.java +++ b/src/main/java/me/bearns/fias/service/StreamSaverImpl.java @@ -1,7 +1,6 @@ package me.bearns.fias.service; -import me.bearns.fias.util.CatalogItem; -import org.springframework.data.jpa.repository.JpaRepository; +import me.bearns.fias.util.UnmarshallerParameters; import org.springframework.stereotype.Component; import javax.xml.bind.JAXBContext; @@ -10,17 +9,15 @@ import javax.xml.bind.Unmarshaller; import javax.xml.stream.XMLEventReader; import javax.xml.stream.XMLInputFactory; import javax.xml.stream.XMLStreamException; -import javax.xml.stream.events.Attribute; import javax.xml.stream.events.StartElement; import javax.xml.stream.events.XMLEvent; import java.io.InputStream; -import java.util.Iterator; import java.util.function.Predicate; @Component public class StreamSaverImpl implements StreamSaver{ @Override - public void process(InputStream is, CatalogItem conf, Predicate filter) { + public void process(InputStream is, UnmarshallerParameters conf, Predicate filter) { try { // create xml event reader for input stream diff --git a/src/main/java/me/bearns/fias/util/Catalog.java b/src/main/java/me/bearns/fias/util/Catalog.java index b90e228..99afdc6 100644 --- a/src/main/java/me/bearns/fias/util/Catalog.java +++ b/src/main/java/me/bearns/fias/util/Catalog.java @@ -1,31 +1,31 @@ package me.bearns.fias.util; import me.bearns.fias.repository.FiasVersionRepository; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.stereotype.Component; import javax.xml.namespace.QName; -import java.util.HashMap; +import java.util.ArrayList; +import java.util.List; @Component public class Catalog { - private final HashMap prefixMap = new HashMap<>(); + private final List prefixList = new ArrayList<>(); public Catalog(FiasVersionRepository FIASJPA_REPOSITORY) { - prefixMap.put( - "AS_ADDROBJ_", + prefixList.add( new Item( + "AS_ADDROBJ_", null, new QName("","Object"), null, null ) ); - prefixMap.put( - "AS_HOUSE_", + prefixList.add( new Item( + "AS_HOUSE_", null, new QName("","House"), null, @@ -35,17 +35,24 @@ public class Catalog { } public Item getByPrefix(String s){ - return prefixMap.get(s); + if(s!=null) { + + for (Item item : prefixList) { + if (s.startsWith(item.prefix)) return item; + } + } + return null; } - public class Item implements CatalogItem{ - private Item(JpaRepository repository, QName qName, Class cls, Class parentCls) { + public class Item implements UnmarshallerParameters { + private Item(String prefix, JpaRepository repository, QName qName, Class cls, Class parentCls) { + this.prefix = prefix; this.repository = repository; this.qName = qName; this.cls = cls; this.parentCls = parentCls; } - + private final String prefix; private final JpaRepository repository; private final QName qName; private final Class cls; diff --git a/src/main/java/me/bearns/fias/util/CatalogItem.java b/src/main/java/me/bearns/fias/util/UnmarshallerParameters.java similarity index 86% rename from src/main/java/me/bearns/fias/util/CatalogItem.java rename to src/main/java/me/bearns/fias/util/UnmarshallerParameters.java index c4cf8ed..fe166a7 100644 --- a/src/main/java/me/bearns/fias/util/CatalogItem.java +++ b/src/main/java/me/bearns/fias/util/UnmarshallerParameters.java @@ -4,7 +4,7 @@ import org.springframework.data.jpa.repository.JpaRepository; import javax.xml.namespace.QName; -public interface CatalogItem { +public interface UnmarshallerParameters { public JpaRepository getRepository(); public QName getQName(); public Class getCls();