Browse Source

release com.gct.tools.etl version-beta-0.0.1

Lloyd 4 years ago
commit
b8fa58c525

+ 33 - 0
.gitignore

@@ -0,0 +1,33 @@
1
+HELP.md
2
+target/
3
+!.mvn/wrapper/maven-wrapper.jar
4
+!**/src/main/**/target/
5
+!**/src/test/**/target/
6
+
7
+### STS ###
8
+.apt_generated
9
+.classpath
10
+.factorypath
11
+.project
12
+.settings
13
+.springBeans
14
+.sts4-cache
15
+
16
+### IntelliJ IDEA ###
17
+.idea
18
+*.iws
19
+*.iml
20
+*.ipr
21
+
22
+### NetBeans ###
23
+/nbproject/private/
24
+/nbbuild/
25
+/dist/
26
+/nbdist/
27
+/.nb-gradle/
28
+build/
29
+!**/src/main/**/build/
30
+!**/src/test/**/build/
31
+
32
+### VS Code ###
33
+.vscode/

+ 117 - 0
.mvn/wrapper/MavenWrapperDownloader.java

@@ -0,0 +1,117 @@
1
+/*
2
+ * Copyright 2007-present the original author or authors.
3
+ *
4
+ * Licensed under the Apache License, Version 2.0 (the "License");
5
+ * you may not use this file except in compliance with the License.
6
+ * You may obtain a copy of the License at
7
+ *
8
+ *      https://www.apache.org/licenses/LICENSE-2.0
9
+ *
10
+ * Unless required by applicable law or agreed to in writing, software
11
+ * distributed under the License is distributed on an "AS IS" BASIS,
12
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ * See the License for the specific language governing permissions and
14
+ * limitations under the License.
15
+ */
16
+import java.net.*;
17
+import java.io.*;
18
+import java.nio.channels.*;
19
+import java.util.Properties;
20
+
21
+public class MavenWrapperDownloader {
22
+
23
+    private static final String WRAPPER_VERSION = "0.5.6";
24
+    /**
25
+     * Default URL to download the maven-wrapper.jar from, if no 'downloadUrl' is provided.
26
+     */
27
+    private static final String DEFAULT_DOWNLOAD_URL = "https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/"
28
+        + WRAPPER_VERSION + "/maven-wrapper-" + WRAPPER_VERSION + ".jar";
29
+
30
+    /**
31
+     * Path to the maven-wrapper.properties file, which might contain a downloadUrl property to
32
+     * use instead of the default one.
33
+     */
34
+    private static final String MAVEN_WRAPPER_PROPERTIES_PATH =
35
+            ".mvn/wrapper/maven-wrapper.properties";
36
+
37
+    /**
38
+     * Path where the maven-wrapper.jar will be saved to.
39
+     */
40
+    private static final String MAVEN_WRAPPER_JAR_PATH =
41
+            ".mvn/wrapper/maven-wrapper.jar";
42
+
43
+    /**
44
+     * Name of the property which should be used to override the default download url for the wrapper.
45
+     */
46
+    private static final String PROPERTY_NAME_WRAPPER_URL = "wrapperUrl";
47
+
48
+    public static void main(String args[]) {
49
+        System.out.println("- Downloader started");
50
+        File baseDirectory = new File(args[0]);
51
+        System.out.println("- Using base directory: " + baseDirectory.getAbsolutePath());
52
+
53
+        // If the maven-wrapper.properties exists, read it and check if it contains a custom
54
+        // wrapperUrl parameter.
55
+        File mavenWrapperPropertyFile = new File(baseDirectory, MAVEN_WRAPPER_PROPERTIES_PATH);
56
+        String url = DEFAULT_DOWNLOAD_URL;
57
+        if(mavenWrapperPropertyFile.exists()) {
58
+            FileInputStream mavenWrapperPropertyFileInputStream = null;
59
+            try {
60
+                mavenWrapperPropertyFileInputStream = new FileInputStream(mavenWrapperPropertyFile);
61
+                Properties mavenWrapperProperties = new Properties();
62
+                mavenWrapperProperties.load(mavenWrapperPropertyFileInputStream);
63
+                url = mavenWrapperProperties.getProperty(PROPERTY_NAME_WRAPPER_URL, url);
64
+            } catch (IOException e) {
65
+                System.out.println("- ERROR loading '" + MAVEN_WRAPPER_PROPERTIES_PATH + "'");
66
+            } finally {
67
+                try {
68
+                    if(mavenWrapperPropertyFileInputStream != null) {
69
+                        mavenWrapperPropertyFileInputStream.close();
70
+                    }
71
+                } catch (IOException e) {
72
+                    // Ignore ...
73
+                }
74
+            }
75
+        }
76
+        System.out.println("- Downloading from: " + url);
77
+
78
+        File outputFile = new File(baseDirectory.getAbsolutePath(), MAVEN_WRAPPER_JAR_PATH);
79
+        if(!outputFile.getParentFile().exists()) {
80
+            if(!outputFile.getParentFile().mkdirs()) {
81
+                System.out.println(
82
+                        "- ERROR creating output directory '" + outputFile.getParentFile().getAbsolutePath() + "'");
83
+            }
84
+        }
85
+        System.out.println("- Downloading to: " + outputFile.getAbsolutePath());
86
+        try {
87
+            downloadFileFromURL(url, outputFile);
88
+            System.out.println("Done");
89
+            System.exit(0);
90
+        } catch (Throwable e) {
91
+            System.out.println("- Error downloading");
92
+            e.printStackTrace();
93
+            System.exit(1);
94
+        }
95
+    }
96
+
97
+    private static void downloadFileFromURL(String urlString, File destination) throws Exception {
98
+        if (System.getenv("MVNW_USERNAME") != null && System.getenv("MVNW_PASSWORD") != null) {
99
+            String username = System.getenv("MVNW_USERNAME");
100
+            char[] password = System.getenv("MVNW_PASSWORD").toCharArray();
101
+            Authenticator.setDefault(new Authenticator() {
102
+                @Override
103
+                protected PasswordAuthentication getPasswordAuthentication() {
104
+                    return new PasswordAuthentication(username, password);
105
+                }
106
+            });
107
+        }
108
+        URL website = new URL(urlString);
109
+        ReadableByteChannel rbc;
110
+        rbc = Channels.newChannel(website.openStream());
111
+        FileOutputStream fos = new FileOutputStream(destination);
112
+        fos.getChannel().transferFrom(rbc, 0, Long.MAX_VALUE);
113
+        fos.close();
114
+        rbc.close();
115
+    }
116
+
117
+}

BIN
.mvn/wrapper/maven-wrapper.jar


+ 2 - 0
.mvn/wrapper/maven-wrapper.properties

@@ -0,0 +1,2 @@
1
+distributionUrl=https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/3.8.1/apache-maven-3.8.1-bin.zip
2
+wrapperUrl=https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/0.5.6/maven-wrapper-0.5.6.jar

+ 310 - 0
mvnw

@@ -0,0 +1,310 @@
1
+#!/bin/sh
2
+# ----------------------------------------------------------------------------
3
+# Licensed to the Apache Software Foundation (ASF) under one
4
+# or more contributor license agreements.  See the NOTICE file
5
+# distributed with this work for additional information
6
+# regarding copyright ownership.  The ASF licenses this file
7
+# to you under the Apache License, Version 2.0 (the
8
+# "License"); you may not use this file except in compliance
9
+# with the License.  You may obtain a copy of the License at
10
+#
11
+#    https://www.apache.org/licenses/LICENSE-2.0
12
+#
13
+# Unless required by applicable law or agreed to in writing,
14
+# software distributed under the License is distributed on an
15
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16
+# KIND, either express or implied.  See the License for the
17
+# specific language governing permissions and limitations
18
+# under the License.
19
+# ----------------------------------------------------------------------------
20
+
21
+# ----------------------------------------------------------------------------
22
+# Maven Start Up Batch script
23
+#
24
+# Required ENV vars:
25
+# ------------------
26
+#   JAVA_HOME - location of a JDK home dir
27
+#
28
+# Optional ENV vars
29
+# -----------------
30
+#   M2_HOME - location of maven2's installed home dir
31
+#   MAVEN_OPTS - parameters passed to the Java VM when running Maven
32
+#     e.g. to debug Maven itself, use
33
+#       set MAVEN_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000
34
+#   MAVEN_SKIP_RC - flag to disable loading of mavenrc files
35
+# ----------------------------------------------------------------------------
36
+
37
+if [ -z "$MAVEN_SKIP_RC" ] ; then
38
+
39
+  if [ -f /etc/mavenrc ] ; then
40
+    . /etc/mavenrc
41
+  fi
42
+
43
+  if [ -f "$HOME/.mavenrc" ] ; then
44
+    . "$HOME/.mavenrc"
45
+  fi
46
+
47
+fi
48
+
49
+# OS specific support.  $var _must_ be set to either true or false.
50
+cygwin=false;
51
+darwin=false;
52
+mingw=false
53
+case "`uname`" in
54
+  CYGWIN*) cygwin=true ;;
55
+  MINGW*) mingw=true;;
56
+  Darwin*) darwin=true
57
+    # Use /usr/libexec/java_home if available, otherwise fall back to /Library/Java/Home
58
+    # See https://developer.apple.com/library/mac/qa/qa1170/_index.html
59
+    if [ -z "$JAVA_HOME" ]; then
60
+      if [ -x "/usr/libexec/java_home" ]; then
61
+        export JAVA_HOME="`/usr/libexec/java_home`"
62
+      else
63
+        export JAVA_HOME="/Library/Java/Home"
64
+      fi
65
+    fi
66
+    ;;
67
+esac
68
+
69
+if [ -z "$JAVA_HOME" ] ; then
70
+  if [ -r /etc/gentoo-release ] ; then
71
+    JAVA_HOME=`java-config --jre-home`
72
+  fi
73
+fi
74
+
75
+if [ -z "$M2_HOME" ] ; then
76
+  ## resolve links - $0 may be a link to maven's home
77
+  PRG="$0"
78
+
79
+  # need this for relative symlinks
80
+  while [ -h "$PRG" ] ; do
81
+    ls=`ls -ld "$PRG"`
82
+    link=`expr "$ls" : '.*-> \(.*\)$'`
83
+    if expr "$link" : '/.*' > /dev/null; then
84
+      PRG="$link"
85
+    else
86
+      PRG="`dirname "$PRG"`/$link"
87
+    fi
88
+  done
89
+
90
+  saveddir=`pwd`
91
+
92
+  M2_HOME=`dirname "$PRG"`/..
93
+
94
+  # make it fully qualified
95
+  M2_HOME=`cd "$M2_HOME" && pwd`
96
+
97
+  cd "$saveddir"
98
+  # echo Using m2 at $M2_HOME
99
+fi
100
+
101
+# For Cygwin, ensure paths are in UNIX format before anything is touched
102
+if $cygwin ; then
103
+  [ -n "$M2_HOME" ] &&
104
+    M2_HOME=`cygpath --unix "$M2_HOME"`
105
+  [ -n "$JAVA_HOME" ] &&
106
+    JAVA_HOME=`cygpath --unix "$JAVA_HOME"`
107
+  [ -n "$CLASSPATH" ] &&
108
+    CLASSPATH=`cygpath --path --unix "$CLASSPATH"`
109
+fi
110
+
111
+# For Mingw, ensure paths are in UNIX format before anything is touched
112
+if $mingw ; then
113
+  [ -n "$M2_HOME" ] &&
114
+    M2_HOME="`(cd "$M2_HOME"; pwd)`"
115
+  [ -n "$JAVA_HOME" ] &&
116
+    JAVA_HOME="`(cd "$JAVA_HOME"; pwd)`"
117
+fi
118
+
119
+if [ -z "$JAVA_HOME" ]; then
120
+  javaExecutable="`which javac`"
121
+  if [ -n "$javaExecutable" ] && ! [ "`expr \"$javaExecutable\" : '\([^ ]*\)'`" = "no" ]; then
122
+    # readlink(1) is not available as standard on Solaris 10.
123
+    readLink=`which readlink`
124
+    if [ ! `expr "$readLink" : '\([^ ]*\)'` = "no" ]; then
125
+      if $darwin ; then
126
+        javaHome="`dirname \"$javaExecutable\"`"
127
+        javaExecutable="`cd \"$javaHome\" && pwd -P`/javac"
128
+      else
129
+        javaExecutable="`readlink -f \"$javaExecutable\"`"
130
+      fi
131
+      javaHome="`dirname \"$javaExecutable\"`"
132
+      javaHome=`expr "$javaHome" : '\(.*\)/bin'`
133
+      JAVA_HOME="$javaHome"
134
+      export JAVA_HOME
135
+    fi
136
+  fi
137
+fi
138
+
139
+if [ -z "$JAVACMD" ] ; then
140
+  if [ -n "$JAVA_HOME"  ] ; then
141
+    if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
142
+      # IBM's JDK on AIX uses strange locations for the executables
143
+      JAVACMD="$JAVA_HOME/jre/sh/java"
144
+    else
145
+      JAVACMD="$JAVA_HOME/bin/java"
146
+    fi
147
+  else
148
+    JAVACMD="`which java`"
149
+  fi
150
+fi
151
+
152
+if [ ! -x "$JAVACMD" ] ; then
153
+  echo "Error: JAVA_HOME is not defined correctly." >&2
154
+  echo "  We cannot execute $JAVACMD" >&2
155
+  exit 1
156
+fi
157
+
158
+if [ -z "$JAVA_HOME" ] ; then
159
+  echo "Warning: JAVA_HOME environment variable is not set."
160
+fi
161
+
162
+CLASSWORLDS_LAUNCHER=org.codehaus.plexus.classworlds.launcher.Launcher
163
+
164
+# traverses directory structure from process work directory to filesystem root
165
+# first directory with .mvn subdirectory is considered project base directory
166
+find_maven_basedir() {
167
+
168
+  if [ -z "$1" ]
169
+  then
170
+    echo "Path not specified to find_maven_basedir"
171
+    return 1
172
+  fi
173
+
174
+  basedir="$1"
175
+  wdir="$1"
176
+  while [ "$wdir" != '/' ] ; do
177
+    if [ -d "$wdir"/.mvn ] ; then
178
+      basedir=$wdir
179
+      break
180
+    fi
181
+    # workaround for JBEAP-8937 (on Solaris 10/Sparc)
182
+    if [ -d "${wdir}" ]; then
183
+      wdir=`cd "$wdir/.."; pwd`
184
+    fi
185
+    # end of workaround
186
+  done
187
+  echo "${basedir}"
188
+}
189
+
190
+# concatenates all lines of a file
191
+concat_lines() {
192
+  if [ -f "$1" ]; then
193
+    echo "$(tr -s '\n' ' ' < "$1")"
194
+  fi
195
+}
196
+
197
+BASE_DIR=`find_maven_basedir "$(pwd)"`
198
+if [ -z "$BASE_DIR" ]; then
199
+  exit 1;
200
+fi
201
+
202
+##########################################################################################
203
+# Extension to allow automatically downloading the maven-wrapper.jar from Maven-central
204
+# This allows using the maven wrapper in projects that prohibit checking in binary data.
205
+##########################################################################################
206
+if [ -r "$BASE_DIR/.mvn/wrapper/maven-wrapper.jar" ]; then
207
+    if [ "$MVNW_VERBOSE" = true ]; then
208
+      echo "Found .mvn/wrapper/maven-wrapper.jar"
209
+    fi
210
+else
211
+    if [ "$MVNW_VERBOSE" = true ]; then
212
+      echo "Couldn't find .mvn/wrapper/maven-wrapper.jar, downloading it ..."
213
+    fi
214
+    if [ -n "$MVNW_REPOURL" ]; then
215
+      jarUrl="$MVNW_REPOURL/io/takari/maven-wrapper/0.5.6/maven-wrapper-0.5.6.jar"
216
+    else
217
+      jarUrl="https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/0.5.6/maven-wrapper-0.5.6.jar"
218
+    fi
219
+    while IFS="=" read key value; do
220
+      case "$key" in (wrapperUrl) jarUrl="$value"; break ;;
221
+      esac
222
+    done < "$BASE_DIR/.mvn/wrapper/maven-wrapper.properties"
223
+    if [ "$MVNW_VERBOSE" = true ]; then
224
+      echo "Downloading from: $jarUrl"
225
+    fi
226
+    wrapperJarPath="$BASE_DIR/.mvn/wrapper/maven-wrapper.jar"
227
+    if $cygwin; then
228
+      wrapperJarPath=`cygpath --path --windows "$wrapperJarPath"`
229
+    fi
230
+
231
+    if command -v wget > /dev/null; then
232
+        if [ "$MVNW_VERBOSE" = true ]; then
233
+          echo "Found wget ... using wget"
234
+        fi
235
+        if [ -z "$MVNW_USERNAME" ] || [ -z "$MVNW_PASSWORD" ]; then
236
+            wget "$jarUrl" -O "$wrapperJarPath"
237
+        else
238
+            wget --http-user=$MVNW_USERNAME --http-password=$MVNW_PASSWORD "$jarUrl" -O "$wrapperJarPath"
239
+        fi
240
+    elif command -v curl > /dev/null; then
241
+        if [ "$MVNW_VERBOSE" = true ]; then
242
+          echo "Found curl ... using curl"
243
+        fi
244
+        if [ -z "$MVNW_USERNAME" ] || [ -z "$MVNW_PASSWORD" ]; then
245
+            curl -o "$wrapperJarPath" "$jarUrl" -f
246
+        else
247
+            curl --user $MVNW_USERNAME:$MVNW_PASSWORD -o "$wrapperJarPath" "$jarUrl" -f
248
+        fi
249
+
250
+    else
251
+        if [ "$MVNW_VERBOSE" = true ]; then
252
+          echo "Falling back to using Java to download"
253
+        fi
254
+        javaClass="$BASE_DIR/.mvn/wrapper/MavenWrapperDownloader.java"
255
+        # For Cygwin, switch paths to Windows format before running javac
256
+        if $cygwin; then
257
+          javaClass=`cygpath --path --windows "$javaClass"`
258
+        fi
259
+        if [ -e "$javaClass" ]; then
260
+            if [ ! -e "$BASE_DIR/.mvn/wrapper/MavenWrapperDownloader.class" ]; then
261
+                if [ "$MVNW_VERBOSE" = true ]; then
262
+                  echo " - Compiling MavenWrapperDownloader.java ..."
263
+                fi
264
+                # Compiling the Java class
265
+                ("$JAVA_HOME/bin/javac" "$javaClass")
266
+            fi
267
+            if [ -e "$BASE_DIR/.mvn/wrapper/MavenWrapperDownloader.class" ]; then
268
+                # Running the downloader
269
+                if [ "$MVNW_VERBOSE" = true ]; then
270
+                  echo " - Running MavenWrapperDownloader.java ..."
271
+                fi
272
+                ("$JAVA_HOME/bin/java" -cp .mvn/wrapper MavenWrapperDownloader "$MAVEN_PROJECTBASEDIR")
273
+            fi
274
+        fi
275
+    fi
276
+fi
277
+##########################################################################################
278
+# End of extension
279
+##########################################################################################
280
+
281
+export MAVEN_PROJECTBASEDIR=${MAVEN_BASEDIR:-"$BASE_DIR"}
282
+if [ "$MVNW_VERBOSE" = true ]; then
283
+  echo $MAVEN_PROJECTBASEDIR
284
+fi
285
+MAVEN_OPTS="$(concat_lines "$MAVEN_PROJECTBASEDIR/.mvn/jvm.config") $MAVEN_OPTS"
286
+
287
+# For Cygwin, switch paths to Windows format before running java
288
+if $cygwin; then
289
+  [ -n "$M2_HOME" ] &&
290
+    M2_HOME=`cygpath --path --windows "$M2_HOME"`
291
+  [ -n "$JAVA_HOME" ] &&
292
+    JAVA_HOME=`cygpath --path --windows "$JAVA_HOME"`
293
+  [ -n "$CLASSPATH" ] &&
294
+    CLASSPATH=`cygpath --path --windows "$CLASSPATH"`
295
+  [ -n "$MAVEN_PROJECTBASEDIR" ] &&
296
+    MAVEN_PROJECTBASEDIR=`cygpath --path --windows "$MAVEN_PROJECTBASEDIR"`
297
+fi
298
+
299
+# Provide a "standardized" way to retrieve the CLI args that will
300
+# work with both Windows and non-Windows executions.
301
+MAVEN_CMD_LINE_ARGS="$MAVEN_CONFIG $@"
302
+export MAVEN_CMD_LINE_ARGS
303
+
304
+WRAPPER_LAUNCHER=org.apache.maven.wrapper.MavenWrapperMain
305
+
306
+exec "$JAVACMD" \
307
+  $MAVEN_OPTS \
308
+  -classpath "$MAVEN_PROJECTBASEDIR/.mvn/wrapper/maven-wrapper.jar" \
309
+  "-Dmaven.home=${M2_HOME}" "-Dmaven.multiModuleProjectDirectory=${MAVEN_PROJECTBASEDIR}" \
310
+  ${WRAPPER_LAUNCHER} $MAVEN_CONFIG "$@"

+ 182 - 0
mvnw.cmd

@@ -0,0 +1,182 @@
1
+@REM ----------------------------------------------------------------------------
2
+@REM Licensed to the Apache Software Foundation (ASF) under one
3
+@REM or more contributor license agreements.  See the NOTICE file
4
+@REM distributed with this work for additional information
5
+@REM regarding copyright ownership.  The ASF licenses this file
6
+@REM to you under the Apache License, Version 2.0 (the
7
+@REM "License"); you may not use this file except in compliance
8
+@REM with the License.  You may obtain a copy of the License at
9
+@REM
10
+@REM    https://www.apache.org/licenses/LICENSE-2.0
11
+@REM
12
+@REM Unless required by applicable law or agreed to in writing,
13
+@REM software distributed under the License is distributed on an
14
+@REM "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
15
+@REM KIND, either express or implied.  See the License for the
16
+@REM specific language governing permissions and limitations
17
+@REM under the License.
18
+@REM ----------------------------------------------------------------------------
19
+
20
+@REM ----------------------------------------------------------------------------
21
+@REM Maven Start Up Batch script
22
+@REM
23
+@REM Required ENV vars:
24
+@REM JAVA_HOME - location of a JDK home dir
25
+@REM
26
+@REM Optional ENV vars
27
+@REM M2_HOME - location of maven2's installed home dir
28
+@REM MAVEN_BATCH_ECHO - set to 'on' to enable the echoing of the batch commands
29
+@REM MAVEN_BATCH_PAUSE - set to 'on' to wait for a keystroke before ending
30
+@REM MAVEN_OPTS - parameters passed to the Java VM when running Maven
31
+@REM     e.g. to debug Maven itself, use
32
+@REM set MAVEN_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000
33
+@REM MAVEN_SKIP_RC - flag to disable loading of mavenrc files
34
+@REM ----------------------------------------------------------------------------
35
+
36
+@REM Begin all REM lines with '@' in case MAVEN_BATCH_ECHO is 'on'
37
+@echo off
38
+@REM set title of command window
39
+title %0
40
+@REM enable echoing by setting MAVEN_BATCH_ECHO to 'on'
41
+@if "%MAVEN_BATCH_ECHO%" == "on"  echo %MAVEN_BATCH_ECHO%
42
+
43
+@REM set %HOME% to equivalent of $HOME
44
+if "%HOME%" == "" (set "HOME=%HOMEDRIVE%%HOMEPATH%")
45
+
46
+@REM Execute a user defined script before this one
47
+if not "%MAVEN_SKIP_RC%" == "" goto skipRcPre
48
+@REM check for pre script, once with legacy .bat ending and once with .cmd ending
49
+if exist "%HOME%\mavenrc_pre.bat" call "%HOME%\mavenrc_pre.bat"
50
+if exist "%HOME%\mavenrc_pre.cmd" call "%HOME%\mavenrc_pre.cmd"
51
+:skipRcPre
52
+
53
+@setlocal
54
+
55
+set ERROR_CODE=0
56
+
57
+@REM To isolate internal variables from possible post scripts, we use another setlocal
58
+@setlocal
59
+
60
+@REM ==== START VALIDATION ====
61
+if not "%JAVA_HOME%" == "" goto OkJHome
62
+
63
+echo.
64
+echo Error: JAVA_HOME not found in your environment. >&2
65
+echo Please set the JAVA_HOME variable in your environment to match the >&2
66
+echo location of your Java installation. >&2
67
+echo.
68
+goto error
69
+
70
+:OkJHome
71
+if exist "%JAVA_HOME%\bin\java.exe" goto init
72
+
73
+echo.
74
+echo Error: JAVA_HOME is set to an invalid directory. >&2
75
+echo JAVA_HOME = "%JAVA_HOME%" >&2
76
+echo Please set the JAVA_HOME variable in your environment to match the >&2
77
+echo location of your Java installation. >&2
78
+echo.
79
+goto error
80
+
81
+@REM ==== END VALIDATION ====
82
+
83
+:init
84
+
85
+@REM Find the project base dir, i.e. the directory that contains the folder ".mvn".
86
+@REM Fallback to current working directory if not found.
87
+
88
+set MAVEN_PROJECTBASEDIR=%MAVEN_BASEDIR%
89
+IF NOT "%MAVEN_PROJECTBASEDIR%"=="" goto endDetectBaseDir
90
+
91
+set EXEC_DIR=%CD%
92
+set WDIR=%EXEC_DIR%
93
+:findBaseDir
94
+IF EXIST "%WDIR%"\.mvn goto baseDirFound
95
+cd ..
96
+IF "%WDIR%"=="%CD%" goto baseDirNotFound
97
+set WDIR=%CD%
98
+goto findBaseDir
99
+
100
+:baseDirFound
101
+set MAVEN_PROJECTBASEDIR=%WDIR%
102
+cd "%EXEC_DIR%"
103
+goto endDetectBaseDir
104
+
105
+:baseDirNotFound
106
+set MAVEN_PROJECTBASEDIR=%EXEC_DIR%
107
+cd "%EXEC_DIR%"
108
+
109
+:endDetectBaseDir
110
+
111
+IF NOT EXIST "%MAVEN_PROJECTBASEDIR%\.mvn\jvm.config" goto endReadAdditionalConfig
112
+
113
+@setlocal EnableExtensions EnableDelayedExpansion
114
+for /F "usebackq delims=" %%a in ("%MAVEN_PROJECTBASEDIR%\.mvn\jvm.config") do set JVM_CONFIG_MAVEN_PROPS=!JVM_CONFIG_MAVEN_PROPS! %%a
115
+@endlocal & set JVM_CONFIG_MAVEN_PROPS=%JVM_CONFIG_MAVEN_PROPS%
116
+
117
+:endReadAdditionalConfig
118
+
119
+SET MAVEN_JAVA_EXE="%JAVA_HOME%\bin\java.exe"
120
+set WRAPPER_JAR="%MAVEN_PROJECTBASEDIR%\.mvn\wrapper\maven-wrapper.jar"
121
+set WRAPPER_LAUNCHER=org.apache.maven.wrapper.MavenWrapperMain
122
+
123
+set DOWNLOAD_URL="https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/0.5.6/maven-wrapper-0.5.6.jar"
124
+
125
+FOR /F "tokens=1,2 delims==" %%A IN ("%MAVEN_PROJECTBASEDIR%\.mvn\wrapper\maven-wrapper.properties") DO (
126
+    IF "%%A"=="wrapperUrl" SET DOWNLOAD_URL=%%B
127
+)
128
+
129
+@REM Extension to allow automatically downloading the maven-wrapper.jar from Maven-central
130
+@REM This allows using the maven wrapper in projects that prohibit checking in binary data.
131
+if exist %WRAPPER_JAR% (
132
+    if "%MVNW_VERBOSE%" == "true" (
133
+        echo Found %WRAPPER_JAR%
134
+    )
135
+) else (
136
+    if not "%MVNW_REPOURL%" == "" (
137
+        SET DOWNLOAD_URL="%MVNW_REPOURL%/io/takari/maven-wrapper/0.5.6/maven-wrapper-0.5.6.jar"
138
+    )
139
+    if "%MVNW_VERBOSE%" == "true" (
140
+        echo Couldn't find %WRAPPER_JAR%, downloading it ...
141
+        echo Downloading from: %DOWNLOAD_URL%
142
+    )
143
+
144
+    powershell -Command "&{"^
145
+		"$webclient = new-object System.Net.WebClient;"^
146
+		"if (-not ([string]::IsNullOrEmpty('%MVNW_USERNAME%') -and [string]::IsNullOrEmpty('%MVNW_PASSWORD%'))) {"^
147
+		"$webclient.Credentials = new-object System.Net.NetworkCredential('%MVNW_USERNAME%', '%MVNW_PASSWORD%');"^
148
+		"}"^
149
+		"[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12; $webclient.DownloadFile('%DOWNLOAD_URL%', '%WRAPPER_JAR%')"^
150
+		"}"
151
+    if "%MVNW_VERBOSE%" == "true" (
152
+        echo Finished downloading %WRAPPER_JAR%
153
+    )
154
+)
155
+@REM End of extension
156
+
157
+@REM Provide a "standardized" way to retrieve the CLI args that will
158
+@REM work with both Windows and non-Windows executions.
159
+set MAVEN_CMD_LINE_ARGS=%*
160
+
161
+%MAVEN_JAVA_EXE% %JVM_CONFIG_MAVEN_PROPS% %MAVEN_OPTS% %MAVEN_DEBUG_OPTS% -classpath %WRAPPER_JAR% "-Dmaven.multiModuleProjectDirectory=%MAVEN_PROJECTBASEDIR%" %WRAPPER_LAUNCHER% %MAVEN_CONFIG% %*
162
+if ERRORLEVEL 1 goto error
163
+goto end
164
+
165
+:error
166
+set ERROR_CODE=1
167
+
168
+:end
169
+@endlocal & set ERROR_CODE=%ERROR_CODE%
170
+
171
+if not "%MAVEN_SKIP_RC%" == "" goto skipRcPost
172
+@REM check for post script, once with legacy .bat ending and once with .cmd ending
173
+if exist "%HOME%\mavenrc_post.bat" call "%HOME%\mavenrc_post.bat"
174
+if exist "%HOME%\mavenrc_post.cmd" call "%HOME%\mavenrc_post.cmd"
175
+:skipRcPost
176
+
177
+@REM pause the script if MAVEN_BATCH_PAUSE is set to 'on'
178
+if "%MAVEN_BATCH_PAUSE%" == "on" pause
179
+
180
+if "%MAVEN_TERMINATE_CMD%" == "on" exit %ERROR_CODE%
181
+
182
+exit /B %ERROR_CODE%

+ 172 - 0
pom.xml

@@ -0,0 +1,172 @@
1
+<?xml version="1.0" encoding="UTF-8"?>
2
+<project xmlns="http://maven.apache.org/POM/4.0.0"
3
+		 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
4
+		 xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
5
+    <modelVersion>4.0.0</modelVersion>
6
+    <parent>
7
+        <groupId>org.springframework.boot</groupId>
8
+        <artifactId>spring-boot-starter-parent</artifactId>
9
+        <version>2.3.0.RELEASE</version>
10
+        <relativePath/> <!-- lookup parent from repository -->
11
+    </parent>
12
+    <groupId>com.gct.tools</groupId>
13
+    <artifactId>etl-camel-huge</artifactId>
14
+    <version>0.0.1-SNAPSHOT</version>
15
+    <name>etl-camel-huge</name>
16
+    <description>tool or scheme that resolve data source integration for all of the gct software</description>
17
+    <properties>
18
+        <java.version>1.8</java.version>
19
+        <camel.version>3.5.0</camel.version>
20
+        <maven-compiler-plugin.version>3.8.1</maven-compiler-plugin.version>
21
+        <lombok.version>1.16.18</lombok.version>
22
+        <lombok-maven-plugin.version>1.16.6.1</lombok-maven-plugin.version>
23
+    </properties>
24
+    <dependencyManagement>
25
+        <dependencies>
26
+            <dependency>
27
+                <scope>import</scope>
28
+                <type>pom</type>
29
+                <groupId>org.apache.camel.springboot</groupId>
30
+                <artifactId>camel-spring-boot-bom</artifactId>
31
+                <version>${camel.version}</version>
32
+            </dependency>
33
+        </dependencies>
34
+    </dependencyManagement>
35
+    <dependencies>
36
+        <dependency>
37
+            <groupId>mysql</groupId>
38
+            <artifactId>mysql-connector-java</artifactId>
39
+        </dependency>
40
+        <dependency>
41
+            <groupId>org.postgresql</groupId>
42
+            <artifactId>postgresql</artifactId>
43
+        </dependency>
44
+        <dependency>
45
+            <groupId>com.oracle</groupId>
46
+            <artifactId>ojdbc6</artifactId>
47
+            <version>11.2.0.4.0-atlassian-hosted</version>
48
+        </dependency>
49
+        <dependency>
50
+            <groupId>org.springframework.boot</groupId>
51
+            <artifactId>spring-boot-starter-jdbc</artifactId>
52
+        </dependency>
53
+       <!-- <dependency>
54
+            <groupId>com.zaxxer</groupId>
55
+            <artifactId>HikariCP</artifactId>
56
+        </dependency>-->
57
+        <dependency>
58
+            <groupId>org.springframework.boot</groupId>
59
+            <artifactId>spring-boot-starter-activemq</artifactId>
60
+        </dependency>
61
+        <dependency>
62
+            <groupId>org.springframework.boot</groupId>
63
+            <artifactId>spring-boot-starter-integration</artifactId>
64
+        </dependency>
65
+        <dependency>
66
+            <groupId>org.apache.camel.springboot</groupId>
67
+            <artifactId>camel-spring-boot-starter</artifactId>
68
+        </dependency>
69
+        <dependency>
70
+            <groupId>org.springframework.boot</groupId>
71
+            <artifactId>spring-boot-starter-web</artifactId>
72
+        </dependency>
73
+        <dependency>
74
+            <groupId>org.springframework.boot</groupId>
75
+            <artifactId>spring-boot-starter-actuator</artifactId>
76
+        </dependency>
77
+        <dependency>
78
+            <groupId>org.springframework.integration</groupId>
79
+            <artifactId>spring-integration-jms</artifactId>
80
+        </dependency>
81
+        <dependency>
82
+            <groupId>org.apache.camel.springboot</groupId>
83
+            <artifactId>camel-jms-starter</artifactId>
84
+        </dependency>
85
+        <dependency>
86
+            <groupId>org.apache.camel.springboot</groupId>
87
+            <artifactId>camel-file-starter</artifactId>
88
+        </dependency>
89
+        <dependency>
90
+            <groupId>org.apache.camel.springboot</groupId>
91
+            <artifactId>camel-jdbc-starter</artifactId>
92
+        </dependency>
93
+        <dependency>
94
+            <groupId>org.projectlombok</groupId>
95
+            <artifactId>lombok</artifactId>
96
+            <optional>true</optional>
97
+        </dependency>
98
+        <dependency>
99
+            <groupId>org.springframework.boot</groupId>
100
+            <artifactId>spring-boot-starter-test</artifactId>
101
+            <scope>test</scope>
102
+            <exclusions>
103
+                <exclusion>
104
+                    <groupId>org.junit.vintage</groupId>
105
+                    <artifactId>junit-vintage-engine</artifactId>
106
+                </exclusion>
107
+            </exclusions>
108
+        </dependency>
109
+        <dependency>
110
+            <groupId>org.springframework.integration</groupId>
111
+            <artifactId>spring-integration-test</artifactId>
112
+            <scope>test</scope>
113
+        </dependency>
114
+    </dependencies>
115
+
116
+
117
+    <build>
118
+        <resources>
119
+            <resource>
120
+                <directory>src/main/java</directory>
121
+                <excludes>
122
+                    <exclude>**/*.java</exclude>
123
+                </excludes>
124
+            </resource>
125
+            <resource>
126
+                <directory>src/main/resources</directory>
127
+                <includes>
128
+                    <include>**/*.*</include>
129
+                </includes>
130
+            </resource>
131
+        </resources>
132
+
133
+
134
+        <plugins>
135
+            <plugin>
136
+                <groupId>org.springframework.boot</groupId>
137
+                <artifactId>spring-boot-maven-plugin</artifactId>
138
+            </plugin>
139
+            <plugin>
140
+                <groupId>org.apache.maven.plugins</groupId>
141
+                <artifactId>maven-compiler-plugin</artifactId>
142
+                <version>${maven-compiler-plugin.version}</version>
143
+                <configuration>
144
+                    <!-- 设置是否执行注释处理。 仅适用于JDK1.6如果没有设置,编译和注释处理都同时执行。
145
+                    允许值为:
146
+                    none - no annotation processing is performed.
147
+                    only - only annotation processing is done, no compilation.
148
+                    设置为only complie 或者build一下就可以运行annotation processor了
149
+                    平常走默认值即可-->
150
+                    <!--<proc>only</proc>-->
151
+                    <source>${java.version}</source>
152
+                    <target>${java.version}</target>
153
+                    <encoding>utf-8</encoding>
154
+                </configuration>
155
+            </plugin>
156
+            <plugin>
157
+                <groupId>org.projectlombok</groupId>
158
+                <artifactId>lombok-maven-plugin</artifactId>
159
+                <version>${lombok-maven-plugin.version}</version>
160
+            </plugin>
161
+            <!-- 打包过程忽略Junit测试 -->
162
+            <plugin>
163
+                <groupId>org.apache.maven.plugins</groupId>
164
+                <artifactId>maven-surefire-plugin</artifactId>
165
+                <configuration>
166
+                    <skip>true</skip>
167
+                </configuration>
168
+            </plugin>
169
+        </plugins>
170
+    </build>
171
+
172
+</project>

+ 342 - 0
settings.xml

@@ -0,0 +1,342 @@
1
+<?xml version="1.0" encoding="UTF-8"?>
2
+
3
+<!--
4
+Licensed to the Apache Software Foundation (ASF) under one
5
+or more contributor license agreements.  See the NOTICE file
6
+distributed with this work for additional information
7
+regarding copyright ownership.  The ASF licenses this file
8
+to you under the Apache License, Version 2.0 (the
9
+"License"); you may not use this file except in compliance
10
+with the License.  You may obtain a copy of the License at
11
+
12
+    http://www.apache.org/licenses/LICENSE-2.0
13
+
14
+Unless required by applicable law or agreed to in writing,
15
+software distributed under the License is distributed on an
16
+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
17
+KIND, either express or implied.  See the License for the
18
+specific language governing permissions and limitations
19
+under the License.
20
+-->
21
+
22
+<!--
23
+ | This is the configuration file for Maven. It can be specified at two levels:
24
+ |
25
+ |  1. User Level. This settings.xml file provides configuration for a single user,
26
+ |                 and is normally provided in ${user.home}/.m2/settings.xml.
27
+ |
28
+ |                 NOTE: This location can be overridden with the CLI option:
29
+ |
30
+ |                 -s /path/to/user/settings.xml
31
+ |
32
+ |  2. Global Level. This settings.xml file provides configuration for all Maven
33
+ |                 users on a machine (assuming they're all using the same Maven
34
+ |                 installation). It's normally provided in
35
+ |                 ${maven.conf}/settings.xml.
36
+ |
37
+ |                 NOTE: This location can be overridden with the CLI option:
38
+ |
39
+ |                 -gs /path/to/global/settings.xml
40
+ |
41
+ | The sections in this sample file are intended to give you a running start at
42
+ | getting the most out of your Maven installation. Where appropriate, the default
43
+ | values (values used when the setting is not specified) are provided.
44
+ |
45
+ |-->
46
+<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
47
+          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
48
+          xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd">
49
+  <!-- localRepository
50
+   | The path to the local repository maven will use to store artifacts.
51
+   |
52
+   | Default: ${user.home}/.m2/repository
53
+  <localRepository>/path/to/local/repo</localRepository>
54
+  -->
55
+  <localRepository>D:/repository</localRepository>
56
+
57
+  <!-- interactiveMode
58
+   | This will determine whether maven prompts you when it needs input. If set to false,
59
+   | maven will use a sensible default value, perhaps based on some other setting, for
60
+   | the parameter in question.
61
+   |
62
+   | Default: true
63
+  <interactiveMode>true</interactiveMode>
64
+  -->
65
+
66
+  <!-- offline
67
+   | Determines whether maven should attempt to connect to the network when executing a build.
68
+   | This will have an effect on artifact downloads, artifact deployment, and others.
69
+   |
70
+   | Default: false
71
+  <offline>false</offline>
72
+  -->
73
+
74
+  <!-- pluginGroups
75
+   | This is a list of additional group identifiers that will be searched when resolving plugins by their prefix, i.e.
76
+   | when invoking a command line like "mvn prefix:goal". Maven will automatically add the group identifiers
77
+   | "org.apache.maven.plugins" and "org.codehaus.mojo" if these are not already contained in the list.
78
+   |-->
79
+  <pluginGroups>
80
+    <!-- pluginGroup
81
+     | Specifies a further group identifier to use for plugin lookup.
82
+    <pluginGroup>com.your.plugins</pluginGroup>
83
+    -->
84
+  </pluginGroups>
85
+
86
+  <!-- proxies
87
+   | This is a list of proxies which can be used on this machine to connect to the network.
88
+   | Unless otherwise specified (by system property or command-line switch), the first proxy
89
+   | specification in this list marked as active will be used.
90
+   |-->
91
+  <proxies>
92
+    <!-- proxy
93
+     | Specification for one proxy, to be used in connecting to the network.
94
+     |
95
+    <proxy>
96
+      <id>optional</id>
97
+      <active>true</active>
98
+      <protocol>http</protocol>
99
+      <username>proxyuser</username>
100
+      <password>proxypass</password>
101
+      <host>proxy.host.net</host>
102
+      <port>80</port>
103
+      <nonProxyHosts>local.net|some.host.com</nonProxyHosts>
104
+    </proxy>
105
+    -->
106
+  </proxies>
107
+
108
+  <!-- servers
109
+   | This is a list of authentication profiles, keyed by the server-id used within the system.
110
+   | Authentication profiles can be used whenever maven must make a connection to a remote server.
111
+   |-->
112
+  <servers>
113
+    <!-- server
114
+     | Specifies the authentication information to use when connecting to a particular server, identified by
115
+     | a unique name within the system (referred to by the 'id' attribute below).
116
+     |
117
+     | NOTE: You should either specify username/password OR privateKey/passphrase, since these pairings are
118
+     |       used together.
119
+     |
120
+    <server>
121
+      <id>deploymentRepo</id>
122
+      <username>repouser</username>
123
+      <password>repopwd</password>
124
+    </server>
125
+    -->
126
+
127
+    <!-- Another sample, using keys to authenticate.
128
+    <server>
129
+      <id>siteServer</id>
130
+      <privateKey>/path/to/private/key</privateKey>
131
+      <passphrase>optional; leave empty if not used.</passphrase>
132
+    </server>
133
+    -->
134
+	<server>   
135
+		<id>releases</id>   
136
+		<username>admin</username>   
137
+		<password>123456</password>   
138
+	</server>
139
+	<server>   
140
+		<id>snapshots</id>   
141
+		<username>admin</username>   
142
+		<password>123456</password>   
143
+	</server>
144
+  </servers>
145
+
146
+  <!-- mirrors
147
+   | This is a list of mirrors to be used in downloading artifacts from remote repositories.
148
+   |
149
+   | It works like this: a POM may declare a repository to use in resolving certain artifacts.
150
+   | However, this repository may have problems with heavy traffic at times, so people have mirrored
151
+   | it to several places.
152
+   |
153
+   | That repository definition will have a unique id, so we can create a mirror reference for that
154
+   | repository, to be used as an alternate download site. The mirror site will be the preferred
155
+   | server for that repository.
156
+   |-->
157
+  <mirrors>
158
+    <!-- mirror
159
+     | Specifies a repository mirror site to use instead of a given repository. The repository that
160
+     | this mirror serves has an ID that matches the mirrorOf element of this mirror. IDs are used
161
+     | for inheritance and direct lookup purposes, and must be unique across the set of mirrors.
162
+     |
163
+    <mirror>
164
+      <id>mirrorId</id>
165
+      <mirrorOf>repositoryId</mirrorOf>
166
+      <name>Human Readable Name for this Mirror.</name>
167
+      <url>http://my.repository.com/repo/path</url>
168
+    </mirror>
169
+	
170
+	 <mirror>
171
+	  <id>aliyunmaven</id>
172
+	  <mirrorOf>*</mirrorOf>
173
+	  <name>阿里云公共仓库</name>
174
+	  <url>https://maven.aliyun.com/repository/public</url>
175
+	</mirror>
176
+	
177
+     -->
178
+	<mirror>
179
+		<id>nexus</id>
180
+		<name>maven-public</name>
181
+		<url>http://117.34.118.57:28081/repository/maven-public/</url>
182
+		<mirrorOf>*</mirrorOf>
183
+	</mirror>
184
+	
185
+  </mirrors>
186
+
187
+  <!-- profiles
188
+   | This is a list of profiles which can be activated in a variety of ways, and which can modify
189
+   | the build process. Profiles provided in the settings.xml are intended to provide local machine-
190
+   | specific paths and repository locations which allow the build to work in the local environment.
191
+   |
192
+   | For example, if you have an integration testing plugin - like cactus - that needs to know where
193
+   | your Tomcat instance is installed, you can provide a variable here such that the variable is
194
+   | dereferenced during the build process to configure the cactus plugin.
195
+   |
196
+   | As noted above, profiles can be activated in a variety of ways. One way - the activeProfiles
197
+   | section of this document (settings.xml) - will be discussed later. Another way essentially
198
+   | relies on the detection of a system property, either matching a particular value for the property,
199
+   | or merely testing its existence. Profiles can also be activated by JDK version prefix, where a
200
+   | value of '1.4' might activate a profile when the build is executed on a JDK version of '1.4.2_07'.
201
+   | Finally, the list of active profiles can be specified directly from the command line.
202
+   |
203
+   | NOTE: For profiles defined in the settings.xml, you are restricted to specifying only artifact
204
+   |       repositories, plugin repositories, and free-form properties to be used as configuration
205
+   |       variables for plugins in the POM.
206
+   |
207
+   |-->
208
+  <profiles>
209
+    <!-- profile
210
+     | Specifies a set of introductions to the build process, to be activated using one or more of the
211
+     | mechanisms described above. For inheritance purposes, and to activate profiles via <activatedProfiles/>
212
+     | or the command line, profiles have to have an ID that is unique.
213
+     |
214
+     | An encouraged best practice for profile identification is to use a consistent naming convention
215
+     | for profiles, such as 'env-dev', 'env-test', 'env-production', 'user-jdcasey', 'user-brett', etc.
216
+     | This will make it more intuitive to understand what the set of introduced profiles is attempting
217
+     | to accomplish, particularly when you only have a list of profile id's for debug.
218
+     |
219
+     | This profile example uses the JDK version to trigger activation, and provides a JDK-specific repo.
220
+    <profile>
221
+      <id>jdk-1.4</id>
222
+
223
+      <activation>
224
+        <jdk>1.4</jdk>
225
+      </activation>
226
+
227
+      <repositories>
228
+        <repository>
229
+          <id>jdk14</id>
230
+          <name>Repository for JDK 1.4 builds</name>
231
+          <url>http://www.myhost.com/maven/jdk14</url>
232
+          <layout>default</layout>
233
+          <snapshotPolicy>always</snapshotPolicy>
234
+        </repository>
235
+      </repositories>
236
+    </profile>
237
+    -->
238
+<profile>
239
+      <activation>
240
+          <!-- 默认激活此 profile -->
241
+          <activeByDefault>true</activeByDefault>
242
+      </activation>
243
+      <repositories>
244
+        <repository>
245
+          <id>nexus</id>
246
+          <name>Nexus Repository</name>
247
+          <url>http://117.34.118.57:28081/repository/maven-public/</url>
248
+          <releases>
249
+            <enabled>true</enabled>
250
+          </releases>
251
+        </repository>
252
+      
253
+        <repository>
254
+          <id>central</id>
255
+          <name>Nexus Central Repository</name>
256
+          <url>http://117.34.118.57:28081/repository/maven-central/</url>
257
+          <releases>
258
+            <enabled>true</enabled>
259
+          </releases>
260
+          <snapshots>
261
+            <enabled>false</enabled>
262
+          </snapshots>
263
+        </repository>
264
+        
265
+        <repository>
266
+          <id>release</id>
267
+          <name>Nexus Release Repository</name>
268
+          <url>http://117.34.118.57:28081/repository/maven-releases/</url>
269
+          <releases>
270
+            <enabled>true</enabled>
271
+          </releases>
272
+          <snapshots>
273
+            <enabled>false</enabled>
274
+          </snapshots>
275
+        </repository>
276
+        
277
+        <repository>
278
+          <id>snapshots</id>
279
+          <name>Nexus Snapshots Repository</name>
280
+          <url>http://117.34.118.57:28081/repository/maven-snapshots/</url>
281
+          <releases>
282
+            <enabled>true</enabled>
283
+          </releases>
284
+          <snapshots>
285
+            <enabled>true</enabled>
286
+          </snapshots>
287
+        </repository>
288
+      </repositories>
289
+      
290
+      <pluginRepositories>
291
+        <pluginRepository>
292
+          <id>plugins</id>
293
+          <name>Nexus Plugin Repositories</name>
294
+          <url>http://117.34.118.57:28081/repository/maven-public/</url>
295
+        </pluginRepository>
296
+      </pluginRepositories>
297
+    </profile>
298
+    <!--
299
+     | Here is another profile, activated by the system property 'target-env' with a value of 'dev',
300
+     | which provides a specific path to the Tomcat instance. To use this, your plugin configuration
301
+     | might hypothetically look like:
302
+     |
303
+     | ...
304
+     | <plugin>
305
+     |   <groupId>org.myco.myplugins</groupId>
306
+     |   <artifactId>myplugin</artifactId>
307
+     |
308
+     |   <configuration>
309
+     |     <tomcatLocation>${tomcatPath}</tomcatLocation>
310
+     |   </configuration>
311
+     | </plugin>
312
+     | ...
313
+     |
314
+     | NOTE: If you just wanted to inject this configuration whenever someone set 'target-env' to
315
+     |       anything, you could just leave off the <value/> inside the activation-property.
316
+     |
317
+    <profile>
318
+      <id>env-dev</id>
319
+
320
+      <activation>
321
+        <property>
322
+          <name>target-env</name>
323
+          <value>dev</value>
324
+        </property>
325
+      </activation>
326
+
327
+      <properties>
328
+        <tomcatPath>/path/to/tomcat/instance</tomcatPath>
329
+      </properties>
330
+    </profile>
331
+    -->
332
+  </profiles>
333
+
334
+  <!-- activeProfiles
335
+   | List of profiles that are active for all builds.
336
+   |
337
+  <activeProfiles>
338
+    <activeProfile>alwaysActiveProfile</activeProfile>
339
+    <activeProfile>anotherAlwaysActiveProfile</activeProfile>
340
+  </activeProfiles>
341
+  -->
342
+</settings>

+ 12 - 0
src/main/java/com/gct/tools/etlcamelhuge/EtlCamelHugeApplication.java

@@ -0,0 +1,12 @@
1
+package com.gct.tools.etlcamelhuge;
2
+
3
+import org.springframework.boot.SpringApplication;
4
+import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
5
+import org.springframework.boot.autoconfigure.SpringBootApplication;
6
+
7
+@SpringBootApplication
8
+public class EtlCamelHugeApplication {
9
+    public static void main(String[] args) {
10
+        SpringApplication.run(EtlCamelHugeApplication.class, args);
11
+    }
12
+}

+ 49 - 0
src/main/java/com/gct/tools/etlcamelhuge/camelconfig/CamelContextAwareConfiguration.java

@@ -0,0 +1,49 @@
1
+package com.gct.tools.etlcamelhuge.camelconfig;
2
+
3
+import lombok.SneakyThrows;
4
+import lombok.extern.slf4j.Slf4j;
5
+import org.apache.camel.CamelContext;
6
+import org.apache.camel.CamelContextAware;
7
+import org.apache.camel.builder.RouteBuilder;
8
+import org.apache.camel.impl.engine.DefaultCamelContextNameStrategy;
9
+import org.springframework.beans.BeansException;
10
+import org.springframework.context.ApplicationContext;
11
+import org.springframework.context.ApplicationContextAware;
12
+import org.springframework.context.annotation.Configuration;
13
+
14
+import java.util.Map;
15
+
16
+/**
17
+ * class name: CamelContextAwareConfiguration
18
+ *
19
+ * @author lloyd
20
+ * @version 1.0
21
+ * @since 2021/4/14 下午5:28
22
+ */
23
+@Slf4j
24
+@Configuration
25
+public class CamelContextAwareConfiguration implements CamelContextAware, ApplicationContextAware {
26
+    private CamelContext camelContext;
27
+    private ApplicationContext applicationContext;
28
+
29
+
30
+    @SneakyThrows
31
+    @Override
32
+    public void setCamelContext(CamelContext cc) {
33
+        this.camelContext = cc;
34
+        camelContext.setNameStrategy(new DefaultCamelContextNameStrategy("lloyd-camel-etl"));
35
+        final Map<String, RouteBuilder> beans = applicationContext.getBeansOfType(RouteBuilder.class);
36
+        log.info("[I say:] total {} defined route builders ",beans.size());
37
+        for (RouteBuilder value : beans.values()) camelContext.addRoutes(value);
38
+    }
39
+
40
+    @Override
41
+    public CamelContext getCamelContext() {
42
+        return camelContext;
43
+    }
44
+
45
+    @Override
46
+    public void setApplicationContext(ApplicationContext appContext) throws BeansException {
47
+        applicationContext = appContext;
48
+    }
49
+}

+ 32 - 0
src/main/java/com/gct/tools/etlcamelhuge/camelconfig/MyDataSourceConfiguration.java

@@ -0,0 +1,32 @@
1
+package com.gct.tools.etlcamelhuge.camelconfig;
2
+
3
+import org.springframework.boot.autoconfigure.jdbc.DataSourceProperties;
4
+import org.springframework.boot.context.properties.ConfigurationProperties;
5
+import org.springframework.boot.jdbc.DataSourceBuilder;
6
+import org.springframework.context.annotation.Bean;
7
+import org.springframework.context.annotation.Configuration;
8
+
9
+import javax.sql.DataSource;
10
+
11
+/**
12
+ * class name: MyDataSourceConfiguration
13
+ *
14
+ * @author lloyd
15
+ * @version 1.0
16
+ * @since 2021/4/21 下午1:42
17
+ */
18
+@Configuration
19
+public class MyDataSourceConfiguration  {
20
+
21
+    @Bean(name = "centralbase")
22
+    @ConfigurationProperties(prefix = "spring.datasource.ds1")
23
+    public DataSource dataSource1( ){
24
+        return DataSourceBuilder.create().build();
25
+    }
26
+
27
+    @Bean(name = "diagnosis")
28
+    @ConfigurationProperties(prefix = "spring.datasource.ds2")
29
+    public DataSource dataSource2( ){
30
+        return DataSourceBuilder.create().build();
31
+    }
32
+}

+ 107 - 0
src/main/java/com/gct/tools/etlcamelhuge/routeconfig/CamelFileConfiguration.java

@@ -0,0 +1,107 @@
1
+package com.gct.tools.etlcamelhuge.routeconfig;
2
+
3
+import org.apache.camel.Message;
4
+import org.apache.camel.builder.RouteBuilder;
5
+import org.apache.camel.component.file.GenericFile;
6
+import org.slf4j.Logger;
7
+import org.slf4j.LoggerFactory;
8
+import org.springframework.context.annotation.Bean;
9
+import org.springframework.context.annotation.Configuration;
10
+
11
+import java.io.BufferedReader;
12
+import java.io.File;
13
+import java.io.FileInputStream;
14
+import java.io.InputStreamReader;
15
+import java.time.Duration;
16
+import java.time.LocalDateTime;
17
+import java.util.Date;
18
+import java.util.UUID;
19
+
20
+/**
21
+ * class name: CamelFileConfiguration
22
+ *
23
+ * @author lloyd
24
+ * @version 1.0
25
+ * @since 2021/4/14 下午3:07
26
+ */
27
+//@Configuration
28
+public class CamelFileConfiguration {
29
+
30
+    @Bean
31
+    RouteBuilder routeBuilderFile() {
32
+        return new RouteBuilder() {
33
+            private Object apply(GenericFile genericFile) {
34
+                File actualFile = File.class.cast(genericFile.getFile());
35
+                try {
36
+                    BufferedReader in = new BufferedReader(new InputStreamReader(new FileInputStream(actualFile)));
37
+                    StringBuilder s = new StringBuilder();
38
+                    while (true) {
39
+                        String s1 = in.readLine();
40
+                        s.append(s1);
41
+                        s.append("@MGT");
42
+
43
+                        if (s1 == null || s1.isEmpty()) break;
44
+
45
+//						s.append("\r\n");
46
+                    }
47
+                    s.append("\n,OK by lloyd!\n");
48
+                    log.info("return s ::{}", s.toString());
49
+                    return s.toString();
50
+//							FileWriter writer = new FileWriter(actualFile);
51
+
52
+//							writer.append("your code perfect");
53
+//							writer.close();
54
+                } catch (Exception e) {
55
+                    throw new RuntimeException("OK!there is a error");
56
+                }
57
+            }
58
+
59
+            Logger log = LoggerFactory.getLogger(this.getClass());
60
+
61
+            @Override
62
+            public void configure() throws Exception {
63
+//				from("jms-queue:queue:my-queue")
64
+                from("file:{{user.home}}/Desktop/cameltest/in")
65
+                    .routeId("file-to-file")
66
+                        .transform()
67
+                            .body(GenericFile.class, this::apply)
68
+                        .log("this is my test -camel")
69
+                        .setHeader("CamelFileName", () -> UUID.randomUUID().toString())
70
+                        .tracing()
71
+                        .process()
72
+                            .exchange(exchange -> {
73
+                                new Date().toInstant();
74
+                                LocalDateTime start = LocalDateTime.now();
75
+                                final Message in = exchange.getIn();
76
+                                String body = in.getBody(String.class);
77
+                                log.info("body is {}", body);
78
+                                Thread t = new Thread(() -> {
79
+                                    while (true) {
80
+                                        try {
81
+                                            Thread.sleep(1000);
82
+                                        } catch (InterruptedException e) {
83
+                                            e.printStackTrace();
84
+                                        }
85
+                                        log.warn("thread completed");
86
+                                        break;
87
+                                    }
88
+                                });
89
+                                t.start();
90
+
91
+                                try {
92
+                                    t.join();
93
+
94
+                                } catch (InterruptedException e) {
95
+                                    e.printStackTrace();
96
+                                }
97
+
98
+                                final LocalDateTime end = LocalDateTime.now();
99
+                                final long l = Duration.between(start, end).toDays();
100
+                                log.warn("run with time : {}", l);
101
+                            })
102
+                .to("file:{{user.home}}/Desktop/cameltest/out");
103
+            }
104
+        };
105
+    }
106
+
107
+}

+ 98 - 0
src/main/java/com/gct/tools/etlcamelhuge/routeconfig/CamelJDBCConfiguration.java

@@ -0,0 +1,98 @@
1
+package com.gct.tools.etlcamelhuge.routeconfig;
2
+
3
+import org.apache.camel.Exchange;
4
+import org.apache.camel.Message;
5
+import org.apache.camel.Predicate;
6
+import org.apache.camel.Processor;
7
+import org.apache.camel.builder.RouteBuilder;
8
+import org.springframework.context.annotation.Bean;
9
+import org.springframework.context.annotation.Configuration;
10
+
11
+import java.util.ArrayList;
12
+import java.util.HashMap;
13
+
14
+/**
15
+ * class name: CamelJDBCConfiguration
16
+ *
17
+ * @author lloyd
18
+ * @version 1.0
19
+ * @since 2021/4/14 下午3:16
20
+ */
21
+@Configuration
22
+public class CamelJDBCConfiguration {
23
+
24
+
25
+    @Bean
26
+    public RouteBuilder routeBuilder() {
27
+        ArrayList<HashMap<String, Object>> hashMaps = new ArrayList<>();
28
+        return new RouteBuilder() {
29
+            @Override
30
+            public void configure() throws Exception {
31
+                from("timer://foo?period=1000")
32
+                .routeId("jdbc-pg-?")
33
+                .setHeader("prod_time_ctl", constant("2021-02-27 10:00:00.000000"))
34
+                 //.setBody(constant("select * from centralbase.cb_temp_well_mech_runtime where prod_date= :prod_time_ctl "))
35
+                .setBody(simple("select * from centralbase.cb_temp_well_mech_runtime where prod_date= :?prod_time_ctl ::timestamp "))
36
+                .log("select body :${body}")
37
+                .to("jdbc:centralbase?useHeadersAsParameters=true")
38
+                .tracing()
39
+                //via transform
40
+                .transform()
41
+                    .body(result -> {
42
+                        ArrayList<HashMap<String, Object>> list = hashMaps.getClass().cast(result);
43
+                        log.info("The data count:{}", list.toString());
44
+                        return list;
45
+                    })
46
+                //split data to one by one
47
+                .split(body()).process(exchange -> {
48
+                    Message in = exchange.getIn();
49
+                    HashMap<String, Object> aRow = in.getBody(HashMap.class);
50
+                    log.info("The data count2222:{}", aRow.toString());
51
+                })
52
+                .log("ok?").setHeader("dddd", constant("ssss"))
53
+                /*.process().message(message -> {
54
+                    log.info("message:{}", message.getHeader("dddd"));
55
+                    ArrayList<HashMap<String, Object>>  body = message.getBody(ArrayList.class);
56
+                    log.info("body::::{}",body.toString());
57
+                })*/
58
+                /*.process(exchange -> {
59
+                    Message in = exchange.getIn();
60
+                    ArrayList<HashMap<String, Object>> aRow = in.getBody(ArrayList.class);
61
+                    log.info("The data count3333:{}", aRow.toString());
62
+                })*/
63
+                //create "insert sql" with parameters
64
+               .setBody(simple("insert into dgns_gtbaseparam(wellname,recivetime,sgt) values('${body[well_id]}','${body[prod_date]}' :: timestamp,'${body[sgt]}')"))
65
+                //now for test
66
+                //.setBody(simple("insert into dgns_gtbaseparam(wellname,recivetime,sgt) values('${body[well_id]}',now(),'${body[sgt]}')"))
67
+                //look up the insert sql
68
+                .process().message(message -> {
69
+                    log.info("The insert sql {}", message.getBody(String.class));
70
+                })
71
+                //try test
72
+                .doTry()
73
+                    .to("jdbc:diagnosis").log("insert completed")
74
+
75
+                .doCatch(Throwable.class)
76
+                    .log("primary key already exited,insert failed")
77
+                    //"if" statement test
78
+                    /*.choice()
79
+                        .when(exchange -> {
80
+                            return exchange.getException() != null;
81
+                           *//* if (exchange.getException() != null) {
82
+                                log.error(exchange.getException().getMessage());
83
+                                return exchange.getException().getMessage().contains("already");
84
+                            }
85
+                            return false;*//*
86
+                        }).log("primary key already exited,insert failed")
87
+                        .otherwise().log("insert completed")
88
+                    .endChoice()*/
89
+                .end();
90
+
91
+            }
92
+
93
+            ;
94
+
95
+
96
+        };
97
+    }
98
+}

+ 84 - 0
src/main/java/com/gct/tools/etlcamelhuge/routeconfig/CamelJMSConfiguration.java

@@ -0,0 +1,84 @@
1
+package com.gct.tools.etlcamelhuge.routeconfig;
2
+
3
+import lombok.extern.slf4j.Slf4j;
4
+import org.apache.camel.Message;
5
+import org.apache.camel.builder.RouteBuilder;
6
+import org.apache.camel.component.file.GenericFile;
7
+import org.springframework.context.annotation.Bean;
8
+import org.springframework.context.annotation.Configuration;
9
+
10
+import java.io.BufferedReader;
11
+import java.io.File;
12
+import java.io.FileInputStream;
13
+import java.io.InputStreamReader;
14
+
15
+/**
16
+ * class name: CamelJMSConfiguration
17
+ *
18
+ * @author lloyd
19
+ * @version 1.0
20
+ * @since 2021/4/14 下午3:17
21
+ */
22
+@Slf4j
23
+//@Configuration
24
+public class CamelJMSConfiguration  {
25
+    @Bean
26
+    RouteBuilder routeBuilderJms() {
27
+        return new RouteBuilder() {
28
+            @Override
29
+            public void configure() throws Exception {
30
+                from("file:{{user.home}}/Desktop/cameltest/out")
31
+                    .routeId("file-to-jms")
32
+                    .transform()
33
+                        .body(GenericFile.class, gf -> {
34
+                            final BufferedReader in;
35
+                            try {
36
+                                in = new BufferedReader(new InputStreamReader(new FileInputStream((File) gf.getFile())));
37
+                                StringBuilder sb = new StringBuilder();
38
+                                while (true) {
39
+                                    String s = in.readLine();
40
+                                    if (s == null || s.isEmpty()) break;
41
+                                    sb.append(s);
42
+                                }
43
+                                return sb.toString();
44
+                            } catch (Exception e) {
45
+                                throw new RuntimeException("read fault!");
46
+                            }
47
+                        })
48
+                    .process()
49
+                        .exchange(exchange -> {
50
+                            final Message in = exchange.getIn();
51
+                            String body = in.getBody(String.class);
52
+                            log.info("exchange is :" + body);
53
+                        })
54
+                .to("jms:queue:testfiles").tracing();
55
+
56
+                from("jms:queue:testfiles")
57
+                    .routeId("jms-to-file")
58
+                    .transform()
59
+                        .body(String.class, s -> s + "amazing\n")
60
+                    .process()
61
+                        .exchange(exchange -> {
62
+                            final Message in = exchange.getIn();
63
+                            log.info("from jms exchange is :" + in.getBody(String.class));
64
+                        })
65
+                .to("file:{{user.home}}/Desktop/cameltest/jmsout").tracing();
66
+            }
67
+        };
68
+    }
69
+
70
+    /* @Component
71
+    static class DefaultJmsComponent implements ComponentCustomizer<JmsComponent> {
72
+
73
+        private final ConnectionFactory connectionFactory;
74
+
75
+        DefaultJmsComponent(ConnectionFactory connectionFactory) {
76
+            this.connectionFactory = connectionFactory;
77
+        }
78
+
79
+        @Override
80
+        public void customize(JmsComponent component) {
81
+            component.setConnectionFactory(connectionFactory);
82
+        }
83
+    }*/
84
+}

+ 11 - 0
src/main/java/com/gct/tools/etlcamelhuge/routeconfig/CamelRocketMQConfiguration.java

@@ -0,0 +1,11 @@
1
+package com.gct.tools.etlcamelhuge.routeconfig;
2
+
3
+/**
4
+ * class name: CamelRocketMQConfiguration
5
+ *
6
+ * @author lloyd
7
+ * @version 1.0
8
+ * @since 2021/5/17 下午4:14
9
+ */
10
+public class CamelRocketMQConfiguration {
11
+}

+ 71 - 0
src/main/resources/application.yml

@@ -0,0 +1,71 @@
1
+
2
+camel:
3
+  springboot:
4
+    main-run-controller: true
5
+spring:
6
+  ## 数据库配置
7
+  datasource:
8
+    ds1:
9
+      ## Hikari连接池的设置 Hikari 时间单位都是毫秒
10
+      type: com.zaxxer.hikari.HikariDataSource
11
+      jdbc-url: jdbc:postgresql://101.200.219.190:54321/database
12
+      username: root
13
+      password: 123456
14
+      driver-class-name: org.postgresql.Driver
15
+      hikari:
16
+        ## 连接池名字
17
+        pool-name: SystemHikariCP
18
+        ## 最小空闲连接数量
19
+        minimum-idle: 5
20
+        ## 空闲连接存活最大时间,默认600000(10分钟)
21
+        idle-timeout: 60000
22
+        ## 连接池最大连接数,默认是10
23
+        maximum-pool-size: 15
24
+        ## 此属性控制从池返回的连接的默认自动提交行为,默认值:true
25
+        auto-commit: true
26
+        ## 此属性控制池中连接的最长生命周期,值0表示无限生命周期,默认1800000即30分钟
27
+        max-lifetime: 1800000
28
+        ## 数据库连接超时时间,默认30秒,即30000
29
+        connection-timeout: 30000
30
+    ds2:
31
+      ## Hikari连接池的设置 Hikari 时间单位都是毫秒
32
+      type: com.zaxxer.hikari.HikariDataSource
33
+      jdbc-url: jdbc:postgresql://101.200.219.190:54321/diagnosis
34
+      username: root
35
+      password: 123456
36
+      driver-class-name: org.postgresql.Driver
37
+      hikari:
38
+        ## 连接池名字
39
+        pool-name: SystemHikariCP
40
+        ## 最小空闲连接数量
41
+        minimum-idle: 5
42
+        ## 空闲连接存活最大时间,默认600000(10分钟)
43
+        idle-timeout: 60000
44
+        ## 连接池最大连接数,默认是10
45
+        maximum-pool-size: 15
46
+        ## 此属性控制从池返回的连接的默认自动提交行为,默认值:true
47
+        auto-commit: true
48
+        ## 此属性控制池中连接的最长生命周期,值0表示无限生命周期,默认1800000即30分钟
49
+        max-lifetime: 1800000
50
+        ## 数据库连接超时时间,默认30秒,即30000
51
+        connection-timeout: 30000
52
+
53
+management:
54
+  info:
55
+    camel:
56
+      enabled: true
57
+  endpoint:
58
+    camelroutes:
59
+      read-only: false
60
+      enabled: true
61
+    camelroutecontroller:
62
+      enabled: true
63
+#Actuator for camel was not supported at camel version > 3.4
64
+  endpoints:
65
+    web:
66
+      exposure:
67
+        include:  health, info,camelroutes , camelroutecontroller
68
+      cors:
69
+        allow-credentials: off
70
+server:
71
+  port: 8080

+ 145 - 0
src/test/java/com/gct/tools/etlcamelhuge/EtlCamelHugeApplicationTests.java

@@ -0,0 +1,145 @@
1
+package com.gct.tools.etlcamelhuge;
2
+
3
+import lombok.Data;
4
+import org.junit.jupiter.api.Test;
5
+import org.junit.runner.RunWith;
6
+import org.springframework.boot.test.context.SpringBootTest;
7
+import org.springframework.test.context.junit4.SpringRunner;
8
+
9
+import java.lang.reflect.Array;
10
+import java.lang.reflect.InvocationTargetException;
11
+import java.util.ArrayList;
12
+import java.util.Arrays;
13
+import java.util.List;
14
+
15
+@RunWith(SpringRunner.class)
16
+@SpringBootTest
17
+class EtlCamelHugeApplicationTests {
18
+
19
+    @Test
20
+    public void contextLoads() {
21
+    }
22
+
23
+    @Test
24
+    public void test1() {
25
+        Double[] num = {8.0, 6.0, 3.0, 2.0};
26
+        List<Double> lis = new java.util.ArrayList<>(Arrays.asList(num));
27
+        lis.add(0.9);
28
+        System.out.println("1___________" + lis);
29
+        List<Double> lis1 = new java.util.ArrayList<Double>(Arrays.asList(lis.subList(lis.size() / 2 - 1, lis.size()).toArray(new Double[]{})));
30
+        List<Double> lis2 = new java.util.ArrayList<Double>(Arrays.asList(lis.subList(0, lis.size() / 2 - 1).toArray(new Double[]{})));
31
+
32
+        double x = lis.get(0).doubleValue();
33
+        System.out.println("2___________" + lis1);
34
+
35
+        lis.add(lis.get(0));
36
+        System.out.println("3___________" + lis);
37
+        lis1.add(lis.get(0));
38
+        lis2.add(9.8);
39
+        System.out.println("4___________" + lis1);
40
+        System.out.println("___________" + lis2);
41
+    }
42
+
43
+    @Test
44
+    public void test2() {
45
+        List<Double[]> p1 = new ArrayList<>();
46
+        Double[] num0 = {8.0, 6.0};
47
+        Double[] num1 = {0.0, 5.0};
48
+        Double[] num2 = {6.0, 7.0};
49
+
50
+        p1.add(num0);
51
+        p1.add(num1);
52
+        p1.add(num2);
53
+        System.out.println(p1.toArray(new Double[p1.size()][]));
54
+        System.out.println("p1====================" + p1);
55
+
56
+        Double[][] a = new Double[][]{};
57
+        System.out.println(a.getClass());
58
+        List<Double[]> p_p1 = p1.subList(0, p1.size() / 2);
59
+        System.out.println(p_p1);
60
+
61
+        p_p1.add(num0);
62
+        System.out.println(p_p1);
63
+        System.out.println("p1====================" + p1);
64
+        if (false) {
65
+            List<Double> lis = new java.util.ArrayList<>(Arrays.asList(num0));
66
+            lis.add(0.9);
67
+            System.out.println("1___________" + lis);
68
+            List<Double> lis1 = new java.util.ArrayList<Double>(Arrays.asList(lis.subList(lis.size() / 2 - 1, lis.size()).toArray(new Double[]{})));
69
+            List<Double> lis2 = new java.util.ArrayList<Double>(Arrays.asList(lis.subList(0, lis.size() / 2 - 1).toArray(new Double[]{})));
70
+
71
+            double x = lis.get(0).doubleValue();
72
+            System.out.println("2___________" + lis1);
73
+
74
+            lis.add(lis.get(0));
75
+            System.out.println("3___________" + lis);
76
+            lis1.add(lis.get(0));
77
+            lis2.add(9.8);
78
+            System.out.println("4___________" + lis1);
79
+            System.out.println("___________" + lis2);
80
+        }
81
+    }
82
+
83
+    @Data
84
+    class te{
85
+        private double m;
86
+
87
+//        @Cons
88
+        public te(double m) {
89
+            this.m = m;
90
+        }
91
+    }
92
+    @Test
93
+    public void test3() {
94
+
95
+        te s=new te(0.9);
96
+        System.out.println(s);
97
+        System.out.println(s.getClass());
98
+        try {
99
+            Class<?> clazz = Class.forName("com.gct.tools.etlcamelhuge.EtlCamelHugeApplicationTests$te");
100
+            te t = (te) clazz.getConstructor(double.class).newInstance(9.0);
101
+
102
+            System.out.println(t);
103
+
104
+        } catch (NoSuchMethodException e) {
105
+            e.printStackTrace();
106
+        } catch (InvocationTargetException e) {
107
+            e.printStackTrace();
108
+        } catch (InstantiationException e) {
109
+            e.printStackTrace();
110
+        } catch (IllegalAccessException e) {
111
+            e.printStackTrace();
112
+        } catch (ClassNotFoundException e) {
113
+            e.printStackTrace();
114
+        }
115
+
116
+        ArrayList<Double> a1=new ArrayList<Double>();
117
+
118
+        a1.add(0.9);
119
+        a1.add(0.8);
120
+        Double[] objects = a1.toArray(new Double[]{});
121
+
122
+        for (int i = 0; i < objects.length; i++) {
123
+            System.out.println(objects[i]);
124
+        }
125
+
126
+    }
127
+
128
+    private <T> T[][] transfer(List<List<T>> source,Class<T> tClass){
129
+
130
+        List<T[]> l1=new ArrayList<>();
131
+        for (List<T> ts : source) {
132
+            T[] t=(T[]) Array.newInstance(tClass,ts.size());
133
+            for (int i = 0; i < ts.size(); i++) {
134
+                t[i]=ts.get(i);
135
+            }
136
+
137
+            l1.add(t);
138
+        }
139
+        T[][] ts = l1.toArray((T[][]) Array.newInstance(tClass, source.size()));
140
+        return ts;
141
+
142
+    }
143
+
144
+
145
+}