From f508ff450c2f28affad1f39cdc3403a0cfb6ef9d Mon Sep 17 00:00:00 2001 From: mattcasters Date: Fri, 31 Jul 2026 22:28:30 +0200 Subject: [PATCH 1/2] issue #2683 : Naming Scheme metadata and TableView apply toolbar Add a Naming Scheme metadata type with a pure naming engine and a TableView toolbar action to normalize Hop field names (spaces to underscores/dashes, camelCase, PascalCase, etc.). Types for database tables/columns and files/folders are reserved for follow-up surfaces. --- assemblies/debug/pom.xml | 6 + assemblies/plugins/pom.xml | 6 + .../metadata/api/HopMetadataPropertyType.java | 3 + .../naming-scheme-csv-input-after.png | Bin 0 -> 96500 bytes .../naming-scheme-csv-input-before.png | Bin 0 -> 97812 bytes .../metadata-types/naming-scheme-editor.png | Bin 0 -> 81159 bytes docs/hop-user-manual/modules/ROOT/nav.adoc | 1 + .../ROOT/pages/metadata-types/index.adoc | 1 + .../pages/metadata-types/naming-scheme.adoc | 92 ++++ plugins/misc/naming/pom.xml | 32 ++ plugins/misc/naming/src/assembly/assembly.xml | 35 ++ .../hop/naming/engine/NamingEngine.java | 218 ++++++++++ .../gui/TableViewNamingToolbarButton.java | 161 +++++++ .../hop/naming/metadata/NamingCaseStyle.java | 81 ++++ .../hop/naming/metadata/NamingScheme.java | 93 ++++ .../naming/metadata/NamingSchemeEditor.java | 408 ++++++++++++++++++ .../hop/naming/metadata/NamingSchemeType.java | 92 ++++ .../naming/metadata/NamingWordSeparator.java | 85 ++++ .../misc/naming/src/main/resources/naming.svg | 6 + .../gui/messages/messages_en_US.properties | 28 ++ .../messages/messages_en_US.properties | 51 +++ .../hop/naming/engine/NamingEngineTest.java | 131 ++++++ plugins/misc/pom.xml | 1 + .../apache/hop/ui/core/widget/TableView.java | 53 +++ 24 files changed, 1584 insertions(+) create mode 100644 docs/hop-user-manual/modules/ROOT/assets/images/metadata-types/naming-scheme-csv-input-after.png create mode 100644 docs/hop-user-manual/modules/ROOT/assets/images/metadata-types/naming-scheme-csv-input-before.png create mode 100644 docs/hop-user-manual/modules/ROOT/assets/images/metadata-types/naming-scheme-editor.png create mode 100644 docs/hop-user-manual/modules/ROOT/pages/metadata-types/naming-scheme.adoc create mode 100644 plugins/misc/naming/pom.xml create mode 100644 plugins/misc/naming/src/assembly/assembly.xml create mode 100644 plugins/misc/naming/src/main/java/org/apache/hop/naming/engine/NamingEngine.java create mode 100644 plugins/misc/naming/src/main/java/org/apache/hop/naming/gui/TableViewNamingToolbarButton.java create mode 100644 plugins/misc/naming/src/main/java/org/apache/hop/naming/metadata/NamingCaseStyle.java create mode 100644 plugins/misc/naming/src/main/java/org/apache/hop/naming/metadata/NamingScheme.java create mode 100644 plugins/misc/naming/src/main/java/org/apache/hop/naming/metadata/NamingSchemeEditor.java create mode 100644 plugins/misc/naming/src/main/java/org/apache/hop/naming/metadata/NamingSchemeType.java create mode 100644 plugins/misc/naming/src/main/java/org/apache/hop/naming/metadata/NamingWordSeparator.java create mode 100644 plugins/misc/naming/src/main/resources/naming.svg create mode 100644 plugins/misc/naming/src/main/resources/org/apache/hop/naming/gui/messages/messages_en_US.properties create mode 100644 plugins/misc/naming/src/main/resources/org/apache/hop/naming/metadata/messages/messages_en_US.properties create mode 100644 plugins/misc/naming/src/test/java/org/apache/hop/naming/engine/NamingEngineTest.java diff --git a/assemblies/debug/pom.xml b/assemblies/debug/pom.xml index f734be09fa1..74c5893cb3e 100644 --- a/assemblies/debug/pom.xml +++ b/assemblies/debug/pom.xml @@ -373,6 +373,12 @@ ${project.version} provided + + org.apache.hop + hop-misc-naming + ${project.version} + provided + org.apache.hop hop-misc-static-schema diff --git a/assemblies/plugins/pom.xml b/assemblies/plugins/pom.xml index 5198265e75f..33a0c0deec3 100644 --- a/assemblies/plugins/pom.xml +++ b/assemblies/plugins/pom.xml @@ -678,6 +678,12 @@ ${project.version} zip + + org.apache.hop + hop-misc-naming + ${project.version} + zip + org.apache.hop hop-misc-static-schema diff --git a/core/src/main/java/org/apache/hop/metadata/api/HopMetadataPropertyType.java b/core/src/main/java/org/apache/hop/metadata/api/HopMetadataPropertyType.java index e9936a0e6cc..7b84c8561b5 100644 --- a/core/src/main/java/org/apache/hop/metadata/api/HopMetadataPropertyType.java +++ b/core/src/main/java/org/apache/hop/metadata/api/HopMetadataPropertyType.java @@ -95,6 +95,9 @@ public enum HopMetadataPropertyType { // STATIC SCHEMA STATIC_SCHEMA_DEFINITION, + // NAMING + NAMING_SCHEME, + // VFS VFS_GCP_CONNECTION, VFS_AZURE_CONNECTION, diff --git a/docs/hop-user-manual/modules/ROOT/assets/images/metadata-types/naming-scheme-csv-input-after.png b/docs/hop-user-manual/modules/ROOT/assets/images/metadata-types/naming-scheme-csv-input-after.png new file mode 100644 index 0000000000000000000000000000000000000000..a5fbdbc0cc584b840e0c1f63a6513155401134a3 GIT binary patch literal 96500 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

^f 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� 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 literal 0 HcmV?d00001 diff --git a/docs/hop-user-manual/modules/ROOT/nav.adoc b/docs/hop-user-manual/modules/ROOT/nav.adoc index dd0909eb259..3978c3123fe 100644 --- a/docs/hop-user-manual/modules/ROOT/nav.adoc +++ b/docs/hop-user-manual/modules/ROOT/nav.adoc @@ -488,6 +488,7 @@ under the License. *** xref:metadata-types/variable-resolver/openbao-variable-resolver.adoc[OpenBAO variable resolver] *** xref:metadata-types/variable-resolver/pipeline-variable-resolver.adoc[Pipeline variable resolver] ** xref:metadata-types/static-schema-definition.adoc[Static Schema Definition] +** xref:metadata-types/naming-scheme.adoc[Naming Scheme] ** xref:hop-server/web-service.adoc[Web Service] ** xref:metadata-types/webdav-connection.adoc[WebDAV Connection] ** xref:metadata-types/workflow-log.adoc[Workflow Log] diff --git a/docs/hop-user-manual/modules/ROOT/pages/metadata-types/index.adoc b/docs/hop-user-manual/modules/ROOT/pages/metadata-types/index.adoc index c4c716ac2d9..e3ee0c4a487 100644 --- a/docs/hop-user-manual/modules/ROOT/pages/metadata-types/index.adoc +++ b/docs/hop-user-manual/modules/ROOT/pages/metadata-types/index.adoc @@ -49,6 +49,7 @@ xref:metadata-types/data-stream/data-stream.adoc[Data Stream]: A Data Stream can * xref:metadata-types/mongodb-connection.adoc[MongoDB Connection]: Describes a MongoDB connection * xref:metadata-types/mail-server-connection.adoc[Mail Server Connection]: Describes a mail server connection * xref:metadata-types/minio-connection.adoc[Minio (S3) Connection]: Connect to one or more S3 endpoints using a Minio client +* xref:metadata-types/naming-scheme.adoc[Naming Scheme]: Reusable rules to normalize Hop field names, database identifiers, and file or folder names * xref:metadata-types/webdav-connection.adoc[WebDAV Connection]: Named WebDAV or WebDAV-over-HTTPS endpoint used as a VFS scheme in file paths * xref:metadata-types/neo4j/neo4j-connection.adoc[Neo4j Connection]: A shared connection to a Neo4j server * xref:metadata-types/neo4j/neo4j-graphmodel.adoc[Neo4j Graph Model]: Description of the nodes, relationships, indexes, ... of a Neo4j graph diff --git a/docs/hop-user-manual/modules/ROOT/pages/metadata-types/naming-scheme.adoc b/docs/hop-user-manual/modules/ROOT/pages/metadata-types/naming-scheme.adoc new file mode 100644 index 00000000000..b29a526a48a --- /dev/null +++ b/docs/hop-user-manual/modules/ROOT/pages/metadata-types/naming-scheme.adoc @@ -0,0 +1,92 @@ +//// +Licensed to the Apache Software Foundation (ASF) under one +or more contributor license agreements. See the NOTICE file +distributed with this work for additional information +regarding copyright ownership. The ASF licenses this file +to you under the Apache License, Version 2.0 (the +"License"); you may not use this file except in compliance +with the License. You may obtain a copy of the License at + http://www.apache.org/licenses/LICENSE-2.0 +Unless required by applicable law or agreed to in writing, +software distributed under the License is distributed on an +"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +KIND, either express or implied. See the License for the +specific language governing permissions and limitations +under the License. +//// +:imagesdir: ../../assets/images/ +:page-pagination: +:description: A Naming Scheme defines reusable rules to normalize Hop field names, database identifiers, and file or folder names. + += Naming Scheme + +== Description + +A *Naming Scheme* describes how free-form names should be turned into consistent identifiers. +Typical uses include cleaning field names that arrive with spaces (for example `Order ID` → `order_id`) and applying a shared project convention (snake_case, camelCase, PascalCase, and so on). + +Naming Schemes are managed as project metadata. You can apply a scheme of type *Hop field names* from any editable table in Hop Gui via the TableView toolbar action **Apply a Naming Scheme to a column**. + +NOTE: Types for database tables/columns and files/folders are reserved for future UI surfaces; the same engine and options apply. + +== Options + +image:metadata-types/naming-scheme-editor.png[Naming Scheme editor, width="75%"] + +The screenshot above shows a scheme named `lowercase-dashes`: lower case words joined with dashes, so `Order ID` previews as `order-id`. + +[options="header"] +|=== +|Option|Description +|Name|Unique metadata name of this scheme. +|Description|Optional free-text description. +|Type|Target kind: Hop field names, database tables, database columns, files, or folders. +|Case style|`As is`, `Lower case`, `Upper case`, `camelCase`, or `PascalCase`. +|Word separator|How words are joined when not using camel/Pascal case: none, underscore (`_`), or dash (`-`). +|Extra delimiters|Additional characters treated as word boundaries (beyond spaces, `_`, `-`, and camelCase edges). +|Remove special characters|When enabled, strip non letter/digit characters from each word. +|Collapse repeated separators|When enabled, collapse repeated separators such as `__` to a single separator. +|Trim leading/trailing separators|When enabled, remove separators at the start or end of the result. +|Prefix / Suffix|Optional strings prepended or appended after the transform. +|Preview input / output|Live sample showing how the current options transform a name. +|=== + +== Examples + +[options="header"] +|=== +|Input|Case style|Word separator|Result +|`Order ID`|Lower case|Underscore (`_`)|`order_id` +|`Order ID`|As is|Underscore (`_`)|`Order_ID` +|`Order ID`|camelCase|_|`orderId` +|`Order ID`|PascalCase|_|`OrderId` +|`order-id`|Upper case|Underscore (`_`)|`ORDER_ID` +|`Order ID`|Lower case|Dash (`-`)|`order-id` +|=== + +== Applying from TableView + +. Open a transform or dialog that shows a field list (or any other editable table). +. Ensure table toolbars are visible (Hop Gui options). +. Click the **Apply a Naming Scheme to a column** toolbar icon (label / tag icon on the TableView toolbar). +. Select the column to rename (usually the first / name column). +. Select a Naming Scheme of type *Hop field names*. +. Confirm — values in non-empty rows are updated. Use the table Undo action if needed. + +TIP: Create at least one Naming Scheme in the Metadata perspective before using the toolbar action. + +=== Example: CSV File Input fields + +The following example uses the `lowercase-dashes` scheme on the **Name** column of a xref:pipeline/transforms/csvinput.adoc[CSV File Input] field list. + +*Before* — mixed styles (`ID`, `FirstName`, `birth_date`, `stateCode`, …): + +image:metadata-types/naming-scheme-csv-input-before.png[CSV File Input fields before applying a Naming Scheme, width="90%"] + +*After* — consistent lower-case names with dashes (`id`, `first-name`, `birth-date`, `state-code`, …): + +image:metadata-types/naming-scheme-csv-input-after.png[CSV File Input fields after applying the lowercase-dashes Naming Scheme, width="90%"] + +== Related + +* GitHub issue https://github.com/apache/hop/issues/2683[#2683] — field name cleanup / naming toolbar diff --git a/plugins/misc/naming/pom.xml b/plugins/misc/naming/pom.xml new file mode 100644 index 00000000000..fac4155ef17 --- /dev/null +++ b/plugins/misc/naming/pom.xml @@ -0,0 +1,32 @@ + + + + 4.0.0 + + + org.apache.hop + hop-plugins-misc + 2.19.0-SNAPSHOT + + + hop-misc-naming + jar + Hop Naming Scheme + + diff --git a/plugins/misc/naming/src/assembly/assembly.xml b/plugins/misc/naming/src/assembly/assembly.xml new file mode 100644 index 00000000000..3bb294e56e6 --- /dev/null +++ b/plugins/misc/naming/src/assembly/assembly.xml @@ -0,0 +1,35 @@ + + + + hop-misc-naming + + zip + + . + + + + org.apache.hop:hop-misc-naming:jar + + lib/core + + + diff --git a/plugins/misc/naming/src/main/java/org/apache/hop/naming/engine/NamingEngine.java b/plugins/misc/naming/src/main/java/org/apache/hop/naming/engine/NamingEngine.java new file mode 100644 index 00000000000..0cf9c2179f6 --- /dev/null +++ b/plugins/misc/naming/src/main/java/org/apache/hop/naming/engine/NamingEngine.java @@ -0,0 +1,218 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.hop.naming.engine; + +import java.util.ArrayList; +import java.util.List; +import java.util.Locale; +import org.apache.commons.lang3.StringUtils; +import org.apache.hop.naming.metadata.NamingCaseStyle; +import org.apache.hop.naming.metadata.NamingScheme; +import org.apache.hop.naming.metadata.NamingWordSeparator; + +/** + * Pure string transform that applies a {@link NamingScheme} to an input name. No UI or metadata + * provider dependencies — safe to unit-test and reuse from transforms later. + */ +public final class NamingEngine { + + private NamingEngine() { + // utility + } + + /** + * Apply the scheme to {@code input}. Null input returns null; empty input returns empty. + * + * @param scheme naming rules (null is treated as default hop-field snake_case-ish scheme) + * @param input original name + * @return transformed name + */ + public static String apply(NamingScheme scheme, String input) { + if (input == null) { + return null; + } + if (input.isEmpty()) { + return input; + } + + NamingScheme effective = scheme != null ? scheme : new NamingScheme(); + NamingCaseStyle caseStyle = NamingCaseStyle.fromCode(effective.getCaseStyle()); + NamingWordSeparator wordSeparator = NamingWordSeparator.fromCode(effective.getWordSeparator()); + + List words = splitWords(input, effective.getExtraDelimiters()); + if (effective.isRemoveSpecialCharacters()) { + words = removeSpecialCharacters(words); + } + if (words.isEmpty()) { + return applyAffixes(effective, ""); + } + + String joined = joinWords(words, caseStyle, wordSeparator); + joined = postProcessSeparators(joined, wordSeparator, effective); + return applyAffixes(effective, joined); + } + + static List splitWords(String input, String extraDelimiters) { + String prepared = insertCamelCaseBoundaries(input.trim()); + StringBuilder delimiters = new StringBuilder(" \t\n\r_-"); + if (StringUtils.isNotEmpty(extraDelimiters)) { + delimiters.append(extraDelimiters); + } + + List words = new ArrayList<>(); + StringBuilder current = new StringBuilder(); + for (int i = 0; i < prepared.length(); i++) { + char c = prepared.charAt(i); + if (delimiters.indexOf(String.valueOf(c)) >= 0) { + if (!current.isEmpty()) { + words.add(current.toString()); + current.setLength(0); + } + } else { + current.append(c); + } + } + if (!current.isEmpty()) { + words.add(current.toString()); + } + return words; + } + + /** + * Insert spaces at camelCase and letter/digit boundaries so later delimiter splitting sees + * separate words. Acronyms: {@code XMLParser} → {@code XML Parser}. + */ + static String insertCamelCaseBoundaries(String input) { + if (input.length() < 2) { + return input; + } + StringBuilder sb = new StringBuilder(input.length() + 8); + for (int i = 0; i < input.length(); i++) { + char c = input.charAt(i); + if (i > 0) { + char prev = input.charAt(i - 1); + char next = i + 1 < input.length() ? input.charAt(i + 1) : 0; + boolean lowerThenUpper = Character.isLowerCase(prev) && Character.isUpperCase(c); + boolean acronymBoundary = + Character.isUpperCase(prev) + && Character.isUpperCase(c) + && next != 0 + && Character.isLowerCase(next); + boolean letterDigit = + (Character.isLetter(prev) && Character.isDigit(c)) + || (Character.isDigit(prev) && Character.isLetter(c)); + if (lowerThenUpper || acronymBoundary || letterDigit) { + sb.append(' '); + } + } + sb.append(c); + } + return sb.toString(); + } + + private static List removeSpecialCharacters(List words) { + List cleaned = new ArrayList<>(); + for (String word : words) { + StringBuilder sb = new StringBuilder(word.length()); + for (int i = 0; i < word.length(); i++) { + char c = word.charAt(i); + if (Character.isLetterOrDigit(c)) { + sb.append(c); + } + } + if (!sb.isEmpty()) { + cleaned.add(sb.toString()); + } + } + return cleaned; + } + + private static String joinWords( + List words, NamingCaseStyle caseStyle, NamingWordSeparator wordSeparator) { + if (caseStyle == NamingCaseStyle.CAMEL || caseStyle == NamingCaseStyle.PASCAL) { + return joinCamel(words, caseStyle == NamingCaseStyle.PASCAL); + } + + String sep = wordSeparator.getValue(); + StringBuilder sb = new StringBuilder(); + for (int i = 0; i < words.size(); i++) { + if (i > 0 && !sep.isEmpty()) { + sb.append(sep); + } + sb.append(applyCaseToWord(words.get(i), caseStyle)); + } + return sb.toString(); + } + + private static String joinCamel(List words, boolean pascal) { + StringBuilder sb = new StringBuilder(); + for (int i = 0; i < words.size(); i++) { + String word = words.get(i); + if (word.isEmpty()) { + continue; + } + String lower = word.toLowerCase(Locale.ROOT); + if (i == 0 && !pascal) { + sb.append(lower); + } else { + sb.append(Character.toUpperCase(lower.charAt(0))); + if (lower.length() > 1) { + sb.append(lower.substring(1)); + } + } + } + return sb.toString(); + } + + private static String applyCaseToWord(String word, NamingCaseStyle caseStyle) { + return switch (caseStyle) { + case LOWER -> word.toLowerCase(Locale.ROOT); + case UPPER -> word.toUpperCase(Locale.ROOT); + default -> word; // AS_IS + }; + } + + private static String postProcessSeparators( + String joined, NamingWordSeparator wordSeparator, NamingScheme scheme) { + String result = joined; + String sep = wordSeparator.getValue(); + if (StringUtils.isNotEmpty(sep)) { + if (scheme.isCollapseRepeatedSeparators()) { + String doubled = sep + sep; + while (result.contains(doubled)) { + result = result.replace(doubled, sep); + } + } + if (scheme.isTrimEdgeSeparators()) { + while (result.startsWith(sep)) { + result = result.substring(sep.length()); + } + while (result.endsWith(sep)) { + result = result.substring(0, result.length() - sep.length()); + } + } + } + return result; + } + + private static String applyAffixes(NamingScheme scheme, String value) { + String prefix = StringUtils.defaultString(scheme.getPrefix()); + String suffix = StringUtils.defaultString(scheme.getSuffix()); + return prefix + value + suffix; + } +} diff --git a/plugins/misc/naming/src/main/java/org/apache/hop/naming/gui/TableViewNamingToolbarButton.java b/plugins/misc/naming/src/main/java/org/apache/hop/naming/gui/TableViewNamingToolbarButton.java new file mode 100644 index 00000000000..93b28292961 --- /dev/null +++ b/plugins/misc/naming/src/main/java/org/apache/hop/naming/gui/TableViewNamingToolbarButton.java @@ -0,0 +1,161 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.hop.naming.gui; + +import java.util.ArrayList; +import java.util.List; +import org.apache.commons.lang3.StringUtils; +import org.apache.hop.core.gui.plugin.GuiPlugin; +import org.apache.hop.core.gui.plugin.toolbar.GuiToolbarElement; +import org.apache.hop.i18n.BaseMessages; +import org.apache.hop.metadata.api.IHopMetadataSerializer; +import org.apache.hop.naming.engine.NamingEngine; +import org.apache.hop.naming.metadata.NamingScheme; +import org.apache.hop.naming.metadata.NamingSchemeType; +import org.apache.hop.ui.core.dialog.EnterSelectionDialog; +import org.apache.hop.ui.core.dialog.ErrorDialog; +import org.apache.hop.ui.core.dialog.MessageBox; +import org.apache.hop.ui.core.widget.ColumnInfo; +import org.apache.hop.ui.core.widget.TableView; +import org.apache.hop.ui.hopgui.HopGui; +import org.eclipse.swt.SWT; +import org.eclipse.swt.widgets.Shell; +import org.eclipse.swt.widgets.TableItem; + +/** + * TableView toolbar action that applies a {@link NamingScheme} of type Hop field names to a chosen + * column (issue #2683). + */ +@GuiPlugin +public class TableViewNamingToolbarButton { + + private static final Class PKG = TableViewNamingToolbarButton.class; + + public static final String ID_TOOLBAR_APPLY_NAMING = + "tableview-toolbar-30100-apply-naming-scheme"; + + @GuiToolbarElement( + root = TableView.ID_TOOLBAR, + id = ID_TOOLBAR_APPLY_NAMING, + toolTip = "i18n::Naming.Toolbar.Apply.ToolTip", + separator = true, + image = "naming.svg") + public static void applyNamingScheme(TableView tableView) { + if (tableView == null || tableView.isDisposed() || tableView.isReadonly()) { + return; + } + + Shell shell = tableView.getShell(); + ColumnInfo[] columns = tableView.getColumns(); + if (columns == null || columns.length == 0) { + return; + } + + try { + // 1. Pick column (default: first data column) + // + String[] columnNames = new String[columns.length]; + for (int i = 0; i < columns.length; i++) { + columnNames[i] = columns[i].getName(); + } + EnterSelectionDialog columnDialog = + new EnterSelectionDialog( + shell, + columnNames, + BaseMessages.getString(PKG, "Naming.ColumnSelection.Title"), + BaseMessages.getString(PKG, "Naming.ColumnSelection.Message")); + columnDialog.setSelectedNrs(new int[] {0}); + if (columnDialog.open() == null) { + return; + } + int columnIndex = columnDialog.getSelectionNr(); + if (columnIndex < 0 || columnIndex >= columns.length) { + return; + } + // TableItem column 0 is "#"; data columns start at 1 + int tableColNr = columnIndex + 1; + + // 2. Pick Naming Scheme (Hop field names) + // + IHopMetadataSerializer serializer = + HopGui.getInstance().getMetadataProvider().getSerializer(NamingScheme.class); + List allSchemes = serializer.loadAll(); + List fieldSchemes = new ArrayList<>(); + for (NamingScheme scheme : allSchemes) { + NamingSchemeType type = NamingSchemeType.fromCode(scheme.getType()); + if (type == NamingSchemeType.HOP_FIELD) { + fieldSchemes.add(scheme); + } + } + if (fieldSchemes.isEmpty()) { + MessageBox box = new MessageBox(shell, SWT.ICON_INFORMATION | SWT.OK); + box.setText(BaseMessages.getString(PKG, "Naming.NoSchemes.Title")); + box.setMessage(BaseMessages.getString(PKG, "Naming.NoSchemes.Message")); + box.open(); + return; + } + + String[] schemeNames = new String[fieldSchemes.size()]; + for (int i = 0; i < fieldSchemes.size(); i++) { + schemeNames[i] = fieldSchemes.get(i).getName(); + } + EnterSelectionDialog schemeDialog = + new EnterSelectionDialog( + shell, + schemeNames, + BaseMessages.getString(PKG, "Naming.SchemeSelection.Title"), + BaseMessages.getString(PKG, "Naming.SchemeSelection.Message")); + if (schemeDialog.open() == null) { + return; + } + int schemeIndex = schemeDialog.getSelectionNr(); + if (schemeIndex < 0 || schemeIndex >= fieldSchemes.size()) { + return; + } + NamingScheme scheme = fieldSchemes.get(schemeIndex); + + // 3. Apply to non-empty rows + // + List items = tableView.getNonEmptyItems(); + if (items.isEmpty()) { + return; + } + + int[] rowIndices = new int[items.size()]; + String[] newValues = new String[items.size()]; + for (int i = 0; i < items.size(); i++) { + TableItem item = items.get(i); + rowIndices[i] = tableView.getTable().indexOf(item); + String current = item.getText(tableColNr); + if (StringUtils.isEmpty(current) || "".equals(current)) { + newValues[i] = current; + } else { + newValues[i] = NamingEngine.apply(scheme, current); + } + } + + tableView.applyColumnValues(tableColNr, rowIndices, newValues); + } catch (Exception e) { + new ErrorDialog( + shell, + BaseMessages.getString(PKG, "Naming.Error.Title"), + BaseMessages.getString(PKG, "Naming.Error.Message"), + e); + } + } +} diff --git a/plugins/misc/naming/src/main/java/org/apache/hop/naming/metadata/NamingCaseStyle.java b/plugins/misc/naming/src/main/java/org/apache/hop/naming/metadata/NamingCaseStyle.java new file mode 100644 index 00000000000..0a6f3e72722 --- /dev/null +++ b/plugins/misc/naming/src/main/java/org/apache/hop/naming/metadata/NamingCaseStyle.java @@ -0,0 +1,81 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.hop.naming.metadata; + +import org.apache.commons.lang3.StringUtils; +import org.apache.hop.i18n.BaseMessages; + +/** Case transformation applied when joining name words. */ +public enum NamingCaseStyle { + AS_IS("as-is", "NamingCaseStyle.AsIs"), + LOWER("lower", "NamingCaseStyle.Lower"), + UPPER("upper", "NamingCaseStyle.Upper"), + CAMEL("camel", "NamingCaseStyle.Camel"), + PASCAL("pascal", "NamingCaseStyle.Pascal"); + + private static final Class PKG = NamingScheme.class; + + private final String code; + private final String i18nKey; + + NamingCaseStyle(String code, String i18nKey) { + this.code = code; + this.i18nKey = i18nKey; + } + + public String getCode() { + return code; + } + + public String getLabel() { + return BaseMessages.getString(PKG, i18nKey); + } + + public static NamingCaseStyle fromCode(String code) { + if (StringUtils.isEmpty(code)) { + return LOWER; + } + for (NamingCaseStyle style : values()) { + if (style.code.equalsIgnoreCase(code.trim())) { + return style; + } + } + return LOWER; + } + + public static String[] getLabels() { + NamingCaseStyle[] values = values(); + String[] labels = new String[values.length]; + for (int i = 0; i < values.length; i++) { + labels[i] = values[i].getLabel(); + } + return labels; + } + + public static NamingCaseStyle fromLabel(String label) { + if (StringUtils.isEmpty(label)) { + return LOWER; + } + for (NamingCaseStyle style : values()) { + if (style.getLabel().equals(label) || style.code.equalsIgnoreCase(label.trim())) { + return style; + } + } + return LOWER; + } +} diff --git a/plugins/misc/naming/src/main/java/org/apache/hop/naming/metadata/NamingScheme.java b/plugins/misc/naming/src/main/java/org/apache/hop/naming/metadata/NamingScheme.java new file mode 100644 index 00000000000..a13e80bc5fc --- /dev/null +++ b/plugins/misc/naming/src/main/java/org/apache/hop/naming/metadata/NamingScheme.java @@ -0,0 +1,93 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.hop.naming.metadata; + +import java.io.Serializable; +import lombok.Getter; +import lombok.Setter; +import org.apache.hop.metadata.api.HopMetadata; +import org.apache.hop.metadata.api.HopMetadataBase; +import org.apache.hop.metadata.api.HopMetadataCategory; +import org.apache.hop.metadata.api.HopMetadataProperty; +import org.apache.hop.metadata.api.HopMetadataPropertyType; +import org.apache.hop.metadata.api.IHopMetadata; + +/** + * Reusable naming rules for identifiers such as Hop field names, database tables/columns, and + * file/folder names. Apply via the TableView toolbar (Hop field names) or programmatically with + * {@link org.apache.hop.naming.engine.NamingEngine}. + */ +@Getter +@Setter +@HopMetadata( + key = "naming-scheme", + name = "i18n::NamingScheme.Name", + description = "i18n::NamingScheme.Description", + image = "naming.svg", + category = HopMetadataCategory.DATA_DEFINITION, + documentationUrl = "/metadata-types/naming-scheme.html", + hopMetadataPropertyType = HopMetadataPropertyType.NAMING_SCHEME) +public class NamingScheme extends HopMetadataBase implements Serializable, IHopMetadata { + + @HopMetadataProperty private String description; + + /** Target kind code: {@link NamingSchemeType} (default {@code hop-field}). */ + @HopMetadataProperty private String type; + + /** Case style code: {@link NamingCaseStyle}. */ + @HopMetadataProperty private String caseStyle; + + /** Word separator code: {@link NamingWordSeparator}. */ + @HopMetadataProperty private String wordSeparator; + + /** + * Extra characters treated as word boundaries in addition to whitespace, underscore, dash and + * camelCase edges (for example {@code .#}). + */ + @HopMetadataProperty private String extraDelimiters; + + /** Strip characters that are not letters or digits from each word. */ + @HopMetadataProperty private boolean removeSpecialCharacters; + + /** Collapse repeated word separators (for example {@code __} → {@code _}). */ + @HopMetadataProperty private boolean collapseRepeatedSeparators; + + /** Remove leading/trailing word separators from the result. */ + @HopMetadataProperty private boolean trimEdgeSeparators; + + @HopMetadataProperty private String prefix; + + @HopMetadataProperty private String suffix; + + public NamingScheme() { + this.type = NamingSchemeType.HOP_FIELD.getCode(); + this.caseStyle = NamingCaseStyle.LOWER.getCode(); + this.wordSeparator = NamingWordSeparator.UNDERSCORE.getCode(); + this.extraDelimiters = ""; + this.removeSpecialCharacters = true; + this.collapseRepeatedSeparators = true; + this.trimEdgeSeparators = true; + this.prefix = ""; + this.suffix = ""; + } + + public NamingScheme(String name) { + this(); + this.name = name; + } +} diff --git a/plugins/misc/naming/src/main/java/org/apache/hop/naming/metadata/NamingSchemeEditor.java b/plugins/misc/naming/src/main/java/org/apache/hop/naming/metadata/NamingSchemeEditor.java new file mode 100644 index 00000000000..86b95b4af6d --- /dev/null +++ b/plugins/misc/naming/src/main/java/org/apache/hop/naming/metadata/NamingSchemeEditor.java @@ -0,0 +1,408 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.hop.naming.metadata; + +import org.apache.hop.core.Const; +import org.apache.hop.i18n.BaseMessages; +import org.apache.hop.naming.engine.NamingEngine; +import org.apache.hop.ui.core.PropsUi; +import org.apache.hop.ui.core.metadata.MetadataEditor; +import org.apache.hop.ui.core.metadata.MetadataManager; +import org.apache.hop.ui.hopgui.HopGui; +import org.eclipse.swt.SWT; +import org.eclipse.swt.layout.FormAttachment; +import org.eclipse.swt.layout.FormData; +import org.eclipse.swt.widgets.Button; +import org.eclipse.swt.widgets.Combo; +import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.widgets.Control; +import org.eclipse.swt.widgets.Label; +import org.eclipse.swt.widgets.Text; + +public class NamingSchemeEditor extends MetadataEditor { + + private static final Class PKG = NamingScheme.class; + + private Text wName; + private Text wDescription; + private Combo wType; + private Combo wCaseStyle; + private Combo wWordSeparator; + private Text wExtraDelimiters; + private Button wRemoveSpecial; + private Button wCollapseSeparators; + private Button wTrimEdges; + private Text wPrefix; + private Text wSuffix; + private Text wPreviewInput; + private Text wPreviewOutput; + + public NamingSchemeEditor( + HopGui hopGui, MetadataManager manager, NamingScheme metadata) { + super(hopGui, manager, metadata); + } + + @Override + public void createControl(Composite parent) { + PropsUi props = PropsUi.getInstance(); + int middle = props.getMiddlePct(); + int margin = PropsUi.getMargin() + 2; + + // Name + Label wlName = new Label(parent, SWT.RIGHT); + PropsUi.setLook(wlName); + wlName.setText(BaseMessages.getString(PKG, "NamingSchemeEditor.Name.Label")); + FormData fdlName = new FormData(); + fdlName.top = new FormAttachment(0, margin); + fdlName.left = new FormAttachment(0, 0); + fdlName.right = new FormAttachment(middle, -margin); + wlName.setLayoutData(fdlName); + wName = new Text(parent, SWT.SINGLE | SWT.LEFT | SWT.BORDER); + PropsUi.setLook(wName); + FormData fdName = new FormData(); + fdName.top = new FormAttachment(wlName, 0, SWT.CENTER); + fdName.left = new FormAttachment(middle, 0); + fdName.right = new FormAttachment(100, 0); + wName.setLayoutData(fdName); + Control lastControl = wName; + + // Description + Label wlDescription = new Label(parent, SWT.RIGHT); + PropsUi.setLook(wlDescription); + wlDescription.setText(BaseMessages.getString(PKG, "NamingSchemeEditor.Description.Label")); + FormData fdlDescription = new FormData(); + fdlDescription.top = new FormAttachment(lastControl, margin); + fdlDescription.left = new FormAttachment(0, 0); + fdlDescription.right = new FormAttachment(middle, -margin); + wlDescription.setLayoutData(fdlDescription); + wDescription = new Text(parent, SWT.SINGLE | SWT.LEFT | SWT.BORDER); + PropsUi.setLook(wDescription); + FormData fdDescription = new FormData(); + fdDescription.top = new FormAttachment(wlDescription, 0, SWT.CENTER); + fdDescription.left = new FormAttachment(middle, 0); + fdDescription.right = new FormAttachment(100, 0); + wDescription.setLayoutData(fdDescription); + lastControl = wDescription; + + // Type + Label wlType = new Label(parent, SWT.RIGHT); + PropsUi.setLook(wlType); + wlType.setText(BaseMessages.getString(PKG, "NamingSchemeEditor.Type.Label")); + FormData fdlType = new FormData(); + fdlType.top = new FormAttachment(lastControl, margin); + fdlType.left = new FormAttachment(0, 0); + fdlType.right = new FormAttachment(middle, -margin); + wlType.setLayoutData(fdlType); + wType = new Combo(parent, SWT.SINGLE | SWT.READ_ONLY | SWT.BORDER | SWT.LEFT); + PropsUi.setLook(wType); + wType.setItems(NamingSchemeType.getLabels()); + FormData fdType = new FormData(); + fdType.top = new FormAttachment(wlType, 0, SWT.CENTER); + fdType.left = new FormAttachment(middle, 0); + fdType.right = new FormAttachment(100, 0); + wType.setLayoutData(fdType); + lastControl = wType; + + // Case style + Label wlCaseStyle = new Label(parent, SWT.RIGHT); + PropsUi.setLook(wlCaseStyle); + wlCaseStyle.setText(BaseMessages.getString(PKG, "NamingSchemeEditor.CaseStyle.Label")); + FormData fdlCaseStyle = new FormData(); + fdlCaseStyle.top = new FormAttachment(lastControl, margin); + fdlCaseStyle.left = new FormAttachment(0, 0); + fdlCaseStyle.right = new FormAttachment(middle, -margin); + wlCaseStyle.setLayoutData(fdlCaseStyle); + wCaseStyle = new Combo(parent, SWT.SINGLE | SWT.READ_ONLY | SWT.BORDER | SWT.LEFT); + PropsUi.setLook(wCaseStyle); + wCaseStyle.setItems(NamingCaseStyle.getLabels()); + FormData fdCaseStyle = new FormData(); + fdCaseStyle.top = new FormAttachment(wlCaseStyle, 0, SWT.CENTER); + fdCaseStyle.left = new FormAttachment(middle, 0); + fdCaseStyle.right = new FormAttachment(100, 0); + wCaseStyle.setLayoutData(fdCaseStyle); + lastControl = wCaseStyle; + + // Word separator + Label wlWordSeparator = new Label(parent, SWT.RIGHT); + PropsUi.setLook(wlWordSeparator); + wlWordSeparator.setText(BaseMessages.getString(PKG, "NamingSchemeEditor.WordSeparator.Label")); + FormData fdlWordSeparator = new FormData(); + fdlWordSeparator.top = new FormAttachment(lastControl, margin); + fdlWordSeparator.left = new FormAttachment(0, 0); + fdlWordSeparator.right = new FormAttachment(middle, -margin); + wlWordSeparator.setLayoutData(fdlWordSeparator); + wWordSeparator = new Combo(parent, SWT.SINGLE | SWT.READ_ONLY | SWT.BORDER | SWT.LEFT); + PropsUi.setLook(wWordSeparator); + wWordSeparator.setItems(NamingWordSeparator.getLabels()); + FormData fdWordSeparator = new FormData(); + fdWordSeparator.top = new FormAttachment(wlWordSeparator, 0, SWT.CENTER); + fdWordSeparator.left = new FormAttachment(middle, 0); + fdWordSeparator.right = new FormAttachment(100, 0); + wWordSeparator.setLayoutData(fdWordSeparator); + lastControl = wWordSeparator; + + // Extra delimiters + Label wlExtra = new Label(parent, SWT.RIGHT); + PropsUi.setLook(wlExtra); + wlExtra.setText(BaseMessages.getString(PKG, "NamingSchemeEditor.ExtraDelimiters.Label")); + FormData fdlExtra = new FormData(); + fdlExtra.top = new FormAttachment(lastControl, margin); + fdlExtra.left = new FormAttachment(0, 0); + fdlExtra.right = new FormAttachment(middle, -margin); + wlExtra.setLayoutData(fdlExtra); + wExtraDelimiters = new Text(parent, SWT.SINGLE | SWT.LEFT | SWT.BORDER); + PropsUi.setLook(wExtraDelimiters); + FormData fdExtra = new FormData(); + fdExtra.top = new FormAttachment(wlExtra, 0, SWT.CENTER); + fdExtra.left = new FormAttachment(middle, 0); + fdExtra.right = new FormAttachment(100, 0); + wExtraDelimiters.setLayoutData(fdExtra); + lastControl = wExtraDelimiters; + + // Remove special characters + Label wlRemoveSpecial = new Label(parent, SWT.RIGHT); + PropsUi.setLook(wlRemoveSpecial); + wlRemoveSpecial.setText( + BaseMessages.getString(PKG, "NamingSchemeEditor.RemoveSpecialCharacters.Label")); + FormData fdlRemoveSpecial = new FormData(); + fdlRemoveSpecial.top = new FormAttachment(lastControl, margin); + fdlRemoveSpecial.left = new FormAttachment(0, 0); + fdlRemoveSpecial.right = new FormAttachment(middle, -margin); + wlRemoveSpecial.setLayoutData(fdlRemoveSpecial); + wRemoveSpecial = new Button(parent, SWT.CHECK | SWT.LEFT); + PropsUi.setLook(wRemoveSpecial); + FormData fdRemoveSpecial = new FormData(); + fdRemoveSpecial.top = new FormAttachment(wlRemoveSpecial, 0, SWT.CENTER); + fdRemoveSpecial.left = new FormAttachment(middle, 0); + fdRemoveSpecial.right = new FormAttachment(100, 0); + wRemoveSpecial.setLayoutData(fdRemoveSpecial); + lastControl = wlRemoveSpecial; + + // Collapse separators + Label wlCollapse = new Label(parent, SWT.RIGHT); + PropsUi.setLook(wlCollapse); + wlCollapse.setText(BaseMessages.getString(PKG, "NamingSchemeEditor.CollapseSeparators.Label")); + FormData fdlCollapse = new FormData(); + fdlCollapse.top = new FormAttachment(lastControl, margin); + fdlCollapse.left = new FormAttachment(0, 0); + fdlCollapse.right = new FormAttachment(middle, -margin); + wlCollapse.setLayoutData(fdlCollapse); + wCollapseSeparators = new Button(parent, SWT.CHECK | SWT.LEFT); + PropsUi.setLook(wCollapseSeparators); + FormData fdCollapse = new FormData(); + fdCollapse.top = new FormAttachment(wlCollapse, 0, SWT.CENTER); + fdCollapse.left = new FormAttachment(middle, 0); + fdCollapse.right = new FormAttachment(100, 0); + wCollapseSeparators.setLayoutData(fdCollapse); + lastControl = wlCollapse; + + // Trim edge separators + Label wlTrim = new Label(parent, SWT.RIGHT); + PropsUi.setLook(wlTrim); + wlTrim.setText(BaseMessages.getString(PKG, "NamingSchemeEditor.TrimEdgeSeparators.Label")); + FormData fdlTrim = new FormData(); + fdlTrim.top = new FormAttachment(lastControl, margin); + fdlTrim.left = new FormAttachment(0, 0); + fdlTrim.right = new FormAttachment(middle, -margin); + wlTrim.setLayoutData(fdlTrim); + wTrimEdges = new Button(parent, SWT.CHECK | SWT.LEFT); + PropsUi.setLook(wTrimEdges); + FormData fdTrim = new FormData(); + fdTrim.top = new FormAttachment(wlTrim, 0, SWT.CENTER); + fdTrim.left = new FormAttachment(middle, 0); + fdTrim.right = new FormAttachment(100, 0); + wTrimEdges.setLayoutData(fdTrim); + lastControl = wlTrim; + + // Prefix + Label wlPrefix = new Label(parent, SWT.RIGHT); + PropsUi.setLook(wlPrefix); + wlPrefix.setText(BaseMessages.getString(PKG, "NamingSchemeEditor.Prefix.Label")); + FormData fdlPrefix = new FormData(); + fdlPrefix.top = new FormAttachment(lastControl, margin); + fdlPrefix.left = new FormAttachment(0, 0); + fdlPrefix.right = new FormAttachment(middle, -margin); + wlPrefix.setLayoutData(fdlPrefix); + wPrefix = new Text(parent, SWT.SINGLE | SWT.LEFT | SWT.BORDER); + PropsUi.setLook(wPrefix); + FormData fdPrefix = new FormData(); + fdPrefix.top = new FormAttachment(wlPrefix, 0, SWT.CENTER); + fdPrefix.left = new FormAttachment(middle, 0); + fdPrefix.right = new FormAttachment(100, 0); + wPrefix.setLayoutData(fdPrefix); + lastControl = wPrefix; + + // Suffix + Label wlSuffix = new Label(parent, SWT.RIGHT); + PropsUi.setLook(wlSuffix); + wlSuffix.setText(BaseMessages.getString(PKG, "NamingSchemeEditor.Suffix.Label")); + FormData fdlSuffix = new FormData(); + fdlSuffix.top = new FormAttachment(lastControl, margin); + fdlSuffix.left = new FormAttachment(0, 0); + fdlSuffix.right = new FormAttachment(middle, -margin); + wlSuffix.setLayoutData(fdlSuffix); + wSuffix = new Text(parent, SWT.SINGLE | SWT.LEFT | SWT.BORDER); + PropsUi.setLook(wSuffix); + FormData fdSuffix = new FormData(); + fdSuffix.top = new FormAttachment(wlSuffix, 0, SWT.CENTER); + fdSuffix.left = new FormAttachment(middle, 0); + fdSuffix.right = new FormAttachment(100, 0); + wSuffix.setLayoutData(fdSuffix); + lastControl = wSuffix; + + // Preview input + Label wlPreviewInput = new Label(parent, SWT.RIGHT); + PropsUi.setLook(wlPreviewInput); + wlPreviewInput.setText(BaseMessages.getString(PKG, "NamingSchemeEditor.PreviewInput.Label")); + FormData fdlPreviewInput = new FormData(); + fdlPreviewInput.top = new FormAttachment(lastControl, margin * 2); + fdlPreviewInput.left = new FormAttachment(0, 0); + fdlPreviewInput.right = new FormAttachment(middle, -margin); + wlPreviewInput.setLayoutData(fdlPreviewInput); + wPreviewInput = new Text(parent, SWT.SINGLE | SWT.LEFT | SWT.BORDER); + PropsUi.setLook(wPreviewInput); + wPreviewInput.setText("Order ID"); + FormData fdPreviewInput = new FormData(); + fdPreviewInput.top = new FormAttachment(wlPreviewInput, 0, SWT.CENTER); + fdPreviewInput.left = new FormAttachment(middle, 0); + fdPreviewInput.right = new FormAttachment(100, 0); + wPreviewInput.setLayoutData(fdPreviewInput); + lastControl = wPreviewInput; + + // Preview output (read-only) + Label wlPreviewOutput = new Label(parent, SWT.RIGHT); + PropsUi.setLook(wlPreviewOutput); + wlPreviewOutput.setText(BaseMessages.getString(PKG, "NamingSchemeEditor.PreviewOutput.Label")); + FormData fdlPreviewOutput = new FormData(); + fdlPreviewOutput.top = new FormAttachment(lastControl, margin); + fdlPreviewOutput.left = new FormAttachment(0, 0); + fdlPreviewOutput.right = new FormAttachment(middle, -margin); + wlPreviewOutput.setLayoutData(fdlPreviewOutput); + wPreviewOutput = new Text(parent, SWT.SINGLE | SWT.LEFT | SWT.BORDER | SWT.READ_ONLY); + PropsUi.setLook(wPreviewOutput); + FormData fdPreviewOutput = new FormData(); + fdPreviewOutput.top = new FormAttachment(wlPreviewOutput, 0, SWT.CENTER); + fdPreviewOutput.left = new FormAttachment(middle, 0); + fdPreviewOutput.right = new FormAttachment(100, 0); + wPreviewOutput.setLayoutData(fdPreviewOutput); + + setWidgetsContent(); + updatePreview(); + + wName.addModifyListener(e -> setChanged()); + wDescription.addModifyListener(e -> setChanged()); + wType.addModifyListener(e -> setChanged()); + wCaseStyle.addModifyListener( + e -> { + setChanged(); + updatePreview(); + }); + wWordSeparator.addModifyListener( + e -> { + setChanged(); + updatePreview(); + }); + wExtraDelimiters.addModifyListener( + e -> { + setChanged(); + updatePreview(); + }); + wRemoveSpecial.addListener( + SWT.Selection, + e -> { + setChanged(); + updatePreview(); + }); + wCollapseSeparators.addListener( + SWT.Selection, + e -> { + setChanged(); + updatePreview(); + }); + wTrimEdges.addListener( + SWT.Selection, + e -> { + setChanged(); + updatePreview(); + }); + wPrefix.addModifyListener( + e -> { + setChanged(); + updatePreview(); + }); + wSuffix.addModifyListener( + e -> { + setChanged(); + updatePreview(); + }); + wPreviewInput.addModifyListener(e -> updatePreview()); + } + + private void updatePreview() { + if (wPreviewOutput == null || wPreviewOutput.isDisposed()) { + return; + } + NamingScheme preview = new NamingScheme(); + fillSchemeFromWidgets(preview); + String input = wPreviewInput != null ? wPreviewInput.getText() : ""; + wPreviewOutput.setText(Const.NVL(NamingEngine.apply(preview, input), "")); + } + + private void fillSchemeFromWidgets(NamingScheme scheme) { + scheme.setName(wName.getText()); + scheme.setDescription(wDescription.getText()); + scheme.setType(NamingSchemeType.fromLabel(wType.getText()).getCode()); + scheme.setCaseStyle(NamingCaseStyle.fromLabel(wCaseStyle.getText()).getCode()); + scheme.setWordSeparator(NamingWordSeparator.fromLabel(wWordSeparator.getText()).getCode()); + scheme.setExtraDelimiters(wExtraDelimiters.getText()); + scheme.setRemoveSpecialCharacters(wRemoveSpecial.getSelection()); + scheme.setCollapseRepeatedSeparators(wCollapseSeparators.getSelection()); + scheme.setTrimEdgeSeparators(wTrimEdges.getSelection()); + scheme.setPrefix(wPrefix.getText()); + scheme.setSuffix(wSuffix.getText()); + } + + @Override + public void setWidgetsContent() { + NamingScheme scheme = getMetadata(); + wName.setText(Const.NVL(scheme.getName(), "")); + wDescription.setText(Const.NVL(scheme.getDescription(), "")); + wType.setText(NamingSchemeType.fromCode(scheme.getType()).getLabel()); + wCaseStyle.setText(NamingCaseStyle.fromCode(scheme.getCaseStyle()).getLabel()); + wWordSeparator.setText(NamingWordSeparator.fromCode(scheme.getWordSeparator()).getLabel()); + wExtraDelimiters.setText(Const.NVL(scheme.getExtraDelimiters(), "")); + wRemoveSpecial.setSelection(scheme.isRemoveSpecialCharacters()); + wCollapseSeparators.setSelection(scheme.isCollapseRepeatedSeparators()); + wTrimEdges.setSelection(scheme.isTrimEdgeSeparators()); + wPrefix.setText(Const.NVL(scheme.getPrefix(), "")); + wSuffix.setText(Const.NVL(scheme.getSuffix(), "")); + } + + @Override + public void getWidgetsContent(NamingScheme scheme) { + fillSchemeFromWidgets(scheme); + } + + @Override + public boolean setFocus() { + if (wName == null || wName.isDisposed()) { + return false; + } + return wName.setFocus(); + } +} diff --git a/plugins/misc/naming/src/main/java/org/apache/hop/naming/metadata/NamingSchemeType.java b/plugins/misc/naming/src/main/java/org/apache/hop/naming/metadata/NamingSchemeType.java new file mode 100644 index 00000000000..c16bdb6193a --- /dev/null +++ b/plugins/misc/naming/src/main/java/org/apache/hop/naming/metadata/NamingSchemeType.java @@ -0,0 +1,92 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.hop.naming.metadata; + +import org.apache.commons.lang3.StringUtils; +import org.apache.hop.i18n.BaseMessages; + +/** + * Target kind for a {@link NamingScheme}. Stored as a stable string code on the metadata element. + */ +public enum NamingSchemeType { + HOP_FIELD("hop-field", "NamingSchemeType.HopField"), + DATABASE_TABLE("database-table", "NamingSchemeType.DatabaseTable"), + DATABASE_COLUMN("database-column", "NamingSchemeType.DatabaseColumn"), + FILE("file", "NamingSchemeType.File"), + FOLDER("folder", "NamingSchemeType.Folder"); + + private static final Class PKG = NamingScheme.class; + + private final String code; + private final String i18nKey; + + NamingSchemeType(String code, String i18nKey) { + this.code = code; + this.i18nKey = i18nKey; + } + + public String getCode() { + return code; + } + + public String getLabel() { + return BaseMessages.getString(PKG, i18nKey); + } + + public static NamingSchemeType fromCode(String code) { + if (StringUtils.isEmpty(code)) { + return HOP_FIELD; + } + for (NamingSchemeType type : values()) { + if (type.code.equalsIgnoreCase(code.trim())) { + return type; + } + } + return HOP_FIELD; + } + + public static String[] getCodes() { + NamingSchemeType[] values = values(); + String[] codes = new String[values.length]; + for (int i = 0; i < values.length; i++) { + codes[i] = values[i].code; + } + return codes; + } + + public static String[] getLabels() { + NamingSchemeType[] values = values(); + String[] labels = new String[values.length]; + for (int i = 0; i < values.length; i++) { + labels[i] = values[i].getLabel(); + } + return labels; + } + + public static NamingSchemeType fromLabel(String label) { + if (StringUtils.isEmpty(label)) { + return HOP_FIELD; + } + for (NamingSchemeType type : values()) { + if (type.getLabel().equals(label) || type.code.equalsIgnoreCase(label.trim())) { + return type; + } + } + return HOP_FIELD; + } +} diff --git a/plugins/misc/naming/src/main/java/org/apache/hop/naming/metadata/NamingWordSeparator.java b/plugins/misc/naming/src/main/java/org/apache/hop/naming/metadata/NamingWordSeparator.java new file mode 100644 index 00000000000..0ecd0e2c881 --- /dev/null +++ b/plugins/misc/naming/src/main/java/org/apache/hop/naming/metadata/NamingWordSeparator.java @@ -0,0 +1,85 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.hop.naming.metadata; + +import org.apache.commons.lang3.StringUtils; +import org.apache.hop.i18n.BaseMessages; + +/** Character used to join words after splitting (ignored for camelCase / PascalCase styles). */ +public enum NamingWordSeparator { + EMPTY("empty", "", "NamingWordSeparator.Empty"), + UNDERSCORE("underscore", "_", "NamingWordSeparator.Underscore"), + DASH("dash", "-", "NamingWordSeparator.Dash"); + + private static final Class PKG = NamingScheme.class; + + private final String code; + private final String value; + private final String i18nKey; + + NamingWordSeparator(String code, String value, String i18nKey) { + this.code = code; + this.value = value; + this.i18nKey = i18nKey; + } + + public String getCode() { + return code; + } + + public String getValue() { + return value; + } + + public String getLabel() { + return BaseMessages.getString(PKG, i18nKey); + } + + public static NamingWordSeparator fromCode(String code) { + if (StringUtils.isEmpty(code)) { + return UNDERSCORE; + } + for (NamingWordSeparator sep : values()) { + if (sep.code.equalsIgnoreCase(code.trim())) { + return sep; + } + } + return UNDERSCORE; + } + + public static String[] getLabels() { + NamingWordSeparator[] values = values(); + String[] labels = new String[values.length]; + for (int i = 0; i < values.length; i++) { + labels[i] = values[i].getLabel(); + } + return labels; + } + + public static NamingWordSeparator fromLabel(String label) { + if (StringUtils.isEmpty(label)) { + return UNDERSCORE; + } + for (NamingWordSeparator sep : values()) { + if (sep.getLabel().equals(label) || sep.code.equalsIgnoreCase(label.trim())) { + return sep; + } + } + return UNDERSCORE; + } +} diff --git a/plugins/misc/naming/src/main/resources/naming.svg b/plugins/misc/naming/src/main/resources/naming.svg new file mode 100644 index 00000000000..8c693fbbf0d --- /dev/null +++ b/plugins/misc/naming/src/main/resources/naming.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/plugins/misc/naming/src/main/resources/org/apache/hop/naming/gui/messages/messages_en_US.properties b/plugins/misc/naming/src/main/resources/org/apache/hop/naming/gui/messages/messages_en_US.properties new file mode 100644 index 00000000000..0bff16b34aa --- /dev/null +++ b/plugins/misc/naming/src/main/resources/org/apache/hop/naming/gui/messages/messages_en_US.properties @@ -0,0 +1,28 @@ +# +# +# Licensed to the Apache Software Foundation (ASF) under one or more +# contributor license agreements. See the NOTICE file distributed with +# this work for additional information regarding copyright ownership. +# The ASF licenses this file to You under the Apache License, Version 2.0 +# (the "License"); you may not use this file except in compliance with +# the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +# + +Naming.Toolbar.Apply.ToolTip=Apply a Naming Scheme to a column +Naming.ColumnSelection.Title=Select column +Naming.ColumnSelection.Message=Select the column whose values should be renamed +Naming.SchemeSelection.Title=Select Naming Scheme +Naming.SchemeSelection.Message=Select the Naming Scheme to apply (type\: Hop field names) +Naming.NoSchemes.Title=No Naming Schemes +Naming.NoSchemes.Message=There are no Naming Scheme metadata elements of type "Hop field names".\nCreate one in the Metadata perspective first. +Naming.Error.Title=Error +Naming.Error.Message=Error applying Naming Scheme diff --git a/plugins/misc/naming/src/main/resources/org/apache/hop/naming/metadata/messages/messages_en_US.properties b/plugins/misc/naming/src/main/resources/org/apache/hop/naming/metadata/messages/messages_en_US.properties new file mode 100644 index 00000000000..73903c5662e --- /dev/null +++ b/plugins/misc/naming/src/main/resources/org/apache/hop/naming/metadata/messages/messages_en_US.properties @@ -0,0 +1,51 @@ +# +# +# Licensed to the Apache Software Foundation (ASF) under one or more +# contributor license agreements. See the NOTICE file distributed with +# this work for additional information regarding copyright ownership. +# The ASF licenses this file to You under the Apache License, Version 2.0 +# (the "License"); you may not use this file except in compliance with +# the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +# + +NamingScheme.Name=Naming Scheme +NamingScheme.Description=Reusable rules to normalize names for Hop fields, database tables/columns, and files/folders + +NamingSchemeEditor.Name.Label=Name +NamingSchemeEditor.Description.Label=Description +NamingSchemeEditor.Type.Label=Type +NamingSchemeEditor.CaseStyle.Label=Case style +NamingSchemeEditor.WordSeparator.Label=Word separator +NamingSchemeEditor.ExtraDelimiters.Label=Extra delimiters +NamingSchemeEditor.RemoveSpecialCharacters.Label=Remove special characters +NamingSchemeEditor.CollapseSeparators.Label=Collapse repeated separators +NamingSchemeEditor.TrimEdgeSeparators.Label=Trim leading/trailing separators +NamingSchemeEditor.Prefix.Label=Prefix +NamingSchemeEditor.Suffix.Label=Suffix +NamingSchemeEditor.PreviewInput.Label=Preview input +NamingSchemeEditor.PreviewOutput.Label=Preview output + +NamingSchemeType.HopField=Hop field names +NamingSchemeType.DatabaseTable=Database tables +NamingSchemeType.DatabaseColumn=Database columns +NamingSchemeType.File=Files +NamingSchemeType.Folder=Folders + +NamingCaseStyle.AsIs=As is +NamingCaseStyle.Lower=Lower case +NamingCaseStyle.Upper=Upper case +NamingCaseStyle.Camel=camelCase +NamingCaseStyle.Pascal=PascalCase + +NamingWordSeparator.Empty=None (empty) +NamingWordSeparator.Underscore=Underscore (_) +NamingWordSeparator.Dash=Dash (-) diff --git a/plugins/misc/naming/src/test/java/org/apache/hop/naming/engine/NamingEngineTest.java b/plugins/misc/naming/src/test/java/org/apache/hop/naming/engine/NamingEngineTest.java new file mode 100644 index 00000000000..97e1dc38e95 --- /dev/null +++ b/plugins/misc/naming/src/test/java/org/apache/hop/naming/engine/NamingEngineTest.java @@ -0,0 +1,131 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.hop.naming.engine; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertNull; + +import org.apache.hop.naming.metadata.NamingCaseStyle; +import org.apache.hop.naming.metadata.NamingScheme; +import org.apache.hop.naming.metadata.NamingWordSeparator; +import org.junit.jupiter.api.Test; + +class NamingEngineTest { + + @Test + void nullAndEmpty() { + NamingScheme scheme = lowerUnderscore(); + assertNull(NamingEngine.apply(scheme, null)); + assertEquals("", NamingEngine.apply(scheme, "")); + } + + @Test + void orderIdLowerUnderscore() { + assertEquals("order_id", NamingEngine.apply(lowerUnderscore(), "Order ID")); + } + + @Test + void orderIdAsIsUnderscore() { + NamingScheme scheme = new NamingScheme(); + scheme.setCaseStyle(NamingCaseStyle.AS_IS.getCode()); + scheme.setWordSeparator(NamingWordSeparator.UNDERSCORE.getCode()); + scheme.setRemoveSpecialCharacters(false); + assertEquals("Order_ID", NamingEngine.apply(scheme, "Order ID")); + } + + @Test + void orderIdCamel() { + NamingScheme scheme = new NamingScheme(); + scheme.setCaseStyle(NamingCaseStyle.CAMEL.getCode()); + scheme.setRemoveSpecialCharacters(false); + assertEquals("orderId", NamingEngine.apply(scheme, "Order ID")); + } + + @Test + void orderIdPascal() { + NamingScheme scheme = new NamingScheme(); + scheme.setCaseStyle(NamingCaseStyle.PASCAL.getCode()); + scheme.setRemoveSpecialCharacters(false); + assertEquals("OrderId", NamingEngine.apply(scheme, "Order ID")); + } + + @Test + void snakeToCamel() { + NamingScheme scheme = new NamingScheme(); + scheme.setCaseStyle(NamingCaseStyle.CAMEL.getCode()); + assertEquals("orderId", NamingEngine.apply(scheme, "order_id")); + } + + @Test + void kebabToUpperSnake() { + NamingScheme scheme = new NamingScheme(); + scheme.setCaseStyle(NamingCaseStyle.UPPER.getCode()); + scheme.setWordSeparator(NamingWordSeparator.UNDERSCORE.getCode()); + assertEquals("ORDER_ID", NamingEngine.apply(scheme, "order-id")); + } + + @Test + void collapseAndTrimWhitespace() { + assertEquals("foo_bar", NamingEngine.apply(lowerUnderscore(), " foo bar ")); + } + + @Test + void removeSpecialCharacters() { + NamingScheme scheme = lowerUnderscore(); + scheme.setRemoveSpecialCharacters(true); + scheme.setExtraDelimiters("#"); + assertEquals("field_name", NamingEngine.apply(scheme, "field#name!")); + } + + @Test + void dashSeparator() { + NamingScheme scheme = new NamingScheme(); + scheme.setCaseStyle(NamingCaseStyle.LOWER.getCode()); + scheme.setWordSeparator(NamingWordSeparator.DASH.getCode()); + assertEquals("order-id", NamingEngine.apply(scheme, "Order ID")); + } + + @Test + void prefixAndSuffix() { + NamingScheme scheme = lowerUnderscore(); + scheme.setPrefix("fld_"); + scheme.setSuffix("_x"); + assertEquals("fld_order_id_x", NamingEngine.apply(scheme, "Order ID")); + } + + @Test + void camelCaseInputSplit() { + NamingScheme scheme = lowerUnderscore(); + assertEquals("order_id", NamingEngine.apply(scheme, "orderId")); + } + + @Test + void nullSchemeUsesDefaults() { + assertEquals("order_id", NamingEngine.apply(null, "Order ID")); + } + + private static NamingScheme lowerUnderscore() { + NamingScheme scheme = new NamingScheme(); + scheme.setCaseStyle(NamingCaseStyle.LOWER.getCode()); + scheme.setWordSeparator(NamingWordSeparator.UNDERSCORE.getCode()); + scheme.setRemoveSpecialCharacters(true); + scheme.setCollapseRepeatedSeparators(true); + scheme.setTrimEdgeSeparators(true); + return scheme; + } +} diff --git a/plugins/misc/pom.xml b/plugins/misc/pom.xml index 83374e5c95a..a6b5122f120 100644 --- a/plugins/misc/pom.xml +++ b/plugins/misc/pom.xml @@ -37,6 +37,7 @@ import mail marketplace + naming passwords projects py4j diff --git a/ui/src/main/java/org/apache/hop/ui/core/widget/TableView.java b/ui/src/main/java/org/apache/hop/ui/core/widget/TableView.java index 96f2ba39df3..daf14df1a72 100644 --- a/ui/src/main/java/org/apache/hop/ui/core/widget/TableView.java +++ b/ui/src/main/java/org/apache/hop/ui/core/widget/TableView.java @@ -4229,6 +4229,59 @@ public void setText(String text, int colNr, int rowNr) { item.setText(colNr, text); } + /** + * Replace cell values in one column for the given rows and record a single undo step. + * + *

{@code colNr} is the {@link TableItem} column index (1 = first {@link ColumnInfo}; 0 is the + * leading row-number column). + * + * @param colNr table item column index + * @param rowIndices absolute row indices into {@link #table} + * @param newValues new cell values, same length as {@code rowIndices} + */ + public void applyColumnValues(int colNr, int[] rowIndices, String[] newValues) { + if (readonly || rowIndices == null || newValues == null || rowIndices.length == 0) { + return; + } + if (rowIndices.length != newValues.length) { + throw new IllegalArgumentException( + "rowIndices and newValues must have the same length (" + + rowIndices.length + + " vs " + + newValues.length + + ")"); + } + if (colNr < 1 || colNr >= table.getColumnCount()) { + return; + } + + applyAllChanges(); + + int size = rowIndices.length; + String[][] before = new String[size][]; + String[][] after = new String[size][]; + int[] index = new int[size]; + + for (int i = 0; i < size; i++) { + int rowNr = rowIndices[i]; + if (rowNr < 0 || rowNr >= table.getItemCount()) { + continue; + } + TableItem item = table.getItem(rowNr); + index[i] = rowNr; + before[i] = getItemText(item); + item.setText(colNr, Const.NVL(newValues[i], "")); + after[i] = getItemText(item); + } + + if (undoEnabled) { + ChangeAction ta = new ChangeAction(); + ta.setChanged(before, after, index); + addUndo(ta); + } + setModified(); + } + /** * @param sortable the sortable to set */ From 2807c2932ff67b5bbfa6c450c0e03d051b9e599f Mon Sep 17 00:00:00 2001 From: mattcasters Date: Fri, 31 Jul 2026 22:35:53 +0200 Subject: [PATCH 2/2] issue #2683 spotless --- assemblies/debug/pom.xml | 4 ++-- assemblies/plugins/pom.xml | 12 ++++++------ 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/assemblies/debug/pom.xml b/assemblies/debug/pom.xml index 74c5893cb3e..98843387ddb 100644 --- a/assemblies/debug/pom.xml +++ b/assemblies/debug/pom.xml @@ -369,13 +369,13 @@ org.apache.hop - hop-misc-projects + hop-misc-naming ${project.version} provided org.apache.hop - hop-misc-naming + hop-misc-projects ${project.version} provided diff --git a/assemblies/plugins/pom.xml b/assemblies/plugins/pom.xml index 33a0c0deec3..abc48d82af6 100644 --- a/assemblies/plugins/pom.xml +++ b/assemblies/plugins/pom.xml @@ -652,6 +652,12 @@ ${project.version} zip + + org.apache.hop + hop-misc-naming + ${project.version} + zip + org.apache.hop hop-misc-passwords @@ -678,12 +684,6 @@ ${project.version} zip - - org.apache.hop - hop-misc-naming - ${project.version} - zip - org.apache.hop hop-misc-static-schema