From eed33ce35b0f95a36701c87419a763e7e815a206 Mon Sep 17 00:00:00 2001 From: akulikov Date: Mon, 26 Dec 2022 14:38:31 +0300 Subject: [PATCH] insert values in docx (raw) --- .../reports/services/DOCXService.java | 5 ++++ .../services/builders/DOCXReportBuilder.java | 12 ++++++++ .../services/builders/FileReportBuilder.java | 29 +++++++++++++++++++ .../services/builders/XMLReportBuilder.java | 19 ++++++++++++ .../iml/hazelcast/adapter/ImdgHazelcast.java | 9 ++++++ 5 files changed, 74 insertions(+) create mode 100644 clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/builders/DOCXReportBuilder.java create mode 100644 clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/builders/FileReportBuilder.java create mode 100644 clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/builders/XMLReportBuilder.java diff --git a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/DOCXService.java b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/DOCXService.java index ac1a078ea..86483a38b 100644 --- a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/DOCXService.java +++ b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/DOCXService.java @@ -15,6 +15,11 @@ import java.util.stream.Collectors; /** * Сервис для работы с DOCX файлами * Читает шаблон .docx и во всех текстовых элементах меняет переданные ключи на соответствующие им значения + * Пример ключа по умолчанию: ${ключ} + * + * При использовании нового шаблона, необходимо отредактировать docx документ так, чтобы ключ содержался в одном + * элементе. Для этого нужно вырезать ключ и в это же место вставить его как текст, без форматирования. Если нужно, + * идентификатору потом можно установить стиль, который будет применён к вставляемой строке. */ public class DOCXService { /** diff --git a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/builders/DOCXReportBuilder.java b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/builders/DOCXReportBuilder.java new file mode 100644 index 000000000..ab27e7d9b --- /dev/null +++ b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/builders/DOCXReportBuilder.java @@ -0,0 +1,12 @@ +package ru.spcex.clearing.reports.services.builders; + +import org.slf4j.Logger; +import ru.spcex.clearing.reports.reports.AbstractReport; + +import java.io.IOException; + +public abstract class DOCXReportBuilder extends FileReportBuilder { + protected DOCXReportBuilder(Class reportClass, Logger log, String filename) throws IOException { + super(reportClass, log, filename); + } +} diff --git a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/builders/FileReportBuilder.java b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/builders/FileReportBuilder.java new file mode 100644 index 000000000..01ffe19bb --- /dev/null +++ b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/builders/FileReportBuilder.java @@ -0,0 +1,29 @@ +package ru.spcex.clearing.reports.services.builders; + +import org.slf4j.Logger; +import ru.spcex.clearing.reports.reports.AbstractReport; + +import java.io.File; +import java.io.IOException; + +public abstract class FileReportBuilder { + protected final Class reportClass; + protected final Logger log; + protected final String filename; + protected final File file; + + protected FileReportBuilder(Class reportClass, Logger log, String filename) throws IOException { + this.reportClass = reportClass; + this.log = log; + this.filename = filename; + this.file = new File(filename); + if (file.exists()) { + if (file.isFile()) { + log.warn("Файл {} существует и будет перезаписан", filename); + boolean deleteOk = file.delete(); + if (!deleteOk) throw new IOException("Не удалось удалить файл " + filename); + } else throw new IOException(filename + " существует, но не является файлом"); + } + } + +} diff --git a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/builders/XMLReportBuilder.java b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/builders/XMLReportBuilder.java new file mode 100644 index 000000000..ce85af837 --- /dev/null +++ b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/builders/XMLReportBuilder.java @@ -0,0 +1,19 @@ +package ru.spcex.clearing.reports.services.builders; + +import com.thoughtworks.xstream.XStream; +import com.thoughtworks.xstream.io.naming.NoNameCoder; +import com.thoughtworks.xstream.io.xml.XppDriver; +import org.slf4j.Logger; +import ru.spcex.clearing.reports.reports.AbstractReport; + +import java.io.IOException; + +public abstract class XMLReportBuilder extends FileReportBuilder { + protected final XStream xStream; + + protected XMLReportBuilder(Class reportClass, Logger log, String filename) throws IOException { + super(reportClass, log, filename); + this.xStream = new XStream(new XppDriver(new NoNameCoder())); + xStream.processAnnotations(reportClass); + } +} diff --git a/platform-parent/platform-imdg-api-hazelcast-impl/src/main/java/ru/spcex/platform/imdg/iml/hazelcast/adapter/ImdgHazelcast.java b/platform-parent/platform-imdg-api-hazelcast-impl/src/main/java/ru/spcex/platform/imdg/iml/hazelcast/adapter/ImdgHazelcast.java index ac3b60fa3..43aad9a39 100644 --- a/platform-parent/platform-imdg-api-hazelcast-impl/src/main/java/ru/spcex/platform/imdg/iml/hazelcast/adapter/ImdgHazelcast.java +++ b/platform-parent/platform-imdg-api-hazelcast-impl/src/main/java/ru/spcex/platform/imdg/iml/hazelcast/adapter/ImdgHazelcast.java @@ -135,6 +135,15 @@ public class ImdgHazelcast implements Imdg { return searchResult; } + @Override + public Collection getCollectionObjectsBySQL(String paramString) { + SqlPredicate sqlPredicate = new SqlPredicate(paramString); + Set> found = map.entrySet(sqlPredicate); + List result = new ArrayList<>(found.size()); + for (Map.Entry entry : found) result.add(entry.getValue()); + return result; + } + @Override public Long nextIDSequenceFor() { return idGenerator.newId();