From 6c1748b24d0411940d90dbd7678dd941eb808d18 Mon Sep 17 00:00:00 2001 From: Michael Stahl Date: Tue, 26 Jul 2022 16:36:50 +0200 Subject: [PATCH 1/3] fix all javadoc errors As detected by openjdk version "11.0.15". --- .../java/de/muenchen/allg/itd51/wollmux/TextModule.java | 2 +- .../java/de/muenchen/allg/itd51/wollmux/WollMuxFiles.java | 2 -- .../allg/itd51/wollmux/document/FrameController.java | 2 +- .../allg/itd51/wollmux/document/TextDocumentController.java | 2 +- .../allg/itd51/wollmux/document/TextDocumentModel.java | 2 +- .../muenchen/allg/itd51/wollmux/former/model/IdModel.java | 2 +- .../allg/itd51/wollmux/func/Dateinamensanpassungen.java | 2 +- .../wollmux/mailmerge/print/MailMergePrintFunction.java | 6 +++--- 8 files changed, 9 insertions(+), 11 deletions(-) diff --git a/core/src/main/java/de/muenchen/allg/itd51/wollmux/TextModule.java b/core/src/main/java/de/muenchen/allg/itd51/wollmux/TextModule.java index aa9892625..c01c884c6 100644 --- a/core/src/main/java/de/muenchen/allg/itd51/wollmux/TextModule.java +++ b/core/src/main/java/de/muenchen/allg/itd51/wollmux/TextModule.java @@ -252,7 +252,7 @@ private static String[] parseIdentifier(String identifierWithArgs, * Stelle die neue frag_id enthält und in den folgenden Stellen die Argumente. * * @param identifierWithArgs - * Ein String in der Form "#arg1#...#argN", wobei der + * Ein String in der Form "<identifier>#arg1#...#argN", wobei der * Separator "#" über den SEPARATOR-Schlüssel in textbausteine verändert * werden kann. * @param textbausteine diff --git a/core/src/main/java/de/muenchen/allg/itd51/wollmux/WollMuxFiles.java b/core/src/main/java/de/muenchen/allg/itd51/wollmux/WollMuxFiles.java index 174e076b4..9d370323f 100755 --- a/core/src/main/java/de/muenchen/allg/itd51/wollmux/WollMuxFiles.java +++ b/core/src/main/java/de/muenchen/allg/itd51/wollmux/WollMuxFiles.java @@ -737,8 +737,6 @@ public static String dumpOOoConfiguration(String nodePath) * @param spaces * Indent for children. * @return String representation of the node. - * @throws Exception - * Can't access the configuration node. */ public static String dumpNode(Object element, String spaces) { diff --git a/core/src/main/java/de/muenchen/allg/itd51/wollmux/document/FrameController.java b/core/src/main/java/de/muenchen/allg/itd51/wollmux/document/FrameController.java index 1ef6b36b4..4a8c505d8 100644 --- a/core/src/main/java/de/muenchen/allg/itd51/wollmux/document/FrameController.java +++ b/core/src/main/java/de/muenchen/allg/itd51/wollmux/document/FrameController.java @@ -241,7 +241,7 @@ else if (zoomValue != null) /** * Liefert den Titel des Dokuments, wie er im Fenster des Dokuments angezeigt wird, * ohne den Zusatz " - OpenOffice.org Writer" oder "NoTitle", wenn der Titel nicht - * bestimmt werden kann. TextDocumentModel('') + * bestimmt werden kann. TextDocumentModel('<title>') */ public synchronized String getTitle() { diff --git a/core/src/main/java/de/muenchen/allg/itd51/wollmux/document/TextDocumentController.java b/core/src/main/java/de/muenchen/allg/itd51/wollmux/document/TextDocumentController.java index af2033ef5..ca92e8fbf 100644 --- a/core/src/main/java/de/muenchen/allg/itd51/wollmux/document/TextDocumentController.java +++ b/core/src/main/java/de/muenchen/allg/itd51/wollmux/document/TextDocumentController.java @@ -934,7 +934,7 @@ public synchronized void flushPersistentData() } /** - * Calls {@link #insertMailMergeField(String, XTextRange) with the current cursor position. + * Calls {@link #insertMailMergeField(String, XTextRange)} with the current cursor position. * * @param fieldId * The column name of the data base on which this field depends diff --git a/core/src/main/java/de/muenchen/allg/itd51/wollmux/document/TextDocumentModel.java b/core/src/main/java/de/muenchen/allg/itd51/wollmux/document/TextDocumentModel.java index 6a954b798..76611e9db 100644 --- a/core/src/main/java/de/muenchen/allg/itd51/wollmux/document/TextDocumentModel.java +++ b/core/src/main/java/de/muenchen/allg/itd51/wollmux/document/TextDocumentModel.java @@ -1240,7 +1240,7 @@ public synchronized void close() } /** - * {@link DocumentCommands#addNewDocumentCommand(XTextRange, String) + * {@link DocumentCommands#addNewDocumentCommand(XTextRange, String)} * * @param r * The text range. diff --git a/core/src/main/java/de/muenchen/allg/itd51/wollmux/former/model/IdModel.java b/core/src/main/java/de/muenchen/allg/itd51/wollmux/former/model/IdModel.java index 74e95f3e9..34ff08a18 100644 --- a/core/src/main/java/de/muenchen/allg/itd51/wollmux/former/model/IdModel.java +++ b/core/src/main/java/de/muenchen/allg/itd51/wollmux/former/model/IdModel.java @@ -227,7 +227,7 @@ public int hashCode() * Ein IDChangeListener wird benachrichtigt, wenn sich ein {@link IdModel} * Objekt ändert. * - * @see ID.addIDChangeListener(IDChangeListener) + * @see #addIDChangeListener(IDChangeListener) */ public interface IDChangeListener { diff --git a/core/src/main/java/de/muenchen/allg/itd51/wollmux/func/Dateinamensanpassungen.java b/core/src/main/java/de/muenchen/allg/itd51/wollmux/func/Dateinamensanpassungen.java index d8b890da4..b0a69f506 100644 --- a/core/src/main/java/de/muenchen/allg/itd51/wollmux/func/Dateinamensanpassungen.java +++ b/core/src/main/java/de/muenchen/allg/itd51/wollmux/func/Dateinamensanpassungen.java @@ -53,7 +53,7 @@ private Dateinamensanpassungen() * Pfaden/Dateinamen übergeben werden, wovon der erste Eintrag dieser Liste * zurückgegeben wird, dessen Pfad-Anteil tatsächlich verfügbar ist. * Innerhalb eines Pfades/Dateinamens kann vor der Verfügbarkeitsprüfung mit - * ${<name>} der Wert einer Java-Systemproperty in den Dateinamen eingefügt + * ${<name>} der Wert einer Java-Systemproperty in den Dateinamen eingefügt * werden. */ public static String verfuegbarenPfadVerwenden(String fileName) diff --git a/core/src/main/java/de/muenchen/allg/itd51/wollmux/mailmerge/print/MailMergePrintFunction.java b/core/src/main/java/de/muenchen/allg/itd51/wollmux/mailmerge/print/MailMergePrintFunction.java index 3f3f6225a..e253301d7 100644 --- a/core/src/main/java/de/muenchen/allg/itd51/wollmux/mailmerge/print/MailMergePrintFunction.java +++ b/core/src/main/java/de/muenchen/allg/itd51/wollmux/mailmerge/print/MailMergePrintFunction.java @@ -76,10 +76,10 @@ protected MailMergePrintFunction(String functionName, int order) } /** - * Replaces all occurrences of <code>{{<tag>}}</code> with the value specified in the data set. + * Replaces all occurrences of <code><tag></code> with the value specified in the data set. * * @param dataset - * Map of key-value pairs, where the key is <code><tag></code>. + * Map of key-value pairs, where the key is <code><tag></code>. * @param text * Text, which contains tags to be replaced. * @return Text where all occurrences are replaced, if there exists a record in data set. @@ -100,7 +100,7 @@ public static String replaceMergeFieldInText(Map<String, String> dataset, String } /** - * Creates a <code><tag></code>, which can be replaced by + * Creates a <code><tag></code>, which can be replaced by * {@link #replaceMergeFieldInText(Map, String)}. * * @param mergeField From b86fcbe220caa5289dbfb9949a569543db3bf833 Mon Sep 17 00:00:00 2001 From: Michael Stahl <michael.stahl@allotropia.de> Date: Tue, 26 Jul 2022 18:43:03 +0200 Subject: [PATCH 2/3] don't set maven.javadoc.failOnWarnings when 100 warnings are reported --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index fc9955fc9..5203e1d0c 100644 --- a/pom.xml +++ b/pom.xml @@ -17,7 +17,7 @@ <wollmux.test.conf.release>v18.1.0/wollmux-config-18.1.0.tar.gz</wollmux.test.conf.release> <wollmux.test.conf>${project.build.directory}/config/.wollmux/wollmux.conf</wollmux.test.conf> <office.user.profile>${project.build.directory}/office</office.user.profile> - <maven.javadoc.failOnWarnings>true</maven.javadoc.failOnWarnings> + <maven.javadoc.failOnWarnings>false</maven.javadoc.failOnWarnings> </properties> <modules> From 4d1e7092607daeca41e4218e70f43f76ad00694e Mon Sep 17 00:00:00 2001 From: Daniel Sikeler <daniel.sikeler@muenchen.de> Date: Wed, 25 Mar 2020 15:12:26 +0100 Subject: [PATCH 3/3] trac#30220 use conditional on LO bookmarks The WollMux command 'setGroups' is changed in a conditional on the bookmark. Also we rename the bookmark, so that WollMux doesn't care about it. --- .../mailmerge/print/OOoBasedMailMerge.java | 78 +++++++++++++++++-- 1 file changed, 70 insertions(+), 8 deletions(-) diff --git a/core/src/main/java/de/muenchen/allg/itd51/wollmux/mailmerge/print/OOoBasedMailMerge.java b/core/src/main/java/de/muenchen/allg/itd51/wollmux/mailmerge/print/OOoBasedMailMerge.java index a4ccd6846..019bf431f 100644 --- a/core/src/main/java/de/muenchen/allg/itd51/wollmux/mailmerge/print/OOoBasedMailMerge.java +++ b/core/src/main/java/de/muenchen/allg/itd51/wollmux/mailmerge/print/OOoBasedMailMerge.java @@ -35,6 +35,7 @@ import java.util.Map; import java.util.Map.Entry; import java.util.Random; +import java.util.function.Predicate; import java.util.regex.Matcher; import java.util.regex.Pattern; @@ -47,11 +48,15 @@ import com.sun.star.beans.NamedValue; import com.sun.star.beans.PropertyValue; +import com.sun.star.beans.PropertyVetoException; +import com.sun.star.beans.UnknownPropertyException; import com.sun.star.beans.XPropertySet; +import com.sun.star.container.NoSuchElementException; import com.sun.star.frame.XModel; import com.sun.star.frame.XStorable; import com.sun.star.io.IOException; import com.sun.star.lang.IllegalArgumentException; +import com.sun.star.lang.WrappedTargetException; import com.sun.star.lang.XMultiServiceFactory; import com.sun.star.lang.XSingleServiceFactory; import com.sun.star.sdb.CommandType; @@ -80,6 +85,10 @@ import de.muenchen.allg.afid.UnoDictionary; import de.muenchen.allg.afid.UnoHelperException; import de.muenchen.allg.afid.UnoProps; +import de.muenchen.allg.document.text.Bookmark; +import de.muenchen.allg.itd51.wollmux.config.ConfigThingy; +import de.muenchen.allg.itd51.wollmux.config.NodeNotFoundException; +import de.muenchen.allg.itd51.wollmux.config.SyntaxErrorException; import de.muenchen.allg.itd51.wollmux.dialog.InfoDialog; import de.muenchen.allg.itd51.wollmux.document.DocumentManager; import de.muenchen.allg.itd51.wollmux.document.FormFieldFactory; @@ -357,11 +366,11 @@ private void createAndAdjustInputFile() throws PrintException adjustDatabaseAndInputUserFields(tmpDoc); /* * Bookmarks make LO mail merge slow. So we delete all of the. - * + * * If at some time we need bookmarks at least WollMux document commands have to be removed * so that they are not processed twice. */ - removeAllBookmarks(tmpDoc); + updateBookmarks(tmpDoc); ContentBasedDirectiveModel.createModel(UNO.XTextDocument(tmpDoc)).renameTextStyles(); removeWollMuxMetadata(UNO.XTextDocument(tmpDoc)); @@ -420,7 +429,7 @@ private void updateTextSections(XTextDocument doc) } /** - * Remove all non informational meta data of wollmux from the document. + * Remove all non informational meta data of WollMux from the document. * * @param doc * The document. @@ -437,25 +446,35 @@ private void removeWollMuxMetadata(XTextDocument doc) } /** - * Remove all bookmarks from the document. + * Remove all bookmarks except setGroups-commands from the document. setGroups + * commands are converted, so that they can be interpreted by LibreOffice mail + * merge. * * @param tmpDoc * The document. */ - private void removeAllBookmarks(XTextDocument tmpDoc) + private void updateBookmarks(XTextDocument tmpDoc) { if (UNO.XBookmarksSupplier(tmpDoc) != null) { + Predicate<String> setGroups = DocumentCommands.getPatternForCommand("setGroups").asMatchPredicate(); UnoDictionary<XTextContent> bookmarks = UnoDictionary .create(UNO.XBookmarksSupplier(tmpDoc).getBookmarks(), XTextContent.class); - for (XTextContent bookmark : bookmarks.values()) + for (Map.Entry<String, XTextContent> bookmark : bookmarks.entrySet()) { try { - if (bookmark != null) + if (setGroups.test(bookmark.getKey())) { - bookmark.getAnchor().getText().removeTextContent(bookmark); + updateSetGroupsBookmark(tmpDoc, bookmark.getKey()); + } else if (bookmark.getValue() != null) + { + bookmark.getValue().getAnchor().getText().removeTextContent(bookmark.getValue()); } + } + catch (NoSuchElementException e) + { + continue; } catch (Exception e) { LOGGER.error("", e); @@ -464,6 +483,49 @@ private void removeAllBookmarks(XTextDocument tmpDoc) } } + /** + * Sets a condition on the given book mark according to its name. All + * mentioned groups are part of the condition. Renames the book mark. + * + * @param tmpDoc + * The document which has the book mark + * @param name + * The name of the book mark. + * @throws NoSuchElementException + * Couldn't find the book mark. + */ + private void updateSetGroupsBookmark(XTextDocument tmpDoc, String name) + throws NoSuchElementException + { + try + { + Bookmark bookmark = new Bookmark(name, UNO.XBookmarksSupplier(tmpDoc)); + ConfigThingy groups = new ConfigThingy("cmd", name).get("GROUPS"); + List<String> conditions = new ArrayList<>(); + List<String> names = new ArrayList<>(); + + UnoProperty.setPropertyToDefault(bookmark.getAnchor(), UnoProperty.CHAR_HIDDEN); + for (ConfigThingy groupName : groups) + { + conditions.add(String.format("([%s] != \"true\")", + COLUMN_PREFIX_TEXTSECTION + groupName.toString())); + names.add(groupName.toString()); + } + String condition = StringUtils.join(conditions, " or "); + + XPropertySet ps = UNO.XPropertySet( + UNO.XBookmarksSupplier(tmpDoc).getBookmarks().getByName(name)); + ps.setPropertyValue(UnoProperty.BOOKMARK_HIDDEN, true); + ps.setPropertyValue(UnoProperty.BOOKMARK_CONDITION, condition); + bookmark.rename(StringUtils.join(names, "_")); + } catch (NodeNotFoundException | java.io.IOException | SyntaxErrorException + | WrappedTargetException | UnknownPropertyException + | PropertyVetoException | UnoHelperException ex) + { + LOGGER.debug("", ex); + } + } + /** * Replace all insertFormValue-Bookmarks with mail merge fields. *