From c0ebbde2230c4a91dc3d7124ac4b8eb9931c37ac Mon Sep 17 00:00:00 2001 From: sourav492 <76873297+sourav492@users.noreply.github.com> Date: Sun, 19 Feb 2023 23:42:20 +0530 Subject: [PATCH] #393 issue: Update Comments --- core/.classpath | 11 - core/.settings/org.eclipse.jdt.core.prefs | 12 +- .../allg/itd51/wollmux/GlobalFunctions.java | 34 +-- .../allg/itd51/wollmux/HashableComponent.java | 16 +- .../allg/itd51/wollmux/Shortcuts.java | 66 +++--- .../itd51/wollmux/SyncActionListener.java | 20 +- .../allg/itd51/wollmux/TextModule.java | 224 +++++++++--------- .../itd51/wollmux/WollMuxFehlerException.java | 4 +- .../allg/itd51/wollmux/WollMuxFiles.java | 12 +- .../allg/itd51/wollmux/WollMuxSingleton.java | 98 ++++---- .../wollmux/func/AlwaysTrueFunction.java | 2 +- .../allg/itd51/wollmux/func/BindFunction.java | 32 +-- .../wollmux/func/Dateinamensanpassungen.java | 46 ++-- .../itd51/wollmux/func/DivideFunction.java | 22 +- .../itd51/wollmux/func/ExternalFunction.java | 54 ++--- .../allg/itd51/wollmux/func/Function.java | 40 ++-- .../itd51/wollmux/func/FunctionFactory.java | 140 +++++------ .../itd51/wollmux/func/FunctionLibrary.java | 58 ++--- .../itd51/wollmux/func/MultiFunction.java | 32 +-- .../wollmux/func/NumberCompareFunction.java | 36 +-- .../itd51/wollmux/func/NumberFunction.java | 46 ++-- .../allg/itd51/wollmux/func/SignFunction.java | 2 +- .../allg/itd51/wollmux/func/Value.java | 10 +- .../itd51/wollmux/func/ValueFunction.java | 2 +- .../allg/itd51/wollmux/func/Values.java | 38 +-- idl/.classpath | 5 - oxt/.classpath | 11 - oxt/.settings/org.eclipse.jdt.core.prefs | 7 + 28 files changed, 530 insertions(+), 550 deletions(-) diff --git a/core/.classpath b/core/.classpath index b44268cf5..88f97082c 100644 --- a/core/.classpath +++ b/core/.classpath @@ -51,16 +51,5 @@ - - - - - - - - - - - diff --git a/core/.settings/org.eclipse.jdt.core.prefs b/core/.settings/org.eclipse.jdt.core.prefs index d71df273d..1d82dd1a1 100644 --- a/core/.settings/org.eclipse.jdt.core.prefs +++ b/core/.settings/org.eclipse.jdt.core.prefs @@ -1,13 +1,13 @@ eclipse.preferences.version=1 org.eclipse.jdt.core.compiler.annotation.inheritNullAnnotations=disabled org.eclipse.jdt.core.compiler.annotation.missingNonNullByDefaultAnnotation=ignore -org.eclipse.jdt.core.compiler.annotation.nonnull=org.eclipse.jdt.annotation.NonNull +org.eclipse.jdt.core.compiler.annotation.nonnull=javax.annotation.Nonnull org.eclipse.jdt.core.compiler.annotation.nonnull.secondary= org.eclipse.jdt.core.compiler.annotation.nonnullbydefault=org.eclipse.jdt.annotation.NonNullByDefault org.eclipse.jdt.core.compiler.annotation.nonnullbydefault.secondary= -org.eclipse.jdt.core.compiler.annotation.nullable=org.eclipse.jdt.annotation.Nullable +org.eclipse.jdt.core.compiler.annotation.nullable=javax.annotation.Nullable org.eclipse.jdt.core.compiler.annotation.nullable.secondary= -org.eclipse.jdt.core.compiler.annotation.nullanalysis=disabled +org.eclipse.jdt.core.compiler.annotation.nullanalysis=enabled org.eclipse.jdt.core.compiler.codegen.targetPlatform=11 org.eclipse.jdt.core.compiler.compliance=11 org.eclipse.jdt.core.compiler.problem.APILeak=warning @@ -49,15 +49,15 @@ org.eclipse.jdt.core.compiler.problem.noImplicitStringConversion=warning org.eclipse.jdt.core.compiler.problem.nonExternalizedStringLiteral=ignore org.eclipse.jdt.core.compiler.problem.nonnullParameterAnnotationDropped=warning org.eclipse.jdt.core.compiler.problem.nonnullTypeVariableFromLegacyInvocation=warning -org.eclipse.jdt.core.compiler.problem.nullAnnotationInferenceConflict=error +org.eclipse.jdt.core.compiler.problem.nullAnnotationInferenceConflict=warning org.eclipse.jdt.core.compiler.problem.nullReference=warning -org.eclipse.jdt.core.compiler.problem.nullSpecViolation=error +org.eclipse.jdt.core.compiler.problem.nullSpecViolation=warning org.eclipse.jdt.core.compiler.problem.nullUncheckedConversion=warning org.eclipse.jdt.core.compiler.problem.overridingPackageDefaultMethod=warning org.eclipse.jdt.core.compiler.problem.parameterAssignment=ignore org.eclipse.jdt.core.compiler.problem.pessimisticNullAnalysisForFreeTypeVariables=warning org.eclipse.jdt.core.compiler.problem.possibleAccidentalBooleanAssignment=ignore -org.eclipse.jdt.core.compiler.problem.potentialNullReference=ignore +org.eclipse.jdt.core.compiler.problem.potentialNullReference=warning org.eclipse.jdt.core.compiler.problem.potentiallyUnclosedCloseable=ignore org.eclipse.jdt.core.compiler.problem.rawTypeReference=warning org.eclipse.jdt.core.compiler.problem.redundantNullAnnotation=warning diff --git a/core/src/main/java/de/muenchen/allg/itd51/wollmux/GlobalFunctions.java b/core/src/main/java/de/muenchen/allg/itd51/wollmux/GlobalFunctions.java index ac6f16d97..9304cd4e4 100644 --- a/core/src/main/java/de/muenchen/allg/itd51/wollmux/GlobalFunctions.java +++ b/core/src/main/java/de/muenchen/allg/itd51/wollmux/GlobalFunctions.java @@ -38,19 +38,19 @@ public class GlobalFunctions private static GlobalFunctions instance; /** - * Enthält die im Funktionen-Abschnitt der wollmux,conf definierten Funktionen. + * Contains the functions defined in the functions section of wollmux.conf. */ private FunctionLibrary globalFunctions; /** - * Enthält die im Dokumentaktionen der wollmux,conf definierten Funktionen. + * Contains the functions defined in the Wollmux.conf document actions. */ private FunctionLibrary documentActionFunctions; /** - * Enthält die im Funktionsdialoge-Abschnitt der wollmux,conf definierten Dialoge. + * Contains the dialogs defined in the function dialogs section of wollmux,conf. */ private DialogLibrary funcDialogs; /** - * Enthält die im Funktionen-Abschnitt der wollmux,conf definierten Funktionen. + * Contains the functions defined in the functions section of wollmux.conf. */ private PrintFunctionLibrary globalPrintFunctions; @@ -65,30 +65,30 @@ public static GlobalFunctions getInstance() private GlobalFunctions() { /* - * Globale Funktionsdialoge parsen. ACHTUNG! Muss vor parseGlobalFunctions() erfolgen. Als - * context wird null übergeben, weil globale Funktionen keinen Kontext haben. + * Parse global function dialogs. DANGER! Must be done before parseGlobalFunctions(). As + * context is passed null because global functions have no context. */ funcDialogs = DialogFactory.parseFunctionDialogs(WollMuxFiles.getWollmuxConf(), null, null); /* - * Globale Funktionen parsen. ACHTUNG! Verwendet die Funktionsdialoge. Diese - * müssen also vorher geparst sein. Als context wird null übergeben, weil globale - * Funktionen keinen Kontext haben. + * Parse global functions. DANGER! Uses the function dialogs. This + * must therefore be parsed beforehand. As context, null is passed because global + * Functions have no context. */ globalFunctions = FunctionFactory.parseFunctions(WollMuxFiles.getWollmuxConf(), getFunctionDialogs(), null, null); /* - * Globale Druckfunktionen parsen. + * Parse global print functions. */ globalPrintFunctions = PrintFunctionLibrary.parsePrintFunctions(WollMuxFiles.getWollmuxConf()); PrintFunction.addPrintFunctions(globalPrintFunctions); /* - * Dokumentaktionen parsen. Diese haben weder Kontext noch Dialoge. + * Parse document actions. These have neither context nor dialogues. */ documentActionFunctions = new FunctionLibrary(null, true); FunctionFactory.parseFunctions(documentActionFunctions, @@ -96,7 +96,7 @@ private GlobalFunctions() } /** - * Liefert die Funktionsbibliothek, die die global definierten Funktionen enthält. + * Returns the function library containing the globally defined functions. */ public FunctionLibrary getGlobalFunctions() { @@ -104,7 +104,7 @@ public FunctionLibrary getGlobalFunctions() } /** - * Liefert die Funktionsbibliothek, die die Dokumentaktionen enthält. + * Returns the function library containing the document actions. */ public FunctionLibrary getDocumentActionFunctions() { @@ -112,8 +112,8 @@ public FunctionLibrary getDocumentActionFunctions() } /** - * Liefert die Funktionsbibliothek, die die global definierten Druckfunktionen - * enthält. + * Returns the function library containing the globally defined print functions + * contains. */ public PrintFunctionLibrary getGlobalPrintFunctions() { @@ -121,8 +121,8 @@ public PrintFunctionLibrary getGlobalPrintFunctions() } /** - * Liefert die Dialogbibliothek, die die Dialoge enthält, die in Funktionen - * (Grundfunktion "DIALOG") verwendung finden. + * Returns the dialog library containing the dialogs contained in functions + * (basic function "DIALOG") can be used. */ public DialogLibrary getFunctionDialogs() { diff --git a/core/src/main/java/de/muenchen/allg/itd51/wollmux/HashableComponent.java b/core/src/main/java/de/muenchen/allg/itd51/wollmux/HashableComponent.java index ff305a307..0a24f09a4 100644 --- a/core/src/main/java/de/muenchen/allg/itd51/wollmux/HashableComponent.java +++ b/core/src/main/java/de/muenchen/allg/itd51/wollmux/HashableComponent.java @@ -28,19 +28,19 @@ import org.libreoffice.ext.unohelper.common.UNO; /** - * Hilfsklasse, die es ermöglicht, UNO-Componenten in HashMaps abzulegen; der - * Vergleich zweier HashableComponents mit equals(...) verwendet dazu den sicheren - * UNO-Vergleich UnoRuntime.areSame(...). Die Methode hashCode verwendet die sichere - * Oid, die UnoRuntime.generateOid(...) liefert. + * Helper class that makes it possible to store UNO components in HashMaps; the + * Comparing two HashableComponents with equals(...) uses the safe one + * UNO comparison UnoRuntime.areSame(...). The hashCode method uses the safe one + * Oid that UnoRuntime.generateOid(...) returns. */ public class HashableComponent { private XInterface compo; /* - * Anmerkung: Es mag ineffizient wirken, hier ein Object zu nehmen und immer in - * XInterface zu casten, aber wegen Bugs in OOo ist es die einzig sichere Methode, - * auch wenn man schon ein X... Objekt hat, das von XInterface abgeleitet ist. + * Note: It may seem inefficient to take an Object here and always in + * Cast XInterface, but because of bugs in OOo it's the only safe way + * even if you already have an X... object derived from XInterface. */ public HashableComponent(Object compo) { @@ -52,7 +52,7 @@ public HashableComponent(Object compo) } /** - * Liefert die Komponente, die durch diese {@link HashableComponent} gewrappt ist. + * Returns the component wrapped by this {@link HashableComponent}. */ public XInterface getComponent() { diff --git a/core/src/main/java/de/muenchen/allg/itd51/wollmux/Shortcuts.java b/core/src/main/java/de/muenchen/allg/itd51/wollmux/Shortcuts.java index ea0dddc3a..099e93bcc 100644 --- a/core/src/main/java/de/muenchen/allg/itd51/wollmux/Shortcuts.java +++ b/core/src/main/java/de/muenchen/allg/itd51/wollmux/Shortcuts.java @@ -52,12 +52,12 @@ private Shortcuts() } /** - * Liest alle Attribute SHORTCUT und URL aus tastenkombinationenConf aus, löscht - * alle bisher vorhandenen Tastenkombinationen deren URL mit "wollmux:" beginnt und - * setzt neue Tastenkombination in OOo-Writer. + * Reads all attributes SHORTCUT and URL from key combinationsConf, deletes + * all existing key combinations whose URL begins with "wollmux:" and + * sets new keyboard shortcut in OOo-Writer. * - * @param tastenkombinationenConf - * .conf Abschnitt Tastenkuerzel mit allen Knoten + * @param key combinationsConf + * .conf section shortcuts with all nodes */ public static void createShortcuts(ConfigThingy tastenkombinationenConf) { @@ -72,13 +72,13 @@ public static void createShortcuts(ConfigThingy tastenkombinationenConf) return; } - // löschen aller KeyEvents die mit "wollmux:" beginnen + // Delete all KeyEvents that start with "wollmux:". removeComandFromAllKeyEvents(shortcutManager); - // lesen des Knoten SHORTCUT + // read the node SHORTCUT ConfigThingy shortcutConf = tastenkombinationenConf.queryByChild("SHORTCUT"); - // Iterieren über die Knoten SHORTCUT + // Iterate over the SHORTCUT nodes Iterator iterShortcut = shortcutConf.iterator(); while (iterShortcut.hasNext()) { @@ -86,7 +86,7 @@ public static void createShortcuts(ConfigThingy tastenkombinationenConf) ConfigThingy tastenkombination = iterShortcut.next(); String shortcut = null; - // lesen der Knoten SHORTCUT + // read the node SHORTCUT try { shortcut = tastenkombination.get("SHORTCUT").toString(); @@ -98,7 +98,7 @@ public static void createShortcuts(ConfigThingy tastenkombinationenConf) } String url = null; - // lesen der Knoten URL + // read the node url try { url = tastenkombination.get("URL").toString(); @@ -112,7 +112,7 @@ public static void createShortcuts(ConfigThingy tastenkombinationenConf) KeyEvent keyEvent = createKeyEvent(shortcut); if (keyEvent != null) { - // setzen der Tastenkombination mit KeyEvent und WollMux-Url + // set the key combination with KeyEvent and WollMux-Url try { shortcutManager.setKeyEvent(keyEvent, url); @@ -128,7 +128,7 @@ public static void createShortcuts(ConfigThingy tastenkombinationenConf) } } - // Änderung Persistent machen + // Make change persistent try { if (UNO.XUIConfigurationPersistence(shortcutManager) != null) @@ -143,32 +143,32 @@ public static void createShortcuts(ConfigThingy tastenkombinationenConf) } /** - * Wenn es Tastenkuerzel mit einer UNO-url beginnent mit "wollmux:" gibt, werden - * diese gelöscht. Workaround wegen nicht funktionierendem + * If there are keyboard shortcuts with a UNO url starting with "wollmux:", they will + * these deleted. Workaround for not working * xAcceleratorConfiguration.removeCommandFromAllKeyEvents(). OOo Issue #72558 * * @param xAcceleratorConfiguration - * AcceleratorConfiguration (muß danach noch mit store() persistent - * gemacht werden) + * AcceleratorConfiguration (must be persistent afterwards with store() + * be made) */ private static void removeComandFromAllKeyEvents( XAcceleratorConfiguration xAcceleratorConfiguration) { - // lesen aller gesetzten Tastenkombinationen + // read all set key combinations KeyEvent[] keys = xAcceleratorConfiguration.getAllKeyEvents(); - // Wenn es Tastenkombinationen mit der UNO-url beginnent mit "wollmux:" - // gibt, werden diese gelöscht. Workaround wegen nicht funktionierendem + // If there are key combinations with the UNO url starting with "wollmux:" + // exist, these are deleted. Workaround for not working // xAcceleratorConfiguration.removeCommandFromAllKeyEvents(). for (int i = 0; i < keys.length; i++) { try { String event = xAcceleratorConfiguration.getCommandByKeyEvent(keys[i]); - // wenn die UNO-url mit "wollmux:" beginnt, wird sie gelöscht + // if the UNO-url starts with "wollmux:" it will be deleted if (event.startsWith("wollmux:")) { - // löschen der Tastenkombination + // delete the key combination xAcceleratorConfiguration.removeKeyEvent(keys[i]); } } @@ -180,7 +180,7 @@ private static void removeComandFromAllKeyEvents( } /** - * Gibt alle KeyEvents mit Modifier, KeyCode und Command aus + * Outputs all KeyEvents with Modifier, KeyCode and Command * * @param xac * AcceleratorConfigurator @@ -208,12 +208,12 @@ public static void showKeyset(XAcceleratorConfiguration xac) } /** - * Erzeugt ein Object KeyEvent + * Generates an Object KeyEvent * * @param shortcutWithSeparator - * Tastenkombination mit "+" als Separator - * @return gibt ein KeyEvent zurück oder null wenn kein keyCode sondern nur - * keyModifier verwendet werden + * Key combination with "+" as separator + * @return returns a KeyEvent or null if not a keyCode but only + * keyModifier are used */ private static KeyEvent createKeyEvent(String shortcutWithSeparator) { @@ -253,11 +253,11 @@ private static KeyEvent createKeyEvent(String shortcutWithSeparator) } /** - * Gibt die Konstante com.sun.star.awt.Key für die entsprechende Taste zurück + * Returns the constant com.sun.star.awt.Key for the corresponding key * * @param shortcut - * Taste - * @return Key der entsprechenden Taste + * button + * @return key of the corresponding key */ private static Short returnKeyCode(String shortcut) { @@ -384,12 +384,12 @@ private static Short returnKeyCode(String shortcut) } /** - * Gibt die Konstante com.sun.star.awt.KeyModifier für die entsprechende Taste - * zurück + * Returns the constant com.sun.star.awt.KeyModifier for the corresponding key + * return * * @param shortcut - * Taste - * @return KeyModifier der entsprechenden Taste + * button + * @return KeyModifier of the corresponding key */ private static Short returnKeyModifier(String shortcut) { diff --git a/core/src/main/java/de/muenchen/allg/itd51/wollmux/SyncActionListener.java b/core/src/main/java/de/muenchen/allg/itd51/wollmux/SyncActionListener.java index 37f2c5483..464bd055e 100644 --- a/core/src/main/java/de/muenchen/allg/itd51/wollmux/SyncActionListener.java +++ b/core/src/main/java/de/muenchen/allg/itd51/wollmux/SyncActionListener.java @@ -26,34 +26,34 @@ import java.awt.event.ActionListener; /** - * Diese Klasse vereinfacht die Synchronisation verschiedener Threads über einen - * ActionListener. Die Anwendung erfolgt in der Regel in folgenden Schritten: + * This class simplifies the synchronization of different threads over one + * ActionListener. The application usually takes place in the following steps: * * SyncActionListener s = new SyncActionListener(); - * aufrufEinerMethodeDieEinenActionListenerErwartet(..., s); EventObject result = + * calling a method that expects an action listener (..., s); EventObject result = * s.synchronize(); * - * Es ist sicher gestellt, dass s.synchronize() erst zurück kehrt, wenn der - * ActionListener benachrichtigt wurde. Dabei wird das EventObject zurück gegeben, - * mit dem {@link #actionPerformed(ActionEvent)} des Listeners aufgerufen wurde. + * It is ensured that s.synchronize() does not return until the + * ActionListener was notified. The EventObject is returned, + * was called with the listener's {@link #actionPerformed(ActionEvent)} . * * @author Christoph Lutz (D-III-ITD-D101) */ public class SyncActionListener implements ActionListener { /** - * Das lock-Flag über das die Synchronisierung erfolgt. + * The lock flag over which synchronization is done. */ private boolean[] lock = new boolean[] { true }; /** - * Enthält nach erfolgter Syncronisierung das zurückgegebene ActionEvent + * Contains the returned ActionEvent after synchronization has taken place */ private ActionEvent result = null; /** - * Kehrt erst zurück, wenn {@link #actionPerformed(ActionEvent)} des Listeners - * aufgerufen wurde und liefert das dabei übermittelte EventObject zurück. + * Returns only when the listener's {@link #actionPerformed(ActionEvent)} + * was called and returns the EventObject that was transmitted. */ public ActionEvent synchronize() { 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 b9fe2fc27..6a097ab5a 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 @@ -54,7 +54,7 @@ import org.libreoffice.ext.unohelper.util.UnoService; /** - * Klasse enthält statische Methoden die für das Textbausteinsystem benötigt werden + * Class contains static methods that are required for the text block system * * @author bettina.bauer */ @@ -64,7 +64,7 @@ public class TextModule private static final Logger LOGGER = LoggerFactory.getLogger(TextModule.class); /** - * Pattern, das insertFrag-Bookmarks matcht. + * Pattern matching insertFrag bookmarks. */ private static final Pattern INSERTFRAG_PATTERN = DocumentCommands.getPatternForCommand("insertFrag"); @@ -75,38 +75,38 @@ private TextModule() } /** - * Sucht ab der Stelle range rückwarts nach gültigen Textfragmentbezeichnern mit - * Argumenten, legt um jeden einzufügenden Textbaustein ein Dokumentkommando - * 'insertFrag' mit den gefundenen Argumenten. Aufgehört wird beim ersten Absatz in - * dem kein Textbausteinbezeichner identifiziert werden konnte oder wo bereits ein - * insertFrag vorhanden war. + * Searches backwards from range for valid text fragment identifiers + * Arguments, puts a document command around each text module to be inserted + * 'insertFrag' with the arguments found. It stops at the first paragraph in + * where no snippet identifier could be identified or where already one + * insertFrag was present. * * @param doc - * Aktuelle Textdocument in dem gesucht werden soll + * Current text document in which to search * @param range - * Stelle in der nach Textfragmentbezeichnern gesucht werden soll. Die - * Stelle kann ein markierter Bereich sein oder ein kollabierter Cursor - * von dem rückwärts bis zur ersten Zeile die kein Textfragment enthält - * gesucht wird. Meistens handelt es sich um den viewCursor. + * Position in which to search for text fragment identifiers. The + * Location can be a marked area or a collapsed cursor + * from the back to the first line that does not contain a text fragment + * is searched for. Most often it is the viewCursor. * @param isManual - * kennzeichnet Einfügungen, die manuell vorgenommen worden sind. Setzt - * den optionalen Knoten MODE = "manual" + * denotes insertions that have been made manually. Puts + * the optional node MODE = "manual" * - * @throws WollMuxFehlerException - * falls ein Problem aufgetreten ist (z.B. kein Textbaustein erkannt oder - * bereits ein insertFrag-Befehl vorhanden). Eine Exception wird genau - * dann geworfen, wenn gar kein Textbausteinverweis eingefügt werden - * konnte. Wurde mindestens einer eingefügt, wird keine Exception - * geworfen, sondern an der Fehlerstelle mit dem Scan aufgehört. + * @throws WollMuxErrorException + * if a problem has occurred (e.g. no text module recognized or + * an insertFrag command already exists). An exception becomes exact + * then thrown if no text module reference is inserted + * could. If at least one was inserted, no exception is thrown + * thrown, but stopped the scan at the error point. */ public static void createInsertFragFromIdentifier(XTextDocument doc, XTextRange range, boolean isManual) throws WollMuxFehlerException { ConfigThingy conf = WollMuxFiles.getWollmuxConf(); - // holt sich Textbausteine aus .conf und sammelt sie in umgekehrter - // Reihenfolge in der LinkedList tbListe. Damit später definierte - // Textbaustein Abschnitte immer Vorrang haben. + // fetches text modules from .conf and collects them in reverse + // Order in LinkedList tbList. So later defined + // Text module sections always take precedence. LinkedList tbListe = new LinkedList<>(); ConfigThingy tbConf = conf.query("Textbausteine"); Iterator iter = tbConf.iterator(); @@ -119,11 +119,11 @@ public static void createInsertFragFromIdentifier(XTextDocument doc, XParagraphCursor cursor = UNO.XParagraphCursor(range.getText().createTextCursorByRange(range)); - // Sonderbehandlung, wenn der viewCursor bereits eine Bereich markiert. - // In diesem Fall soll ausschließlich der Inhalt des Bereichs evaluiert - // werden. Über einen Vergleich von completeContent und collectedContent - // kann festgestellt werden, ob cursor den Bereich abdeckt (siehe - // unten). + // Special treatment when the viewCursor already marks an area. + // In this case, only the content of the area should be evaluated + // become. By comparing completeContent and collectedContent + // can be determined whether cursor covers the area (see + // below). String completeContent = cursor.getString(); String collectedContent = ""; if (!completeContent.equals("")) cursor.collapseToEnd(); @@ -143,9 +143,9 @@ public static void createInsertFragFromIdentifier(XTextDocument doc, foundAtLeastOneTBInCurrentParagraph = true; /* - * Schauen, ob bereits ein insertFrag-Befehl vorhanden ist, um zu verhindern, - * dass ein zweiter darüber gelegt wird, da dies diverses Fehlverhalten - * produzieren kann. + * See if an insertFrag command already exists to prevent + * that a second one is placed over it, as this is various misconduct + * can produce. */ Set bms = TextDocument.getBookmarkNamesMatching(INSERTFRAG_PATTERN, cursor); @@ -155,27 +155,27 @@ public static void createInsertFragFromIdentifier(XTextDocument doc, createInsertFrag(doc, cursor, results, isManual); processedAtLeastOneTBSuccessfully = true; - // Cursor kollabieren, damit beim Weitersuchen nicht der gerade schon - // verarbeitete Textbausteinbezeichner noch als Teil des nächsten - // Bezeichners verwendet wird. - // Die Textbausteinsuche verhält sich also im Gegensatz zur üblichen Art - // des Matchens von regulären Ausdrücken NICHT greedy, sondern wir nehmen - // den kürzesten matchenden Bezeichner + // Cursor collapses so that when you continue searching, it doesn't just happen + // processed phrase identifier still as part of next + // identifier is used. + // So the text module search behaves in contrast to the usual way + // of regular expression matching NOT greedy, but we take + // the shortest matching identifier cursor.collapseToStart(); } else { /* - * Es wurde bereits ein insertFrag-Kommando an der aktuellen Cursorposition - * gefunden. + * An insertFrag command has already been issued at the current cursor position + * found. * - * Wir werfen nur dann einen Fehler, wenn wir noch gar keinen Textbaustein - * verarbeitet haben. Ansonsten hören wir einfach nur auf ohne Fehler. Es - * ist ein absolut legitimer Anwendungsfall, dass ein Anwender erst "TB1" - * tippt und dann "TextbausteinVERWEIS einfügen" (man beachte: nur beim - * Einfügen eines VERWEISEs ist es möglich, dass ein insertFrag Bookmark - * existiert.) macht und dann einen Absatz runtergeht und "TB2" tippt und - * wieder "Textbausteinverweis einfügen" macht. + * We only throw an error if we don't have any boilerplate + * have processed. Otherwise we just stop without error. It + * is an absolutely legitimate use case that a user first "TB1" + * type and then "insert text moduleLINK" (note: only with the + * Inserting a REFERENCES it is possible that an insertFrag bookmark + * exists.) and then go down one paragraph and type "TB2" and + * does "insert snippet link" again. */ if (!processedAtLeastOneTBSuccessfully) throw new WollMuxFehlerException( @@ -187,23 +187,23 @@ public static void createInsertFragFromIdentifier(XTextDocument doc, if (cursor.isStartOfParagraph()) { - // Falls wir in der ganzen Zeile nichts gefunden haben, dann aufhören. + // If we haven't found anything in the whole line, then stop. if (!foundAtLeastOneTBInCurrentParagraph) break; - // zum vorherigen Absatz weiter schalten, dabei matchedInLine zurücksetzen. + // go to the previous paragraph, resetting matchedInLine. cursor.goLeft((short) 1, false); foundAtLeastOneTBInCurrentParagraph = false; } else { - // ein Zeichen nach links gehen (dabei Cursorrange wachsen lassen) und weiter - // machen. + // move one character to the left (allowing the cursor range to increase) and continue + // make. cursor.goLeft((short) 1, true); } - // Hier der Vergleich completeContent<->collectedContent: wenn beide - // übereinstimmen, kann abgebrochen werden, da der Bereich dann - // vollständig evaluiert wurde. + // Here is the comparison completeContent<->collectedContent: if both + // match can be aborted because the range then + // has been fully evaluated. if (completeContent.length() > 0 && completeContent.equals(collectedContent)) break; } @@ -214,20 +214,20 @@ public static void createInsertFragFromIdentifier(XTextDocument doc, } /** - * Parsed den übergebenen identifierWithArgs nach allen Abbildungen der Form (MATCH - * ... FRAG_ID ...), die in den Textbausteine-Abschnitten in tbListe enthalten sind - * und liefert null zurück, wenn es keine Übereinstimmung mit den MATCHes gab oder - * falls es eine Übereinstimmung gab ein Array, das an der ersten Stelle die neue - * frag_id enthält und in den folgenden Stellen die Argumente. + * Parses the supplied identifierWithArgs for all mappings of the form (MATCH + * ... FRAG_ID ...) contained in the boilerplate sections in tbList + * and returns null if there was no match on the MATCHes or + * if there was a match, an array with the new one in the first position + * contains frag_id and the arguments in the following places. * * @param identifierWithArgs - * Ein String in der Form "#arg1#...#argN", wobei der - * Separator "#" über den SEPARATOR-Schlüssel in textbausteine verändert - * werden kann. - * @param tbListe - * Eine Liste, die die Textbausteine-Abschnitte in der Reihenfolge - * enthält, in der sie ausgewertet werden sollen. - * @return Stringarray mit (frag_id + args) oder null + * A string of the form "#arg1#...#argN" where the + * Changed the separator "#" to text modules via the SEPARATOR key + * can be. + * @param tbList + * A list showing the boilerplate sections in order + * contains in which they are to be evaluated. + * @return array of strings with (frag_id + args) or null */ private static String[] parseIdentifier(String identifierWithArgs, List tbListe) @@ -245,25 +245,25 @@ private static String[] parseIdentifier(String identifierWithArgs, } /** - * Parsed den übergebenen identifierWithArgs nach allen Abbildungen der Form (MATCH - * ... FRAG_ID ...), die in textbausteine (=ein einzelner Textbausteine-Abschnitt) - * enthalten sind und liefert null zurück, wenn es keine Übereinstimmung mit den - * MATCHes gab oder falls es eine Übereinstimmung gab ein Array, das an der ersten - * Stelle die neue frag_id enthält und in den folgenden Stellen die Argumente. + * Parses the supplied identifierWithArgs for all mappings of the form (MATCH + * ... FRAG_ID ...), which is written in text modules (=a single text module section) + * are included and returns null if there is no match with the + * MATCHes were or if there was a match an array that is at the first + * Place containing the new frag_id and in the following places the arguments. * * @param identifierWithArgs - * Ein String in der Form "<identifier>#arg1#...#argN", wobei der - * Separator "#" über den SEPARATOR-Schlüssel in textbausteine verändert - * werden kann. - * @param textbausteine - * Beschreibung eines Textbausteinabschnittes in der Form - * "Textbausteine(SEPARATOR ... Kuerzel(...))" - * @return Stringarray mit (frag_id + args) oder null + * A string of the form "<identifier>#arg1#...#argN" where the + * Changed the separator "#" to text modules via the SEPARATOR key + * can be. + * @param text modules + * Description of a boilerplate section in the form + * "Text modules(SEPARATOR ... abbreviation(...))" + * @return array of strings with (frag_id + args) or null */ public static String[] parseIdentifierInTextbausteine(String identifierWithArgs, ConfigThingy textbausteine) { - // Separator für diesen Textbaustein-Block bestimmen + // Determine the separator for this text module block String separatorString = "#"; ConfigThingy separator = textbausteine.query("SEPARATOR"); if (separator.count() > 0) @@ -278,13 +278,13 @@ public static String[] parseIdentifierInTextbausteine(String identifierWithArgs, } } - // identifierWithArgs splitten und erstes Argument holen, wenn am Schuß - // SEPERATOR steht wird -1 noch ein weiteres leeres Element in args[] - // erzeugt + // Split identifierWithArgs and get first argument when on end + // SEPERATOR -1 is another empty element in args[] + // generated String[] args = identifierWithArgs.split(separatorString, -1); String first = args[0]; - // Iterieren über alle Knoten der Form "(MATCH ... FRAG_ID ...)" + // Iterate over all nodes of the form "(MATCH ... FRAG_ID ...)" ConfigThingy mappingsConf = textbausteine.queryByChild("MATCH"); Iterator iterMappings = mappingsConf.iterator(); while (iterMappings.hasNext()) @@ -309,7 +309,7 @@ public static String[] parseIdentifierInTextbausteine(String identifierWithArgs, } catch (NodeNotFoundException e) { - // kommt nicht vor, da obiger queryByChild immer MATCH liefert + // does not occur because the above queryByChild always returns MATCH continue; } @@ -331,29 +331,29 @@ public static String[] parseIdentifierInTextbausteine(String identifierWithArgs, } } } - return null; // wenn nix drin + return null; // if nothing in it } /** - * Erzeugt ein Bookmark vom Typ "WM(CMD'insertFrag' FRAG_ID '<args[0]>' - * ARGS('<args[1]>' '...' '<args[n]>')" im Dokument doc an der Stelle range. + * Creates a bookmark of type "WM(CMD'insertFrag' FRAG_ID '<args[0]>' + * ARGS('<args[1]>' '...' '<args[n]>')" in the document doc at position range. * * @param doc - * Aktuelles Textdokument - * @param range - * Stelle an der das Bookmark gesetzt werden soll + * Current text document + * @paramrange + * Place where the bookmark should be set * @param args - * Übergebene Parameter + * Parameters passed * @param isManual - * kennzeichnet Einfügungen, die manuell vorgenommen worden sind. Setzt den optinalen - * Knoten MODE = "manual" + * denotes insertions that have been made manually. Sets the optional + * node MODE = "manual" */ public static void createInsertFrag(XTextDocument doc, XTextRange range, String[] args, boolean isManual) { - // Neues ConfigThingy für "insertFrag Textbaustein" erzeugen: + // Create new ConfigThingy for "insertFrag text module": ConfigThingy root = new ConfigThingy(""); ConfigThingy werte = new ConfigThingy("WM"); root.addChild(werte); @@ -404,20 +404,20 @@ public static void createInsertFrag(XTextDocument doc, XTextRange range, } /** - * Methode springt ab dem aktuellen viewCursor von einem Platzhalterfeld zum - * nächsten und fängt dann nochmal von vorne an + * Method jumps from a placeholder field to the current viewCursor + * next and then starts again from the beginning * * @param viewCursor - * Aktueller ViewCursor im Dokument + * Current ViewCursor in the document */ public static void jumpPlaceholders(XTextDocument doc, XTextCursor viewCursor) { XTextCursor oldPos = viewCursor.getText().createTextCursorByRange(viewCursor); - // Nächsten Platzhalter anspringen. Dabei berücksichtigen, dass - // .uno:GotoNextPlacemarker nicht automatisch zu einem evtl. direkt am - // View-Cursor angrenzenden Platzhalter springt, sondern dann gleich zum - // nächsten. + // Jump to next placeholder. In doing so, take into account that + // .uno:GotoNextPlacemarker not automatically to a possibly directly on + // View cursor jumps to the adjacent placeholder, but then straight to + // next. XTextField nearPlacemarker = null; if (viewCursor.isCollapsed()) nearPlacemarker = getPlacemarkerStartingWithRange(doc, viewCursor); @@ -426,14 +426,14 @@ public static void jumpPlaceholders(XTextDocument doc, XTextCursor viewCursor) else UNO.dispatchAndWait(doc, ".uno:GotoNextPlacemarker"); - // Keinen weiteren Platzhalter gefunden? Dies erkenne ich daran, dass entwder der - // View-Cursor (falls er bereits auf dem letzten Platzhalter des Dokuments stand) - // kollabiert wurde oder der View-Cursor auf der selben Stelle wie früher stehen - // geblieben ist. + // Didn't find another placeholder? I recognize this by the fact that either the + // view cursor (if it was already on the last placeholder of the document) + // was collapsed or the view cursor is where it was before + // stayed. if (viewCursor.isCollapsed() || new TextRangeRelation(oldPos, viewCursor).followsOrderscheme8888()) { - // Proiere nochmal ab dem Anfang des Dokuments + // Try again from the beginning of the document viewCursor.gotoRange(doc.getText().getStart(), false); nearPlacemarker = null; if (viewCursor.isCollapsed()) @@ -443,23 +443,23 @@ public static void jumpPlaceholders(XTextDocument doc, XTextCursor viewCursor) else UNO.dispatchAndWait(doc, ".uno:GotoNextPlacemarker"); - // Falls immer noch kein Platzhalter gefunden wurde wird zur Marke - // 'setJumpMark' gesprungen falls vorhanden sonst kommt eine Fehlermeldung + // If still no placeholder was found becomes to mark + // 'setJumpMark' jumped if available otherwise an error message appears if (new TextRangeRelation(doc.getText().getStart(), viewCursor).followsOrderscheme8888()) { - // ViewCursor wieder auf Ausgangsposition setzen. + // Set the view cursor back to its original position. viewCursor.gotoRange(oldPos, false); - // und handle jumpToMark aufrufen. + // and call handle jumpToMark. new OnJumpToMark(doc, true).emit(); } } } /** - * Liefert aus dem Dokument doc das erste Text-Field Objekt vom Typ Placemarker, - * das gemeinsam mit range an der selben Position startet, oder null falls ein - * solches Objekt nicht gefunden wird. + * Returns the first text field object of type placemarker from the document doc, + * which starts at the same position as range, or null if one + * such object is not found. */ private static XTextField getPlacemarkerStartingWithRange(XTextDocument doc, XTextCursor range) diff --git a/core/src/main/java/de/muenchen/allg/itd51/wollmux/WollMuxFehlerException.java b/core/src/main/java/de/muenchen/allg/itd51/wollmux/WollMuxFehlerException.java index a4c5de7ee..e663b121b 100644 --- a/core/src/main/java/de/muenchen/allg/itd51/wollmux/WollMuxFehlerException.java +++ b/core/src/main/java/de/muenchen/allg/itd51/wollmux/WollMuxFehlerException.java @@ -23,8 +23,8 @@ package de.muenchen.allg.itd51.wollmux; /** - * Repräsentiert einen Fehler, der benutzersichtbar in einem Fehlerdialog angezeigt - * wird. + * Represents an error that is displayed user-visibly in an error dialog + * becomes. * * @author christoph.lutz */ 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 ab69e76d6..5d8d9d8df 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 @@ -337,8 +337,8 @@ public static File getWollMuxDir() } /** - * Liefert das File-Objekt der wollmux,conf zurück, die gelesen wurde (kann z,B, auch die aus - * /etc/wollmux/ sein). Darf erst nach setupWollMuxDir() aufgerufen werden. + * Returns the file object of the wollmux,conf that was read (can also be the one from + * be /etc/wollmux/). May only be called after setupWollMuxDir(). */ public static File getWollMuxConfFile() { @@ -349,10 +349,10 @@ public static File getWollMuxConfFile() } /** - * Liefert das File-Objekt des LocalOverrideStorage Caches zurück. Darf erst nach - * setupWollMuxDir() aufgerufen werden. + * Returns the file object of the LocalOverrideStorage cache. May only after + * setupWollMuxDir() to be called. * - * @return das File-Objekt des LocalOverrideStorage Caches. + * @return the file object of the LocalOverrideStorage cache. */ public static File getLosCacheFile() { @@ -363,7 +363,7 @@ public static File getLosCacheFile() } /** - * Liefert den Inhalt der wollmux,conf zurück. + * Returns the content of wollmux,conf. */ public static ConfigThingy getWollmuxConf() { diff --git a/core/src/main/java/de/muenchen/allg/itd51/wollmux/WollMuxSingleton.java b/core/src/main/java/de/muenchen/allg/itd51/wollmux/WollMuxSingleton.java index 7c6faf67b..188552252 100644 --- a/core/src/main/java/de/muenchen/allg/itd51/wollmux/WollMuxSingleton.java +++ b/core/src/main/java/de/muenchen/allg/itd51/wollmux/WollMuxSingleton.java @@ -50,10 +50,10 @@ import org.libreoffice.ext.unohelper.util.UnoConfiguration; /** - * Diese Klasse ist ein Singleton, welches den WollMux initialisiert und alle zentralen - * WollMux-Methoden zur Verfügung stellt. Selbst der WollMux-Service - * de.muenchen.allg.itd51.wollmux.comp.WollMux, der früher zentraler Anlaufpunkt war, bedient sich - * größtenteils aus den zentralen Methoden des Singletons. + * This class is a singleton, which initializes the WollMux and all central + * Provides WollMux methods. Even the WollMux service + * de.muenchen.allg.itd51.wollmux.comp.WollMux, which used to be the central contact point, is used + * mostly from the central methods of the singleton. */ public class WollMuxSingleton { @@ -63,19 +63,19 @@ public class WollMuxSingleton private static WollMuxSingleton singletonInstance = null; /** - * Enthält den default XComponentContext in dem der WollMux (bzw. das OOo) läuft. + * Contains the default XComponentContext in which WollMux (or OOo) runs. */ private XComponentContext ctx; /** - * Verwaltet Informationen zum NoConfig mode. + * Manages information about the NoConfig mode. */ private boolean noConfig; private boolean menusCreated = false; /** - * Die WollMux-Hauptklasse ist als singleton realisiert. + * The WollMux main class is implemented as a singleton. */ private WollMuxSingleton(XComponentContext ctx) { @@ -122,16 +122,16 @@ private WollMuxSingleton(XComponentContext ctx) LOGGER.debug("CONF_VERSION: {}", getConfVersionInfo()); /* - * Datenquellen/Registriere Abschnitte verarbeiten. ACHTUNG! Dies muss vor getDatasourceJoiner() - * geschehen, da die entsprechenden Datenquellen womöglich schon für WollMux-Datenquellen - * benötigt werden. + * Process data sources/register sections. DANGER! This must be done before getDatasourceJoiner() + * done because the corresponding data sources may already be for WollMux data sources + * are required. */ registerDatasources(WollMuxFiles.getWollmuxConf(), WollMuxFiles.getDefaultContext()); - // Versuchen, den DJ zu initialisieren + // Try to initialize the DJ if (SenderService.getInstance() != null) { - // Initialisiere EventProcessor + // Initialize EventProcessor WollMuxEventHandler.getInstance().setAcceptEvents(true); // register global EventListener @@ -146,7 +146,7 @@ private WollMuxSingleton(XComponentContext ctx) LOGGER.error("", e); } - // setzen von shortcuts + // set shortcuts ConfigThingy tastenkuerzel = new ConfigThingy(""); try { @@ -164,8 +164,8 @@ private WollMuxSingleton(XComponentContext ctx) LOGGER.error("", e); } - // Setzen der in den Abschnitten OOoEinstellungen eingestellten - // Konfigurationsoptionen + // Set the settings set in the OOoSettings sections + // configuration options this.setOOoConfiguration(WollMuxFiles.getWollmuxConf().query("OOoEinstellungen")); } } @@ -179,10 +179,10 @@ private void setOOoConfiguration(ConfigThingy oooEinstellungenConf) } /** - * Diese Methode liefert die Instanz des WollMux-Singletons. Ist der WollMux noch nicht - * initialisiert, so liefert die Methode null! + * This method returns the instance of the WollMux singleton. Is not the WollMux yet + * initialized, the method returns null! * - * @return Instanz des WollMuxSingletons oder null. + * @return instance of WollMuxSingleton or null. */ public static WollMuxSingleton getInstance() { @@ -200,8 +200,8 @@ public void setMenusCreated(boolean menusCreated) } /** - * Diese Methode initialisiert das WollMuxSingleton (nur dann, wenn es noch nicht initialisiert - * wurde) + * This method initializes the WollMuxSingleton (only if it's not already initialized + * became) */ public static synchronized void initialize(XComponentContext ctx) { @@ -212,7 +212,7 @@ public static synchronized void initialize(XComponentContext ctx) } /** - * Liefert die Versionsnummer des WollMux (z.B. "5.9.2") zurück. + * Returns the version number of WollMux (e.g. "5.9.2"). */ public static String getVersion() { @@ -220,13 +220,13 @@ public static String getVersion() } /** - * Diese Methode liefert die Versionsinformation der aktuell verwendeten wollmux-Konfiguration - * (z.B. "wollmux-standard-config-2.2.1") als String zurück, wenn in der Konfiguration ein - * entsprechender CONF_VERSION-Schlüssel definiert ist, oder "unbekannt", falls der dieser - * Schlüssel nicht existiert. + * This method returns the version information of the Wollmux configuration currently in use + * (e.g. "wollmux-standard-config-2.2.1") as a string if in the configuration a + * corresponding CONF_VERSION key is defined, or "unknown" if that + * Key does not exist. * - * @return Der Versionsinformation der aktuellen WollMux-Konfiguration (falls definiert) oder - * "unbekannt", falls nicht. + * @return The version information of the current WollMux configuration (if defined) or + * "unknown" if not. */ public String getConfVersionInfo() { @@ -255,11 +255,11 @@ public XComponentContext getXComponentContext() } /** - * Verarbeitet alle Datenquellen/Registriere-Unterabschnitte von conf und registriert die - * entsprechenden Datenquellen in OOo, falls dort noch nicht vorhanden. + * Processes all data sources/register subsections of conf and registers the + * Corresponding data sources in OOo, if not already available there. * * @param context - * gibt an relativ zu was relative URLs aufgelöst werden sollen. + * indicates relative to what relative URLs should be resolved. */ private static void registerDatasources(ConfigThingy conf, URL context) { @@ -298,8 +298,8 @@ private static void registerDatasources(ConfigThingy conf, URL context) continue; } - // hierher (und damit weiter ohne continue) kommen wir nur, wenn - // ein REFRESH-Abschnitt vorhanden ist und "true" enthält. + // we only come here (and thus continue without continue) if + // there is a REFRESH section and it contains "true". } catch (NodeNotFoundException x) { continue; @@ -339,11 +339,11 @@ private static void registerDatasources(ConfigThingy conf, URL context) } /** - * Setzt die im ConfigThingy übergebenen OOoEinstellungen-Abschnitt enthaltenen Einstellungen in - * der OOo-Registry. + * Sets the settings contained in the ConfigThingy passed OOoSettings section to + * the OOo registry. * - * @param oooEinstellungenConf - * Der Knoten OOoEinstellungen eines solchen Abschnitts. + * @param oooSettingsConf + * The OOoSettings node of such a section. */ private static void setConfigurationValues(ConfigThingy oooEinstellungenConf) { @@ -366,16 +366,16 @@ private static void setConfigurationValues(ConfigThingy oooEinstellungenConf) } /** - * Konvertiert den als String übergebenen Wert value in ein Objekt vom Typ type oder liefert eine - * IllegalArgumentException, wenn die Werte nicht konvertiert werden können. + * Converts the value passed as a string into an object of type type or returns a + * IllegalArgumentException if the values ​​cannot be converted. * * @param type - * Der Typ in den konvertiert werden soll ('boolean', 'integer', 'float', 'string'). + * The type to convert to ('boolean', 'integer', 'float', 'string'). * @param value - * Der zu konvertierende Wert. - * @return Das neue Objekt vom entsprechenden Typ. + * The value to convert. + * @return The new object of the appropriate type. * @throws IllegalArgumentException - * type oder value sind ungültig oder fehlerhaft. + * type or value is invalid or contains errors. */ private static Object getObjectByType(String type, String value) { @@ -405,15 +405,15 @@ private static Object getObjectByType(String type, String value) } /** - * Setzt eine Einstellung value in der OOo-Registry, wobei die Position im Registry-Baum durch - * node und prop beschrieben wird. + * Sets a setting value in the OOo registry, taking its position in the registry tree through + * node and prop is described. * * @param node - * z.B. "/org.openoffice.Inet/Settings" + * e.g. "/org.openoffice.inet/settings" * @param prop - * z.B. "ooInetProxyType" + * e.g. "ooInetProxyType" * @param value - * der zu setzende Wert als Objekt vom entsprechenden Typ. + * the value to be set as an object of the appropriate type. */ private static void setConfigurationValue(String node, String prop, Object value) { @@ -427,10 +427,10 @@ private static void setConfigurationValue(String node, String prop, Object value } /** - * Überprüft, ob von url gelesen werden kann und wirft eine IOException, falls nicht. + * Checks if url is readable and throws an IOException if not. * * @throws IOException - * falls von url nicht gelesen werden kann. + * if url is not readable. */ public static void checkURL(URL url) throws IOException { diff --git a/core/src/main/java/de/muenchen/allg/itd51/wollmux/func/AlwaysTrueFunction.java b/core/src/main/java/de/muenchen/allg/itd51/wollmux/func/AlwaysTrueFunction.java index 32599f53f..0c82a5539 100644 --- a/core/src/main/java/de/muenchen/allg/itd51/wollmux/func/AlwaysTrueFunction.java +++ b/core/src/main/java/de/muenchen/allg/itd51/wollmux/func/AlwaysTrueFunction.java @@ -37,7 +37,7 @@ public String[] parameters() @Override public void getFunctionDialogReferences(Collection set) { - // Hat keine Referenzen auf Dialoge. + // Has no references to dialogs. } @Override diff --git a/core/src/main/java/de/muenchen/allg/itd51/wollmux/func/BindFunction.java b/core/src/main/java/de/muenchen/allg/itd51/wollmux/func/BindFunction.java index 4dca45479..d8c79c507 100644 --- a/core/src/main/java/de/muenchen/allg/itd51/wollmux/func/BindFunction.java +++ b/core/src/main/java/de/muenchen/allg/itd51/wollmux/func/BindFunction.java @@ -77,22 +77,22 @@ public BindFunction(Function func, ConfigThingy conf, FunctionLibrary funcLib, setFunc.getFunctionDialogReferences(functionDialogReferences); /* - * name wurde gebunden, wird also nicht mehr als Parameter benötigt, außer wenn eine der - * setFuncs den Parameter benötigt. In diesem Fall ist der Parameter in setFuncParams - * erfasst und wird nachher wieder zu myparams hinzugefügt. + * name has been bound so is no longer required as a parameter unless one of the + * setFuncs requires the parameter. In this case the parameter is in setFuncParams + * is captured and added back to myparams afterwards. */ myParams.remove(name); } catch (NodeNotFoundException x) { - // kann nicht passieren, hab count() getestet + // can't happen, tested count() } } /* - * Parameter der setFuncs den benötigten Parametern hinzufügen und in String[] - * konvertieren. + * Add the parameters of the setFuncs to the required parameters and in String[] + * convert. */ myParams.addAll(setFuncParams); params = myParams.toArray(new String[0]); @@ -144,16 +144,16 @@ public TranslatedValues(Values values) public boolean hasValue(String id) { /* - * ACHTUNG! Wenn die id an eine Funktion gebunden ist, dann liefern wir immer - * true, auch wenn die Funktion evtl. einen Fehler liefert. Es gäbe 2 - * alternative Verhaltensweisen: - nur true liefern, wenn - * values.hasValue(id2) == true für alle Parameter, die die Funktion - * erwartet. Nachteil: Zu strikt bei Funktionen, bei denen manche Argumente - * optional sind - die Funktion ausführen und sehen, ob sie einen Fehler - * liefert Nachteil: Die Funktion wird zu einem Zeitpunkt ausgeführt, zu dem - * dies evtl. nicht erwartet wird. Außerdem wird die Funktion einmal mehr - * ausgeführt. Bei externen Funktionen (insbes. Basic-Makros) ist dies nicht - * wünschenswert. + * DANGER! If the id is bound to a function, then we always return + * true, even if the function may return an error. there would be 2 + * alternative behaviors: - only return true if + * values.hasValue(id2) == true for all parameters of the function + * expected. Disadvantage: Too strict on functions that take some arguments + * are optional - run the function and see if it returns an error + * provides disadvantage: the function is executed at a time when + * this may not be expected. In addition, the function is once more + * executed. This is not the case with external functions (especially basic macros). + * desirable. */ if (mapParamNameToSetFunction.containsKey(id)) return true; return (values.hasValue(id)); 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 5d4ab1454..9825d02e1 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 @@ -49,12 +49,12 @@ private Dateinamensanpassungen() } /** - * Dieser Funktion kann eine durch Pipe ('|') getrennte Liste mit - * 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 - * werden. + * This function can take a pipe ('|') separated list with + * Paths/filenames are passed, of which the first entry in this list + * is returned whose path portion is actually available. + * Within a path/filename, prior to the availability check, with + * ${<name>} the value of a Java system property inserted into the filename + * become. */ public static String verfuegbarenPfadVerwenden(String fileName) { @@ -78,26 +78,26 @@ public static String verfuegbarenPfadVerwenden(String fileName) } /** - * Arbeitet wie - * {@link Dateinamensanpassungen#verfuegbarenPfadVerwenden(String)} und - * nimmt zusätzlich die folgenden LHM-spezifischen Dateinamensanpassungen - * vor: + * works like + * {@link Filename Customizations#UseavailablePath(String)} and + * additionally takes the following LHM-specific file name adjustments + * before: * - * a. Substituiert werden ß in ss ä in ae ö in oe ü in ue, Ä in Ae, Ü in ue, - * Ö in Oe + * a. ß in ss ä in ae ö in oe ü in ue, Ä in Ae, Ü in ue, + * O to Oe * - * b. Alle Sonderzeichen, Satzzeichen etc. sollen durch _ ersetzt werden, - * außer dem Punkt vor der Dateiendung (.odt) + * b. All special characters, punctuation marks etc. should be replaced by _, + * except for the dot in front of the file extension (.odt) * - * c. Damit sind im Dateinamen nur noch die Zahlen von 0-9, die Buchstaben - * von a-z und A-Z und der Unterstrich _ vorhanden + * c. This means that only the numbers from 0-9, the letters, are left in the file name + * from a-z and A-Z and the underscore _ present * - * d. Die Länge des Dateinamens wird auf maximal 240 Zeichen (inkl. Pfad) - * begrenzt; ist der ermittelte Dateiname länger, so wird er nach 240 - * Zeichen abgeschnitten (genau genommen wird nach 236 Zeichen abgeschnitten - * und dann wird die Endung .odt angehängt). + * i.e. The length of the file name is limited to a maximum of 240 characters (incl. path) + * limited; if the determined file name is longer, it becomes after 240 + * Characters truncated (actually truncated after 236 characters + * and then the extension .odt is appended). * - * Arbeitsverzeichnispfad in LibreOffice wird an Dateiname angehängt, falls spezifizierte Dateiname nicht absolut ist. + * Working directory path in LibreOffice is appended to filename if specified filename is not absolute. */ public static String lhmDateinamensanpassung(String fileName) { @@ -107,7 +107,7 @@ public static String lhmDateinamensanpassung(String fileName) { try { - // holt den Arbeitsverzeichnispfad aus LO + // gets the working directory path from LO Object ps = UnoComponent.createComponentWithContext(UnoComponent.CSS_UTIL_PATH_SETTINGS); URL dir = new URL(AnyConverter.toString(UnoProperty.getProperty(ps, UnoProperty.WORK))); f = new File(dir.getPath(), fileName); @@ -155,7 +155,7 @@ public static String lhmDateinamensanpassung(String fileName) private static String replaceProperties(final String fileName) { - // alle ${} durch evaluierten Inhalt ersetzen + // replace all ${} with evaluated content Matcher m = PROP.matcher(fileName); StringBuffer buf = new StringBuffer(); while (m.find()) diff --git a/core/src/main/java/de/muenchen/allg/itd51/wollmux/func/DivideFunction.java b/core/src/main/java/de/muenchen/allg/itd51/wollmux/func/DivideFunction.java index 0912cc9f4..a80ebd53d 100644 --- a/core/src/main/java/de/muenchen/allg/itd51/wollmux/func/DivideFunction.java +++ b/core/src/main/java/de/muenchen/allg/itd51/wollmux/func/DivideFunction.java @@ -44,7 +44,7 @@ public class DivideFunction implements Function private String[] params; /** - * Wenn divisorFunction null ist wird 1 angenommen. + * If divisorFunction is zero, 1 is assumed. */ public DivideFunction(Function dividendFunction, Function divisorFunction, int minScale, int maxScale) @@ -95,12 +95,12 @@ public String getResult(Values parameters) if (divisor == FunctionLibrary.ERROR) return FunctionLibrary.ERROR; /* - * Falls der Dezimaltrenner nicht '.' ist, ersetzte alle '.' durch etwas, das - * kein Dezimaltrenner ist, um eine NumberFormatException beim Konvertieren zu - * provozieren. Dies ist eine Vorsichtsmaßnahme, da '.' zum Beispiel in - * Deutschland alls Gruppierungszeichen verwendet wird und wir wollen nicht - * fälschlicher weise "100.000" als 100 interpretieren, wenn die eingebende - * Person 100000 gemeint hat. + * If the decimal separator is not '.' is replaced all '.' through something that + * is not a decimal separator in order to throw a NumberFormatException when converting + * provoke. This is a precaution because '.' for example in + * Germany alls grouping character is used and we don't want it + * incorrectly interpreting "100,000" as 100 when entering + * person meant 100000. */ if (decimalPoint != '.') { @@ -122,14 +122,14 @@ public String getResult(Values parameters) } /* - * NumberFormat kann leider nicht zum formatieren verwendet werden, da es nur - * die Genauigkeit von double hat (laut Java Doc). + * Unfortunately, NumberFormat cannot be used for formatting, since it is only + * has the precision of double (according to Java Doc). */ /* - * Workaround für Bug + * Workaround for bug * http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6480539 - * stripTrailingZeros() funktioniert nicht für 0. + * stripTrailingZeros() does not work for 0. */ String result; if (bigResult.compareTo(BigDecimal.ZERO) == 0) diff --git a/core/src/main/java/de/muenchen/allg/itd51/wollmux/func/ExternalFunction.java b/core/src/main/java/de/muenchen/allg/itd51/wollmux/func/ExternalFunction.java index e8cb20058..dcb2b64ad 100644 --- a/core/src/main/java/de/muenchen/allg/itd51/wollmux/func/ExternalFunction.java +++ b/core/src/main/java/de/muenchen/allg/itd51/wollmux/func/ExternalFunction.java @@ -40,8 +40,8 @@ import de.muenchen.allg.itd51.wollmux.util.L; /** - * Eine durch ein ConfigThingy beschriebene externe (d,h, nicht als ConfigThingy - * definierte) Funktion. + * An external described by a ConfigThingy (i.e. not as a ConfigThingy + * defined) function. */ public class ExternalFunction { @@ -50,29 +50,29 @@ public class ExternalFunction .getLogger(ExternalFunction.class); /** - * Falls die Funktion eine Funktion des Scripting Frameworks ist, ist hier die - * Referenz auf das Skript gespeichert. + * If the function is a Scripting Framework function, here is it + * Reference saved to the script. */ private XScript script = null; /** - * Falls die Funktion eine statische Java-Methode ist, so wird hier die Referenz - * auf diese gespeichert. + * If the function is a static Java method, then here is the reference + * stored on this. */ private Method method = null; /** - * Die Namen der Parameter, die die Funktion erwartet. + * The names of the parameters that the function expects. */ private String[] params; /** - * Erzeugt aus einem ConfigThingy (übergeben wird der EXTERN-Knoten) eine - * ExternalFunction, wobei zum Laden von Java-Klassen der selbe ClassLoader wie für - * das Laden dieser Klasse verwendet wird. + * Generates a ConfigThingy (the EXTERN node is transferred). + * ExternalFunction, using the same ClassLoader for loading Java classes as for + * loading this class is used. * * @throws ConfigurationErrorException - * falls die Spezifikation in conf fehlerhaft ist. TESTED + * if the specification in conf is wrong. TESTED */ public ExternalFunction(ConfigThingy conf) { @@ -80,11 +80,11 @@ public ExternalFunction(ConfigThingy conf) } /** - * Erzeugt aus einem ConfigThingy (übergeben wird der EXTERN-Knoten) eine - * ExternalFunction, wobei zum Laden von Java-Klassen classLoader verwendet wird. + * Generates a ConfigThingy (the EXTERN node is transferred). + * ExternalFunction, using classLoader to load Java classes. * * @throws ConfigurationErrorException - * falls die Spezifikation in conf fehlerhaft ist. TESTED + * if the specification in conf is wrong. TESTED */ public ExternalFunction(ConfigThingy conf, ClassLoader classLoader) { @@ -146,7 +146,7 @@ public ExternalFunction(ConfigThingy conf, ClassLoader classLoader) } /** - * Liefert die Namen der Parameter, die die Funktion erwartet. + * Returns the names of the parameters expected by the function. */ public String[] parameters() { @@ -154,15 +154,15 @@ public String[] parameters() } /** - * Ruft die Funktion auf mit den String-Parametern aus parameters. + * Calls the function with the string parameters from parameters. * * @param parameters - * sollte zu jedem der von {@link #parameters()} gelieferten Namen einen - * String-Wert enthalten. - * @return den Wert des Funktionsaufrufs oder null falls es ein Problem gab, das - * nicht zu einer Exception geführt hat. + * should be one for each of the names returned by {@link #parameters()} + * String value included. + * @return the value of the function call, or null if there was a problem that + * did not result in an exception. * @throws Exception - * falls ein Problem auftritt + * if there is a problem */ public Object invoke(Values parameters) throws Exception { @@ -173,15 +173,15 @@ public Object invoke(Values parameters) throws Exception } /** - * Ruft die Funktion auf mit den Argumenten args. + * Calls the function with arguments args. * * @param args - * muss für jeden der von {@link #parameters()} gelieferten Namen einen - * Wert enthalten. - * @return den Wert des Funktionsaufrufs oder null falls es ein Problem gab, das - * nicht zu einer Exception geführt hat. + * must be one for each of the names returned by {@link #parameters()} + * Value included. + * @return the value of the function call, or null if there was a problem that + * did not result in an exception. * @throws Exception - * falls ein Problem auftritt + * if there is a problem */ public Object invoke(Object[] args) throws Exception { diff --git a/core/src/main/java/de/muenchen/allg/itd51/wollmux/func/Function.java b/core/src/main/java/de/muenchen/allg/itd51/wollmux/func/Function.java index f628039d1..2bf5b3bc0 100644 --- a/core/src/main/java/de/muenchen/allg/itd51/wollmux/func/Function.java +++ b/core/src/main/java/de/muenchen/allg/itd51/wollmux/func/Function.java @@ -25,42 +25,42 @@ import java.util.Collection; /** - * Eine Funktion, die einen Wert in Abhängigkeit von Parametern berechnet. + * A function that calculates a value depending on parameters. */ public interface Function { /** - * Liefert die Namen der Parameter, die die Funktion erwartet. - * Die Reihenfolge ist undefiniert. Es kann kein Name mehrfach vorkommen. + * Returns the names of the parameters expected by the function. + * The order is undefined. No name can appear more than once. */ public String[] parameters(); /** - * Zu set werden die Namen aller Funktionsdialoge hinzugefügt, die diese - * Funktion referenziert. + * The names of all function dialogs that use this + * Function referenced. */ public void getFunctionDialogReferences(Collection set); /** - * Ruft die Funktion mit Argumenten aus parameters auf und liefert das - * Funktionsergebnis als String. Falls es sich um einen booleschen Wert - * handelt, wird der String "true" oder "false" zurückgeliefert. - * Falls während der Ausführung ein Fehler auftritt, wird möglicherweise (dies - * hängt von der Funktion ab) das String-Objekt - * {@link FunctionLibrary#ERROR} (== vergleichbar) zurückgeliefert. - * @param parameters sollte zu jedem der von {@link #parameters()} gelieferten - * Namen einen String-Wert enthalten. + * Calls the function with arguments from parameters and returns that + * Function result as a string. If it is a boolean value + * is used, the string "true" or "false" is returned. + * If an error occurs during execution, it may (this + * depends on the function) the String object + * {@link FunctionLibrary#ERROR} (== comparable) returned. + * @param parameters should match any of those returned by {@link #parameters()} + * Names contain a string value. */ public String getResult(Values parameters); /** - * Ruft die Funktion mit Argumenten aus parameters auf und liefert das - * Funktionsergebnis als boolean. Falls der Wert seiner Natur nach ein - * String ist, so wird true geliefert, falls er (ohne Berücksichtigung von - * Groß-/Kleinschreibung) der Zeichenkette "true" entspricht. - * Falls während der Ausführung ein Fehler auftritt wird false zurückgeliefert. - * @param parameters sollte zu jedem der von {@link #parameters()} gelieferten - * Namen einen String-Wert enthalten. + * Calls the function with arguments from parameters and returns that + * Function result as boolean. If the value by its nature a + * is a string, true is returned if it (disregarding + * case sensitive) matches the string "true". + * If an error occurs during execution, false is returned. + * @param parameters should match any of those returned by {@link #parameters()} + * Names contain a string value. */ public boolean getBoolean(Values parameters); diff --git a/core/src/main/java/de/muenchen/allg/itd51/wollmux/func/FunctionFactory.java b/core/src/main/java/de/muenchen/allg/itd51/wollmux/func/FunctionFactory.java index 9f1935b52..b7639b088 100644 --- a/core/src/main/java/de/muenchen/allg/itd51/wollmux/func/FunctionFactory.java +++ b/core/src/main/java/de/muenchen/allg/itd51/wollmux/func/FunctionFactory.java @@ -41,7 +41,7 @@ import de.muenchen.allg.itd51.wollmux.util.L; /** - * Erzeugt Functions aus ConfigThingys. + * Generates functions from ConfigThingys. * * @author Matthias Benkmann (D-III-ITD 5.1) */ @@ -52,7 +52,7 @@ public class FunctionFactory .getLogger(FunctionFactory.class); /** - * Eine Funktion, die immer true liefert. + * A function that always returns true. */ private static final Function myAlwaysTrueFunction = new AlwaysTrueFunction(); @@ -62,7 +62,7 @@ private FunctionFactory() } /** - * Liefert eine Funktion, die immer true liefert. + * Returns a function that always returns true. */ public static Function alwaysTrueFunction() { @@ -70,27 +70,27 @@ public static Function alwaysTrueFunction() } /** - * Erzeugt ein Function-Objekt aus den ENKELN von conf. Hat conf keine Enkel, so - * wird null geliefert. Hat conf genau einen Enkel, so wird eine Funktion - * geliefert, die diesem Enkel entspricht. Hat conf mehr als einen Enkel, so wird - * eine Funktion geliefert, die alle Enkel als Booleans auswertet und - * UND-verknüpft. + * Constructs a Function object from the GRANDSONS of conf. Does conf have no grandchildren, so + * will be delivered as zero. If conf has exactly one grandson, it becomes a function + * delivered corresponding to this grandson. If conf has more than one grandson, it will + * provided a function that evaluates all grandchildren as booleans and + * AND-linked. * * @param funcLib - * die Funktionsbibliothek anhand derer Referenzen auf Funktionen - * aufgelöst werden sollen. + * the function library based on its references to functions + * are to be resolved. * @param dialogLib - * die Dialogbibliothek anhand derer Referenzen auf Dialoge aufgelöst - * werden sollen. + * resolved the dialog library based on its references to dialogs + * should be. * @param context - * Manche Grundfunktionen (insbes. DIALOG) halten kontextabhängige Werte. - * Zur Unterscheidung der verschiedenen Instanzen dient die context Map, - * in der die verschiedenen Instanzen abgelegt werden. Wird hier null - * übergeben, dann wird eine ConfigurationErrorException geworfen, wenn - * conf eine Funktion enthält, die einen Kontext benötigt. + * Some basic functions (especially DIALOG) hold context-dependent values. + * The context map is used to distinguish between the different instances, + * in which the various instances are stored. becomes zero here + * is passed, then a ConfigurationErrorException is thrown if + * conf contains a function that needs a context. * @throws ConfigurationErrorException - * falls conf keine korrekte Funktionsbeschreibung ist oder die Funktion - * einen context benötigt aber null übergeben wurde. + * if conf is not a correct function description or the function + * requires a context but null was passed. */ public static Function parseGrandchildren(ConfigThingy conf, FunctionLibrary funcLib, DialogLibrary dialogLib, Map context) @@ -119,26 +119,26 @@ public static Function parseGrandchildren(ConfigThingy conf, } /** - * Erzeugt ein Function-Objekt aus den KINDERN von conf. Hat conf keine Kinder, so - * wird null geliefert. Hat conf genau ein Kind, so wird eine Funktion geliefert, - * die diesem Kind entspricht. Hat conf mehr als ein Kind, so wird eine Funktion - * geliefert, die alle Kinder als Booleans auswertet und UND-verknüpft. + * Constructs a Function object from the CHILDREN of conf. If conf has no children, like this + * will be delivered as zero. If conf has exactly one child, a function is returned + * corresponding to this child. If conf has more than one child, it becomes a function + * supplied, which evaluates all children as Booleans and ANDs them. * * @param funcLib - * die Funktionsbibliothek anhand derer Referenzen auf Funktionen - * aufgelöst werden sollen. + * the function library based on its references to functions + * are to be resolved. * @param dialogLib - * die Dialogbibliothek anhand derer Referenzen auf Dialoge aufgelöst - * werden sollen. + * resolved the dialog library based on its references to dialogs + * should be. * @param context - * Manche Grundfunktionen (insbes. DIALOG) halten kontextabhängige Werte. - * Zur Unterscheidung der verschiedenen Instanzen dient die context Map, - * in der die verschiedenen Instanzen abgelegt werden. Wird hier null - * übergeben, dann wird eine ConfigurationErrorException geworfen, wenn - * conf eine Funktion enthält, die einen Kontext benötigt. + * Some basic functions (especially DIALOG) hold context-dependent values. + * The context map is used to distinguish between the different instances, + * in which the various instances are stored. becomes zero here + * is passed, then a ConfigurationErrorException is thrown if + * conf contains a function that needs a context. * @throws ConfigurationErrorException - * falls conf keine korrekte Funktionsbeschreibung ist oder die Funktion - * einen context benötigt aber null übergeben wurde. + * if conf is not a correct function description or the function + * requires a context but null was passed. */ public static Function parseChildren(ConfigThingy conf, FunctionLibrary funcLib, DialogLibrary dialogLib, Map context) @@ -163,24 +163,24 @@ public static Function parseChildren(ConfigThingy conf, FunctionLibrary funcLib, } /** - * Liefert ein Function Objekt zu conf, wobei conf selbst schon ein erlaubter - * Knoten der Funktionsbeschreibung (z,B, "AND" oder "MATCH") sein muss. + * Returns a Function object to conf, where conf itself is a legal + * Must be a node of the function description (e.g., "AND" or "MATCH"). * * @param funcLib - * die Funktionsbibliothek anhand derer Referenzen auf Funktionen - * aufgelöst werden sollen. + * the function library based on its references to functions + * are to be resolved. * @param dialogLib - * die Dialogbibliothek anhand derer Referenzen auf Dialoge aufgelöst - * werden sollen. + * resolved the dialog library based on its references to dialogs + * should be. * @param context - * Manche Grundfunktionen (insbes. DIALOG) halten kontextabhängige Werte. - * Zur Unterscheidung der verschiedenen Instanzen dient die context Map, - * in der die verschiedenen Instanzen abgelegt werden. Wird hier null - * übergeben, dann wird eine ConfigurationErrorException geworfen, wenn - * conf eine Funktion enthält, die einen Kontext benötigt. + * Some basic functions (especially DIALOG) hold context-dependent values. + * The context map is used to distinguish between the different instances, + * in which the various instances are stored. becomes zero here + * is passed, then a ConfigurationErrorException is thrown if + * conf contains a function that needs a context. * @throws ConfigurationErrorException - * falls conf keine korrekte Funktionsbeschreibung ist oder die Funktion - * einen context benötigt aber null übergeben wurde. + * if conf is not a correct function description or the function + * requires a context but null was passed. */ public static Function parse(ConfigThingy conf, FunctionLibrary funcLib, DialogLibrary dialogLib, Map context) @@ -326,8 +326,8 @@ else if (name.equals("ISERRORSTRING")) } /** - * Liefert "Text an der Fehlerstelle: " + die ersten 100 Zeichen der - * Stringdarstellung von conf + * Returns "Text at the error location: " + the first 100 characters of the + * String representation of conf */ private static String outputErrorPosition(ConfigThingy conf) { @@ -355,9 +355,9 @@ private static Function parseBIND(ConfigThingy conf, FunctionLibrary funcLib, throw new ConfigurationErrorException(L.m("For functions of type \"BIND\", " + "\"FUNCTION\" must not be followed by a list, but only by a function name or a function.")); - funcConf = funcConf.iterator().next(); // | - ... + funcConf = funcConf.iterator().next(); // | - ... - if (funcConf.count() == 0) // d.h. es wurde nur ein angegeben + if (funcConf.count() == 0) // i.e. only a was specified { String funcName = funcConf.toString(); @@ -366,7 +366,7 @@ private static Function parseBIND(ConfigThingy conf, FunctionLibrary funcLib, throw new ConfigurationErrorException(L.m( "Function \"{0}\" is used before it was even defined", funcName)); } - else // d.h. es wurde eine ganze Funktion angegeben + else // i.e. an entire function was specified { func = parse(funcConf, funcLib, dialogLib, context); } @@ -392,7 +392,7 @@ private static Function parseDIALOG(ConfigThingy conf, DialogLibrary dialogLib, } catch (NodeNotFoundException x) { - /* Kann nicht sein, weil count() getestet */ + /* Can't be because count() tested */ dialogName = null; dataName = null; } @@ -438,8 +438,8 @@ private static Function parseIF(ConfigThingy conf, FunctionLibrary funcLib, Iterator iter = conf.iterator(); ConfigThingy condition; do - { // oben wurde überprüft, dass es genau einen Knoten gibt, der nicht ELSE oder - // THEN ist + { // above it was checked that there is exactly one node that is not ELSE or + // THEN is condition = iter.next(); } while (condition.getName().equals("THEN") || condition.getName().equals("ELSE")); @@ -679,9 +679,9 @@ else if (name.equals("MAX")) { if (byFun == null) { - // Division durch 1 nichts kaputt macht - maxScale = 1024; // eigentlich sollte hier Integer.MAX_SIZE stehen, aber - // auch bei Division durch 1 reserviert die BigDecimal-Klasse Speicher entsprechend der maximalen Stelligkeit + // Division by 1 doesn't break anything + maxScale = 1024; // Integer.MAX_SIZE should actually be here, but + // Even when dividing by 1, the BigDecimal class reserves memory according to the maximum arity } else { @@ -702,17 +702,17 @@ else if (name.equals("MAX")) } /** - * Parst die "Funktionen" Abschnitte aus conf und liefert eine entsprechende - * FunctionLibrary. + * Parses the "Functions" sections from conf and returns an appropriate one + * Function Library. * * @param context - * der Kontext in dem die Funktionsdefinitionen ausgewertet werden sollen - * (insbesondere DIALOG-Funktionen). ACHTUNG! Hier werden Werte - * gespeichert, es ist nicht nur ein Schlüssel. + * the context in which the function definitions are to be evaluated + * (especially DIALOG functions). DANGER! Here are values + * saved, it's not just a key. * * @param baselib - * falls nicht-null wird diese als Fallback verlinkt, um Funktionen zu - * liefern, die anderweitig nicht gefunden werden. + * if non-null this is linked as a fallback to functions + * deliver that cannot be found elsewhere. */ public static FunctionLibrary parseFunctions(ConfigThingy conf, DialogLibrary dialogLib, Map context, FunctionLibrary baselib) @@ -722,13 +722,13 @@ public static FunctionLibrary parseFunctions(ConfigThingy conf, } /** - * Parst die Inhalte von conf,query(section) als Funktionsdefinitionen und fügt sie - * funcs hinzu. + * Parses and inserts the contents of conf,query(section) as function definitions + * added funcs. * * @param context - * der Kontext in dem die Funktionsdefinitionen ausgewertet werden sollen - * (insbesondere DIALOG-Funktionen). ACHTUNG! Hier werden Werte - * gespeichert, es ist nicht nur ein Schlüssel. + * the context in which the function definitions are to be evaluated + * (especially DIALOG functions). DANGER! Here are values + * saved, it's not just a key. * * @return funcs */ diff --git a/core/src/main/java/de/muenchen/allg/itd51/wollmux/func/FunctionLibrary.java b/core/src/main/java/de/muenchen/allg/itd51/wollmux/func/FunctionLibrary.java index 0f870378f..309ef47e8 100644 --- a/core/src/main/java/de/muenchen/allg/itd51/wollmux/func/FunctionLibrary.java +++ b/core/src/main/java/de/muenchen/allg/itd51/wollmux/func/FunctionLibrary.java @@ -32,7 +32,7 @@ import de.muenchen.allg.itd51.wollmux.util.L; /** - * Eine Bibliothek von benannten Functions + * A library of named functions * * @author Matthias Benkmann (D-III-ITD 5.1) */ @@ -45,7 +45,7 @@ public class FunctionLibrary implements Iterable private FunctionLibrary baselib; /** - * Erzeugt eine leere Funktionsbibliothek. + * Creates an empty function library. */ public FunctionLibrary() { @@ -53,9 +53,9 @@ public FunctionLibrary() } /** - * Erzeugt eine Funktionsbibliothek, die baselib referenziert (nicht kopiert!). - * baselib wird immer dann befragt, wenn die Funktionsbibliothek selbst keine - * Funktion des entsprechenden Namens enthält. baselib darf null sein. + * Generates a function library that references baselib (not copied!). + * baselib is always queried if the function library itself does not + * Contains function of the corresponding name. baselib may be null. * * @param baselib */ @@ -65,15 +65,15 @@ public FunctionLibrary(FunctionLibrary baselib) } /** - * Erzeugt eine Funktionsbibliothek, die baselib referenziert (nicht kopiert!). - * baselib wird immer dann befragt, wenn die Funktionsbibliothek selbst keine - * Funktion des entsprechenden Namens enthält. baselib darf null sein. + * Generates a function library that references baselib (not copied!). + * baselib is always queried if the function library itself does not + * Contains function of the corresponding name. baselib may be null. * * @param ordered - * Falls true liefert der Iterator dieser Funktionsbibliothek die - * Funktionen in Einfügereihenfolge. Ansonsten werden sie in unbestimmter - * Reihenfolge geliefert. Es sollte offensichtlich sein, dass - * ordered==true mit einem erhöhten Overhead verbunden ist. + * If true, the iterator of this function library returns the + * Features in insertion order. Otherwise they will be indefinite + * Order delivered. It should be obvious that + * ordered==true comes with increased overhead. */ public FunctionLibrary(FunctionLibrary baselib, boolean ordered) { @@ -85,8 +85,8 @@ public FunctionLibrary(FunctionLibrary baselib, boolean ordered) } /** - * Fügt func dieser Funktionsbibliothek unter dem Namen funcName hinzu. Eine - * bereits existierende Funktion mit diesem Namen wird dabei ersetzt. + * Adds func to this function library under the name funcName. One + * already existing function with this name will be replaced. */ public void add(String funcName, Function func) { @@ -97,10 +97,10 @@ public void add(String funcName, Function func) } /** - * Liefert die Function namens funcName zurück oder null, falls keine Funktion mit - * diesem Namen bekannt ist. Wurde die Funktionsbibliothek mit einer Referenz auf - * eine andere Funktionsbibliothek initialisiert, so wird diese befragt, falls die - * Funktionsbibliothek selbst keine Funktion des entsprechenden Namens kennt. + * Returns the function named funcName or null if no function is included + * known by that name. Was the function library with a reference to + * initializes another function library, it will be queried if the + * Function library itself does not know a function of the corresponding name. */ public Function get(String funcName) { @@ -112,15 +112,15 @@ public Function get(String funcName) } /** - * Versucht, alle Funktionen namens funcName aus dieser und evtl, verketteter - * Funktionsbibliotheken zu entfernen. + * Tried all functions named funcName from this and possibly chained + * Remove function libraries. * - * @return true, falls nach Ausführung des Befehls {@link #hasFunction(String)} für - * funcName false zurückliefert, false sonst. D.h. true wird geliefert, - * wenn alle Funktionen entfernt werden konnten. Falls false - * zurückgeliefert wird, wurden evtl. manche, aber definitiv nicht alle - * Funktionen entfernt. Falls von vorneherein keine Funktion funcName - * vorhanden war, wird auch true geliefert. + * @return true if after executing the {@link #hasFunction(String)} command for + * funcName returns false, otherwise false. I.e. true is returned, + * if all functions could be removed. If false + * is returned, some may have been, but definitely not all + * Features removed. If no function funcName + * was present, true is also returned. */ public boolean remove(String funcName) { @@ -132,7 +132,7 @@ public boolean remove(String funcName) } /** - * Liefert true wenn diese Funktionsbibliothek eine Funktion namens funcName kennt. + * Returns true if this function library knows a function named funcName. */ public boolean hasFunction(String funcName) { @@ -146,8 +146,8 @@ public boolean hasFunction(String funcName) } /** - * Liefert die Namen aller Funktionen, die über diese Funktionsbibliothek verfügbar - * sind. + * Returns the names of all functions available through this function library + * are. */ public Set getFunctionNames() { diff --git a/core/src/main/java/de/muenchen/allg/itd51/wollmux/func/MultiFunction.java b/core/src/main/java/de/muenchen/allg/itd51/wollmux/func/MultiFunction.java index 2e66d5b4b..70bebd080 100644 --- a/core/src/main/java/de/muenchen/allg/itd51/wollmux/func/MultiFunction.java +++ b/core/src/main/java/de/muenchen/allg/itd51/wollmux/func/MultiFunction.java @@ -62,13 +62,13 @@ public MultiFunction(ConfigThingy conf, FunctionLibrary funcLib, } /** - * Liefert true, wenn conf von handleParam bereits vollständig behandelt wurde - * und nicht mehr als Subfunktion erfasst werden soll. Diese Funktion wird von - * Unterklassen überschrieben, um spezielle Parameter zu behandeln. ACHTUNG! Wird - * diese Methode überschrieben, so sind normalerweise auch - * {@link #getAdditionalParams()} und - * {@link #getFunctionDialogReferences(Collection)} zu überschreiben, um die - * zusätzlichen Funktionen aus dem behandelten Parameter zu behandeln. + * Returns true if conf has already been fully handled by handleParam + * and should no longer be recorded as a subfunction. This function is provided by + * Overridden subclasses to handle special parameters. DANGER! Becomes + * overridden this method, so are normally too + * {@link #getAdditionalParams()} and + * Override {@link #getFunctionDialogReferences(Collection)} to get the + * Handle additional functions from the handled parameters. */ @SuppressWarnings("squid:S1172") protected boolean handleParam(ConfigThingy conf, FunctionLibrary funcLib, @@ -78,9 +78,9 @@ protected boolean handleParam(ConfigThingy conf, FunctionLibrary funcLib, } /** - * Liefert die Namen der Parameter der zusätzlichen Funktionen, die von + * Returns the names of the parameters of the additional functions provided by * {@link #handleParam(ConfigThingy, FunctionLibrary, DialogLibrary, Map)} - * geparst wurden oder null, falls es keine gibt. + * have been parsed, or null if there are none. */ protected String[] getAdditionalParams() { @@ -96,13 +96,13 @@ private void init(Collection subFunction) { this.subFunction = subFunction; - // Ein Set wäre performanter, aber so wird die Reihenfolge beibehalten. Evtl. - // macht es Sinn, auch die anderen Function-Klassen, die im Moment Sets - // verwenden auf das Konstrukt mit Liste und contains()-Test umzustellen und - // dadurch eine wohldefinierte Reihenfolge zu erreichen. Derzeit ist der Bedarf - // dafür aber nicht gegeben, insbes. da insertFunctionValue umgeschrieben - // werden soll und der FM4000 bereits umgeschrieben wurde um nicht von der - // Reihenfolge abzuhängen. + // A set would be more performant, but this way the order is preserved. Possibly. + // Does it make sense to include the other Function classes that are currently Sets + // use switch to construct with list and contains() test and + // thereby achieving a well-defined order. Currently the need + // but not given for this, especially since insertFunctionValue was rewritten + // should be and the FM4000 has already been rewritten so as not to be affected by the + // Depend order. ArrayList deps = new ArrayList<>(); for (Function f : subFunction) { diff --git a/core/src/main/java/de/muenchen/allg/itd51/wollmux/func/NumberCompareFunction.java b/core/src/main/java/de/muenchen/allg/itd51/wollmux/func/NumberCompareFunction.java index 0d71f2b2a..eae2a21c4 100644 --- a/core/src/main/java/de/muenchen/allg/itd51/wollmux/func/NumberCompareFunction.java +++ b/core/src/main/java/de/muenchen/allg/itd51/wollmux/func/NumberCompareFunction.java @@ -54,24 +54,24 @@ public class NumberCompareFunction extends NumberFunction Function marginFun; /** - * Die Unterfunktionen von conf werden als BigDecimals ausgewertet und jeweils - * mit dem Ergebnis der ersten Funktion verglichen via compareTo, wobei falls - * MARGIN angegeben ist, dessen Abstand <= abs(MARGIN) ist als gleich angesehen - * wird (entspricht compareTo Ergebnis 0). cmp1 und cmp2 sind Abbruchergebnisse - * dieses Vergleichs. Sobald ein compareTo cmp1 oder cmp2 liefert bricht die - * Berechnung ab und es wird das Ergebnis "false" geliefert. Falls ein compareTo - * +1 liefert und ein späteres compareTo -1, so wird abgebrochen und als Ergebnis - * "0" geliefert. Analog wenn ein compareTo -1 liefert und eine späteres +1. - * Falls result nicht null ist, so wird dieser String als Ergebnis geliefert, - * wenn nicht wie oben beschrieben mit "false" oder "0" abgebrochen wurde. Falls - * result null ist, so wird falls alle compareTos 0 geliefert haben "true" - * geliefert. Falls mindestens ein compareTo -1 geliefert hat wird "-1" - * zurückgeliefert. Falls mindestens ein compareTo +1 geliefert hat wird "1" - * geliefert. Der Fall, dass ein compareTo -1 und ein anderer +1 geliefert hat - * wird wie bereits oben beschrieben schon früher abgefangen. - * - * @throws ConfigurationErrorException - * falls nicht mindestens 2 Unterfunktionen in conf enthalten sind. + * The subfunctions of conf are evaluated as BigDecimals and respectively + * compared with the result of the first function via compareTo, where if + * MARGIN is specified, whose distance <= abs(MARGIN) is considered equal + * becomes (equivalent to compareTo result 0). cmp1 and cmp2 are cancellation results + * of this comparison. As soon as a compareTo returns cmp1 or cmp2, the breaks + * Calculation and the result "false" is returned. If a compareTo + * +1 returns and a later compareTo -1, so is aborted and as a result + * "0" delivered. Similarly if a compareTo returns -1 and a later +1. + * If result is not null, this string is returned as the result, + * if not aborted with "false" or "0" as described above. If + * result is zero, so if all compareTos returned 0, it becomes "true" + * delivered. If at least one compareTo returned -1, it becomes "-1" + * returned. If at least one compareTo returned +1, it becomes "1" + * delivered. The case that one compareTo returned -1 and another +1 + * is intercepted earlier as described above. + * + * @throws ConfigurationErrorException + * unless at least 2 subfunctions are included in conf. */ public NumberCompareFunction(int cmp1, int cmp2, String result, ConfigThingy conf, FunctionLibrary funcLib, DialogLibrary dialogLib, diff --git a/core/src/main/java/de/muenchen/allg/itd51/wollmux/func/NumberFunction.java b/core/src/main/java/de/muenchen/allg/itd51/wollmux/func/NumberFunction.java index 8448599c0..6de902525 100644 --- a/core/src/main/java/de/muenchen/allg/itd51/wollmux/func/NumberFunction.java +++ b/core/src/main/java/de/muenchen/allg/itd51/wollmux/func/NumberFunction.java @@ -50,32 +50,32 @@ protected NumberFunction(ConfigThingy conf, FunctionLibrary funcLib, } /** - * Startet eine neue Auswertung der Funktion für Parameter parameters. Im Falle - * einer Summen-Funktion würde dies den Summenzähler mit 0 initialisieren. + * Starts a new evaluation of the function for parameters parameters. In the event of + * a sum function, this would initialize the sum counter to 0. * - * @return Falls zu diesem Zeitpunkt bereits ein Ergebnis bestimmt werden kann - * (z.B. Function.ERROR, wenn ein benötigter Parameter nicht in - * parameters übergeben wurde), so wird dieses zurückgeliefert, ansonsten + * @return If a result can already be determined at this point + * (e.g. Function.ERROR if a required parameter is not in + * parameters was passed), this is returned, otherwise * null. */ protected abstract String initComputation(Values parameters); /** - * Fügt den Wert num der aktuellen Berechnung hinzu. Im Falle einer - * Summen-Funktion würde er auf den Summen-Zähler addiert. Darf eine Exception - * werfen. In diesem Fall wird die Funktion Function.ERROR zurückliefern. + * Adds the value num to the current calculation. In case of a + * Sum function it would be added to the sum counter. May throw an exception + * throw. In this case the function will return Function.ERROR. * - * @return Falls zu diesem Zeitpunkt bereits ein Ergebnis bestimmt werden kann - * (z.B. im Falle einer Vergleichsfunktion, die Kurzschlussauswertung - * macht), so wird dieses zurückgeliefert, ansonsten null. + * @return If a result can already be determined at this point + * (e.g. in the case of a comparison function, the short-circuit evaluation + * does), this is returned, otherwise null. */ protected abstract String addToComputation(BigDecimal num); /** - * Wird aufgerufen, nachdem der letzte Wert mittels addComputation() verarbeitet - * wurde, wenn jeder addComputation()-Aufruf null geliefert hat. + * Called after the last value is processed using addComputation() + * became if every addComputation() call returned null. * - * @return das Endergebnis der Berechnung. null ist NICHT erlaubt. + * @return the end result of the calculation. null is NOT allowed. */ protected abstract String computationResult(); @@ -107,12 +107,12 @@ public String getResult(Values parameters) protected BigDecimal makeBigDecimal(String str) { /* - * Falls der Dezimaltrenner nicht '.' ist, ersetzte alle '.' durch etwas, das - * kein Dezimaltrenner ist, um eine NumberFormatException beim Konvertieren zu - * provozieren. Dies ist eine Vorsichtsmaßnahme, da '.' zum Beispiel in - * Deutschland alls Gruppierungszeichen verwendet wird und wir wollen nicht - * fälschlicher weise "100.000" als 100 interpretieren, wenn die eingebende - * Person 100000 gemeint hat. + * If the decimal separator is not '.' is replaced all '.' through something that + * is not a decimal separator in order to throw a NumberFormatException when converting + * provoke. This is a precaution because '.' for example in + * Germany alls grouping character is used and we don't want it + * incorrectly interpreting "100,000" as 100 when entering + * person meant 100000. */ if (decimalPoint != '.') str = str.replace('.', 'ß'); @@ -120,14 +120,14 @@ protected BigDecimal makeBigDecimal(String str) } /** - * Liefert eine Stringrepräsentation von num + * Returns a string representation of num */ protected String formatBigDecimal(BigDecimal num) { /* - * Workaround für Bug + * Workaround for bug * http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6480539 - * stripTrailingZeros() funktioniert nicht für 0. + * stripTrailingZeros() does not work for 0. */ String result; if (num.compareTo(BigDecimal.ZERO) == 0) diff --git a/core/src/main/java/de/muenchen/allg/itd51/wollmux/func/SignFunction.java b/core/src/main/java/de/muenchen/allg/itd51/wollmux/func/SignFunction.java index f798c2310..92683c224 100644 --- a/core/src/main/java/de/muenchen/allg/itd51/wollmux/func/SignFunction.java +++ b/core/src/main/java/de/muenchen/allg/itd51/wollmux/func/SignFunction.java @@ -38,7 +38,7 @@ public SignFunction(ConfigThingy conf, FunctionLibrary funcLib, @Override protected String computationResult() { - // signum() liefert int, deswegen hier nur ""+ und nicht formatBigDecimal() + // signum() returns int, so here only ""+ and not formatBigDecimal() return "" + numericComputationResult().signum(); } } diff --git a/core/src/main/java/de/muenchen/allg/itd51/wollmux/func/Value.java b/core/src/main/java/de/muenchen/allg/itd51/wollmux/func/Value.java index 9e425bf41..1e4c66188 100644 --- a/core/src/main/java/de/muenchen/allg/itd51/wollmux/func/Value.java +++ b/core/src/main/java/de/muenchen/allg/itd51/wollmux/func/Value.java @@ -23,21 +23,21 @@ package de.muenchen.allg.itd51.wollmux.func; /** - * Ein Wert, der als verschiedene Datentypen abrufbar ist + * A value that is available as different data types * * @author Matthias Benkmann (D-III-ITD 5.1) */ public interface Value { /** - * Der aktuelle Wert als String. Falls es sich um einen booleschen Wert handelt, - * wird der String "true" oder "false" zurückgeliefert. + * The current value as a string. If it is a boolean value, + * the string "true" or "false" is returned. */ public String getString(); /** - * Der aktuelle Wert als boolean. Falls der Wert seiner Natur nach ein String ist, - * so ist das Ergebnis abhängig von der konkreten Implementierung. + * The current value as boolean. If the value is a string by nature, + * so the result depends on the specific implementation. */ public boolean getBoolean(); } diff --git a/core/src/main/java/de/muenchen/allg/itd51/wollmux/func/ValueFunction.java b/core/src/main/java/de/muenchen/allg/itd51/wollmux/func/ValueFunction.java index 734ac4bae..ac78c04aa 100644 --- a/core/src/main/java/de/muenchen/allg/itd51/wollmux/func/ValueFunction.java +++ b/core/src/main/java/de/muenchen/allg/itd51/wollmux/func/ValueFunction.java @@ -42,7 +42,7 @@ public String[] parameters() @Override public void getFunctionDialogReferences(Collection set) { - // Value Function hat keine Referenzen auf Dialoge. + // Value Function has no references to dialogs. } @Override diff --git a/core/src/main/java/de/muenchen/allg/itd51/wollmux/func/Values.java b/core/src/main/java/de/muenchen/allg/itd51/wollmux/func/Values.java index 186d24e28..14976df45 100644 --- a/core/src/main/java/de/muenchen/allg/itd51/wollmux/func/Values.java +++ b/core/src/main/java/de/muenchen/allg/itd51/wollmux/func/Values.java @@ -28,37 +28,37 @@ import java.util.Map.Entry; /** - * Eine Menge benannter {@link de.muenchen.allg.itd51.wollmux.func.Value}s. + * A lot of named {@link de.muenchen.allg.itd51.wollmux.func.Value}s. * * @author Matthias Benkmann (D-III-ITD 5.1) */ public interface Values { /** - * Liefert true genau dann wenn ein Wert mit der ID id vorhanden ist (ACHTUNG, bei - * mit BIND zusammengesetzten Funktionen bekommt die gebundene Funktion unter - * Umständen hier keine akkurate Antwort). + * Returns true if and only if a value with the ID id is present (ATTENTION, with + * composite functions with BIND gets the bound function underneath + * Circumstances not an accurate answer here). */ public boolean hasValue(String id); /** - * Der aktuelle Wert des mit id identifizierten Values als String. Falls es sich um - * einen booleschen Wert handelt, wird der String "true" oder "false" - * zurückgeliefert. Falls kein Wert mit dieser id vorhanden ist wird der leere - * String geliefert. + * The current value of the value identified with id as a string. If it's about + * is a boolean value, the string will be "true" or "false" + * returned. If there is no value with this id, it will be empty + * String supplied. */ public String getString(String id); /** - * Der aktuelle Wert des mit id identifizierten Values als boolean. Falls der Wert - * seiner Natur nach ein String ist, so ist das Ergebnis implementierungsabhängig. - * Falls kein Wert mit dieser id vorhanden ist wird false geliefert. + * The current value of the value identified by id as a boolean. If the value + * is a string by nature, the result is implementation dependent. + * If there is no value with this id, false is returned. */ public boolean getBoolean(String id); /** - * Dummy-Klasse, die ein Values-Interface zur Verfügung stellt, das keine Werte - * enthält. + * Dummy class that exposes a Values ​​interface that doesn't have values + * contains. */ public static class None implements Values { @@ -82,7 +82,7 @@ public boolean getBoolean(String id) } /** - * Simple Implementierung des Values-Interfaces in der Art einer Map. + * Simple implementation of the values ​​interface in the style of a map. * * @author Matthias Benkmann (D-III-ITD 5.1) */ @@ -101,8 +101,8 @@ public SimpleMap(SimpleMap origin) } /** - * Fügt den Wert value hinzu, identifiziert mit id. Ein bereits vorhandener Wert - * wird ersetzt. Falls value==null, so wird der Aufruf behandelt wie + * Adds the value value identified with id. A value that already exists + * is replaced. If value==null, then the call is treated as * {@link #remove(String)}. */ public void put(String id, String value) @@ -114,7 +114,7 @@ public void put(String id, String value) } /** - * Entfernt den Wert, der durch id identifiziert wird (falls vorhanden). + * Removes the value identified by id (if any). */ public void remove(String id) { @@ -122,10 +122,10 @@ public void remove(String id) } /** - * Fügt alle Werte aus der anderen SimpleMap dieser hinzu. + * Adds all values ​​from the other SimpleMap to this one. * * @param map - * Die andere SimpleMap, aus der die Werte übernommen werden sollen. + * The other SimpleMap to take the values ​​from. */ public void putAll(SimpleMap map) { diff --git a/idl/.classpath b/idl/.classpath index 725c6ed36..678825e49 100644 --- a/idl/.classpath +++ b/idl/.classpath @@ -23,11 +23,6 @@ - - - - - diff --git a/oxt/.classpath b/oxt/.classpath index 507ab6179..15f02af33 100644 --- a/oxt/.classpath +++ b/oxt/.classpath @@ -46,16 +46,5 @@ - - - - - - - - - - - diff --git a/oxt/.settings/org.eclipse.jdt.core.prefs b/oxt/.settings/org.eclipse.jdt.core.prefs index c4a28d6f6..37be9478c 100644 --- a/oxt/.settings/org.eclipse.jdt.core.prefs +++ b/oxt/.settings/org.eclipse.jdt.core.prefs @@ -1,8 +1,15 @@ eclipse.preferences.version=1 +org.eclipse.jdt.core.compiler.annotation.nonnull=javax.annotation.Nonnull +org.eclipse.jdt.core.compiler.annotation.nullable=javax.annotation.Nullable +org.eclipse.jdt.core.compiler.annotation.nullanalysis=enabled org.eclipse.jdt.core.compiler.codegen.targetPlatform=11 org.eclipse.jdt.core.compiler.compliance=11 org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled org.eclipse.jdt.core.compiler.problem.forbiddenReference=warning +org.eclipse.jdt.core.compiler.problem.nullAnnotationInferenceConflict=warning +org.eclipse.jdt.core.compiler.problem.nullReference=warning +org.eclipse.jdt.core.compiler.problem.nullSpecViolation=warning +org.eclipse.jdt.core.compiler.problem.potentialNullReference=warning org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=ignore org.eclipse.jdt.core.compiler.processAnnotations=enabled org.eclipse.jdt.core.compiler.release=enabled