You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@wayang.apache.org by rp...@apache.org on 2022/06/14 21:18:10 UTC

[incubator-wayang] 03/06: [TERADATA] Teradata Platform and Plugin

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

rpardomeza pushed a commit to branch blossom-teradata
in repository https://gitbox.apache.org/repos/asf/incubator-wayang.git

commit c9c36d253a109088cecd8376085365a266dcc5ed
Author: Rodrigo Pardo Meza <ro...@databloom.ai>
AuthorDate: Tue Jun 14 23:11:20 2022 +0200

    [TERADATA] Teradata Platform and Plugin
---
 .../java/org/apache/wayang/teradata/Teradata.java  | 123 +++++++++++++++++++++
 .../wayang/teradata/platform/TeradataPlatform.java |  28 +++++
 2 files changed, 151 insertions(+)

diff --git a/wayang-plugins/wayang-teradata/src/main/java/org/apache/wayang/teradata/Teradata.java b/wayang-plugins/wayang-teradata/src/main/java/org/apache/wayang/teradata/Teradata.java
new file mode 100644
index 00000000..8ceddd77
--- /dev/null
+++ b/wayang-plugins/wayang-teradata/src/main/java/org/apache/wayang/teradata/Teradata.java
@@ -0,0 +1,123 @@
+package org.apache.wayang.teradata;
+
+import org.apache.wayang.core.api.Configuration;
+import org.apache.wayang.core.mapping.Mapping;
+import org.apache.wayang.core.optimizer.channels.ChannelConversion;
+import org.apache.wayang.core.platform.Platform;
+import org.apache.wayang.core.plugin.Plugin;
+import org.apache.wayang.java.Java;
+import org.apache.wayang.java.platform.JavaPlatform;
+import org.apache.wayang.spark.Spark;
+import org.apache.wayang.spark.platform.SparkPlatform;
+import org.apache.wayang.teradata.channels.ChannelConversions;
+
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.Collections;
+
+public class Teradata {
+
+    private static final Plugin PLUGIN = new Plugin() {
+
+        @Override
+        public Collection<Platform> getRequiredPlatforms() {
+            return Arrays.asList(Java.platform(), Spark.platform());
+        }
+
+        @Override
+        public Collection<Mapping> getMappings() {
+            return Collections.emptyList();
+        }
+
+        @Override
+        public Collection<ChannelConversion> getChannelConversions() {
+            return ChannelConversions.ALL;
+        }
+
+        @Override
+        public void setProperties(Configuration configuration) {
+
+        }
+    };
+
+    /**
+     * Retrieve a {@link Plugin} to use {link IEJoinOperator} and {link IESelfJoinOperator} on the
+     * {@link JavaPlatform} and {link SparkPlatform}.
+     *
+     * @return the {@link Plugin}
+     */
+    public static Plugin plugin() {
+        return PLUGIN;
+    }
+
+    /**
+     * Enables use with the {@link JavaPlatform}.
+     */
+    private static final Plugin JAVA_PLUGIN = new Plugin() {
+
+        @Override
+        public Collection<Platform> getRequiredPlatforms() {
+            return Collections.singleton(Java.platform());
+        }
+
+        @Override
+        public Collection<Mapping> getMappings() {
+            return null;// Mappings.javaMappings;
+        }
+
+        @Override
+        public Collection<ChannelConversion> getChannelConversions() {
+            return Collections.emptyList();
+        }
+
+        @Override
+        public void setProperties(Configuration configuration) {
+        }
+    };
+
+    /**
+     * Retrieve a {@link Plugin} to use {link IEJoinOperator} and {link IESelfJoinOperator} on the
+     * and {@link JavaPlatform}.
+     *
+     * @return the {@link Plugin}
+     */
+    public static Plugin javaPlugin() {
+        return JAVA_PLUGIN;
+    }
+
+    /**
+     * Enables use with the {link SparkPlatform}.
+     */
+    public static final Plugin SPARK_PLUGIN = new Plugin() {
+
+        @Override
+        public Collection<Platform> getRequiredPlatforms() {
+            return Collections.singleton(Spark.platform());
+        }
+
+        @Override
+        public Collection<Mapping> getMappings() {
+            return null;//Mappings.sparkMappings;
+        }
+
+        @Override
+        public Collection<ChannelConversion> getChannelConversions() {
+            return Collections.emptyList();
+        }
+
+        @Override
+        public void setProperties(Configuration configuration) {
+        }
+    };
+
+    /**
+     * Retrieve a {@link Plugin} to use {link IEJoinOperator} and {link IESelfJoinOperator} on the
+     * and {@link SparkPlatform}.
+     *
+     * @return the {@link Plugin}
+     */
+    public static Plugin sparkPlugin() {
+        return SPARK_PLUGIN;
+    }
+
+}
diff --git a/wayang-plugins/wayang-teradata/src/main/java/org/apache/wayang/teradata/platform/TeradataPlatform.java b/wayang-plugins/wayang-teradata/src/main/java/org/apache/wayang/teradata/platform/TeradataPlatform.java
new file mode 100644
index 00000000..0ec1cbaf
--- /dev/null
+++ b/wayang-plugins/wayang-teradata/src/main/java/org/apache/wayang/teradata/platform/TeradataPlatform.java
@@ -0,0 +1,28 @@
+package org.apache.wayang.teradata.platform;
+
+import org.apache.wayang.jdbc.platform.JdbcPlatformTemplate;
+
+public class TeradataPlatform extends JdbcPlatformTemplate {
+
+    private static final String PLATFORM_NAME = "Teradata";
+
+    private static final String CONFIG_NAME = "teradata";
+
+    private static TeradataPlatform instance = null;
+
+    public static TeradataPlatform getInstance() {
+        if (instance == null) {
+            instance = new TeradataPlatform();
+        }
+        return instance;
+    }
+
+    protected TeradataPlatform() {
+        super(PLATFORM_NAME, CONFIG_NAME);
+    }
+
+    @Override
+    protected String getJdbcDriverClassName() {
+        return com.teradata.jdbc.TeraDriver.class.getName();
+    }
+}