From 55d1907c6e0fe28b6bb6fab9f3ee6f1d2e259ed0 Mon Sep 17 00:00:00 2001 From: lance Date: Thu, 16 Apr 2026 12:08:23 +0800 Subject: [PATCH 1/2] Refactor: Replace if-else chains with switch expressions for better readability Signed-off-by: lance --- .../main/java/org/apache/hop/core/Const.java | 2 +- .../apache/hop/core/row/ValueDataUtil.java | 37 +++--- .../java/org/apache/hop/core/CounterTest.java | 6 +- .../org/apache/hop/core/CountersTest.java | 2 +- .../apache/hop/core/row/RowDataUtilTest.java | 10 +- .../multi/MultiMetadataProviderTest.java | 12 +- .../multi/MultiMetadataSerializerTest.java | 8 +- .../hop/core/auth/kerberos/KerberosUtil.java | 14 +-- .../org/apache/hop/core/gui/BasePainter.java | 19 ++- .../BaseCachingExecutionInfoLocation.java | 7 +- .../org/apache/hop/history/AuditState.java | 12 +- .../org/apache/hop/www/AddExportServlet.java | 2 +- .../hop/www/DeleteExecutionInfoServlet.java | 2 +- .../hop/www/RegisterExecutionInfoServlet.java | 2 +- .../www/StartExecutionPipelineServlet.java | 2 +- .../apache/hop/www/StartPipelineServlet.java | 2 +- .../apache/hop/www/StartWorkflowServlet.java | 2 +- .../core/auth/kerberos/KerberosUtilTests.java | 108 ++++++++++++++++ .../transform/DynamicWaitTimesTest.java | 4 +- .../actions/dostounix/ActionDosToUnix.java | 14 +-- .../databases/as400/AS400DatabaseMeta.java | 43 +++---- .../databases/cache/CacheDatabaseMeta.java | 44 ++++--- .../clickhouse/ClickhouseDatabaseMeta.java | 42 +++---- .../cratedb/CrateDBDatabaseMeta.java | 10 +- .../hop/databases/db2/DB2DatabaseMeta.java | 44 +++---- .../databases/derby/DerbyDatabaseMeta.java | 48 +++---- .../databases/doris/DorisDatabaseMeta.java | 45 +++---- .../databases/duckdb/DuckDBDatabaseMeta.java | 47 +++---- .../exasol4/Exasol4DatabaseMeta.java | 34 ++--- .../firebird/FirebirdDatabaseMeta.java | 38 +++--- .../generic/GenericDatabaseMeta.java | 46 +++---- .../GoogleBigQueryDatabaseMeta.java | 23 ++-- .../hop/databases/h2/H2DatabaseMeta.java | 45 +++---- .../hop/databases/hive/HiveDatabaseMeta.java | 53 ++++---- .../hypersonic/HypersonicDatabaseMeta.java | 45 +++---- .../informix/InformixDatabaseMeta.java | 48 +++---- .../databases/ingres/IngresDatabaseMeta.java | 52 ++++---- .../hop/vfs/s3/metadata/S3MetaEditor.java | 71 ++++++----- .../SalesforceConnectionEditor.java | 18 +-- .../transforms/coalesce/CoalesceMeta.java | 48 +++---- .../transforms/denormaliser/Denormaliser.java | 30 ++--- ...stSimpleGenericEdifactDirectXMLParser.java | 2 +- .../wrapper/field/MongoArrayExpansion.java | 15 ++- .../hop/mongo/wrapper/field/MongoField.java | 50 ++++---- .../field/MongodbInputDiscoverFieldsImpl.java | 118 ++++++++---------- .../transforms/repeatfields/RepeatFields.java | 12 +- .../vertica/bulkloader/VerticaBulkLoader.java | 49 ++++---- .../transforms/webservices/WebService.java | 55 ++++---- .../webservices/wsdl/WsdlUtils.java | 25 ++-- .../hop/ui/core/dialog/EnterTextDialog.java | 10 +- .../hopgui/terminal/HopGuiTerminalPanel.java | 2 +- .../hopgui/terminal/JediTerminalWidget.java | 71 +++++------ 52 files changed, 764 insertions(+), 786 deletions(-) create mode 100644 engine/src/test/java/org/apache/hop/core/auth/kerberos/KerberosUtilTests.java diff --git a/core/src/main/java/org/apache/hop/core/Const.java b/core/src/main/java/org/apache/hop/core/Const.java index 32c2ba8e380..77c7fe9c22b 100644 --- a/core/src/main/java/org/apache/hop/core/Const.java +++ b/core/src/main/java/org/apache/hop/core/Const.java @@ -50,10 +50,10 @@ import java.util.regex.Matcher; import java.util.regex.Pattern; import org.apache.commons.lang3.ArrayUtils; -import org.apache.commons.lang3.StringEscapeUtils; import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.exception.ExceptionUtils; import org.apache.commons.lang3.text.StrBuilder; +import org.apache.commons.text.StringEscapeUtils; import org.apache.hop.core.exception.HopException; import org.apache.hop.core.row.IValueMeta; import org.apache.hop.core.util.EnvUtil; diff --git a/core/src/main/java/org/apache/hop/core/row/ValueDataUtil.java b/core/src/main/java/org/apache/hop/core/row/ValueDataUtil.java index d1f04f9f561..ea504bc42d3 100644 --- a/core/src/main/java/org/apache/hop/core/row/ValueDataUtil.java +++ b/core/src/main/java/org/apache/hop/core/row/ValueDataUtil.java @@ -1643,7 +1643,7 @@ public static String charToHexEncode(IValueMeta meta, Object data) throws HopVal * always in the range 0-65535. * * @return A hex-to-char decoded String - * @throws HopValueException + * @throws HopValueException ex */ public static String hexToCharDecode(IValueMeta meta, Object data) throws HopValueException { if (meta.isNull(data)) { @@ -1679,21 +1679,26 @@ public static String hexToCharDecode(IValueMeta meta, Object data) throws HopVal throw new HopValueException("invalid hex digit '" + c + "'."); } - if (charNr == 4) { - nextChar = (nibble << 12); - charNr--; - } else if (charNr == 3) { - nextChar += (nibble << 8); - charNr--; - } else if (charNr == 2) { - nextChar += (nibble << 4); - charNr--; - } else { - // charNr == 1 - nextChar += nibble; - chArray[j] = (char) nextChar; - charNr = 4; - j++; + switch (charNr) { + case 4 -> { + nextChar = (nibble << 12); + charNr--; + } + case 3 -> { + nextChar += (nibble << 8); + charNr--; + } + case 2 -> { + nextChar += (nibble << 4); + charNr--; + } + default -> { + // charNr == 1 + nextChar += nibble; + chArray[j] = (char) nextChar; + charNr = 4; + j++; + } } } diff --git a/core/src/test/java/org/apache/hop/core/CounterTest.java b/core/src/test/java/org/apache/hop/core/CounterTest.java index 909d9fc0e1d..c95ac8471d7 100644 --- a/core/src/test/java/org/apache/hop/core/CounterTest.java +++ b/core/src/test/java/org/apache/hop/core/CounterTest.java @@ -27,7 +27,7 @@ class CounterTest { /** Constructor test 1. */ @Test - public void testConstructor1() { + void testConstructor1() { Counter cnt1 = new Counter(); assertEquals(1L, cnt1.getCounter()); assertEquals(1L, cnt1.getIncrement()); @@ -59,7 +59,7 @@ public void testConstructor1() { /** Test the setting of stuff. */ @Test - public void testSets() { + void testSets() { Counter cnt1 = new Counter(); cnt1.setCounter(5L); assertEquals(5L, cnt1.getCounter()); @@ -76,7 +76,7 @@ public void testSets() { /** Test next(). */ @Test - public void testNext() { + void testNext() { Counter cnt1 = new Counter(); cnt1.setCounter(2L); assertEquals(2L, cnt1.getAndNext()); diff --git a/core/src/test/java/org/apache/hop/core/CountersTest.java b/core/src/test/java/org/apache/hop/core/CountersTest.java index 6c171df14be..6891c49506f 100644 --- a/core/src/test/java/org/apache/hop/core/CountersTest.java +++ b/core/src/test/java/org/apache/hop/core/CountersTest.java @@ -27,7 +27,7 @@ class CountersTest { /** Test about all. Class is not too big. */ @Test - public void testGeneralFunctionality() { + void testGeneralFunctionality() { Counters cntrs = Counters.getInstance(); assertNull(cntrs.getCounter("counter1")); cntrs.setCounter("counter1", new Counter()); diff --git a/core/src/test/java/org/apache/hop/core/row/RowDataUtilTest.java b/core/src/test/java/org/apache/hop/core/row/RowDataUtilTest.java index 14b78230cd0..b5599df6cfd 100644 --- a/core/src/test/java/org/apache/hop/core/row/RowDataUtilTest.java +++ b/core/src/test/java/org/apache/hop/core/row/RowDataUtilTest.java @@ -42,7 +42,7 @@ public boolean arrayCompare(Object[] arr1, int start1, Object[] arr2, int start2 } @Test - public void testResizeArray() { + void testResizeArray() { Object[] arr1 = new Object[] {"test", Boolean.TRUE, 100L, 101L, new String("test1")}; Object[] nullArr = new Object[] { @@ -72,7 +72,7 @@ public void testResizeArray() { } @Test - public void testRemoveItem() { + void testRemoveItem() { Object[] arr = new Object[] {1L, 2L, 3L, 4L, 5L}; // Remove the first item @@ -106,7 +106,7 @@ public void testRemoveItem() { } @Test - public void testAddRowData() { + void testAddRowData() { Object[] arr = new Object[] {1L, 2L, 3L}; // Do all different combinations of adding rows to @@ -129,7 +129,7 @@ public void testAddRowData() { } @Test - public void testAddValueData() { + void testAddValueData() { Object[] arr1 = new Object[] {1L}; Object[] arr2 = new Object[] {1L, 2L}; @@ -143,7 +143,7 @@ public void testAddValueData() { } @Test - public void testRemoveItems() { + void testRemoveItems() { Object[] arr1 = new Object[] {1L, 2L, 3L, 4L, 5L}; Object[] comp1 = new Object[] {2L, 4L}; diff --git a/core/src/test/java/org/apache/hop/metadata/serializer/multi/MultiMetadataProviderTest.java b/core/src/test/java/org/apache/hop/metadata/serializer/multi/MultiMetadataProviderTest.java index 9c8cf4af54c..a681158c585 100644 --- a/core/src/test/java/org/apache/hop/metadata/serializer/multi/MultiMetadataProviderTest.java +++ b/core/src/test/java/org/apache/hop/metadata/serializer/multi/MultiMetadataProviderTest.java @@ -34,7 +34,7 @@ class MultiMetadataProviderTest extends MetadataTestBase { @Test - public void testGetDescription() { + void testGetDescription() { String description = multiMetadataProvider.getDescription(); assertNotNull(description); assertEquals( @@ -42,7 +42,7 @@ public void testGetDescription() { } @Test - public void testGetMetadataClasses() { + void testGetMetadataClasses() { List> list = multiMetadataProvider.getMetadataClasses(); assertEquals(2, list.size()); assertTrue(list.contains(MetadataType1.class)); @@ -50,13 +50,13 @@ public void testGetMetadataClasses() { } @Test - public void testGetMetadataClassForKey() throws HopException { + void testGetMetadataClassForKey() throws HopException { assertEquals(MetadataType1.class, multiMetadataProvider.getMetadataClassForKey("type-1")); assertEquals(MetadataType2.class, multiMetadataProvider.getMetadataClassForKey("type-2")); } @Test - public void testFindProvider() { + void testFindProvider() { IHopMetadataProvider look1 = multiMetadataProvider.findProvider("Provider1"); assertNotNull(look1); assertEquals(provider1, look1); @@ -69,13 +69,13 @@ public void testFindProvider() { } @Test - public void testGetProviders() { + void testGetProviders() { List list = multiMetadataProvider.getProviders(); assertEquals(3, list.size()); } @Test - public void testSetProviders() { + void testSetProviders() { List list = multiMetadataProvider.getProviders(); MemoryMetadataProvider provider4 = new MemoryMetadataProvider( diff --git a/core/src/test/java/org/apache/hop/metadata/serializer/multi/MultiMetadataSerializerTest.java b/core/src/test/java/org/apache/hop/metadata/serializer/multi/MultiMetadataSerializerTest.java index c8bf0e2ad82..15f9c178205 100644 --- a/core/src/test/java/org/apache/hop/metadata/serializer/multi/MultiMetadataSerializerTest.java +++ b/core/src/test/java/org/apache/hop/metadata/serializer/multi/MultiMetadataSerializerTest.java @@ -60,7 +60,7 @@ void setUp() throws Exception { } @Test - public void testLoad() throws HopException { + void testLoad() throws HopException { IHopMetadataSerializer s1 = multiMetadataProvider.getSerializer(MetadataType1.class); IHopMetadataSerializer s2 = @@ -90,7 +90,7 @@ public void testLoad() throws HopException { } @Test - public void testSave() throws HopException { + void testSave() throws HopException { MetadataType1 m6 = new MetadataType1("t1o6", "d6", "v6"); multiMetadataProvider.getSerializer(MetadataType1.class).save(m6); @@ -122,7 +122,7 @@ public void testSave() throws HopException { } @Test - public void testListObjectNames() throws HopException { + void testListObjectNames() throws HopException { IHopMetadataSerializer s1 = multiMetadataProvider.getSerializer(MetadataType1.class); IHopMetadataSerializer s2 = @@ -139,7 +139,7 @@ public void testListObjectNames() throws HopException { } @Test - public void testExists() throws HopException { + void testExists() throws HopException { IHopMetadataSerializer s1 = multiMetadataProvider.getSerializer(MetadataType1.class); IHopMetadataSerializer s2 = diff --git a/engine/src/main/java/org/apache/hop/core/auth/kerberos/KerberosUtil.java b/engine/src/main/java/org/apache/hop/core/auth/kerberos/KerberosUtil.java index 96a4c7a05b3..204e5c1f75a 100644 --- a/engine/src/main/java/org/apache/hop/core/auth/kerberos/KerberosUtil.java +++ b/engine/src/main/java/org/apache/hop/core/auth/kerberos/KerberosUtil.java @@ -62,7 +62,7 @@ public AppConfigurationEntry[] getAppConfigurationEntry(String ignored) { public static final String PENTAHO_JAAS_DEBUG = "PENTAHO_JAAS_DEBUG"; /** Base properties to be inherited by all other LOGIN_CONFIG* configuration maps. */ - public static final Map LOGIN_CONFIG_BASE = createLoginConfigBaseMap(); + protected static final Map LOGIN_CONFIG_BASE = createLoginConfigBaseMap(); /** Login Configuration options for KERBEROS_USER mode. */ private static final Map LOGIN_CONFIG_OPTS_KERBEROS_USER = @@ -99,7 +99,7 @@ private static Map getLoginConfigOptsKerberosNoPassword() { } /** Login Configuration options for KERBEROS_KEYTAB mode. */ - public static final Map LOGIN_CONFIG_OPTS_KERBEROS_KEYTAB = + protected static final Map LOGIN_CONFIG_OPTS_KERBEROS_KEYTAB = createLoginConfigOptsKerberosKeytabMap(); private static Map createLoginConfigOptsKerberosKeytabMap() { @@ -145,12 +145,10 @@ public LoginContext getLoginContextFromUsernamePassword( new Subject(), callbacks -> { for (Callback callback : callbacks) { - if (callback instanceof NameCallback nameCallback) { - nameCallback.setName(principal); - } else if (callback instanceof PasswordCallback passwordCallback) { - passwordCallback.setPassword(password.toCharArray()); - } else { - throw new UnsupportedCallbackException(callback); + switch (callback) { + case NameCallback nc -> nc.setName(principal); + case PasswordCallback pc -> pc.setPassword(password.toCharArray()); + default -> throw new UnsupportedCallbackException(callback); } } }, diff --git a/engine/src/main/java/org/apache/hop/core/gui/BasePainter.java b/engine/src/main/java/org/apache/hop/core/gui/BasePainter.java index b7c88214c4d..13abdf3dd1e 100644 --- a/engine/src/main/java/org/apache/hop/core/gui/BasePainter.java +++ b/engine/src/main/java/org/apache/hop/core/gui/BasePainter.java @@ -38,7 +38,7 @@ @Getter @Setter -public abstract class BasePainter, Part extends IBaseMeta> { +public abstract class BasePainter, P extends IBaseMeta> { private static final Class PKG = BasePainter.class; @@ -72,7 +72,7 @@ public abstract class BasePainter, Part extends IBase private int noteFontHeight; - protected Hop candidate; + protected H candidate; protected Point maximum; protected boolean showingNavigationView; @@ -445,7 +445,7 @@ protected int calcArrowLength() { return 19 + (lineWidth - 1) * 5; // arrowhead length } - protected int[] getLine(Part fs, Part ts) { + protected int[] getLine(P fs, P ts) { if (fs == null || ts == null) { return null; } @@ -462,7 +462,7 @@ protected int[] getLine(Part fs, Part ts) { return new int[] {x1, y1, x2, y2}; } - protected void drawArrow(EImage arrow, int[] line, Hop hop, Object startObject, Object endObject) + protected void drawArrow(EImage arrow, int[] line, H hop, Object startObject, Object endObject) throws HopException { Point screenFrom = real2screen(line[0], line[1]); Point screenTo = real2screen(line[2], line[3]); @@ -490,7 +490,7 @@ protected abstract void drawArrow( double theta, int size, double factor, - Hop jobHop, + H jobHop, Object startObject, Object endObject) throws HopException; @@ -536,9 +536,8 @@ protected void drawNavigationView() { // 3) Fixed width; height follows content aspect ratio (capped) so the minimap fits the graph. // int viewportHeight = - Math.min( - VIEWPORT_HEIGHT_MAX, - Math.max(20, (int) Math.round(VIEWPORT_WIDTH * graphRangeY / graphRangeX))); + Math.clamp( + (int) Math.round(VIEWPORT_WIDTH * graphRangeY / graphRangeX), 20, VIEWPORT_HEIGHT_MAX); double scale = Math.min(VIEWPORT_WIDTH / graphRangeX, viewportHeight / graphRangeY); double contentWidth = graphRangeX * scale; double contentHeight = graphRangeY * scale; @@ -566,8 +565,8 @@ protected void drawNavigationView() { double viewHeight = visibleHeightGraph * scale; // Clamp overlay to the drawn content area (avoid drawing outside the light blue) - viewX = Math.max(contentLeft, Math.min(contentLeft + contentWidth - 1, viewX)); - viewY = Math.max(contentTop, Math.min(contentTop + contentHeight - 1, viewY)); + viewX = Math.clamp(viewX, contentLeft, contentLeft + contentWidth - 1); + viewY = Math.clamp(viewY, contentTop, contentTop + contentHeight - 1); viewWidth = Math.min(viewWidth, contentLeft + contentWidth - viewX); viewHeight = Math.min(viewHeight, contentTop + contentHeight - viewY); viewWidth = Math.max(0, viewWidth); diff --git a/engine/src/main/java/org/apache/hop/execution/caching/BaseCachingExecutionInfoLocation.java b/engine/src/main/java/org/apache/hop/execution/caching/BaseCachingExecutionInfoLocation.java index 3895f00f1ad..03edced4ecd 100644 --- a/engine/src/main/java/org/apache/hop/execution/caching/BaseCachingExecutionInfoLocation.java +++ b/engine/src/main/java/org/apache/hop/execution/caching/BaseCachingExecutionInfoLocation.java @@ -234,8 +234,7 @@ public List getExecutionIds(boolean includeChildren, int limit) throws H // Reverse sort the IDs by date // List datedIds = new ArrayList<>(ids); - datedIds.sort(Comparator.comparing(DatedId::getDate)); - Collections.reverse(datedIds); // Newest first + datedIds.sort(Comparator.comparing(DatedId::getDate).reversed()); // Take only the first from the list // @@ -277,8 +276,8 @@ public List findExecutionIDs(IExecutionSelector selector) throws HopExce // Reverse sort the IDs by date // List datedIds = new ArrayList<>(dateIds); - datedIds.sort(Comparator.comparing(DatedId::getDate)); - Collections.reverse(datedIds); // Newest first + // Newest first + datedIds.sort(Comparator.comparing(DatedId::getDate).reversed()); // Take only the first from the list // diff --git a/engine/src/main/java/org/apache/hop/history/AuditState.java b/engine/src/main/java/org/apache/hop/history/AuditState.java index 5dec386ac72..1ad0e7fba70 100644 --- a/engine/src/main/java/org/apache/hop/history/AuditState.java +++ b/engine/src/main/java/org/apache/hop/history/AuditState.java @@ -61,24 +61,24 @@ public int hashCode() { public boolean extractBoolean(String key, boolean defaultValue) { Object only = getStateMap().get(key); - if (only instanceof Boolean) { - return (Boolean) only; + if (only instanceof Boolean b) { + return b; } return defaultValue; } public String extractString(String key, String defaultValue) { Object object = getStateMap().get(key); - if (object instanceof String) { - return (String) object; + if (object instanceof String s) { + return s; } return defaultValue; } public int extractInteger(String key, int defaultValue) { Object object = getStateMap().get(key); - if (object instanceof Integer) { - return (Integer) object; + if (object instanceof Integer i) { + return i; } return defaultValue; } diff --git a/engine/src/main/java/org/apache/hop/www/AddExportServlet.java b/engine/src/main/java/org/apache/hop/www/AddExportServlet.java index b03e242c066..f1fb64a4a70 100644 --- a/engine/src/main/java/org/apache/hop/www/AddExportServlet.java +++ b/engine/src/main/java/org/apache/hop/www/AddExportServlet.java @@ -26,7 +26,7 @@ import java.io.PrintWriter; import java.io.Serial; import java.util.UUID; -import org.apache.commons.lang3.StringEscapeUtils; +import org.apache.commons.text.StringEscapeUtils; import org.apache.commons.vfs2.FileObject; import org.apache.hop.core.annotations.HopServerServlet; import org.apache.hop.core.logging.LoggingObjectType; diff --git a/engine/src/main/java/org/apache/hop/www/DeleteExecutionInfoServlet.java b/engine/src/main/java/org/apache/hop/www/DeleteExecutionInfoServlet.java index 914fa1930b4..6f5c884f0ca 100644 --- a/engine/src/main/java/org/apache/hop/www/DeleteExecutionInfoServlet.java +++ b/engine/src/main/java/org/apache/hop/www/DeleteExecutionInfoServlet.java @@ -24,8 +24,8 @@ import java.io.IOException; import java.io.PrintWriter; import java.io.Serial; -import org.apache.commons.lang3.StringEscapeUtils; import org.apache.commons.lang3.StringUtils; +import org.apache.commons.text.StringEscapeUtils; import org.apache.hop.core.Const; import org.apache.hop.core.annotations.HopServerServlet; import org.apache.hop.core.exception.HopException; diff --git a/engine/src/main/java/org/apache/hop/www/RegisterExecutionInfoServlet.java b/engine/src/main/java/org/apache/hop/www/RegisterExecutionInfoServlet.java index c534e2aae49..4b8860648ce 100644 --- a/engine/src/main/java/org/apache/hop/www/RegisterExecutionInfoServlet.java +++ b/engine/src/main/java/org/apache/hop/www/RegisterExecutionInfoServlet.java @@ -24,8 +24,8 @@ import java.io.IOException; import java.io.PrintWriter; import java.io.Serial; -import org.apache.commons.lang3.StringEscapeUtils; import org.apache.commons.lang3.StringUtils; +import org.apache.commons.text.StringEscapeUtils; import org.apache.hop.core.Const; import org.apache.hop.core.annotations.HopServerServlet; import org.apache.hop.core.exception.HopException; diff --git a/engine/src/main/java/org/apache/hop/www/StartExecutionPipelineServlet.java b/engine/src/main/java/org/apache/hop/www/StartExecutionPipelineServlet.java index 2973bb5cadf..96120bf68b4 100644 --- a/engine/src/main/java/org/apache/hop/www/StartExecutionPipelineServlet.java +++ b/engine/src/main/java/org/apache/hop/www/StartExecutionPipelineServlet.java @@ -26,7 +26,7 @@ import java.io.PrintWriter; import java.io.Serial; import java.net.URLEncoder; -import org.apache.commons.lang3.StringEscapeUtils; +import org.apache.commons.text.StringEscapeUtils; import org.apache.hop.core.Const; import org.apache.hop.core.annotations.HopServerServlet; import org.apache.hop.core.exception.HopException; diff --git a/engine/src/main/java/org/apache/hop/www/StartPipelineServlet.java b/engine/src/main/java/org/apache/hop/www/StartPipelineServlet.java index a4186916848..d308d670740 100644 --- a/engine/src/main/java/org/apache/hop/www/StartPipelineServlet.java +++ b/engine/src/main/java/org/apache/hop/www/StartPipelineServlet.java @@ -27,8 +27,8 @@ import java.io.Serial; import java.net.URLEncoder; import java.util.UUID; -import org.apache.commons.lang3.StringEscapeUtils; import org.apache.commons.lang3.StringUtils; +import org.apache.commons.text.StringEscapeUtils; import org.apache.hop.core.Const; import org.apache.hop.core.annotations.HopServerServlet; import org.apache.hop.core.exception.HopException; diff --git a/engine/src/main/java/org/apache/hop/www/StartWorkflowServlet.java b/engine/src/main/java/org/apache/hop/www/StartWorkflowServlet.java index 3b752f5f32f..814b8cfbb37 100644 --- a/engine/src/main/java/org/apache/hop/www/StartWorkflowServlet.java +++ b/engine/src/main/java/org/apache/hop/www/StartWorkflowServlet.java @@ -27,7 +27,7 @@ import java.io.Serial; import java.net.URLEncoder; import java.util.UUID; -import org.apache.commons.lang3.StringEscapeUtils; +import org.apache.commons.text.StringEscapeUtils; import org.apache.hop.core.Const; import org.apache.hop.core.annotations.HopServerServlet; import org.apache.hop.core.logging.HopLogStore; diff --git a/engine/src/test/java/org/apache/hop/core/auth/kerberos/KerberosUtilTests.java b/engine/src/test/java/org/apache/hop/core/auth/kerberos/KerberosUtilTests.java new file mode 100644 index 00000000000..2ee40b0bfa8 --- /dev/null +++ b/engine/src/test/java/org/apache/hop/core/auth/kerberos/KerberosUtilTests.java @@ -0,0 +1,108 @@ +/* + * 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.core.auth.kerberos; + +import static org.junit.jupiter.api.Assertions.assertArrayEquals; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertNotNull; +import static org.junit.jupiter.api.Assertions.assertThrows; +import static org.junit.jupiter.api.Assertions.fail; + +import javax.security.auth.callback.Callback; +import javax.security.auth.callback.CallbackHandler; +import javax.security.auth.callback.NameCallback; +import javax.security.auth.callback.PasswordCallback; +import javax.security.auth.callback.TextOutputCallback; +import javax.security.auth.callback.UnsupportedCallbackException; +import javax.security.auth.login.LoginContext; +import org.junit.jupiter.api.Test; + +/** Unit test for {@link KerberosUtil} */ +class KerberosUtilTests { + private final KerberosUtil kerberos = new KerberosUtil(); + + @Test + void testGetLoginContextFromKeytab() throws Exception { + String principal = "test@EXAMPLE.COM"; + String keytab = "/tmp/test.keytab"; + + LoginContext context = kerberos.getLoginContextFromKeytab(principal, keytab); + assertNotNull(context); + } + + @Test + void testGetLoginContextFromUsernamePassword_callback() throws Exception { + String principal = "user@EXAMPLE.COM"; + String password = "123456"; + + LoginContext context = kerberos.getLoginContextFromUsernamePassword(principal, password); + assertNotNull(context); + + // JAAS callback + CallbackHandler handler = + callbacks -> { + for (Callback callback : callbacks) { + switch (callback) { + case NameCallback nc -> + assertEquals( + principal, nc.getDefaultName() == null ? principal : nc.getDefaultName()); + case PasswordCallback pc -> { + pc.setPassword(password.toCharArray()); + assertArrayEquals(password.toCharArray(), pc.getPassword()); + } + default -> fail("Unexpected callback: " + callback.getClass()); + } + } + }; + + handler.handle( + new Callback[] {new NameCallback("username"), new PasswordCallback("password", false)}); + } + + @Test + void testGetLoginContextFromKerberosCache() throws Exception { + String principal = "cache@EXAMPLE.COM"; + + LoginContext context = kerberos.getLoginContextFromKerberosCache(principal); + assertNotNull(context); + } + + @Test + void testUnsupportedCallback() { + String principal = "user@EXAMPLE.COM"; + String password = "123456"; + + assertThrows( + UnsupportedCallbackException.class, + () -> { + CallbackHandler handler = + callbacks -> { + for (Callback callback : callbacks) { + switch (callback) { + case NameCallback nc -> nc.setName(principal); + case PasswordCallback pc -> pc.setPassword(password.toCharArray()); + default -> throw new UnsupportedCallbackException(callback); + } + } + }; + + handler.handle( + new Callback[] {new TextOutputCallback(TextOutputCallback.INFORMATION, "test")}); + }); + } +} diff --git a/engine/src/test/java/org/apache/hop/pipeline/transform/DynamicWaitTimesTest.java b/engine/src/test/java/org/apache/hop/pipeline/transform/DynamicWaitTimesTest.java index 15fb608b915..7d0cd36cef7 100644 --- a/engine/src/test/java/org/apache/hop/pipeline/transform/DynamicWaitTimesTest.java +++ b/engine/src/test/java/org/apache/hop/pipeline/transform/DynamicWaitTimesTest.java @@ -36,7 +36,7 @@ class DynamicWaitTimesTest { AtomicInteger activeStreamIndex = new AtomicInteger(); @Test - public void testSingleStreamStatus() { + void testSingleStreamStatus() { IRowSet rowSet = new BlockingRowSet(3); status = DynamicWaitTimes.build(Collections.singletonList(rowSet), () -> 0, 20); assertEquals(1, status.get()); @@ -49,7 +49,7 @@ public void testSingleStreamStatus() { } @Test - public void testMultiStreamStatus() { + void testMultiStreamStatus() { List rowSetList = new ArrayList<>( Arrays.asList(new BlockingRowSet(1), new BlockingRowSet(2), new BlockingRowSet(7))); diff --git a/plugins/actions/dostounix/src/main/java/org/apache/hop/workflow/actions/dostounix/ActionDosToUnix.java b/plugins/actions/dostounix/src/main/java/org/apache/hop/workflow/actions/dostounix/ActionDosToUnix.java index d1088616413..49902612133 100644 --- a/plugins/actions/dostounix/src/main/java/org/apache/hop/workflow/actions/dostounix/ActionDosToUnix.java +++ b/plugins/actions/dostounix/src/main/java/org/apache/hop/workflow/actions/dostounix/ActionDosToUnix.java @@ -746,13 +746,13 @@ private void toDos(byte[] input, int amount) throws IOException { int b = input[index++]; switch (state) { case 0: - if (b == CR) { - state = 1; - } else if (b == LF) { - os.write(CR); - os.write(LF); - } else { - os.write(b); + switch (b) { + case CR -> state = 1; + case LF -> { + os.write(CR); + os.write(LF); + } + default -> os.write(b); } break; case 1: diff --git a/plugins/databases/as400/src/main/java/org/apache/hop/databases/as400/AS400DatabaseMeta.java b/plugins/databases/as400/src/main/java/org/apache/hop/databases/as400/AS400DatabaseMeta.java index ad6ab926a46..bd2b7d2c8a2 100644 --- a/plugins/databases/as400/src/main/java/org/apache/hop/databases/as400/AS400DatabaseMeta.java +++ b/plugins/databases/as400/src/main/java/org/apache/hop/databases/as400/AS400DatabaseMeta.java @@ -132,29 +132,30 @@ public String getFieldDefinition( retval += "CHAR(1)"; break; case IValueMeta.TYPE_NUMBER, IValueMeta.TYPE_INTEGER, IValueMeta.TYPE_BIGNUMBER: - if (type == IValueMeta.TYPE_INTEGER) { - // Integer values... - if (length < 10) { - retval += "INT"; - } else { - retval += "DECIMAL(" + length + ")"; - } - } else if (type == IValueMeta.TYPE_BIGNUMBER) { - // Fixed point value... - if (length - < 1) { // user configured no value for length. Use 16 digits, which is comparable to - // mantissa 2^53 of IEEE 754 binary64 "double". - length = 16; + switch (type) { + case IValueMeta.TYPE_INTEGER -> { + // Integer values... + if (length < 10) { + retval += "INT"; + } else { + retval += "DECIMAL(" + length + ")"; + } } - if (precision - < 1) { // user configured no value for precision. Use 16 digits, which is comparable - // to IEEE 754 binary64 "double". - precision = 16; + case IValueMeta.TYPE_BIGNUMBER -> { + // user configured no value for length. Use 16 digits, which is comparable to mantissa + // 2^53 of IEEE 754 binary64 "double". + if (length < 1) { + length = 16; + } + // user configured no value for precision. Use 16 digits, which is comparable to IEEE + // 754 binary64 "double". + if (precision < 1) { + precision = 16; + } + retval += "DECIMAL(" + length + "," + precision + ")"; } - retval += "DECIMAL(" + length + "," + precision + ")"; - } else { - // Floating point value with double precision... - retval += "DOUBLE"; + // Floating point value with double precision... + default -> retval += "DOUBLE"; } break; case IValueMeta.TYPE_STRING: diff --git a/plugins/databases/cache/src/main/java/org/apache/hop/databases/cache/CacheDatabaseMeta.java b/plugins/databases/cache/src/main/java/org/apache/hop/databases/cache/CacheDatabaseMeta.java index d08a0cc714a..341547ab90f 100644 --- a/plugins/databases/cache/src/main/java/org/apache/hop/databases/cache/CacheDatabaseMeta.java +++ b/plugins/databases/cache/src/main/java/org/apache/hop/databases/cache/CacheDatabaseMeta.java @@ -157,37 +157,35 @@ public String getFieldDefinition( retval += "CHAR(1)"; break; case IValueMeta.TYPE_NUMBER, IValueMeta.TYPE_INTEGER, IValueMeta.TYPE_BIGNUMBER: - if (fieldname.equalsIgnoreCase(tk)) { // Technical & primary key : see at bottom + // Technical & primary key : see at bottom + if (fieldname.equalsIgnoreCase(tk)) { retval += "DECIMAL"; } else { - if (type == IValueMeta.TYPE_INTEGER) { - // Integer values... - if (length > 9) { - retval += "DECIMAL(" + length + ")"; - } else { - retval += "INT"; + switch (type) { + case IValueMeta.TYPE_INTEGER -> { + // Integer values... + if (length > 9) { + retval += "DECIMAL(" + length + ")"; + } else { + retval += "INT"; + } } - } else if (type == IValueMeta.TYPE_BIGNUMBER) { - // Fixed point value... - if (length - < 1) { // user configured no value for length. Use 16 digits, which is comparable to + case IValueMeta.TYPE_BIGNUMBER -> { + // user configured no value for length. Use 16 digits, which is comparable to // mantissa 2^53 of IEEE 754 binary64 "double". - length = 16; + int len = (length < 1) ? 16 : length; + // user configured no value for precision. Use 16 digits, which is comparable to IEEE + // 754 binary64 "double". + int p = (precision < 1) ? 16 : precision; + retval += "DECIMAL(" + len + "," + p + ")"; } - if (precision - < 1) { // user configured no value for precision. Use 16 digits, which is comparable - // to IEEE 754 binary64 "double". - precision = 16; - } - retval += "DECIMAL(" + length + "," + precision + ")"; - } else { - // Floating point value with double precision... - retval += "DOUBLE"; + // Floating point value with double precision... + default -> retval += "DOUBLE"; } } break; - case IValueMeta - .TYPE_STRING: // CLOBs are just VARCHAR in the Cache database: can be very large! + // CLOBs are just VARCHAR in the Cache database: can be very large! + case IValueMeta.TYPE_STRING: retval += "VARCHAR"; if (length > 0) { retval += "(" + length + ")"; diff --git a/plugins/databases/clickhouse/src/main/java/org/apache/hop/databases/clickhouse/ClickhouseDatabaseMeta.java b/plugins/databases/clickhouse/src/main/java/org/apache/hop/databases/clickhouse/ClickhouseDatabaseMeta.java index d6c4e781c1e..482f1797245 100644 --- a/plugins/databases/clickhouse/src/main/java/org/apache/hop/databases/clickhouse/ClickhouseDatabaseMeta.java +++ b/plugins/databases/clickhouse/src/main/java/org/apache/hop/databases/clickhouse/ClickhouseDatabaseMeta.java @@ -42,8 +42,9 @@ public class ClickhouseDatabaseMeta extends BaseDatabaseMeta implements IDatabase { public static final String CONST_ALTER_TABLE = "ALTER TABLE "; + private static final String UUID_N_NIL_PRI_KEY = "UUID NOT NULL PRIMARY KEY"; - // TODO: Manage all attributes in plugin when HOP-67 is fixed + // Manage all attributes in plugin when HOP-67 is fixed @Override public int[] getAccessTypeList() { return new int[] {DatabaseMeta.TYPE_ACCESS_NATIVE}; @@ -178,31 +179,22 @@ public String getFieldDefinition( retval += "UINT8"; break; case IValueMeta.TYPE_NUMBER, IValueMeta.TYPE_INTEGER, IValueMeta.TYPE_BIGNUMBER: - if (type == IValueMeta.TYPE_INTEGER) { - // Integer values... - if (length > 18) { - retval += "INT128"; - } else if (length > 9) { - retval += "INT64"; - } else { - retval += "INT32"; + switch (type) { + case IValueMeta.TYPE_INTEGER -> { + if (length > 18) { + retval += "INT128"; + } else if (length > 9) { + retval += "INT64"; + } else { + retval += "INT32"; + } } - } else if (type == IValueMeta.TYPE_BIGNUMBER) { - // Fixed point value... - if (length < 1) { - // user configured no value for length. Use 16 digits, which is comparable to - // mantissa 2^53 of IEEE 754 binary64 "double". - length = 16; + case IValueMeta.TYPE_BIGNUMBER -> { + int len = (length < 1) ? 16 : length; + int p = (precision < 1) ? 16 : precision; + retval += "DECIMAL(" + len + "," + p + ")"; } - if (precision < 1) { - // user configured no value for precision. Use 16 digits, which is comparable - // to IEEE 754 binary64 "double". - precision = 16; - } - retval += "DECIMAL(" + length + "," + precision + ")"; - } else { - // Floating point value with double precision... - retval += "FLOAT64"; + default -> retval += "FLOAT64"; } break; case IValueMeta.TYPE_STRING: @@ -219,7 +211,7 @@ public String getFieldDefinition( } private String ddlForPrimaryKey() { - return "UUID NOT NULL PRIMARY KEY"; + return UUID_N_NIL_PRI_KEY; } @Override diff --git a/plugins/databases/cratedb/src/main/java/org/apache/hop/databases/cratedb/CrateDBDatabaseMeta.java b/plugins/databases/cratedb/src/main/java/org/apache/hop/databases/cratedb/CrateDBDatabaseMeta.java index 80f2be459c8..3ecdf449c58 100644 --- a/plugins/databases/cratedb/src/main/java/org/apache/hop/databases/cratedb/CrateDBDatabaseMeta.java +++ b/plugins/databases/cratedb/src/main/java/org/apache/hop/databases/cratedb/CrateDBDatabaseMeta.java @@ -219,9 +219,8 @@ public String getFieldDefinition( retval += fieldname + " "; } if (fieldname.equalsIgnoreCase(tk) - || // Technical key - fieldname.equalsIgnoreCase(pk) // Primary key - ) { + || // Technical key, Primary key + fieldname.equalsIgnoreCase(pk)) { retval += "BIGSERIAL"; } else { if (type == IValueMeta.TYPE_INTEGER) { @@ -233,11 +232,6 @@ public String getFieldDefinition( } else { retval += "SMALLINT"; } - } else if (type == IValueMeta.TYPE_BIGNUMBER) { - // Fixed point value... - // CrateDB doesn't support NUMERIC type for columns (only in expressions...) - // as a work-around we use a double, which can be cast to NUMERIC via SQL by the user - retval += "DOUBLE PRECISION"; } else { // Floating point value with double precision... retval += "DOUBLE PRECISION"; diff --git a/plugins/databases/db2/src/main/java/org/apache/hop/databases/db2/DB2DatabaseMeta.java b/plugins/databases/db2/src/main/java/org/apache/hop/databases/db2/DB2DatabaseMeta.java index 6e3fac3cffe..6d25423bfb2 100644 --- a/plugins/databases/db2/src/main/java/org/apache/hop/databases/db2/DB2DatabaseMeta.java +++ b/plugins/databases/db2/src/main/java/org/apache/hop/databases/db2/DB2DatabaseMeta.java @@ -164,37 +164,29 @@ public String getFieldDefinition( retval += "CHARACTER(1)"; break; case IValueMeta.TYPE_NUMBER, IValueMeta.TYPE_INTEGER, IValueMeta.TYPE_BIGNUMBER: - if (fieldname.equalsIgnoreCase(tk) && useAutoinc) { // Technical key: auto increment field! + // Technical key: auto increment field! + if (fieldname.equalsIgnoreCase(tk) && useAutoinc) { retval += "BIGINT NOT NULL GENERATED ALWAYS AS IDENTITY (START WITH 0, INCREMENT BY 1, NOCACHE)"; } else { - if (type == IValueMeta.TYPE_INTEGER) { - // Integer values... - if (length > 18) { - retval += "DECIMAL(" + length + ")"; - } else if (length > 9) { - retval += "BIGINT"; - } else if (length > 4) { - retval += "INTEGER"; - } else { - retval += "SMALLINT"; + switch (type) { + case IValueMeta.TYPE_INTEGER -> { + if (length > 18) { + retval += "DECIMAL(" + length + ")"; + } else if (length > 9) { + retval += "BIGINT"; + } else if (length > 4) { + retval += "INTEGER"; + } else { + retval += "SMALLINT"; + } } - } else if (type == IValueMeta.TYPE_BIGNUMBER) { - // Fixed point value... - if (length - < 1) { // user configured no value for length. Use 16 digits, which is comparable to - // mantissa 2^53 of IEEE 754 binary64 "double". - length = 16; + case IValueMeta.TYPE_BIGNUMBER -> { + int len = (length < 1) ? 16 : length; + int p = (precision < 1) ? 16 : precision; + retval += "DECIMAL(" + len + "," + p + ")"; } - if (precision - < 1) { // user configured no value for precision. Use 16 digits, which is comparable - // to IEEE 754 binary64 "double". - precision = 16; - } - retval += "DECIMAL(" + length + "," + precision + ")"; - } else { - // Floating point value with double precision... - retval += "DOUBLE"; + default -> retval += "DOUBLE"; } } break; diff --git a/plugins/databases/derby/src/main/java/org/apache/hop/databases/derby/DerbyDatabaseMeta.java b/plugins/databases/derby/src/main/java/org/apache/hop/databases/derby/DerbyDatabaseMeta.java index 00215ca76f1..cee958b76a6 100644 --- a/plugins/databases/derby/src/main/java/org/apache/hop/databases/derby/DerbyDatabaseMeta.java +++ b/plugins/databases/derby/src/main/java/org/apache/hop/databases/derby/DerbyDatabaseMeta.java @@ -172,35 +172,26 @@ public String getFieldDefinition( retval += "BIGINT NOT NULL PRIMARY KEY"; } } else { - if (type == IValueMeta.TYPE_INTEGER) { - // Integer values... - if (length < 3) { - retval += "TINYINT"; - } else if (length < 5) { - retval += "SMALLINT"; - } else if (length < 10) { - retval += "INT"; - } else if (length < 20) { - retval += "BIGINT"; - } else { - retval += "DECIMAL(" + length + ")"; + switch (type) { + case IValueMeta.TYPE_INTEGER -> { + if (length < 3) { + retval += "TINYINT"; + } else if (length < 5) { + retval += "SMALLINT"; + } else if (length < 10) { + retval += "INT"; + } else if (length < 20) { + retval += "BIGINT"; + } else { + retval += "DECIMAL(" + length + ")"; + } } - } else if (type == IValueMeta.TYPE_BIGNUMBER) { - // Fixed point value... - if (length - < 1) { // user configured no value for length. Use 16 digits, which is comparable to - // mantissa 2^53 of IEEE 754 binary64 "double". - length = 16; + case IValueMeta.TYPE_BIGNUMBER -> { + int len = (length < 1) ? 16 : length; + int p = (precision < 1) ? 16 : precision; + retval += "DECIMAL(" + len + "," + p + ")"; } - if (precision - < 1) { // user configured no value for precision. Use 16 digits, which is comparable - // to IEEE 754 binary64 "double". - precision = 16; - } - retval += "DECIMAL(" + length + "," + precision + ")"; - } else { - // Floating point value with double precision... - retval += "DOUBLE"; + default -> retval += "DOUBLE"; } } break; @@ -212,7 +203,8 @@ public String getFieldDefinition( if (length > 0) { retval += "(" + length; } else { - retval += "("; // Maybe use some default DB String length? + // Maybe use some default DB String length? + retval += "("; } retval += ")"; } diff --git a/plugins/databases/doris/src/main/java/org/apache/hop/databases/doris/DorisDatabaseMeta.java b/plugins/databases/doris/src/main/java/org/apache/hop/databases/doris/DorisDatabaseMeta.java index 5972998e1fb..70697650fcb 100644 --- a/plugins/databases/doris/src/main/java/org/apache/hop/databases/doris/DorisDatabaseMeta.java +++ b/plugins/databases/doris/src/main/java/org/apache/hop/databases/doris/DorisDatabaseMeta.java @@ -71,35 +71,26 @@ public String getFieldDefinition( retval += "BIGINT NOT NULL PRIMARY KEY"; } } else { - if (type == IValueMeta.TYPE_INTEGER) { - // Integer values... - if (length < 3) { - retval += "TINYINT"; - } else if (length < 5) { - retval += "SMALLINT"; - } else if (length < 10) { - retval += "INT"; - } else if (length < 20) { - retval += "BIGINT"; - } else { - retval += "DECIMAL(" + length + ")"; + switch (type) { + case IValueMeta.TYPE_INTEGER -> { + if (length < 3) { + retval += "TINYINT"; + } else if (length < 5) { + retval += "SMALLINT"; + } else if (length < 10) { + retval += "INT"; + } else if (length < 20) { + retval += "BIGINT"; + } else { + retval += "DECIMAL(" + length + ")"; + } } - } else if (type == IValueMeta.TYPE_BIGNUMBER) { - // Fixed point value... - if (length - < 1) { // user configured no value for length. Use 16 digits, which is comparable to - // mantissa 2^53 of IEEE 754 binary64 "double". - length = 16; + case IValueMeta.TYPE_BIGNUMBER -> { + int len = (length < 1) ? 16 : length; + int p = (precision < 1) ? 16 : precision; + retval += "DECIMAL(" + len + "," + p + ")"; } - if (precision - < 1) { // user configured no value for precision. Use 16 digits, which is comparable - // to IEEE 754 binary64 "double". - precision = 16; - } - retval += "DECIMAL(" + length + "," + precision + ")"; - } else { - // Floating point value with double precision... - retval += "DOUBLE"; + default -> retval += "DOUBLE"; } } break; diff --git a/plugins/databases/duckdb/src/main/java/org/apache/hop/databases/duckdb/DuckDBDatabaseMeta.java b/plugins/databases/duckdb/src/main/java/org/apache/hop/databases/duckdb/DuckDBDatabaseMeta.java index 686beeec0e3..56b2455aa7e 100644 --- a/plugins/databases/duckdb/src/main/java/org/apache/hop/databases/duckdb/DuckDBDatabaseMeta.java +++ b/plugins/databases/duckdb/src/main/java/org/apache/hop/databases/duckdb/DuckDBDatabaseMeta.java @@ -34,8 +34,6 @@ @GuiPlugin(id = "GUI-DuckDBDatabaseMeta") public class DuckDBDatabaseMeta extends BaseDatabaseMeta implements IDatabase { - private static final Class PKG = DuckDBDatabaseMeta.class; - @Override public String getCreateTableStatement() { return super.getCreateTableStatement(); @@ -81,35 +79,26 @@ public String getFieldDefinition( ) { retval += "IDENTITY"; } else { - if (type == IValueMeta.TYPE_INTEGER) { - // Integer values... - if (length < 3) { - retval += "TINYINT"; - } else if (length < 5) { - retval += "SMALLINT"; - } else if (length < 10) { - retval += "INT"; - } else if (length < 20) { - retval += "BIGINT"; - } else { - retval += "DECIMAL(" + length + ")"; - } - } else if (type == IValueMeta.TYPE_BIGNUMBER) { - // Fixed point value... - if (length - < 1) { // user configured no value for length. Use 16 digits, which is comparable to - // mantissa 2^53 of IEEE 754 binary64 "double". - length = 16; + switch (type) { + case IValueMeta.TYPE_INTEGER -> { + if (length < 3) { + retval += "TINYINT"; + } else if (length < 5) { + retval += "SMALLINT"; + } else if (length < 10) { + retval += "INT"; + } else if (length < 20) { + retval += "BIGINT"; + } else { + retval += "DECIMAL(" + length + ")"; + } } - if (precision - < 1) { // user configured no value for precision. Use 16 digits, which is comparable - // to IEEE 754 binary64 "double". - precision = 16; + case IValueMeta.TYPE_BIGNUMBER -> { + int p = (precision < 1) ? 16 : precision; + int len = (length < 1) ? 16 : length; + retval += "DECIMAL(" + len + "," + p + ")"; } - retval += "DECIMAL(" + length + "," + precision + ")"; - } else { - // Floating point value with double precision... - retval += "DOUBLE"; + default -> retval += "DOUBLE"; } } break; diff --git a/plugins/databases/exasol4/src/main/java/org/apache/hop/databases/exasol4/Exasol4DatabaseMeta.java b/plugins/databases/exasol4/src/main/java/org/apache/hop/databases/exasol4/Exasol4DatabaseMeta.java index b09f1345908..74a5d86aa92 100644 --- a/plugins/databases/exasol4/src/main/java/org/apache/hop/databases/exasol4/Exasol4DatabaseMeta.java +++ b/plugins/databases/exasol4/src/main/java/org/apache/hop/databases/exasol4/Exasol4DatabaseMeta.java @@ -226,29 +226,21 @@ public String getFieldDefinition( ) { retval.append("BIGINT NOT NULL PRIMARY KEY"); } else { - if (type == IValueMeta.TYPE_INTEGER) { - // Integer values... - if (length > 0) { - retval.append("DECIMAL(" + length + ")"); - } else { - retval.append("INTEGER"); + switch (type) { + case IValueMeta.TYPE_INTEGER -> { + if (length > 0) { + retval.append("DECIMAL(").append(length).append(")"); + } else { + retval.append("INTEGER"); + } } - } else if (type == IValueMeta.TYPE_BIGNUMBER) { - // Fixed point value... - if (length - < 1) { // user configured no value for length. Use 16 digits, which is comparable to - // mantissa 2^53 of IEEE 754 binary64 "double". - length = 16; - } - if (precision - < 1) { // user configured no value for precision. Use 16 digits, which is comparable - // to IEEE 754 binary64 "double". - precision = 16; + case IValueMeta.TYPE_BIGNUMBER -> { + int len = (length < 1) ? 16 : length; + int p = (precision < 1) ? 16 : precision; + + retval.append("DECIMAL(").append(len).append(",").append(p).append(")"); } - retval.append("DECIMAL(" + length + "," + precision + ")"); - } else { - // Floating point value with double precision... - retval.append("DOUBLE"); + default -> retval.append("DOUBLE"); } } diff --git a/plugins/databases/firebird/src/main/java/org/apache/hop/databases/firebird/FirebirdDatabaseMeta.java b/plugins/databases/firebird/src/main/java/org/apache/hop/databases/firebird/FirebirdDatabaseMeta.java index 73cc0bdf65c..74281e0815b 100644 --- a/plugins/databases/firebird/src/main/java/org/apache/hop/databases/firebird/FirebirdDatabaseMeta.java +++ b/plugins/databases/firebird/src/main/java/org/apache/hop/databases/firebird/FirebirdDatabaseMeta.java @@ -176,31 +176,23 @@ public String getFieldDefinition( ) { retval += "BIGINT NOT NULL PRIMARY KEY"; } else { - if (type == IValueMeta.TYPE_INTEGER) { - // Integer values... - if (length < 5) { - retval += CONST_SMALLINT; - } else if (length < 10) { - retval += CONST_INTEGER; - } else { - retval += "BIGINT"; + switch (type) { + case IValueMeta.TYPE_INTEGER -> { + if (length < 5) { + retval += CONST_SMALLINT; + } else if (length < 10) { + retval += CONST_INTEGER; + } else { + retval += "BIGINT"; + } } - } else if (type == IValueMeta.TYPE_BIGNUMBER) { - // Fixed point value... - if (length < 1) { - // user configured no value for length. Use 16 digits, which is comparable to - // mantissa 2^53 of IEEE 754 binary64 "double". - length = 16; - } - if (precision < 1) { - // user configured no value for precision. Use 16 digits, which is comparable - // to IEEE 754 binary64 "double". - precision = 16; + case IValueMeta.TYPE_BIGNUMBER -> { + int len = (length < 1) ? 16 : length; + int p = (precision < 1) ? 16 : precision; + + retval += "DECIMAL(" + len + "," + p + ")"; } - retval += "DECIMAL(" + length + "," + precision + ")"; - } else { - // Floating point value with double precision... - retval += "DOUBLE"; + default -> retval += "DOUBLE"; } } break; diff --git a/plugins/databases/generic/src/main/java/org/apache/hop/databases/generic/GenericDatabaseMeta.java b/plugins/databases/generic/src/main/java/org/apache/hop/databases/generic/GenericDatabaseMeta.java index 4adb0982685..0d1330cc36f 100644 --- a/plugins/databases/generic/src/main/java/org/apache/hop/databases/generic/GenericDatabaseMeta.java +++ b/plugins/databases/generic/src/main/java/org/apache/hop/databases/generic/GenericDatabaseMeta.java @@ -245,35 +245,27 @@ public String getFieldDefinition( ) { retval += "BIGSERIAL"; } else { - if (type == IValueMeta.TYPE_INTEGER) { - // Integer values... - if (length < 3) { - retval += "TINYINT"; - } else if (length < 5) { - retval += "SMALLINT"; - } else if (length < 10) { - retval += "INT"; - } else if (length < 20) { - retval += "BIGINT"; - } else { - retval += "DECIMAL(" + length + ")"; + switch (type) { + case IValueMeta.TYPE_INTEGER -> { + if (length < 3) { + retval += "TINYINT"; + } else if (length < 5) { + retval += "SMALLINT"; + } else if (length < 10) { + retval += "INT"; + } else if (length < 20) { + retval += "BIGINT"; + } else { + retval += "DECIMAL(" + length + ")"; + } } - } else if (type == IValueMeta.TYPE_BIGNUMBER) { - // Fixed point value... - if (length - < 1) { // user configured no value for length. Use 16 digits, which is comparable to - // mantissa 2^53 of IEEE 754 binary64 "double". - length = 16; - } - if (precision - < 1) { // user configured no value for precision. Use 16 digits, which is comparable - // to IEEE 754 binary64 "double". - precision = 16; + case IValueMeta.TYPE_BIGNUMBER -> { + int len = (length < 1) ? 16 : length; + int p = (precision < 1) ? 16 : precision; + + retval += "DECIMAL(" + len + "," + p + ")"; } - retval += "DECIMAL(" + length + "," + precision + ")"; - } else { - // Floating point value with double precision... - retval += "DOUBLE PRECISION"; + default -> retval += "DOUBLE PRECISION"; } } break; diff --git a/plugins/databases/googlebigquery/src/main/java/org/apache/hop/databases/googlebigquery/GoogleBigQueryDatabaseMeta.java b/plugins/databases/googlebigquery/src/main/java/org/apache/hop/databases/googlebigquery/GoogleBigQueryDatabaseMeta.java index d1fd6bd5363..0e89d166b2b 100644 --- a/plugins/databases/googlebigquery/src/main/java/org/apache/hop/databases/googlebigquery/GoogleBigQueryDatabaseMeta.java +++ b/plugins/databases/googlebigquery/src/main/java/org/apache/hop/databases/googlebigquery/GoogleBigQueryDatabaseMeta.java @@ -69,8 +69,6 @@ public String getFieldDefinition( String retval = ""; String fieldname = v.getName(); - int precision = v.getPrecision(); - if (addFieldName) { retval += fieldname + " "; } @@ -90,19 +88,16 @@ public String getFieldDefinition( break; case IValueMeta.TYPE_NUMBER, IValueMeta.TYPE_INTEGER, IValueMeta.TYPE_BIGNUMBER: - if (type == IValueMeta.TYPE_INTEGER) { - // Integer values... - retval += "INT64"; - } else if (type == IValueMeta.TYPE_BIGNUMBER) { - // Fixed point value... - if (v.getLength() < 39) { - retval += "NUMERIC"; - } else { - retval += "BIGNUMERIC"; + switch (type) { + case IValueMeta.TYPE_INTEGER -> retval += "INT64"; + case IValueMeta.TYPE_BIGNUMBER -> { + if (v.getLength() < 39) { + retval += "NUMERIC"; + } else { + retval += "BIGNUMERIC"; + } } - } else { - // Floating point value with double precision... - retval += "FLOAT64"; + default -> retval += "FLOAT64"; } break; diff --git a/plugins/databases/h2/src/main/java/org/apache/hop/databases/h2/H2DatabaseMeta.java b/plugins/databases/h2/src/main/java/org/apache/hop/databases/h2/H2DatabaseMeta.java index d151666e8ec..c8a63fea112 100644 --- a/plugins/databases/h2/src/main/java/org/apache/hop/databases/h2/H2DatabaseMeta.java +++ b/plugins/databases/h2/src/main/java/org/apache/hop/databases/h2/H2DatabaseMeta.java @@ -179,35 +179,26 @@ public String getFieldDefinition( ) { retval += "IDENTITY"; } else { - if (type == IValueMeta.TYPE_INTEGER) { - // Integer values... - if (length < 3) { - retval += "TINYINT"; - } else if (length < 5) { - retval += "SMALLINT"; - } else if (length < 10) { - retval += "INT"; - } else if (length < 20) { - retval += "BIGINT"; - } else { - retval += "DECIMAL(" + length + ")"; + switch (type) { + case IValueMeta.TYPE_INTEGER -> { + if (length < 3) { + retval += "TINYINT"; + } else if (length < 5) { + retval += "SMALLINT"; + } else if (length < 10) { + retval += "INT"; + } else if (length < 20) { + retval += "BIGINT"; + } else { + retval += "DECIMAL(" + length + ")"; + } } - } else if (type == IValueMeta.TYPE_BIGNUMBER) { - // Fixed point value... - if (length - < 1) { // user configured no value for length. Use 16 digits, which is comparable to - // mantissa 2^53 of IEEE 754 binary64 "double". - length = 16; + case IValueMeta.TYPE_BIGNUMBER -> { + int len = (length < 1) ? 16 : length; + int p = (precision < 1) ? 16 : precision; + retval += "DECIMAL(" + len + "," + p + ")"; } - if (precision - < 1) { // user configured no value for precision. Use 16 digits, which is comparable - // to IEEE 754 binary64 "double". - precision = 16; - } - retval += "DECIMAL(" + length + "," + precision + ")"; - } else { - // Floating point value with double precision... - retval += "DOUBLE PRECISION"; + default -> retval += "DOUBLE PRECISION"; } } break; diff --git a/plugins/databases/hive/src/main/java/org/apache/hop/databases/hive/HiveDatabaseMeta.java b/plugins/databases/hive/src/main/java/org/apache/hop/databases/hive/HiveDatabaseMeta.java index 889b977a5ff..36c1db91f29 100644 --- a/plugins/databases/hive/src/main/java/org/apache/hop/databases/hive/HiveDatabaseMeta.java +++ b/plugins/databases/hive/src/main/java/org/apache/hop/databases/hive/HiveDatabaseMeta.java @@ -40,7 +40,6 @@ documentationUrl = "/database/databases/apache-hive.html") @GuiPlugin(id = "GUI-HiveDatabaseMeta") public class HiveDatabaseMeta extends BaseDatabaseMeta implements IDatabase { - private static final Class PKG = HiveDatabaseMeta.class; @GuiWidgetElement( id = "tablePartitions", @@ -297,36 +296,28 @@ public String getFieldDefinition( retval += "BIGINT NOT NULL PRIMARY KEY"; } } else { - if (type == IValueMeta.TYPE_INTEGER) { - // Integer values... - if (length < 3) { - retval += "TINYINT"; - } else if (length < 5) { - retval += "SMALLINT"; - } else if (length < 10) { - retval += "INT"; - } else if (length < 20) { - retval += "BIGINT"; - } else { - retval += "DECIMAL(" + length + ")"; - } - } else if (type == IValueMeta.TYPE_BIGNUMBER) { - // Fixed point value... - if (length - < 1) { // user configured no value for length. Use 16 digits, which is comparable to - // mantissa 2^53 of IEEE 754 binary64 "double". - length = 16; - } - if (precision - < 1) { // user configured no value for precision. Use 16 digits, which is comparable - // to IEEE 754 binary64 "double". - precision = 16; - } - retval += "DECIMAL(" + length + "," + precision + ")"; - } else { - // Floating point value with double precision... - retval += "DOUBLE"; - } + retval += + switch (type) { + case IValueMeta.TYPE_INTEGER -> { + if (length < 3) { + yield "TINYINT"; + } else if (length < 5) { + yield "SMALLINT"; + } else if (length < 10) { + yield "INT"; + } else if (length < 20) { + yield "BIGINT"; + } else { + yield "DECIMAL(" + length + ")"; + } + } + case IValueMeta.TYPE_BIGNUMBER -> { + int p = (precision < 1) ? 16 : precision; + int len = (length < 1) ? 16 : length; + yield "DECIMAL(" + len + "," + p + ")"; + } + default -> "DOUBLE"; + }; } break; case IValueMeta.TYPE_STRING: diff --git a/plugins/databases/hypersonic/src/main/java/org/apache/hop/databases/hypersonic/HypersonicDatabaseMeta.java b/plugins/databases/hypersonic/src/main/java/org/apache/hop/databases/hypersonic/HypersonicDatabaseMeta.java index 5871ff65346..64f3ad7e72e 100644 --- a/plugins/databases/hypersonic/src/main/java/org/apache/hop/databases/hypersonic/HypersonicDatabaseMeta.java +++ b/plugins/databases/hypersonic/src/main/java/org/apache/hop/databases/hypersonic/HypersonicDatabaseMeta.java @@ -143,35 +143,26 @@ public String getFieldDefinition( retval.append( "BIGINT GENERATED BY DEFAULT AS IDENTITY(START WITH 0, INCREMENT BY 1) PRIMARY KEY"); } else { - if (type == IValueMeta.TYPE_INTEGER) { - // Integer values... - if (length < 3) { - retval.append("TINYINT"); - } else if (length < 5) { - retval.append("SMALLINT"); - } else if (length < 10) { - retval.append("INT"); - } else if (length < 20) { - retval.append("BIGINT"); - } else { - retval.append("DECIMAL(").append(length).append(")"); + switch (type) { + case IValueMeta.TYPE_INTEGER -> { + if (length < 3) { + retval.append("TINYINT"); + } else if (length < 5) { + retval.append("SMALLINT"); + } else if (length < 10) { + retval.append("INT"); + } else if (length < 20) { + retval.append("BIGINT"); + } else { + retval.append("DECIMAL(").append(length).append(")"); + } } - } else if (type == IValueMeta.TYPE_BIGNUMBER) { - // Fixed point value... - if (length - < 1) { // user configured no value for length. Use 16 digits, which is comparable to - // mantissa 2^53 of IEEE 754 binary64 "double". - length = 16; + case IValueMeta.TYPE_BIGNUMBER -> { + int p = (precision < 1) ? 16 : precision; + int len = (length < 1) ? 16 : length; + retval.append("DECIMAL(").append(len).append(",").append(p).append(")"); } - if (precision - < 1) { // user configured no value for precision. Use 16 digits, which is comparable - // to IEEE 754 binary64 "double". - precision = 16; - } - retval.append("DECIMAL(").append(length).append(",").append(precision).append(")"); - } else { - // Floating point value with double precision... - retval.append("DOUBLE PRECISION"); + default -> retval.append("DOUBLE PRECISION"); } } break; diff --git a/plugins/databases/informix/src/main/java/org/apache/hop/databases/informix/InformixDatabaseMeta.java b/plugins/databases/informix/src/main/java/org/apache/hop/databases/informix/InformixDatabaseMeta.java index 773f74a1372..43926d6e453 100644 --- a/plugins/databases/informix/src/main/java/org/apache/hop/databases/informix/InformixDatabaseMeta.java +++ b/plugins/databases/informix/src/main/java/org/apache/hop/databases/informix/InformixDatabaseMeta.java @@ -194,34 +194,26 @@ public String getFieldDefinition( retval += "INTEGER PRIMARY KEY"; } } else { - if (type == IValueMeta.TYPE_INTEGER) { - // Integer values... - if (length < 5) { - retval += "SMALLINT"; - } else if (length < 10) { - retval += "INT"; - } else if (length < 20) { - retval += "BIGINT"; - } else { - retval += "DECIMAL(" + length + ",0)"; - } - } else if (type == IValueMeta.TYPE_BIGNUMBER) { - // Fixed point value... - if (length - < 1) { // user configured no value for length. Use 16 digits, which is comparable to - // mantissa 2^53 of IEEE 754 binary64 "double". - length = 16; - } - if (precision - < 1) { // user configured no value for precision. Use 16 digits, which is comparable - // to IEEE 754 binary64 "double". - precision = 16; - } - retval += "DECIMAL(" + length + "," + precision + ")"; - } else { - // Floating point value with double precision... - retval += "FLOAT"; - } + retval += + switch (type) { + case IValueMeta.TYPE_INTEGER -> { + if (length < 5) { + yield "SMALLINT"; + } else if (length < 10) { + yield "INT"; + } else if (length < 20) { + yield "BIGINT"; + } else { + yield "DECIMAL(" + length + ",0)"; + } + } + case IValueMeta.TYPE_BIGNUMBER -> { + int p = (precision < 1) ? 16 : precision; + int len = (length < 1) ? 16 : length; + yield "DECIMAL(" + len + "," + p + ")"; + } + default -> "FLOAT"; + }; } break; case IValueMeta.TYPE_STRING: diff --git a/plugins/databases/ingres/src/main/java/org/apache/hop/databases/ingres/IngresDatabaseMeta.java b/plugins/databases/ingres/src/main/java/org/apache/hop/databases/ingres/IngresDatabaseMeta.java index ab40c92648d..ce2474d625b 100644 --- a/plugins/databases/ingres/src/main/java/org/apache/hop/databases/ingres/IngresDatabaseMeta.java +++ b/plugins/databases/ingres/src/main/java/org/apache/hop/databases/ingres/IngresDatabaseMeta.java @@ -171,36 +171,28 @@ public String getFieldDefinition( retval += "BIGINT PRIMARY KEY NOT NULL"; } } else { - if (type == IValueMeta.TYPE_INTEGER) { - // Integer values... - if (length < 3) { - retval += "TINYINT"; - } else if (length < 5) { - retval += "SMALLINT"; - } else if (length < 10) { - retval += "INT"; - } else if (length < 20) { - retval += "BIGINT"; - } else { - retval += "DECIMAL(" + length + ")"; - } - } else if (type == IValueMeta.TYPE_BIGNUMBER) { - // Fixed point value... - if (length - < 1) { // user configured no value for length. Use 16 digits, which is comparable to - // mantissa 2^53 of IEEE 754 binary64 "double". - length = 16; - } - if (precision - < 1) { // user configured no value for precision. Use 16 digits, which is comparable - // to IEEE 754 binary64 "double". - precision = 16; - } - retval += "DECIMAL(" + length + "," + precision + ")"; - } else { - // Floating point value with double precision... - retval += "FLOAT8"; - } + retval += + switch (type) { + case IValueMeta.TYPE_INTEGER -> { + if (length < 3) { + yield "TINYINT"; + } else if (length < 5) { + yield "SMALLINT"; + } else if (length < 10) { + yield "INT"; + } else if (length < 20) { + yield "BIGINT"; + } else { + yield "DECIMAL(" + length + ")"; + } + } + case IValueMeta.TYPE_BIGNUMBER -> { + int p = (precision < 1) ? 16 : precision; + int len = (length < 1) ? 16 : length; + yield "DECIMAL(" + len + "," + p + ")"; + } + default -> "FLOAT8"; + }; } break; case IValueMeta.TYPE_STRING: diff --git a/plugins/tech/aws/src/main/java/org/apache/hop/vfs/s3/metadata/S3MetaEditor.java b/plugins/tech/aws/src/main/java/org/apache/hop/vfs/s3/metadata/S3MetaEditor.java index 06b5ba6ffcb..b530a18a7e9 100644 --- a/plugins/tech/aws/src/main/java/org/apache/hop/vfs/s3/metadata/S3MetaEditor.java +++ b/plugins/tech/aws/src/main/java/org/apache/hop/vfs/s3/metadata/S3MetaEditor.java @@ -213,12 +213,10 @@ public void createControl(Composite parent) { wAuthType = new Combo(parent, SWT.BORDER | SWT.SINGLE | SWT.LEFT | SWT.READ_ONLY); PropsUi.setLook(wAuthType); wAuthType.setItems( - new String[] { - BaseMessages.getString(PKG, "S3Meta.AuthType.Default"), - BaseMessages.getString(PKG, "S3Meta.AuthType.AccessKeys"), - BaseMessages.getString(PKG, "S3Meta.AuthType.CredentialsFile"), - BaseMessages.getString(PKG, "S3Meta.AuthType.Anonymous"), - }); + BaseMessages.getString(PKG, "S3Meta.AuthType.Default"), + BaseMessages.getString(PKG, "S3Meta.AuthType.AccessKeys"), + BaseMessages.getString(PKG, "S3Meta.AuthType.CredentialsFile"), + BaseMessages.getString(PKG, "S3Meta.AuthType.Anonymous")); FormData fdAuthType = new FormData(); fdAuthType.top = new FormAttachment(wlAuthType, 0, SWT.CENTER); fdAuthType.left = new FormAttachment(middle, 0); @@ -521,34 +519,39 @@ public void getWidgetsContent(S3Meta meta) { meta.setCacheTtlSeconds(wCacheTtl.getText()); int authIdx = wAuthType.getSelectionIndex(); - if (authIdx == 1) { - meta.setAuthenticationType(S3AuthType.ACCESS_KEYS.name()); - meta.setAccessKey(wAccessKey.getText()); - meta.setSecretKey(wSecretKey.getText()); - meta.setSessionToken(wSessionToken.getText()); - meta.setCredentialsFile(null); - meta.setProfileName(null); - } else if (authIdx == 2) { - meta.setAuthenticationType(S3AuthType.CREDENTIALS_FILE.name()); - meta.setAccessKey(null); - meta.setSecretKey(null); - meta.setSessionToken(null); - meta.setCredentialsFile(wCredentialsFile.getText()); - meta.setProfileName(wProfileName.getText()); - } else if (authIdx == 3) { - meta.setAuthenticationType(S3AuthType.ANONYMOUS.name()); - meta.setAccessKey(null); - meta.setSecretKey(null); - meta.setSessionToken(null); - meta.setCredentialsFile(null); - meta.setProfileName(null); - } else { - meta.setAuthenticationType(S3AuthType.DEFAULT.name()); - meta.setAccessKey(null); - meta.setSecretKey(null); - meta.setSessionToken(null); - meta.setCredentialsFile(null); - meta.setProfileName(wProfileName.getText()); + switch (authIdx) { + case 1 -> { + meta.setAuthenticationType(S3AuthType.ACCESS_KEYS.name()); + meta.setAccessKey(wAccessKey.getText()); + meta.setSecretKey(wSecretKey.getText()); + meta.setSessionToken(wSessionToken.getText()); + meta.setCredentialsFile(null); + meta.setProfileName(null); + } + case 2 -> { + meta.setAuthenticationType(S3AuthType.CREDENTIALS_FILE.name()); + meta.setAccessKey(null); + meta.setSecretKey(null); + meta.setSessionToken(null); + meta.setCredentialsFile(wCredentialsFile.getText()); + meta.setProfileName(wProfileName.getText()); + } + case 3 -> { + meta.setAuthenticationType(S3AuthType.ANONYMOUS.name()); + meta.setAccessKey(null); + meta.setSecretKey(null); + meta.setSessionToken(null); + meta.setCredentialsFile(null); + meta.setProfileName(null); + } + default -> { + meta.setAuthenticationType(S3AuthType.DEFAULT.name()); + meta.setAccessKey(null); + meta.setSecretKey(null); + meta.setSessionToken(null); + meta.setCredentialsFile(null); + meta.setProfileName(wProfileName.getText()); + } } meta.setEndpoint(wEndpoint.getText()); meta.setPathStyleAccess(wPathStyle.getSelection()); diff --git a/plugins/tech/salesforce/src/main/java/org/apache/hop/metadata/salesforce/SalesforceConnectionEditor.java b/plugins/tech/salesforce/src/main/java/org/apache/hop/metadata/salesforce/SalesforceConnectionEditor.java index 09c6f9fc813..d7a40f2657a 100644 --- a/plugins/tech/salesforce/src/main/java/org/apache/hop/metadata/salesforce/SalesforceConnectionEditor.java +++ b/plugins/tech/salesforce/src/main/java/org/apache/hop/metadata/salesforce/SalesforceConnectionEditor.java @@ -1234,14 +1234,16 @@ public void getWidgetsContent(SalesforceConnection connection) { connection.setName(wName.getText()); int selectedIndex = wAuthType.getSelectionIndex(); - if (selectedIndex == 1) { - connection.setAuthenticationType("OAUTH"); - connection.setOauthApiVersion(wOAuthApiVersion.getText()); - } else if (selectedIndex == 2) { - connection.setAuthenticationType("OAUTH_JWT"); - connection.setOauthApiVersion(wOAuthJwtApiVersion.getText()); - } else { - connection.setAuthenticationType("USERNAME_PASSWORD"); + switch (selectedIndex) { + case 1 -> { + connection.setAuthenticationType("OAUTH"); + connection.setOauthApiVersion(wOAuthApiVersion.getText()); + } + case 2 -> { + connection.setAuthenticationType("OAUTH_JWT"); + connection.setOauthApiVersion(wOAuthJwtApiVersion.getText()); + } + default -> connection.setAuthenticationType("USERNAME_PASSWORD"); } // Username/Password fields diff --git a/plugins/transforms/coalesce/src/main/java/org/apache/hop/pipeline/transforms/coalesce/CoalesceMeta.java b/plugins/transforms/coalesce/src/main/java/org/apache/hop/pipeline/transforms/coalesce/CoalesceMeta.java index 945dca07513..02939ad58c4 100644 --- a/plugins/transforms/coalesce/src/main/java/org/apache/hop/pipeline/transforms/coalesce/CoalesceMeta.java +++ b/plugins/transforms/coalesce/src/main/java/org/apache/hop/pipeline/transforms/coalesce/CoalesceMeta.java @@ -210,9 +210,11 @@ public void check( List duplicateFields = new ArrayList<>(); for (String fieldName : coalesce.getInputFieldNames()) { - - if (fields.contains(fieldName)) duplicateFields.add(fieldName); - else fields.add(fieldName); + if (fields.contains(fieldName)) { + duplicateFields.add(fieldName); + } else { + fields.add(fieldName); + } IValueMeta vmi = prev.searchValueMeta(fieldName); if (vmi == null) { @@ -292,22 +294,21 @@ private int findDefaultValueType(final IRowMeta inputRowMeta, final CoalesceFiel // keep TYPE_STRING break; case IValueMeta.TYPE_INTEGER: - if (otherType == IValueMeta.TYPE_NUMBER) { - type = IValueMeta.TYPE_NUMBER; - } else if (otherType == IValueMeta.TYPE_BIGNUMBER) { - type = IValueMeta.TYPE_BIGNUMBER; - } else { - type = IValueMeta.TYPE_STRING; - } + type = + switch (otherType) { + case IValueMeta.TYPE_NUMBER -> IValueMeta.TYPE_NUMBER; + case IValueMeta.TYPE_BIGNUMBER -> IValueMeta.TYPE_BIGNUMBER; + default -> IValueMeta.TYPE_STRING; + }; break; + case IValueMeta.TYPE_NUMBER: - if (otherType == IValueMeta.TYPE_INTEGER) { - // keep TYPE_NUMBER - } else if (otherType == IValueMeta.TYPE_BIGNUMBER) { - type = IValueMeta.TYPE_BIGNUMBER; - } else { - type = IValueMeta.TYPE_STRING; - } + type = + switch (otherType) { + case IValueMeta.TYPE_INTEGER -> type; + case IValueMeta.TYPE_BIGNUMBER -> IValueMeta.TYPE_BIGNUMBER; + default -> IValueMeta.TYPE_STRING; + }; break; case IValueMeta.TYPE_DATE: @@ -325,13 +326,12 @@ private int findDefaultValueType(final IRowMeta inputRowMeta, final CoalesceFiel } break; case IValueMeta.TYPE_BIGNUMBER: - if (otherType == IValueMeta.TYPE_INTEGER) { - // keep TYPE_BIGNUMBER - } else if (otherType == IValueMeta.TYPE_NUMBER) { - // keep TYPE_BIGNUMBER - } else { - type = IValueMeta.TYPE_STRING; - } + type = + switch (otherType) { + // keep TYPE_BIGNUMBER + case IValueMeta.TYPE_INTEGER, IValueMeta.TYPE_NUMBER -> type; + default -> IValueMeta.TYPE_STRING; + }; break; case IValueMeta.TYPE_BOOLEAN, IValueMeta.TYPE_INET, diff --git a/plugins/transforms/denormaliser/src/main/java/org/apache/hop/pipeline/transforms/denormaliser/Denormaliser.java b/plugins/transforms/denormaliser/src/main/java/org/apache/hop/pipeline/transforms/denormaliser/Denormaliser.java index dbc2429e721..a782dd38d60 100644 --- a/plugins/transforms/denormaliser/src/main/java/org/apache/hop/pipeline/transforms/denormaliser/Denormaliser.java +++ b/plugins/transforms/denormaliser/src/main/java/org/apache/hop/pipeline/transforms/denormaliser/Denormaliser.java @@ -243,15 +243,13 @@ Object[] buildResult(IRowMeta rowMeta, Object[] rowData) throws HopValueExceptio long count = data.counters[i]; Object sum = data.sum[i]; if (count > 0) { - if (sum instanceof Long longValue) { - resultValue = longValue / count; - } else if (sum instanceof Double doubleValue) { - resultValue = doubleValue / count; - } else if (sum instanceof BigDecimal bigDecimalValue) { - resultValue = bigDecimalValue.divide(new BigDecimal(count)); - } else { - resultValue = null; - } + resultValue = + switch (sum) { + case Long l -> l / count; + case Double d -> d / count; + case BigDecimal bd -> bd.divide(BigDecimal.valueOf(count)); + default -> null; + }; } break; case TYPE_AGGR_COUNT_ALL: @@ -448,12 +446,14 @@ public void batchComplete() throws HopException { private IValueMeta getConversionMeta(String mask) { IValueMeta meta = null; if (!Utils.isEmpty(mask)) { - meta = conversionMetaCache.get(mask); - if (meta == null) { - meta = new ValueMetaDate(); - meta.setConversionMask(mask); - conversionMetaCache.put(mask, meta); - } + meta = + conversionMetaCache.computeIfAbsent( + mask, + key -> { + ValueMetaDate m = new ValueMetaDate(); + m.setConversionMask(key); + return m; + }); } return meta; } diff --git a/plugins/transforms/edi2xml/src/main/java/org/apache/hop/pipeline/transforms/edi2xml/grammar/FastSimpleGenericEdifactDirectXMLParser.java b/plugins/transforms/edi2xml/src/main/java/org/apache/hop/pipeline/transforms/edi2xml/grammar/FastSimpleGenericEdifactDirectXMLParser.java index 33ad1daaafd..8dde30c25d2 100644 --- a/plugins/transforms/edi2xml/src/main/java/org/apache/hop/pipeline/transforms/edi2xml/grammar/FastSimpleGenericEdifactDirectXMLParser.java +++ b/plugins/transforms/edi2xml/src/main/java/org/apache/hop/pipeline/transforms/edi2xml/grammar/FastSimpleGenericEdifactDirectXMLParser.java @@ -39,7 +39,7 @@ import org.antlr.stringtemplate.StringTemplate; import org.antlr.stringtemplate.StringTemplateGroup; import org.antlr.stringtemplate.language.AngleBracketTemplateLexer; -import org.apache.commons.lang3.StringEscapeUtils; +import org.apache.commons.text.StringEscapeUtils; @SuppressWarnings("java:S1104") public class FastSimpleGenericEdifactDirectXMLParser extends Parser { diff --git a/plugins/transforms/mongodb/src/main/java/org/apache/hop/mongo/wrapper/field/MongoArrayExpansion.java b/plugins/transforms/mongodb/src/main/java/org/apache/hop/mongo/wrapper/field/MongoArrayExpansion.java index 74aa12a4c4d..fa2f661bfff 100644 --- a/plugins/transforms/mongodb/src/main/java/org/apache/hop/mongo/wrapper/field/MongoArrayExpansion.java +++ b/plugins/transforms/mongodb/src/main/java/org/apache/hop/mongo/wrapper/field/MongoArrayExpansion.java @@ -194,14 +194,13 @@ public Object[][] convertToHopValue(List mongoList, IVariables variables) thr sf.reset(variables); // what have we got? - if (element instanceof Document doc) { - result[i][sf.outputIndex] = sf.convertToHopValue(doc); - } else if (element instanceof List list) { - result[i][sf.outputIndex] = sf.convertToHopValue(list); - } else { - // assume a primitive - result[i][sf.outputIndex] = sf.getHopValue(element); - } + result[i][sf.outputIndex] = + switch (element) { + case Document doc -> sf.convertToHopValue(doc); + case List list -> sf.convertToHopValue(list); + // assume a primitive + default -> sf.getHopValue(element); + }; } } diff --git a/plugins/transforms/mongodb/src/main/java/org/apache/hop/mongo/wrapper/field/MongoField.java b/plugins/transforms/mongodb/src/main/java/org/apache/hop/mongo/wrapper/field/MongoField.java index 68621ded131..47db29132a9 100644 --- a/plugins/transforms/mongodb/src/main/java/org/apache/hop/mongo/wrapper/field/MongoField.java +++ b/plugins/transforms/mongodb/src/main/java/org/apache/hop/mongo/wrapper/field/MongoField.java @@ -19,6 +19,7 @@ import com.fasterxml.jackson.databind.JsonNode; import java.math.BigDecimal; +import java.nio.charset.StandardCharsets; import java.util.ArrayList; import java.util.Collections; import java.util.Date; @@ -178,13 +179,12 @@ public Object getHopValue(Object fieldValue) throws HopException { return switch (tempValueMeta.getType()) { case IValueMeta.TYPE_BIGNUMBER -> { - if (fieldValue instanceof Number number) { - fieldValue = BigDecimal.valueOf(number.doubleValue()); - } else if (fieldValue instanceof Date date) { - fieldValue = new BigDecimal(date.getTime()); - } else { - fieldValue = new BigDecimal(fieldValue.toString()); - } + fieldValue = + switch (fieldValue) { + case Number number -> BigDecimal.valueOf(number.doubleValue()); + case Date date -> BigDecimal.valueOf(date.getTime()); + default -> new BigDecimal(fieldValue.toString()); + }; yield tempValueMeta.getBigNumber(fieldValue); } case IValueMeta.TYPE_BINARY -> { @@ -221,27 +221,27 @@ public Object getHopValue(Object fieldValue) throws HopException { yield tempValueMeta.getDate(fieldValue); } case IValueMeta.TYPE_INTEGER -> { - if (fieldValue instanceof Number number) { - fieldValue = (long) number.intValue(); - } else if (fieldValue instanceof Binary binary) { - byte[] b = binary.getData(); - String s = new String(b); - fieldValue = Long.valueOf(s); - } else { - fieldValue = Long.valueOf(fieldValue.toString()); - } + fieldValue = + switch (fieldValue) { + case Number number -> number.longValue(); + case Binary binary -> { + String s = new String(binary.getData(), StandardCharsets.UTF_8); + yield Long.valueOf(s); + } + default -> Long.valueOf(fieldValue.toString()); + }; yield tempValueMeta.getInteger(fieldValue); } case IValueMeta.TYPE_NUMBER -> { - if (fieldValue instanceof Number number) { - fieldValue = number.doubleValue(); - } else if (fieldValue instanceof Binary binary) { - byte[] b = binary.getData(); - String s = new String(b); - fieldValue = Double.valueOf(s); - } else { - fieldValue = Double.valueOf(fieldValue.toString()); - } + fieldValue = + switch (fieldValue) { + case Number number -> number.doubleValue(); + case Binary binary -> { + String s = new String(binary.getData(), StandardCharsets.UTF_8); + yield Double.valueOf(s); + } + default -> Double.valueOf(fieldValue.toString()); + }; yield tempValueMeta.getNumber(fieldValue); } case IValueMeta.TYPE_STRING -> tempValueMeta.getString(fieldValue); diff --git a/plugins/transforms/mongodb/src/main/java/org/apache/hop/mongo/wrapper/field/MongodbInputDiscoverFieldsImpl.java b/plugins/transforms/mongodb/src/main/java/org/apache/hop/mongo/wrapper/field/MongodbInputDiscoverFieldsImpl.java index a84ab06e300..250ca547130 100644 --- a/plugins/transforms/mongodb/src/main/java/org/apache/hop/mongo/wrapper/field/MongodbInputDiscoverFieldsImpl.java +++ b/plugins/transforms/mongodb/src/main/java/org/apache/hop/mongo/wrapper/field/MongodbInputDiscoverFieldsImpl.java @@ -288,40 +288,35 @@ private static void processRecord( for (String key : rec.keySet()) { Object fieldValue = rec.get(key); - if (fieldValue instanceof Document subDoc) { - processRecord(subDoc, path + "." + key, name + "." + key, lookup); - } else if (fieldValue instanceof List list) { - processList(list, path + "." + key, name + "." + key, lookup); - } else { - // some sort of primitive - String finalPath = path + "." + key; - String finalName = name + "." + key; - if (!lookup.containsKey(finalPath)) { - MongoField newField = new MongoField(); - int hopType = mongoToHopType(fieldValue); - // Following suit of mongoToHopType by interpreting null as String type - newField.mongoType = String.class; - if (fieldValue != null) { - newField.mongoType = fieldValue.getClass(); - } - newField.fieldName = finalName; - newField.fieldPath = finalPath; - newField.hopType = IValueMeta.getTypeDescription(hopType); - newField.percentageOfSample = 1; + switch (fieldValue) { + case Document subDoc -> processRecord(subDoc, path + "." + key, name + "." + key, lookup); + case List list -> processList(list, path + "." + key, name + "." + key, lookup); + default -> { + String finalPath = path + "." + key; + String finalName = name + "." + key; - lookup.put(finalPath, newField); - } else { - // update max indexes in array parts of name MongoField m = lookup.get(finalPath); - Class fieldClass = String.class; - if (fieldValue != null) { - fieldClass = fieldValue.getClass(); + Class fieldClass = (fieldValue == null) ? String.class : fieldValue.getClass(); + + if (m == null) { + MongoField newField = new MongoField(); + int hopType = mongoToHopType(fieldValue); + + newField.mongoType = fieldClass; + newField.fieldName = finalName; + newField.fieldPath = finalPath; + newField.hopType = IValueMeta.getTypeDescription(hopType); + newField.percentageOfSample = 1; + + lookup.put(finalPath, newField); + } else { + if (!m.mongoType.isAssignableFrom(fieldClass)) { + m.disparateTypes = true; + } + + m.percentageOfSample++; + updateMinMaxArrayIndexes(m, finalName); } - if (!m.mongoType.isAssignableFrom(fieldClass)) { - m.disparateTypes = true; - } - m.percentageOfSample++; - updateMinMaxArrayIndexes(m, finalName); } } } @@ -340,41 +335,38 @@ private static void processList( for (int i = 0; i < list.size(); i++) { Object element = list.get(i); + switch (element) { + case Document doc -> + processRecord(doc, nonPrimitivePath, name + "[" + i + ":" + i + "]", lookup); + case List subList -> + processList(subList, nonPrimitivePath, name + "[" + i + ":" + i + "]", lookup); + default -> { + // primitive handling + String finalPath = primitivePath + "[" + i + "]"; + String finalName = name + "[" + i + "]"; - if (element instanceof Document doc) { - processRecord(doc, nonPrimitivePath, name + "[" + i + ":" + i + "]", lookup); - } else if (element instanceof List subList) { - processList(subList, nonPrimitivePath, name + "[" + i + ":" + i + "]", lookup); - } else { - // some sort of primitive - String finalPath = primitivePath + "[" + i + "]"; - String finalName = name + "[" + i + "]"; - if (!lookup.containsKey(finalPath)) { - MongoField newField = new MongoField(); - int hopType = mongoToHopType(element); - // Following suit of mongoToHopType by interpreting null as String type - newField.mongoType = String.class; - if (element != null) { - newField.mongoType = element.getClass(); - } - newField.fieldName = finalPath; - newField.fieldPath = finalName; - newField.hopType = IValueMeta.getTypeDescription(hopType); - newField.percentageOfSample = 1; - - lookup.put(finalPath, newField); - } else { - // update max indexes in array parts of name MongoField m = lookup.get(finalPath); - Class elementClass = String.class; - if (element != null) { - elementClass = element.getClass(); - } - if (!m.mongoType.isAssignableFrom(elementClass)) { - m.disparateTypes = true; + if (m == null) { + MongoField newField = new MongoField(); + int hopType = mongoToHopType(element); + + newField.mongoType = (element == null) ? String.class : element.getClass(); + newField.fieldName = finalPath; + newField.fieldPath = finalName; + newField.hopType = IValueMeta.getTypeDescription(hopType); + newField.percentageOfSample = 1; + + lookup.put(finalPath, newField); + } else { + Class elementClass = (element == null) ? String.class : element.getClass(); + + if (!m.mongoType.isAssignableFrom(elementClass)) { + m.disparateTypes = true; + } + + m.percentageOfSample++; + updateMinMaxArrayIndexes(m, finalName); } - m.percentageOfSample++; - updateMinMaxArrayIndexes(m, finalName); } } } diff --git a/plugins/transforms/repeatfields/src/main/java/org/apache/hop/pipeline/transforms/repeatfields/RepeatFields.java b/plugins/transforms/repeatfields/src/main/java/org/apache/hop/pipeline/transforms/repeatfields/RepeatFields.java index 03508776aa4..e13a0bc5e91 100644 --- a/plugins/transforms/repeatfields/src/main/java/org/apache/hop/pipeline/transforms/repeatfields/RepeatFields.java +++ b/plugins/transforms/repeatfields/src/main/java/org/apache/hop/pipeline/transforms/repeatfields/RepeatFields.java @@ -103,12 +103,12 @@ public boolean processRow() throws HopException { // What do we need to do? switch (repeat.getType()) { case Previous -> targetValue = getPreviousValue(sourceValue, targetIndex); - case PreviousWhenNull -> { - // If the source value is null, take the previous value. - if (sourceValueMeta.isNull(sourceValue)) { - targetValue = getPreviousValue(null, targetIndex); - } - } + case PreviousWhenNull -> + // If the source value is null, take the previous value. + targetValue = + sourceValueMeta.isNull(sourceValue) + ? getPreviousValue(null, targetIndex) + : targetValue; case CurrentWhenIndicated -> targetValue = getCurrentValueWhenIndicated(i, repeat, r, sourceValue, targetIndex); } diff --git a/plugins/transforms/verticabulkloader/src/main/java/org/apache/hop/pipeline/transforms/vertica/bulkloader/VerticaBulkLoader.java b/plugins/transforms/verticabulkloader/src/main/java/org/apache/hop/pipeline/transforms/vertica/bulkloader/VerticaBulkLoader.java index 156142af755..5e0dbe933fa 100644 --- a/plugins/transforms/verticabulkloader/src/main/java/org/apache/hop/pipeline/transforms/vertica/bulkloader/VerticaBulkLoader.java +++ b/plugins/transforms/verticabulkloader/src/main/java/org/apache/hop/pipeline/transforms/vertica/bulkloader/VerticaBulkLoader.java @@ -34,7 +34,6 @@ import java.util.List; import java.util.concurrent.Executors; import java.util.stream.Collectors; -import javax.sql.PooledConnection; import org.apache.commons.dbcp2.DelegatingConnection; import org.apache.hop.core.database.Database; import org.apache.hop.core.database.DatabaseMeta; @@ -328,7 +327,7 @@ private ColumnSpec getColumnSpecFromField( return new ColumnSpec(ColumnSpec.VariableWidthType.VARCHAR, targetValueMeta.getLength()); } case "DATE" -> { - if (inputValueMeta.isDate() == false) { + if (!inputValueMeta.isDate()) { throw new IllegalArgumentException( CONST_FIELD + inputValueMeta.getName() @@ -339,7 +338,7 @@ private ColumnSpec getColumnSpecFromField( } } case "TIME" -> { - if (inputValueMeta.isDate() == false) { + if (!inputValueMeta.isDate()) { throw new IllegalArgumentException( CONST_FIELD + inputValueMeta.getName() @@ -350,7 +349,7 @@ private ColumnSpec getColumnSpecFromField( } } case "TIMETZ" -> { - if (inputValueMeta.isDate() == false) { + if (!inputValueMeta.isDate()) { throw new IllegalArgumentException( CONST_FIELD + inputValueMeta.getName() @@ -361,7 +360,7 @@ private ColumnSpec getColumnSpecFromField( } } case "TIMESTAMP" -> { - if (inputValueMeta.isDate() == false) { + if (!inputValueMeta.isDate()) { throw new IllegalArgumentException( CONST_FIELD + inputValueMeta.getName() @@ -372,7 +371,7 @@ private ColumnSpec getColumnSpecFromField( } } case "TIMESTAMPTZ" -> { - if (inputValueMeta.isDate() == false) { + if (!inputValueMeta.isDate()) { throw new IllegalArgumentException( CONST_FIELD + inputValueMeta.getName() @@ -383,7 +382,7 @@ private ColumnSpec getColumnSpecFromField( } } case "INTERVAL", "INTERVAL DAY TO SECOND" -> { - if (inputValueMeta.isDate() == false) { + if (!inputValueMeta.isDate()) { throw new IllegalArgumentException( CONST_FIELD + inputValueMeta.getName() @@ -501,7 +500,7 @@ private String buildCopyStatementSqlString() { .append("' "); } - // TODO: Should eventually get a preference for this, but for now, be backward compatible. + // Should eventually get a preference for this, but for now, be backward compatible. sb.append("ENFORCELENGTH "); if (meta.isAbortOnError()) { @@ -692,24 +691,22 @@ VerticaConnection getVerticaConnection() throws SQLException { if (conn instanceof VerticaConnection verticaConnection) { return verticaConnection; } else { - Connection underlyingConn = null; - if (conn instanceof DelegatingConnection delegatingConnection) { - DelegatingConnection pooledConn = delegatingConnection; - underlyingConn = pooledConn.getInnermostDelegate(); - } else if (conn instanceof javax.sql.PooledConnection pooledConnection) { - PooledConnection pooledConn = pooledConnection; - underlyingConn = pooledConn.getConnection(); - } else { - // Last resort - attempt to use unwrap to get at the connection. - try { - if (conn.isWrapperFor(VerticaConnection.class)) { - return conn.unwrap(VerticaConnection.class); - } - } catch (SQLException ignored) { - // ignored - the connection doesn't support unwrap or the connection cannot be - // unwrapped into a VerticaConnection. - } - } + Connection underlyingConn = + switch (conn) { + case DelegatingConnection delegating -> delegating.getInnermostDelegate(); + case javax.sql.PooledConnection pooled -> pooled.getConnection(); + default -> { + try { + if (conn.isWrapperFor(VerticaConnection.class)) { + yield conn.unwrap(VerticaConnection.class); + } + } catch (SQLException ignored) { + // ignored - the connection doesn't support unwrap or the connection cannot be + // unwrapped into a VerticaConnection. + } + yield null; + } + }; if ((underlyingConn != null) && (underlyingConn instanceof VerticaConnection verticaConnection)) { return verticaConnection; diff --git a/plugins/transforms/webservices/src/main/java/org/apache/hop/pipeline/transforms/webservices/WebService.java b/plugins/transforms/webservices/src/main/java/org/apache/hop/pipeline/transforms/webservices/WebService.java index b03b89c9bdc..0563b5a9175 100644 --- a/plugins/transforms/webservices/src/main/java/org/apache/hop/pipeline/transforms/webservices/WebService.java +++ b/plugins/transforms/webservices/src/main/java/org/apache/hop/pipeline/transforms/webservices/WebService.java @@ -406,31 +406,36 @@ private synchronized void requestSOAP(Object[] rowData, IRowMeta rowMeta) throws cachedHttpClient.execute(vHttpMethod, cachedHostConfiguration); responseCode = httpResponse.getCode(); } - if (responseCode == HttpStatus.SC_OK) { - httpEntity = httpResponse.getEntity(); - charSet = StandardCharsets.UTF_8; - processRows( - httpEntity.getContent(), - rowData, - rowMeta, - cachedWsdl.getWsdlTypes().isElementFormQualified(cachedWsdl.getTargetNamespace()), - charSet.toString()); - } else if (responseCode == HttpStatus.SC_UNAUTHORIZED) { - throw new HopTransformException( - BaseMessages.getString(PKG, "WebServices.ERROR0011.Authentication", cachedURLService)); - } else if (responseCode == HttpStatus.SC_NOT_FOUND) { - throw new HopTransformException( - BaseMessages.getString(PKG, "WebServices.ERROR0012.NotFound", cachedURLService)); - } else if (responseCode == HttpStatus.SC_INTERNAL_SERVER_ERROR) { - throw new HopTransformException("Internal Server Error 500: " + cachedURLService); - } else { - throw new HopTransformException( - BaseMessages.getString( - PKG, - "WebServices.ERROR0001.ServerError", - Integer.toString(responseCode), - Const.NVL(readEntity(httpEntity, charSet.toString()), ""), - cachedURLService)); + + switch (responseCode) { + case HttpStatus.SC_OK -> { + httpEntity = httpResponse.getEntity(); + charSet = StandardCharsets.UTF_8; + + processRows( + httpEntity.getContent(), + rowData, + rowMeta, + cachedWsdl.getWsdlTypes().isElementFormQualified(cachedWsdl.getTargetNamespace()), + charSet.toString()); + } + case HttpStatus.SC_UNAUTHORIZED -> + throw new HopTransformException( + BaseMessages.getString( + PKG, "WebServices.ERROR0011.Authentication", cachedURLService)); + case HttpStatus.SC_NOT_FOUND -> + throw new HopTransformException( + BaseMessages.getString(PKG, "WebServices.ERROR0012.NotFound", cachedURLService)); + case HttpStatus.SC_INTERNAL_SERVER_ERROR -> + throw new HopTransformException("Internal Server Error 500: " + cachedURLService); + default -> + throw new HopTransformException( + BaseMessages.getString( + PKG, + "WebServices.ERROR0001.ServerError", + Integer.toString(responseCode), + Const.NVL(readEntity(httpEntity, charSet.toString()), ""), + cachedURLService)); } } catch (UnknownHostException e) { throw new HopTransformException( diff --git a/plugins/transforms/webservices/src/main/java/org/apache/hop/pipeline/transforms/webservices/wsdl/WsdlUtils.java b/plugins/transforms/webservices/src/main/java/org/apache/hop/pipeline/transforms/webservices/wsdl/WsdlUtils.java index 0ff317c4db5..32a2275bd60 100644 --- a/plugins/transforms/webservices/src/main/java/org/apache/hop/pipeline/transforms/webservices/wsdl/WsdlUtils.java +++ b/plugins/transforms/webservices/src/main/java/org/apache/hop/pipeline/transforms/webservices/wsdl/WsdlUtils.java @@ -43,6 +43,8 @@ /** Utilities for getting extensibility elements. */ final class WsdlUtils { + private WsdlUtils() {} + // extensibility element names private static final String SOAP_PORT_ADDRESS_NAME = "address"; private static final String SOAP_BINDING_ELEMENT_NAME = "binding"; @@ -99,16 +101,17 @@ protected static String getSOAPBindingStyle(Binding binding) throws HopException findExtensibilityElement((ElementExtensible) binding, SOAP_BINDING_ELEMENT_NAME); if (soapBindingElem != null) { - if (soapBindingElem instanceof SOAP12Binding soap12Binding) { - style = soap12Binding.getStyle(); - } else if (soapBindingElem instanceof SOAPBinding soapBinding) { - style = soapBinding.getStyle(); - } else { - throw new HopException( - "Binding type " - + soapBindingElem - + " encountered. The Web Service Lookup transform only supports SOAP Bindings!"); - } + style = + switch (soapBindingElem) { + case SOAP12Binding soap12Binding -> soap12Binding.getStyle(); + case SOAPBinding soapBinding -> soapBinding.getStyle(); + + default -> + throw new HopException( + "Binding type " + + soapBindingElem + + " encountered. The Web Service Lookup transform only supports SOAP Bindings!"); + }; } return style; } @@ -234,7 +237,7 @@ protected static HashSet getSOAPHeaders(Binding binding, String operatio (ElementExtensible) bindingOutput, SOAP_HEADER_ELEMENT_NAME)); } - HashSet headerSet = new HashSet<>(headers.size()); + HashSet headerSet = HashSet.newHashSet(headers.size()); for (ExtensibilityElement element : headers) { if (element instanceof SOAP12Header soap12Header) { headerSet.add(soap12Header.getPart()); diff --git a/ui/src/main/java/org/apache/hop/ui/core/dialog/EnterTextDialog.java b/ui/src/main/java/org/apache/hop/ui/core/dialog/EnterTextDialog.java index 2a3e4ee5a7c..5b81f3ee313 100644 --- a/ui/src/main/java/org/apache/hop/ui/core/dialog/EnterTextDialog.java +++ b/ui/src/main/java/org/apache/hop/ui/core/dialog/EnterTextDialog.java @@ -237,12 +237,10 @@ public void checkCancel(ShellEvent e) { String newText = wDesc.getText(); if (!newText.equals(origText)) { int save = HopGuiWorkflowGraph.showChangedWarning(shell, title); - if (save == SWT.CANCEL) { - e.doit = false; - } else if (save == SWT.YES) { - ok(); - } else { - cancel(); + switch (save) { + case SWT.CANCEL -> e.doit = false; + case SWT.YES -> ok(); + default -> cancel(); } } else { cancel(); diff --git a/ui/src/main/java/org/apache/hop/ui/hopgui/terminal/HopGuiTerminalPanel.java b/ui/src/main/java/org/apache/hop/ui/hopgui/terminal/HopGuiTerminalPanel.java index e74d0e9bd35..c7c3be790b0 100644 --- a/ui/src/main/java/org/apache/hop/ui/hopgui/terminal/HopGuiTerminalPanel.java +++ b/ui/src/main/java/org/apache/hop/ui/hopgui/terminal/HopGuiTerminalPanel.java @@ -801,7 +801,7 @@ public void restoreTerminals() { && fontSizeState.getStateMap() != null && fontSizeState.getStateMap().get("value") != null) { int saved = Const.toInt(fontSizeState.getStateMap().get("value").toString(), 100); - terminalFontSizePercent = Math.max(50, Math.min(200, saved)); + terminalFontSizePercent = Math.clamp(saved, 50, 200); } if (auditList.getNames().isEmpty()) { diff --git a/ui/src/main/java/org/apache/hop/ui/hopgui/terminal/JediTerminalWidget.java b/ui/src/main/java/org/apache/hop/ui/hopgui/terminal/JediTerminalWidget.java index 983cbb7f122..a88b30d74fd 100644 --- a/ui/src/main/java/org/apache/hop/ui/hopgui/terminal/JediTerminalWidget.java +++ b/ui/src/main/java/org/apache/hop/ui/hopgui/terminal/JediTerminalWidget.java @@ -26,15 +26,15 @@ import com.pty4j.PtyProcess; import com.pty4j.PtyProcessBuilder; import com.pty4j.WinSize; -import java.awt.Frame; +import java.awt.*; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; -import java.lang.reflect.Method; import java.nio.charset.StandardCharsets; import java.util.HashMap; import java.util.Map; import java.util.concurrent.atomic.AtomicInteger; +import org.apache.commons.lang3.reflect.MethodUtils; import org.apache.hop.core.Const; import org.apache.hop.core.logging.LogChannel; import org.apache.hop.ui.core.PropsUi; @@ -43,7 +43,6 @@ import org.eclipse.swt.custom.StyledText; import org.eclipse.swt.events.KeyAdapter; import org.eclipse.swt.events.KeyEvent; -import org.eclipse.swt.events.TraverseEvent; import org.eclipse.swt.events.TraverseListener; import org.eclipse.swt.graphics.Rectangle; import org.eclipse.swt.layout.FormAttachment; @@ -76,7 +75,7 @@ public JediTerminalWidget( Composite parent, String shellPath, String workingDirectory, int fontScalePercent) { this.shellPath = shellPath; this.workingDirectory = workingDirectory; - this.fontScalePercent.set(Math.max(50, Math.min(200, fontScalePercent))); + this.fontScalePercent.set(Math.clamp(fontScalePercent, 50, 200)); createWidget(parent, parent.getDisplay()); @@ -143,42 +142,38 @@ public void createWidget(Composite parent, Display display) { // Defer focus until after terminal initialization bridgeComposite.addListener( SWT.FocusIn, - event -> { - display.asyncExec( - () -> { - if (bridgeComposite.isDisposed() || jediTermWidget == null) { - return; - } - new Thread( - () -> { - try { - java.awt.EventQueue.invokeLater( - () -> { - if (jediTermWidget != null) { - try { - jediTermWidget.requestFocusInWindow(); - } catch (Exception e) { - log.logDebug("Could not request focus: " + e.getMessage()); + event -> + display.asyncExec( + () -> { + if (bridgeComposite.isDisposed() || jediTermWidget == null) { + return; + } + new Thread( + () -> { + try { + java.awt.EventQueue.invokeLater( + () -> { + if (jediTermWidget != null) { + try { + jediTermWidget.requestFocusInWindow(); + } catch (Exception e) { + log.logDebug("Could not request focus: " + e.getMessage()); + } } - } - }); - } catch (Exception e) { - log.logDebug("Error requesting AWT focus: " + e.getMessage()); - } - }) - .start(); - }); - }); + }); + } catch (Exception e) { + log.logDebug("Error requesting AWT focus: " + e.getMessage()); + } + }) + .start(); + })); // Override tab listener and send it to jediTerm if (Const.isLinux()) { TraverseListener tabTraverse = - new TraverseListener() { - @Override - public void keyTraversed(TraverseEvent e) { - if (e.detail == SWT.TRAVERSE_TAB_NEXT || e.detail == SWT.TRAVERSE_TAB_PREVIOUS) { - e.doit = false; - } + e -> { + if (e.detail == SWT.TRAVERSE_TAB_NEXT || e.detail == SWT.TRAVERSE_TAB_PREVIOUS) { + e.doit = false; } }; KeyAdapter tabKey = @@ -299,7 +294,7 @@ public float getTerminalFontSize() { @Override public void setFontScalePercent(int percent) { - int clamped = Math.max(50, Math.min(200, percent)); + int clamped = Math.clamp(percent, 50, 200); fontScalePercent.set(clamped); if (jediTermWidget == null) { return; @@ -313,9 +308,7 @@ public void setFontScalePercent(int percent) { () -> { try { TerminalPanel panel = jediTermWidget.getTerminalPanel(); - Method reinit = TerminalPanel.class.getDeclaredMethod("reinitFontAndResize"); - reinit.setAccessible(true); - reinit.invoke(panel); + MethodUtils.invokeMethod(panel, true, "reinitFontAndResize"); } catch (Exception e) { log.logDebug("Terminal font reinit: " + e.getMessage()); } From c8df95f4bab5dd2eaee6c65345840d4b51ee3ad3 Mon Sep 17 00:00:00 2001 From: lance Date: Thu, 16 Apr 2026 19:32:13 +0800 Subject: [PATCH 2/2] Refactor: Replace if-else chains with switch expressions for better readability Signed-off-by: lance --- .../org/apache/hop/ui/hopgui/terminal/JediTerminalWidget.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ui/src/main/java/org/apache/hop/ui/hopgui/terminal/JediTerminalWidget.java b/ui/src/main/java/org/apache/hop/ui/hopgui/terminal/JediTerminalWidget.java index a88b30d74fd..4b4914ced81 100644 --- a/ui/src/main/java/org/apache/hop/ui/hopgui/terminal/JediTerminalWidget.java +++ b/ui/src/main/java/org/apache/hop/ui/hopgui/terminal/JediTerminalWidget.java @@ -26,7 +26,7 @@ import com.pty4j.PtyProcess; import com.pty4j.PtyProcessBuilder; import com.pty4j.WinSize; -import java.awt.*; +import java.awt.Frame; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream;