Fixed XmlMergeCoordinator::mergeBatch
This commit is contained in:
parent
e5945a1ef2
commit
b272123802
1 changed files with 9 additions and 20 deletions
|
|
@ -1,5 +1,13 @@
|
|||
package ru.nbch.credit_tracker.service.task;
|
||||
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.commons.lang3.exception.ExceptionUtils;
|
||||
import org.springframework.beans.factory.InitializingBean;
|
||||
import org.springframework.stereotype.Service;
|
||||
import ru.nbch.credit_tracker.config.settings.CreditTrackerSettings;
|
||||
import ru.nbch.credit_tracker.model.PartFilePayload;
|
||||
|
||||
import javax.xml.stream.*;
|
||||
import java.io.File;
|
||||
import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
|
|
@ -7,7 +15,6 @@ import java.io.OutputStream;
|
|||
import java.nio.charset.Charset;
|
||||
import java.nio.file.Files;
|
||||
import java.nio.file.Path;
|
||||
import java.nio.file.StandardCopyOption;
|
||||
import java.nio.file.StandardOpenOption;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
|
@ -15,18 +22,6 @@ import java.util.concurrent.BlockingQueue;
|
|||
import java.util.concurrent.ExecutorService;
|
||||
import java.util.concurrent.Executors;
|
||||
import java.util.concurrent.TimeUnit;
|
||||
import javax.xml.stream.XMLInputFactory;
|
||||
import javax.xml.stream.XMLOutputFactory;
|
||||
import javax.xml.stream.XMLStreamConstants;
|
||||
import javax.xml.stream.XMLStreamException;
|
||||
import javax.xml.stream.XMLStreamReader;
|
||||
import javax.xml.stream.XMLStreamWriter;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.commons.lang3.exception.ExceptionUtils;
|
||||
import org.springframework.beans.factory.InitializingBean;
|
||||
import org.springframework.stereotype.Service;
|
||||
import ru.nbch.credit_tracker.config.settings.CreditTrackerSettings;
|
||||
import ru.nbch.credit_tracker.model.PartFilePayload;
|
||||
|
||||
@Slf4j
|
||||
@Service
|
||||
|
|
@ -91,26 +86,20 @@ public final class XmlMergeCoordinator implements InitializingBean {
|
|||
private void mergeBatch(List<PartFilePayload> inputs) throws Exception {
|
||||
Integer packageId = inputs.stream().findFirst().get().getPackageId();
|
||||
String outName = "merged_" + packageId + ".xml";
|
||||
Path tmp = mergedDir.resolve(outName + ".part");
|
||||
Path out = mergedDir.resolve(outName);
|
||||
|
||||
XMLOutputFactory xof = XMLOutputFactory.newFactory();
|
||||
try (OutputStream os = Files.newOutputStream(tmp, StandardOpenOption.CREATE_NEW)) {
|
||||
try (OutputStream os = Files.newOutputStream(out, StandardOpenOption.CREATE, StandardOpenOption.APPEND)) {
|
||||
XMLStreamWriter w = xof.createXMLStreamWriter(os, encoding.name());
|
||||
w.writeStartDocument(encoding.name(), "1.0");
|
||||
w.writeStartElement("Persons");
|
||||
|
||||
for (PartFilePayload in : inputs) {
|
||||
log.debug("Copy person to file {}", in.getPartPath());
|
||||
copyPersonsChildren(in.getPartPath(), w);
|
||||
}
|
||||
|
||||
w.writeEndElement();
|
||||
w.writeEndDocument();
|
||||
w.flush();
|
||||
w.close();
|
||||
}
|
||||
Files.move(tmp, out, StandardCopyOption.ATOMIC_MOVE);
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue