You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@shardingsphere.apache.org by pa...@apache.org on 2020/10/15 08:13:06 UTC

[shardingsphere] branch master updated: use labmda to optimize enum match (#7798)

This is an automated email from the ASF dual-hosted git repository.

panjuan pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/shardingsphere.git


The following commit(s) were added to refs/heads/master by this push:
     new d3dac04  use labmda to optimize enum match (#7798)
d3dac04 is described below

commit d3dac041121dba432f12e873a4801d07fa375a89
Author: xiaoyu <54...@qq.com>
AuthorDate: Thu Oct 15 16:12:35 2020 +0800

    use labmda to optimize enum match (#7798)
---
 .../sql/common/constant/AggregationType.java       |  9 ++----
 .../sql/common/constant/LogicalOperator.java       |  7 +----
 .../sql/parser/sql/common/constant/Paren.java      | 15 ++--------
 .../parser/sql/common/constant/QuoteCharacter.java |  8 ++----
 .../sql/common/constant/AggregationTypeTest.java}  | 32 ++++++++++------------
 5 files changed, 23 insertions(+), 48 deletions(-)

diff --git a/shardingsphere-sql-parser/shardingsphere-sql-parser-statement/src/main/java/org/apache/shardingsphere/sql/parser/sql/common/constant/AggregationType.java b/shardingsphere-sql-parser/shardingsphere-sql-parser-statement/src/main/java/org/apache/shardingsphere/sql/parser/sql/common/constant/AggregationType.java
index b3f251c..d67e713 100644
--- a/shardingsphere-sql-parser/shardingsphere-sql-parser-statement/src/main/java/org/apache/shardingsphere/sql/parser/sql/common/constant/AggregationType.java
+++ b/shardingsphere-sql-parser/shardingsphere-sql-parser-statement/src/main/java/org/apache/shardingsphere/sql/parser/sql/common/constant/AggregationType.java
@@ -17,6 +17,8 @@
 
 package org.apache.shardingsphere.sql.parser.sql.common.constant;
 
+import java.util.Arrays;
+
 /**
  * Aggregation function enum.
  */
@@ -30,11 +32,6 @@ public enum AggregationType {
      * @return is aggregation type or not
      */
     public static boolean isAggregationType(final String aggregationType) {
-        for (AggregationType each : values()) {
-            if (aggregationType.equalsIgnoreCase(each.name())) {
-                return true;
-            }
-        }
-        return false;
+        return Arrays.stream(values()).anyMatch(each -> aggregationType.equalsIgnoreCase(each.name()));
     }
 }
diff --git a/shardingsphere-sql-parser/shardingsphere-sql-parser-statement/src/main/java/org/apache/shardingsphere/sql/parser/sql/common/constant/LogicalOperator.java b/shardingsphere-sql-parser/shardingsphere-sql-parser-statement/src/main/java/org/apache/shardingsphere/sql/parser/sql/common/constant/LogicalOperator.java
index b57cabc..75a12a9 100644
--- a/shardingsphere-sql-parser/shardingsphere-sql-parser-statement/src/main/java/org/apache/shardingsphere/sql/parser/sql/common/constant/LogicalOperator.java
+++ b/shardingsphere-sql-parser/shardingsphere-sql-parser-statement/src/main/java/org/apache/shardingsphere/sql/parser/sql/common/constant/LogicalOperator.java
@@ -43,11 +43,6 @@ public enum LogicalOperator {
      * @return logical operator value
      */
     public static Optional<LogicalOperator> valueFrom(final String text) {
-        for (LogicalOperator each : values()) {
-            if (each.texts.contains(text)) {
-                return Optional.of(each);
-            }
-        }
-        return Optional.empty();
+        return Arrays.stream(values()).filter(each -> each.texts.contains(text)).findFirst();
     }
 }
diff --git a/shardingsphere-sql-parser/shardingsphere-sql-parser-statement/src/main/java/org/apache/shardingsphere/sql/parser/sql/common/constant/Paren.java b/shardingsphere-sql-parser/shardingsphere-sql-parser-statement/src/main/java/org/apache/shardingsphere/sql/parser/sql/common/constant/Paren.java
index 5799704..d97dead 100644
--- a/shardingsphere-sql-parser/shardingsphere-sql-parser-statement/src/main/java/org/apache/shardingsphere/sql/parser/sql/common/constant/Paren.java
+++ b/shardingsphere-sql-parser/shardingsphere-sql-parser-statement/src/main/java/org/apache/shardingsphere/sql/parser/sql/common/constant/Paren.java
@@ -17,6 +17,7 @@
 
 package org.apache.shardingsphere.sql.parser.sql.common.constant;
 
+import java.util.Arrays;
 import lombok.Getter;
 import lombok.RequiredArgsConstructor;
 
@@ -40,12 +41,7 @@ public enum Paren {
      * @return is left paren or not
      */
     public static boolean isLeftParen(final char token) {
-        for (Paren each : values()) {
-            if (each.leftParen == token) {
-                return true;
-            }
-        }
-        return false;
+        return Arrays.stream(values()).anyMatch(each -> each.leftParen == token);
     }
     
     /**
@@ -56,11 +52,6 @@ public enum Paren {
      * @return match or not
      */
     public static boolean match(final char leftToken, final char rightToken) {
-        for (Paren each : values()) {
-            if (each.leftParen == leftToken && each.rightParen == rightToken) {
-                return true;
-            }
-        }
-        return false;
+        return Arrays.stream(values()).anyMatch(each -> each.leftParen == leftToken && each.rightParen == rightToken);
     }
 }
diff --git a/shardingsphere-sql-parser/shardingsphere-sql-parser-statement/src/main/java/org/apache/shardingsphere/sql/parser/sql/common/constant/QuoteCharacter.java b/shardingsphere-sql-parser/shardingsphere-sql-parser-statement/src/main/java/org/apache/shardingsphere/sql/parser/sql/common/constant/QuoteCharacter.java
index c25f80f..f3de8a6 100644
--- a/shardingsphere-sql-parser/shardingsphere-sql-parser-statement/src/main/java/org/apache/shardingsphere/sql/parser/sql/common/constant/QuoteCharacter.java
+++ b/shardingsphere-sql-parser/shardingsphere-sql-parser-statement/src/main/java/org/apache/shardingsphere/sql/parser/sql/common/constant/QuoteCharacter.java
@@ -18,6 +18,7 @@
 package org.apache.shardingsphere.sql.parser.sql.common.constant;
 
 import com.google.common.base.Strings;
+import java.util.Arrays;
 import lombok.Getter;
 import lombok.RequiredArgsConstructor;
 
@@ -52,11 +53,6 @@ public enum QuoteCharacter {
         if (Strings.isNullOrEmpty(value)) {
             return NONE;
         }
-        for (QuoteCharacter each : values()) {
-            if (NONE != each && each.startDelimiter.charAt(0) == value.charAt(0)) {
-                return each;
-            }
-        }
-        return NONE;
+        return Arrays.stream(values()).filter(each -> NONE != each && each.startDelimiter.charAt(0) == value.charAt(0)).findFirst().orElse(NONE);
     }
 }
diff --git a/shardingsphere-sql-parser/shardingsphere-sql-parser-statement/src/main/java/org/apache/shardingsphere/sql/parser/sql/common/constant/AggregationType.java b/shardingsphere-sql-parser/shardingsphere-sql-parser-statement/src/test/java/org/apache/shardingsphere/sql/parser/sql/common/constant/AggregationTypeTest.java
similarity index 60%
copy from shardingsphere-sql-parser/shardingsphere-sql-parser-statement/src/main/java/org/apache/shardingsphere/sql/parser/sql/common/constant/AggregationType.java
copy to shardingsphere-sql-parser/shardingsphere-sql-parser-statement/src/test/java/org/apache/shardingsphere/sql/parser/sql/common/constant/AggregationTypeTest.java
index b3f251c..1eef4db 100644
--- a/shardingsphere-sql-parser/shardingsphere-sql-parser-statement/src/main/java/org/apache/shardingsphere/sql/parser/sql/common/constant/AggregationType.java
+++ b/shardingsphere-sql-parser/shardingsphere-sql-parser-statement/src/test/java/org/apache/shardingsphere/sql/parser/sql/common/constant/AggregationTypeTest.java
@@ -17,24 +17,20 @@
 
 package org.apache.shardingsphere.sql.parser.sql.common.constant;
 
-/**
- * Aggregation function enum.
- */
-public enum AggregationType {
-    
-    MAX, MIN, SUM, COUNT, AVG;
+import org.junit.Test;
+
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertTrue;
+
+public final class AggregationTypeTest {
     
-    /**
-     * Is aggregation type.
-     * @param aggregationType aggregation type
-     * @return is aggregation type or not
-     */
-    public static boolean isAggregationType(final String aggregationType) {
-        for (AggregationType each : values()) {
-            if (aggregationType.equalsIgnoreCase(each.name())) {
-                return true;
-            }
-        }
-        return false;
+    @Test
+    public void assertIsAggregationType() {
+        assertTrue(AggregationType.isAggregationType("MAX"));
+        assertTrue(AggregationType.isAggregationType("MIN"));
+        assertTrue(AggregationType.isAggregationType("SUM"));
+        assertTrue(AggregationType.isAggregationType("COUNT"));
+        assertTrue(AggregationType.isAggregationType("AVG"));
+        assertFalse(AggregationType.isAggregationType("XXX"));
     }
 }