傅行帆 5 vuotta sitten
vanhempi
commit
d1ce5d4a27

+ 31
- 0
generator_service/.gitignore Näytä tiedosto

@@ -0,0 +1,31 @@
1
+HELP.md
2
+target/
3
+!.mvn/wrapper/maven-wrapper.jar
4
+!**/src/main/**
5
+!**/src/test/**
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
+
30
+### VS Code ###
31
+.vscode/

+ 117
- 0
generator_service/.mvn/wrapper/MavenWrapperDownloader.java Näytä tiedosto

@@ -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
generator_service/.mvn/wrapper/maven-wrapper.jar Näytä tiedosto


+ 2
- 0
generator_service/.mvn/wrapper/maven-wrapper.properties Näytä tiedosto

@@ -0,0 +1,2 @@
1
+distributionUrl=https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/3.6.3/apache-maven-3.6.3-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
generator_service/mvnw Näytä tiedosto

@@ -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
generator_service/mvnw.cmd Näytä tiedosto

@@ -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%

+ 92
- 0
generator_service/pom.xml Näytä tiedosto

@@ -0,0 +1,92 @@
1
+<?xml version="1.0" encoding="UTF-8"?>
2
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
3
+	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
4
+	<modelVersion>4.0.0</modelVersion>
5
+	<parent>
6
+		<groupId>org.springframework.boot</groupId>
7
+		<artifactId>spring-boot-starter-parent</artifactId>
8
+		<version>2.2.5.RELEASE</version>
9
+		<relativePath/> <!-- lookup parent from repository -->
10
+	</parent>
11
+	<groupId>com.example</groupId>
12
+	<artifactId>generator_service</artifactId>
13
+	<version>0.0.1-SNAPSHOT</version>
14
+
15
+	<properties>
16
+		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
17
+		<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
18
+		<java.version>1.8</java.version>
19
+		<spring-cloud.version>Finchley.SR1</spring-cloud.version>
20
+	</properties>
21
+
22
+	<dependencies>
23
+		<dependency>
24
+			<groupId>org.springframework.boot</groupId>
25
+			<artifactId>spring-boot-starter-web</artifactId>
26
+		</dependency>
27
+
28
+		<dependency>
29
+			<groupId>org.springframework.boot</groupId>
30
+			<artifactId>spring-boot-starter</artifactId>
31
+		</dependency>
32
+
33
+		<dependency>
34
+			<groupId>mysql</groupId>
35
+			<artifactId>mysql-connector-java</artifactId>
36
+			<scope>runtime</scope>
37
+		</dependency>
38
+
39
+		<dependency>
40
+			<groupId>com.baomidou</groupId>
41
+			<artifactId>mybatis-plus-boot-starter</artifactId>
42
+			<version>3.0.6</version>
43
+		</dependency>
44
+		<!-- https://mvnrepository.com/artifact/freemarker/freemarker -->
45
+		<dependency>
46
+			<groupId>freemarker</groupId>
47
+			<artifactId>freemarker</artifactId>
48
+			<version>2.3.8</version>
49
+		</dependency>
50
+
51
+		<!-- https://mvnrepository.com/artifact/org.projectlombok/lombok -->
52
+		<dependency>
53
+			<groupId>org.projectlombok</groupId>
54
+			<artifactId>lombok</artifactId>
55
+			<version>1.18.2</version>
56
+			<scope>provided</scope>
57
+		</dependency>
58
+
59
+		<dependency>
60
+			<groupId>com.alibaba</groupId>
61
+			<artifactId>fastjson</artifactId>
62
+			<version>1.2.56</version>
63
+		</dependency>
64
+
65
+		<dependency>
66
+			<groupId>org.springframework.boot</groupId>
67
+			<artifactId>spring-boot-starter-test</artifactId>
68
+			<scope>test</scope>
69
+			<exclusions>
70
+				<exclusion>
71
+					<groupId>org.junit.vintage</groupId>
72
+					<artifactId>junit-vintage-engine</artifactId>
73
+				</exclusion>
74
+			</exclusions>
75
+		</dependency>
76
+	</dependencies>
77
+
78
+	<build>
79
+		<plugins>
80
+			<plugin>
81
+				<groupId>org.springframework.boot</groupId>
82
+				<artifactId>spring-boot-maven-plugin</artifactId>
83
+			</plugin>
84
+			<plugin>
85
+				<groupId>org.mybatis.generator</groupId>
86
+				<artifactId>mybatis-generator-maven-plugin</artifactId>
87
+				<version>1.3.2</version>
88
+			</plugin>
89
+		</plugins>
90
+	</build>
91
+
92
+</project>

+ 14
- 0
generator_service/src/main/java/com/example/demo/DemoApplication.java Näytä tiedosto

@@ -0,0 +1,14 @@
1
+package com.example.demo;
2
+
3
+import org.springframework.boot.SpringApplication;
4
+import org.springframework.boot.autoconfigure.SpringBootApplication;
5
+import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration;
6
+
7
+@SpringBootApplication(exclude= {DataSourceAutoConfiguration.class})
8
+public class DemoApplication {
9
+
10
+	public static void main(String[] args) {
11
+		SpringApplication.run(DemoApplication.class, args);
12
+	}
13
+
14
+}

+ 8
- 0
generator_service/src/main/java/com/example/demo/common/BaseController.java Näytä tiedosto

@@ -0,0 +1,8 @@
1
+package com.example.demo.common;
2
+
3
+/**
4
+ * @author FXF
5
+ * @date 2018-12-18
6
+ */
7
+public class BaseController {
8
+}

+ 180
- 0
generator_service/src/main/java/com/example/demo/controller/DbController.java Näytä tiedosto

@@ -0,0 +1,180 @@
1
+package com.example.demo.controller;
2
+
3
+import com.alibaba.fastjson.JSONObject;
4
+import com.baomidou.mybatisplus.core.toolkit.StringPool;
5
+import com.baomidou.mybatisplus.generator.AutoGenerator;
6
+import com.baomidou.mybatisplus.generator.InjectionConfig;
7
+import com.baomidou.mybatisplus.generator.config.*;
8
+import com.baomidou.mybatisplus.generator.config.po.TableInfo;
9
+import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy;
10
+import com.baomidou.mybatisplus.generator.engine.FreemarkerTemplateEngine;
11
+import com.example.demo.model.DbConfig;
12
+import com.example.demo.util.CodeUtil;
13
+import com.example.demo.util.ZipUtil;
14
+import org.springframework.stereotype.Controller;
15
+import org.springframework.util.StringUtils;
16
+import org.springframework.web.bind.annotation.*;
17
+
18
+import javax.servlet.http.HttpServletRequest;
19
+import javax.servlet.http.HttpServletResponse;
20
+import java.io.*;
21
+import java.net.URLEncoder;
22
+import java.sql.Connection;
23
+import java.sql.DatabaseMetaData;
24
+import java.sql.DriverManager;
25
+import java.sql.ResultSet;
26
+import java.util.ArrayList;
27
+import java.util.List;
28
+import java.util.UUID;
29
+
30
+@RestController
31
+@RequestMapping("/api")
32
+public class DbController {
33
+
34
+    @PostMapping("/connection")
35
+    public List<String> connection(@RequestBody DbConfig dbConfig){
36
+        List<String> tables = new ArrayList<>();
37
+        String mysqlUrl = "jdbc:mysql://"+dbConfig.getMysqlIp()+":"+dbConfig.getMysqlPort()+"/"+dbConfig.getMysqlName()+"?useUnicode=true&characterEncoding=UTF-8&allowMultiQueries=true";
38
+        try {
39
+            Connection con = DriverManager.getConnection(mysqlUrl,dbConfig.getMysqlUsername(),dbConfig.getMysqlUserpass());
40
+            DatabaseMetaData meta = con.getMetaData();
41
+            ResultSet rs = meta.getTables(null, null, null,
42
+                    new String[] { "TABLE" });
43
+            while (rs.next()) {
44
+                tables.add(rs.getString(3));
45
+            }
46
+            con.close();
47
+        } catch (Exception e) {
48
+            e.printStackTrace();
49
+        }
50
+        return tables;
51
+    }
52
+
53
+    @PostMapping("/create")
54
+    public void create(@RequestBody DbConfig dbConfig, HttpServletRequest request, HttpServletResponse response) throws UnsupportedEncodingException {
55
+        String newFileName = "D:/" + UUID.randomUUID().toString().replaceAll("-", "") + "/" + "cj-demo";
56
+        dbConfig.getMysqlLib().forEach(e -> {
57
+            AutoGeneratorFile(dbConfig,newFileName,e);
58
+        });
59
+        //设置响应头,控制浏览器下载该文件
60
+        response.setHeader("content-disposition", "attachment;filename=" + URLEncoder.encode("cj-demo" + ".zip", "UTF-8"));
61
+        response.setCharacterEncoding("UTF-8");
62
+
63
+        try {
64
+            File file = new File(newFileName + ".zip");
65
+            if (!file.exists()) {
66
+                file.createNewFile();
67
+            }
68
+            FileOutputStream fous = new FileOutputStream(file);
69
+
70
+            //压缩导出
71
+            ZipUtil.toZip(newFileName, fous, true);
72
+            response.setContentType("application/x-msdownload");
73
+            //读取要下载的文件,保存到文件输入流
74
+            FileInputStream in = new FileInputStream(file);
75
+            //创建输出流
76
+            OutputStream out = response.getOutputStream();
77
+            //创建缓冲区
78
+            byte[] buffer = new byte[1024];
79
+            int len;
80
+            //循环将输入流中的内容读取到缓冲区当中
81
+            while ((len = in.read(buffer)) > 0) {
82
+                //输出缓冲区的内容到浏览器,实现文件下载
83
+                out.write(buffer, 0, len);
84
+            }
85
+            //关闭文件输入流
86
+            in.close();
87
+            //关闭输出流
88
+            out.close();
89
+        } catch (Exception e) {
90
+            e.printStackTrace();
91
+        }
92
+        String delFileName = newFileName.substring(0, newFileName.lastIndexOf("/"));
93
+        //删除临时文件夹
94
+        CodeUtil.delFolder(delFileName);
95
+    }
96
+
97
+    public void AutoGeneratorFile(DbConfig dbConfig, String newFileName,String tableName) {
98
+        String mysqlUrl = "jdbc:mysql://"+dbConfig.getMysqlIp()+":"+dbConfig.getMysqlPort()+"/"+dbConfig.getMysqlName()+"?useUnicode=true&characterEncoding=UTF-8&allowMultiQueries=true";
99
+        // 代码生成器
100
+        AutoGenerator mpg = new AutoGenerator();
101
+
102
+        // 全局配置
103
+        GlobalConfig gc = new GlobalConfig();
104
+        gc.setOutputDir(newFileName);
105
+        gc.setAuthor(StringUtils.isEmpty(dbConfig.getAuthor()) ? "cj" : dbConfig.getAuthor());
106
+        gc.setOpen(false);
107
+        mpg.setGlobalConfig(gc);
108
+
109
+        // 数据源配置
110
+        DataSourceConfig dsc = new DataSourceConfig();
111
+        dsc.setUrl(mysqlUrl);
112
+        dsc.setDriverName("com.mysql.cj.jdbc.Driver");
113
+        dsc.setUsername(dbConfig.getMysqlUsername());
114
+        dsc.setPassword(dbConfig.getMysqlUserpass());
115
+        mpg.setDataSource(dsc);
116
+
117
+        // 包配置
118
+        PackageConfig pc = new PackageConfig();
119
+//        pc.setModuleName("fxf");
120
+        pc.setParent(dbConfig.getPackPath());
121
+        mpg.setPackageInfo(pc);
122
+
123
+        // 自定义配置
124
+        InjectionConfig cfg = new InjectionConfig() {
125
+            @Override
126
+            public void initMap() {
127
+                // to do nothing
128
+            }
129
+        };
130
+
131
+        // 如果模板引擎是 freemarker
132
+        String templatePath = "/templates/mapper.xml.ftl";
133
+        // 如果模板引擎是 velocity
134
+        // String templatePath = "/templatesPlus/mapper.xml.vm";
135
+
136
+        // 自定义输出配置
137
+        List<FileOutConfig> focList = new ArrayList<>();
138
+        // 自定义配置会被优先输出
139
+        focList.add(new FileOutConfig(templatePath) {
140
+            @Override
141
+            public String outputFile(TableInfo tableInfo) {
142
+                // 自定义输出文件名
143
+                return newFileName + "/mapper/"
144
+                        + "/" + tableInfo.getEntityName() + "Mapper" + StringPool.DOT_XML;
145
+            }
146
+        });
147
+
148
+        cfg.setFileOutConfigList(focList);
149
+        mpg.setCfg(cfg);
150
+
151
+        // 配置模板
152
+        TemplateConfig templateConfig = new TemplateConfig();
153
+
154
+        // 配置自定义输出模板
155
+        // templateConfig.setEntity();
156
+        // templateConfig.setService();
157
+        templateConfig.setController("templatesPlus/controller.java");
158
+
159
+        templateConfig.setXml(null);
160
+        mpg.setTemplate(templateConfig);
161
+
162
+        // 策略配置
163
+        StrategyConfig strategy = new StrategyConfig();
164
+        strategy.setNaming(NamingStrategy.underline_to_camel);
165
+        strategy.setColumnNaming(NamingStrategy.underline_to_camel);
166
+        //strategy.setSuperEntityClass("com.baomidou.ant.common.BaseEntity");
167
+        strategy.setEntityLombokModel(true);
168
+        strategy.setRestControllerStyle(true);
169
+        strategy.setSuperControllerClass("com.example.demo.common.BaseController");
170
+        //表名
171
+        strategy.setInclude(tableName);
172
+        strategy.setSuperEntityColumns("id");
173
+        strategy.setControllerMappingHyphenStyle(true);
174
+        strategy.setTablePrefix(pc.getModuleName() + "_");
175
+        mpg.setStrategy(strategy);
176
+        mpg.setTemplateEngine(new FreemarkerTemplateEngine());
177
+        mpg.execute();
178
+    }
179
+
180
+}

+ 19
- 0
generator_service/src/main/java/com/example/demo/model/DbConfig.java Näytä tiedosto

@@ -0,0 +1,19 @@
1
+package com.example.demo.model;
2
+
3
+import lombok.Data;
4
+
5
+import java.util.List;
6
+
7
+@Data
8
+public class DbConfig {
9
+
10
+    private String mysqlIp;
11
+    private String mysqlPort;
12
+    private String mysqlUsername;
13
+    private String mysqlUserpass;
14
+    private String mysqlName;
15
+
16
+    private List<String> mysqlLib;
17
+    private String packPath;
18
+    private String author;
19
+}

+ 79
- 0
generator_service/src/main/java/com/example/demo/util/CodeUtil.java Näytä tiedosto

@@ -0,0 +1,79 @@
1
+package com.example.demo.util;
2
+
3
+import java.io.File;
4
+
5
+/**
6
+ * @Author: ChenBin
7
+ * @Date: 2018/6/6/0006 16:25
8
+ */
9
+public class CodeUtil {
10
+
11
+    /**
12
+     * 创建文件夹
13
+     *
14
+     * @param path 文件路径
15
+     * @return
16
+     */
17
+    public static File getFile(String path) {
18
+        File file = new File(path);
19
+        if (!file.getParentFile().exists()) {
20
+            file.getParentFile().mkdirs();
21
+        }
22
+        return file;
23
+    }
24
+
25
+    public static boolean delAllFile(String path) {
26
+        boolean flag = false;
27
+        File file = new File(path);
28
+        if (!file.exists()) {
29
+            return flag;
30
+        }
31
+        if (!file.isDirectory()) {
32
+            return flag;
33
+        }
34
+        String[] tempList = file.list();
35
+        File temp;
36
+        for (int i = 0; i < tempList.length; i++) {
37
+            if (path.endsWith(File.separator)) {
38
+                temp = new File(path + tempList[i]);
39
+            } else {
40
+                temp = new File(path + File.separator + tempList[i]);
41
+            }
42
+            if (temp.isFile()) {
43
+                temp.delete();
44
+            }
45
+            if (temp.isDirectory()) {
46
+                // 先删除文件夹里面的文件
47
+                delAllFile(path + "/" + tempList[i]);
48
+                // 再删除空文件夹
49
+                delFolder(path + "/" + tempList[i]);
50
+                flag = true;
51
+            }
52
+        }
53
+        return flag;
54
+    }
55
+
56
+    /***
57
+     * 删除文件夹
58
+     *
59
+     * @param folderPath 文件夹完整绝对路径
60
+     */
61
+    public static void delFolder(String folderPath) {
62
+        try {
63
+            // 删除完里面所有内容
64
+            delAllFile(folderPath);
65
+            String filePath = folderPath;
66
+            filePath = filePath.toString();
67
+            File myFilePath = new File(filePath);
68
+            // 删除空文件夹
69
+            myFilePath.delete();
70
+        } catch (Exception e) {
71
+            e.printStackTrace();
72
+        }
73
+    }
74
+
75
+
76
+    public static String packageConvertPath(String packageName) {
77
+        return String.format("/%s/", packageName.contains(".") ? packageName.replaceAll("\\.", "/") : packageName);
78
+    }
79
+}

+ 144
- 0
generator_service/src/main/java/com/example/demo/util/ZipUtil.java Näytä tiedosto

@@ -0,0 +1,144 @@
1
+package com.example.demo.util;
2
+
3
+import java.io.File;
4
+import java.io.FileInputStream;
5
+import java.io.IOException;
6
+import java.io.OutputStream;
7
+import java.util.List;
8
+import java.util.zip.ZipEntry;
9
+import java.util.zip.ZipOutputStream;
10
+
11
+/**
12
+ * @author Chenbin
13
+ */
14
+public class ZipUtil {
15
+    private static final int BUFFER_SIZE = 2 * 1024;
16
+
17
+
18
+    /**
19
+     * 压缩成ZIP 方法1
20
+     *
21
+     * @param srcDir           压缩文件夹路径
22
+     * @param out              压缩文件输出流
23
+     * @param keepDirStructure 是否保留原来的目录结构,true:保留目录结构;
24
+     *                         false:所有文件跑到压缩包根目录下(注意:不保留目录结构可能会出现同名文件,会压缩失败)
25
+     * @throws RuntimeException 压缩失败会抛出运行时异常
26
+     */
27
+    public static void toZip(String srcDir, OutputStream out, boolean keepDirStructure)
28
+            throws RuntimeException {
29
+        System.out.println("开始压缩... ...");
30
+        long start = System.currentTimeMillis();
31
+        ZipOutputStream zos = null;
32
+        try {
33
+            zos = new ZipOutputStream(out);
34
+            File sourceFile = new File(srcDir);
35
+            compress(sourceFile, zos, sourceFile.getName(), keepDirStructure);
36
+            long end = System.currentTimeMillis();
37
+            System.out.println("压缩完成,耗时:" + (end - start) + " ms");
38
+        } catch (Exception e) {
39
+            throw new RuntimeException("压缩失败", e);
40
+        } finally {
41
+            if (zos != null) {
42
+                try {
43
+                 //out.flush();
44
+                 //   out.close();
45
+                    zos.close();
46
+                } catch (IOException e) {
47
+                    e.printStackTrace();
48
+                }
49
+            }
50
+        }
51
+
52
+    }
53
+
54
+    /**
55
+     * 压缩成ZIP 方法2
56
+     *
57
+     * @param srcFiles 需要压缩的文件列表
58
+     * @param out      压缩文件输出流
59
+     * @throws RuntimeException 压缩失败会抛出运行时异常
60
+     */
61
+    public static void toZip(List<File> srcFiles, OutputStream out) throws RuntimeException {
62
+        long start = System.currentTimeMillis();
63
+        ZipOutputStream zos = null;
64
+        try {
65
+            zos = new ZipOutputStream(out);
66
+            for (File srcFile : srcFiles) {
67
+                byte[] buf = new byte[BUFFER_SIZE];
68
+                zos.putNextEntry(new ZipEntry(srcFile.getName()));
69
+                int len;
70
+                FileInputStream in = new FileInputStream(srcFile);
71
+                while ((len = in.read(buf)) != -1) {
72
+                    zos.write(buf, 0, len);
73
+                }
74
+                zos.closeEntry();
75
+                in.close();
76
+            }
77
+            long end = System.currentTimeMillis();
78
+            System.out.println("压缩完成,耗时:" + (end - start) + " ms");
79
+        } catch (Exception e) {
80
+            throw new RuntimeException("压缩失败", e);
81
+        } finally {
82
+            if (zos != null) {
83
+                try {
84
+                    zos.close();
85
+                } catch (IOException e) {
86
+                    e.printStackTrace();
87
+                }
88
+            }
89
+        }
90
+    }
91
+
92
+
93
+    /**
94
+     * 递归压缩方法
95
+     *
96
+     * @param sourceFile       源文件
97
+     * @param zos              zip输出流
98
+     * @param name             压缩后的名称
99
+     * @param keepDirStructure 是否保留原来的目录结构,true:保留目录结构;
100
+     *                         false:所有文件跑到压缩包根目录下(注意:不保留目录结构可能会出现同名文件,会压缩失败)
101
+     * @throws Exception
102
+     */
103
+    private static void compress(File sourceFile, ZipOutputStream zos, String name,
104
+                                 boolean keepDirStructure) throws Exception {
105
+        byte[] buf = new byte[BUFFER_SIZE];
106
+        if (sourceFile.isFile()) {
107
+            // 向zip输出流中添加一个zip实体,构造器中name为zip实体的文件的名字
108
+            zos.putNextEntry(new ZipEntry(name));
109
+            // copy文件到zip输出流中
110
+            int len;
111
+            FileInputStream in = new FileInputStream(sourceFile);
112
+            while ((len = in.read(buf)) != -1) {
113
+                zos.write(buf, 0, len);
114
+            }
115
+
116
+            zos.closeEntry();
117
+            in.close();
118
+        } else {
119
+            File[] listFiles = sourceFile.listFiles();
120
+            if (listFiles == null || listFiles.length == 0) {
121
+                // 需要保留原来的文件结构时,需要对空文件夹进行处理
122
+                if (keepDirStructure) {
123
+                    // 空文件夹的处理
124
+                    zos.putNextEntry(new ZipEntry(name + "/"));
125
+                    // 没有文件,不需要文件的copy
126
+                    zos.closeEntry();
127
+                }
128
+
129
+            } else {
130
+                for (File file : listFiles) {
131
+                    // 判断是否需要保留原来的文件结构
132
+                    if (keepDirStructure) {
133
+                        // 注意:file.getName()前面需要带上父文件夹的名字加一斜杠,
134
+                        // 不然最后压缩包中就不能保留原来的文件结构,即:所有文件都跑到压缩包根目录下了
135
+                        compress(file, zos, name + "/" + file.getName(), keepDirStructure);
136
+                    } else {
137
+                        compress(file, zos, file.getName(), keepDirStructure);
138
+                    }
139
+
140
+                }
141
+            }
142
+        }
143
+    }
144
+}

+ 2
- 0
generator_service/src/main/resources/application.yml Näytä tiedosto

@@ -0,0 +1,2 @@
1
+server:
2
+  port: 8080

+ 167
- 0
generator_service/src/main/resources/templatesPlus/controller.java.ftl Näytä tiedosto

@@ -0,0 +1,167 @@
1
+package ${package.Controller};
2
+
3
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
4
+import com.baomidou.mybatisplus.core.metadata.IPage;
5
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
6
+import com.community.huiju.common.model.ResponseBean;
7
+import org.slf4j.Logger;
8
+import org.slf4j.LoggerFactory;
9
+import org.springframework.beans.factory.annotation.Autowired;
10
+import org.springframework.web.bind.annotation.PathVariable;
11
+import org.springframework.web.bind.annotation.RequestBody;
12
+import org.springframework.web.bind.annotation.RequestMapping;
13
+import org.springframework.web.bind.annotation.RequestMethod;
14
+import org.springframework.web.bind.annotation.RequestParam;
15
+import org.springframework.web.bind.annotation.ResponseBody;
16
+import ${package.Service}.${table.serviceName};
17
+import ${package.Entity}.${table.entityName};
18
+<#if restControllerStyle>
19
+import org.springframework.web.bind.annotation.RestController;
20
+<#else>
21
+import org.springframework.stereotype.Controller;
22
+</#if>
23
+<#if superControllerClassPackage??>
24
+import ${superControllerClassPackage};
25
+</#if>
26
+
27
+/**
28
+ * <p>
29
+    * ${table.comment!} 前端控制器
30
+    * </p>
31
+ *
32
+ * @author ${author}
33
+ * @since ${date}
34
+ */
35
+<#if restControllerStyle>
36
+@RestController
37
+<#else>
38
+@Controller
39
+</#if>
40
+@RequestMapping("/")
41
+<#if kotlin>
42
+class ${table.controllerName}<#if superControllerClass??> : ${superControllerClass}()</#if>
43
+<#else>
44
+    <#if superControllerClass??>
45
+public class ${table.controllerName} extends ${superControllerClass} {
46
+    <#else>
47
+public class ${table.controllerName} {
48
+    </#if>
49
+
50
+    private final Logger logger = LoggerFactory.getLogger(${table.controllerName}.class);
51
+
52
+    @Autowired
53
+    public ${table.serviceName} i${entity}Service;
54
+
55
+
56
+    /**
57
+     * 分页查询列表
58
+     * @param pageNum
59
+     * @param pageSize
60
+     * @return
61
+     */
62
+    @RequestMapping(value="/${table.entityPath}",method= RequestMethod.GET)
63
+    public ResponseBean ${table.entityPath}List(@RequestParam(value ="pageNum",defaultValue = "1") Integer pageNum,
64
+									 @RequestParam(value ="pageSize",defaultValue = "10") Integer pageSize){
65
+        ResponseBean responseBean = new ResponseBean();
66
+        try {
67
+            //使用分页插件
68
+		    IPage<${entity}> pg = new Page<>(pageNum, pageSize);
69
+            QueryWrapper<${entity}> queryWrapper = new QueryWrapper<>();
70
+            queryWrapper.orderByDesc("create_date");
71
+
72
+            IPage<${entity}> result = i${entity}Service.page(pg, queryWrapper);
73
+            responseBean.addSuccess(result);
74
+        }catch (Exception e){
75
+            e.printStackTrace();
76
+            logger.error("${table.entityPath}List -=- {}",e.toString());
77
+            responseBean.addError(e.getMessage());
78
+        }
79
+        return responseBean;
80
+    }
81
+
82
+    /**
83
+     * 保存对象
84
+     * @param ${table.entityPath} 实体对象
85
+     * @return
86
+     */
87
+    @RequestMapping(value="/${table.entityPath}",method= RequestMethod.POST)
88
+    public ResponseBean ${table.entityPath}Add(@RequestBody ${entity} ${table.entityPath}){
89
+        ResponseBean responseBean = new ResponseBean();
90
+        try {
91
+            if (i${entity}Service.save(${table.entityPath})){
92
+                responseBean.addSuccess(${table.entityPath});
93
+            }else {
94
+                responseBean.addError("fail");
95
+            }
96
+        }catch (Exception e){
97
+            e.printStackTrace();
98
+            logger.error("${table.entityPath}Add -=- {}",e.toString());
99
+            responseBean.addError(e.getMessage());
100
+        }
101
+        return responseBean;
102
+    }
103
+
104
+    /**
105
+     * 根据id删除对象
106
+     * @param id  实体ID
107
+     */
108
+    @ResponseBody
109
+    @RequestMapping(value="/${table.entityPath}/{id}", method= RequestMethod.DELETE)
110
+    public ResponseBean ${table.entityPath}Delete(@PathVariable Integer id){
111
+        ResponseBean responseBean = new ResponseBean();
112
+        try {
113
+            if(i${entity}Service.removeById(id)){
114
+                responseBean.addSuccess("success");
115
+            }else {
116
+                responseBean.addError("fail");
117
+            }
118
+        }catch (Exception e){
119
+            e.printStackTrace();
120
+            logger.error("${table.entityPath}Delete -=- {}",e.toString());
121
+            responseBean.addError(e.getMessage());
122
+        }
123
+        return responseBean;
124
+    }
125
+
126
+    /**
127
+     * 修改对象
128
+     * @param id  实体ID
129
+     * @param ${table.entityPath} 实体对象
130
+     * @return
131
+     */
132
+    @RequestMapping(value="/${table.entityPath}/{id}",method= RequestMethod.PUT)
133
+    public ResponseBean ${table.entityPath}Update(@PathVariable Integer id,
134
+                                        @RequestBody ${entity} ${table.entityPath}){
135
+        ResponseBean responseBean = new ResponseBean();
136
+        try {
137
+            if (i${entity}Service.updateById(${table.entityPath})){
138
+                responseBean.addSuccess(${table.entityPath});
139
+            }else {
140
+                responseBean.addError("fail");
141
+            }
142
+        }catch (Exception e){
143
+            e.printStackTrace();
144
+            logger.error("${table.entityPath}Update -=- {}",e.toString());
145
+            responseBean.addError(e.getMessage());
146
+        }
147
+        return responseBean;
148
+    }
149
+
150
+    /**
151
+     * 根据id查询对象
152
+     * @param id  实体ID
153
+     */
154
+    @RequestMapping(value="/${table.entityPath}/{id}",method= RequestMethod.GET)
155
+    public ResponseBean ${table.entityPath}Get(@PathVariable Integer id){
156
+        ResponseBean responseBean = new ResponseBean();
157
+        try {
158
+            responseBean.addSuccess(i${entity}Service.getById(id));
159
+        }catch (Exception e){
160
+            e.printStackTrace();
161
+            logger.error("${table.entityPath}Delete -=- {}",e.toString());
162
+            responseBean.addError(e.getMessage());
163
+        }
164
+        return responseBean;
165
+    }
166
+}
167
+</#if>

+ 13
- 0
generator_service/src/test/java/com/example/demo/DemoApplicationTests.java Näytä tiedosto

@@ -0,0 +1,13 @@
1
+package com.example.demo;
2
+
3
+import org.junit.jupiter.api.Test;
4
+import org.springframework.boot.test.context.SpringBootTest;
5
+
6
+@SpringBootTest
7
+class DemoApplicationTests {
8
+
9
+	@Test
10
+	void contextLoads() {
11
+	}
12
+
13
+}