diff --git a/clearing-parent/xml-exporter/src/main/java/ru/spcex/clearing/xml/exporter/logic/data/tags/objects/ObjectTag.java b/clearing-parent/xml-exporter/src/main/java/ru/spcex/clearing/xml/exporter/logic/data/tags/objects/ObjectTag.java index 1953b99d7..90a230723 100644 --- a/clearing-parent/xml-exporter/src/main/java/ru/spcex/clearing/xml/exporter/logic/data/tags/objects/ObjectTag.java +++ b/clearing-parent/xml-exporter/src/main/java/ru/spcex/clearing/xml/exporter/logic/data/tags/objects/ObjectTag.java @@ -1,10 +1,15 @@ package ru.spcex.clearing.xml.exporter.logic.data.tags.objects; +import java.lang.reflect.Constructor; +import java.lang.reflect.InvocationTargetException; import com.fasterxml.jackson.annotation.JsonIgnoreProperties; import com.fasterxml.jackson.annotation.JsonSubTypes; import com.fasterxml.jackson.annotation.JsonTypeInfo; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import ru.spcex.platform.classes.base.SpcexObjectBase; import ru.spcex.platform.enumeration.CurrencyCode; +import ru.spcex.platform.utils.log.ExceptionUtils; @JsonTypeInfo(use = JsonTypeInfo.Id.DEDUCTION) @JsonSubTypes({ @@ -19,6 +24,7 @@ import ru.spcex.platform.enumeration.CurrencyCode; }) @JsonIgnoreProperties(value = { "clazz", "currency" }) public abstract class ObjectTag { + private final Logger log = LoggerFactory.getLogger(getClass()); public final static String ruCurrency = CurrencyCode.RUB.getKey(); public Class clazz; @@ -29,4 +35,16 @@ public abstract class ObjectTag { public abstract void setData(T1 entity); public abstract String getCurrency(); + + public ObjectTag cloneObject() { + ObjectTag cloneObj = null; + try { + Constructor declaredConstructor = getClass().getDeclaredConstructor(); + cloneObj = declaredConstructor.newInstance(); + } catch (NoSuchMethodException | InvocationTargetException | InstantiationException | IllegalAccessException e) { + // unreachable + log.error("Can't create clone for {}, cause: {}", clazz.getName(), ExceptionUtils.getStackTrace(e)); + } + return cloneObj; + } } diff --git a/clearing-parent/xml-exporter/src/main/java/ru/spcex/clearing/xml/exporter/logic/stages/ExportFromHazelcast.java b/clearing-parent/xml-exporter/src/main/java/ru/spcex/clearing/xml/exporter/logic/stages/ExportFromHazelcast.java index d48bf1477..56e0b0ce0 100644 --- a/clearing-parent/xml-exporter/src/main/java/ru/spcex/clearing/xml/exporter/logic/stages/ExportFromHazelcast.java +++ b/clearing-parent/xml-exporter/src/main/java/ru/spcex/clearing/xml/exporter/logic/stages/ExportFromHazelcast.java @@ -173,7 +173,8 @@ public class ExportFromHazelcast { List> result = new ArrayList<>(); for (T row : tableRows) { - ObjectTag value = (ObjectTag) objectTagMap.get(table); + ObjectTag template = (ObjectTag) objectTagMap.get(table); + ObjectTag value = template.cloneObject(); value.setData(row); result.add(value); } diff --git a/clearing-parent/xml-exporter/src/main/java/ru/spcex/clearing/xml/exporter/logic/stages/PrepareXMLFile.java b/clearing-parent/xml-exporter/src/main/java/ru/spcex/clearing/xml/exporter/logic/stages/PrepareXMLFile.java index a1205180d..ab475a52c 100644 --- a/clearing-parent/xml-exporter/src/main/java/ru/spcex/clearing/xml/exporter/logic/stages/PrepareXMLFile.java +++ b/clearing-parent/xml-exporter/src/main/java/ru/spcex/clearing/xml/exporter/logic/stages/PrepareXMLFile.java @@ -44,10 +44,11 @@ public class PrepareXMLFile implements InitializingBean { } List files = new ArrayList<>(); log.trace("Get files from SFTP paths: {}", settings.getStore().getOutPayValDir().values()); -// for (String path : settings.getStore().getOutPayValDir().values()) { -// files.addAll(gateway.listFiles(path)); -// } -// log.info("There are {} files on the sFTP server in the search directories.", files.size()); + for (String path : settings.getStore().getOutPayValDir().values()) { + if (!path.endsWith("/")) path += "/"; + files.addAll(gateway.listFiles(path)); + } + log.info("There are {} files on the sFTP server in the search directories.", files.size()); Table table = resultContainer.getTableForExport(); LocalDateTime currentDateTime = LocalDateTime.now(); resultContainer.setRegistrationDateTime(currentDateTime);