commit 51c30536fbfbf286fc7267a7e1c33bfa0a26f93a
Author: TrinhNT_DNK
Date: Mon Jul 21 11:43:14 2025 +0700
First commit
diff --git a/README.md b/README.md
new file mode 100644
index 0000000..e69de29
diff --git a/mvnw b/mvnw
new file mode 100755
index 0000000..d7c358e
--- /dev/null
+++ b/mvnw
@@ -0,0 +1,259 @@
+#!/bin/sh
+# ----------------------------------------------------------------------------
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License. You may obtain a copy of the License at
+#
+# https://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied. See the License for the
+# specific language governing permissions and limitations
+# under the License.
+# ----------------------------------------------------------------------------
+
+# ----------------------------------------------------------------------------
+# Apache Maven Wrapper startup batch script, version 3.3.2
+#
+# Optional ENV vars
+# -----------------
+# JAVA_HOME - location of a JDK home dir, required when download maven via java source
+# MVNW_REPOURL - repo url base for downloading maven distribution
+# MVNW_USERNAME/MVNW_PASSWORD - user and password for downloading maven
+# MVNW_VERBOSE - true: enable verbose log; debug: trace the mvnw script; others: silence the output
+# ----------------------------------------------------------------------------
+
+set -euf
+[ "${MVNW_VERBOSE-}" != debug ] || set -x
+
+# OS specific support.
+native_path() { printf %s\\n "$1"; }
+case "$(uname)" in
+CYGWIN* | MINGW*)
+ [ -z "${JAVA_HOME-}" ] || JAVA_HOME="$(cygpath --unix "$JAVA_HOME")"
+ native_path() { cygpath --path --windows "$1"; }
+ ;;
+esac
+
+# set JAVACMD and JAVACCMD
+set_java_home() {
+ # For Cygwin and MinGW, ensure paths are in Unix format before anything is touched
+ if [ -n "${JAVA_HOME-}" ]; then
+ if [ -x "$JAVA_HOME/jre/sh/java" ]; then
+ # IBM's JDK on AIX uses strange locations for the executables
+ JAVACMD="$JAVA_HOME/jre/sh/java"
+ JAVACCMD="$JAVA_HOME/jre/sh/javac"
+ else
+ JAVACMD="$JAVA_HOME/bin/java"
+ JAVACCMD="$JAVA_HOME/bin/javac"
+
+ if [ ! -x "$JAVACMD" ] || [ ! -x "$JAVACCMD" ]; then
+ echo "The JAVA_HOME environment variable is not defined correctly, so mvnw cannot run." >&2
+ echo "JAVA_HOME is set to \"$JAVA_HOME\", but \"\$JAVA_HOME/bin/java\" or \"\$JAVA_HOME/bin/javac\" does not exist." >&2
+ return 1
+ fi
+ fi
+ else
+ JAVACMD="$(
+ 'set' +e
+ 'unset' -f command 2>/dev/null
+ 'command' -v java
+ )" || :
+ JAVACCMD="$(
+ 'set' +e
+ 'unset' -f command 2>/dev/null
+ 'command' -v javac
+ )" || :
+
+ if [ ! -x "${JAVACMD-}" ] || [ ! -x "${JAVACCMD-}" ]; then
+ echo "The java/javac command does not exist in PATH nor is JAVA_HOME set, so mvnw cannot run." >&2
+ return 1
+ fi
+ fi
+}
+
+# hash string like Java String::hashCode
+hash_string() {
+ str="${1:-}" h=0
+ while [ -n "$str" ]; do
+ char="${str%"${str#?}"}"
+ h=$(((h * 31 + $(LC_CTYPE=C printf %d "'$char")) % 4294967296))
+ str="${str#?}"
+ done
+ printf %x\\n $h
+}
+
+verbose() { :; }
+[ "${MVNW_VERBOSE-}" != true ] || verbose() { printf %s\\n "${1-}"; }
+
+die() {
+ printf %s\\n "$1" >&2
+ exit 1
+}
+
+trim() {
+ # MWRAPPER-139:
+ # Trims trailing and leading whitespace, carriage returns, tabs, and linefeeds.
+ # Needed for removing poorly interpreted newline sequences when running in more
+ # exotic environments such as mingw bash on Windows.
+ printf "%s" "${1}" | tr -d '[:space:]'
+}
+
+# parse distributionUrl and optional distributionSha256Sum, requires .mvn/wrapper/maven-wrapper.properties
+while IFS="=" read -r key value; do
+ case "${key-}" in
+ distributionUrl) distributionUrl=$(trim "${value-}") ;;
+ distributionSha256Sum) distributionSha256Sum=$(trim "${value-}") ;;
+ esac
+done <"${0%/*}/.mvn/wrapper/maven-wrapper.properties"
+[ -n "${distributionUrl-}" ] || die "cannot read distributionUrl property in ${0%/*}/.mvn/wrapper/maven-wrapper.properties"
+
+case "${distributionUrl##*/}" in
+maven-mvnd-*bin.*)
+ MVN_CMD=mvnd.sh _MVNW_REPO_PATTERN=/maven/mvnd/
+ case "${PROCESSOR_ARCHITECTURE-}${PROCESSOR_ARCHITEW6432-}:$(uname -a)" in
+ *AMD64:CYGWIN* | *AMD64:MINGW*) distributionPlatform=windows-amd64 ;;
+ :Darwin*x86_64) distributionPlatform=darwin-amd64 ;;
+ :Darwin*arm64) distributionPlatform=darwin-aarch64 ;;
+ :Linux*x86_64*) distributionPlatform=linux-amd64 ;;
+ *)
+ echo "Cannot detect native platform for mvnd on $(uname)-$(uname -m), use pure java version" >&2
+ distributionPlatform=linux-amd64
+ ;;
+ esac
+ distributionUrl="${distributionUrl%-bin.*}-$distributionPlatform.zip"
+ ;;
+maven-mvnd-*) MVN_CMD=mvnd.sh _MVNW_REPO_PATTERN=/maven/mvnd/ ;;
+*) MVN_CMD="mvn${0##*/mvnw}" _MVNW_REPO_PATTERN=/org/apache/maven/ ;;
+esac
+
+# apply MVNW_REPOURL and calculate MAVEN_HOME
+# maven home pattern: ~/.m2/wrapper/dists/{apache-maven-,maven-mvnd--}/
+[ -z "${MVNW_REPOURL-}" ] || distributionUrl="$MVNW_REPOURL$_MVNW_REPO_PATTERN${distributionUrl#*"$_MVNW_REPO_PATTERN"}"
+distributionUrlName="${distributionUrl##*/}"
+distributionUrlNameMain="${distributionUrlName%.*}"
+distributionUrlNameMain="${distributionUrlNameMain%-bin}"
+MAVEN_USER_HOME="${MAVEN_USER_HOME:-${HOME}/.m2}"
+MAVEN_HOME="${MAVEN_USER_HOME}/wrapper/dists/${distributionUrlNameMain-}/$(hash_string "$distributionUrl")"
+
+exec_maven() {
+ unset MVNW_VERBOSE MVNW_USERNAME MVNW_PASSWORD MVNW_REPOURL || :
+ exec "$MAVEN_HOME/bin/$MVN_CMD" "$@" || die "cannot exec $MAVEN_HOME/bin/$MVN_CMD"
+}
+
+if [ -d "$MAVEN_HOME" ]; then
+ verbose "found existing MAVEN_HOME at $MAVEN_HOME"
+ exec_maven "$@"
+fi
+
+case "${distributionUrl-}" in
+*?-bin.zip | *?maven-mvnd-?*-?*.zip) ;;
+*) die "distributionUrl is not valid, must match *-bin.zip or maven-mvnd-*.zip, but found '${distributionUrl-}'" ;;
+esac
+
+# prepare tmp dir
+if TMP_DOWNLOAD_DIR="$(mktemp -d)" && [ -d "$TMP_DOWNLOAD_DIR" ]; then
+ clean() { rm -rf -- "$TMP_DOWNLOAD_DIR"; }
+ trap clean HUP INT TERM EXIT
+else
+ die "cannot create temp dir"
+fi
+
+mkdir -p -- "${MAVEN_HOME%/*}"
+
+# Download and Install Apache Maven
+verbose "Couldn't find MAVEN_HOME, downloading and installing it ..."
+verbose "Downloading from: $distributionUrl"
+verbose "Downloading to: $TMP_DOWNLOAD_DIR/$distributionUrlName"
+
+# select .zip or .tar.gz
+if ! command -v unzip >/dev/null; then
+ distributionUrl="${distributionUrl%.zip}.tar.gz"
+ distributionUrlName="${distributionUrl##*/}"
+fi
+
+# verbose opt
+__MVNW_QUIET_WGET=--quiet __MVNW_QUIET_CURL=--silent __MVNW_QUIET_UNZIP=-q __MVNW_QUIET_TAR=''
+[ "${MVNW_VERBOSE-}" != true ] || __MVNW_QUIET_WGET='' __MVNW_QUIET_CURL='' __MVNW_QUIET_UNZIP='' __MVNW_QUIET_TAR=v
+
+# normalize http auth
+case "${MVNW_PASSWORD:+has-password}" in
+'') MVNW_USERNAME='' MVNW_PASSWORD='' ;;
+has-password) [ -n "${MVNW_USERNAME-}" ] || MVNW_USERNAME='' MVNW_PASSWORD='' ;;
+esac
+
+if [ -z "${MVNW_USERNAME-}" ] && command -v wget >/dev/null; then
+ verbose "Found wget ... using wget"
+ wget ${__MVNW_QUIET_WGET:+"$__MVNW_QUIET_WGET"} "$distributionUrl" -O "$TMP_DOWNLOAD_DIR/$distributionUrlName" || die "wget: Failed to fetch $distributionUrl"
+elif [ -z "${MVNW_USERNAME-}" ] && command -v curl >/dev/null; then
+ verbose "Found curl ... using curl"
+ curl ${__MVNW_QUIET_CURL:+"$__MVNW_QUIET_CURL"} -f -L -o "$TMP_DOWNLOAD_DIR/$distributionUrlName" "$distributionUrl" || die "curl: Failed to fetch $distributionUrl"
+elif set_java_home; then
+ verbose "Falling back to use Java to download"
+ javaSource="$TMP_DOWNLOAD_DIR/Downloader.java"
+ targetZip="$TMP_DOWNLOAD_DIR/$distributionUrlName"
+ cat >"$javaSource" <<-END
+ public class Downloader extends java.net.Authenticator
+ {
+ protected java.net.PasswordAuthentication getPasswordAuthentication()
+ {
+ return new java.net.PasswordAuthentication( System.getenv( "MVNW_USERNAME" ), System.getenv( "MVNW_PASSWORD" ).toCharArray() );
+ }
+ public static void main( String[] args ) throws Exception
+ {
+ setDefault( new Downloader() );
+ java.nio.file.Files.copy( java.net.URI.create( args[0] ).toURL().openStream(), java.nio.file.Paths.get( args[1] ).toAbsolutePath().normalize() );
+ }
+ }
+ END
+ # For Cygwin/MinGW, switch paths to Windows format before running javac and java
+ verbose " - Compiling Downloader.java ..."
+ "$(native_path "$JAVACCMD")" "$(native_path "$javaSource")" || die "Failed to compile Downloader.java"
+ verbose " - Running Downloader.java ..."
+ "$(native_path "$JAVACMD")" -cp "$(native_path "$TMP_DOWNLOAD_DIR")" Downloader "$distributionUrl" "$(native_path "$targetZip")"
+fi
+
+# If specified, validate the SHA-256 sum of the Maven distribution zip file
+if [ -n "${distributionSha256Sum-}" ]; then
+ distributionSha256Result=false
+ if [ "$MVN_CMD" = mvnd.sh ]; then
+ echo "Checksum validation is not supported for maven-mvnd." >&2
+ echo "Please disable validation by removing 'distributionSha256Sum' from your maven-wrapper.properties." >&2
+ exit 1
+ elif command -v sha256sum >/dev/null; then
+ if echo "$distributionSha256Sum $TMP_DOWNLOAD_DIR/$distributionUrlName" | sha256sum -c >/dev/null 2>&1; then
+ distributionSha256Result=true
+ fi
+ elif command -v shasum >/dev/null; then
+ if echo "$distributionSha256Sum $TMP_DOWNLOAD_DIR/$distributionUrlName" | shasum -a 256 -c >/dev/null 2>&1; then
+ distributionSha256Result=true
+ fi
+ else
+ echo "Checksum validation was requested but neither 'sha256sum' or 'shasum' are available." >&2
+ echo "Please install either command, or disable validation by removing 'distributionSha256Sum' from your maven-wrapper.properties." >&2
+ exit 1
+ fi
+ if [ $distributionSha256Result = false ]; then
+ echo "Error: Failed to validate Maven distribution SHA-256, your Maven distribution might be compromised." >&2
+ echo "If you updated your Maven version, you need to update the specified distributionSha256Sum property." >&2
+ exit 1
+ fi
+fi
+
+# unzip and move
+if command -v unzip >/dev/null; then
+ unzip ${__MVNW_QUIET_UNZIP:+"$__MVNW_QUIET_UNZIP"} "$TMP_DOWNLOAD_DIR/$distributionUrlName" -d "$TMP_DOWNLOAD_DIR" || die "failed to unzip"
+else
+ tar xzf${__MVNW_QUIET_TAR:+"$__MVNW_QUIET_TAR"} "$TMP_DOWNLOAD_DIR/$distributionUrlName" -C "$TMP_DOWNLOAD_DIR" || die "failed to untar"
+fi
+printf %s\\n "$distributionUrl" >"$TMP_DOWNLOAD_DIR/$distributionUrlNameMain/mvnw.url"
+mv -- "$TMP_DOWNLOAD_DIR/$distributionUrlNameMain" "$MAVEN_HOME" || [ -d "$MAVEN_HOME" ] || die "fail to move MAVEN_HOME"
+
+clean || :
+exec_maven "$@"
diff --git a/mvnw.cmd b/mvnw.cmd
new file mode 100644
index 0000000..6f779cf
--- /dev/null
+++ b/mvnw.cmd
@@ -0,0 +1,149 @@
+<# : batch portion
+@REM ----------------------------------------------------------------------------
+@REM Licensed to the Apache Software Foundation (ASF) under one
+@REM or more contributor license agreements. See the NOTICE file
+@REM distributed with this work for additional information
+@REM regarding copyright ownership. The ASF licenses this file
+@REM to you under the Apache License, Version 2.0 (the
+@REM "License"); you may not use this file except in compliance
+@REM with the License. You may obtain a copy of the License at
+@REM
+@REM https://www.apache.org/licenses/LICENSE-2.0
+@REM
+@REM Unless required by applicable law or agreed to in writing,
+@REM software distributed under the License is distributed on an
+@REM "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+@REM KIND, either express or implied. See the License for the
+@REM specific language governing permissions and limitations
+@REM under the License.
+@REM ----------------------------------------------------------------------------
+
+@REM ----------------------------------------------------------------------------
+@REM Apache Maven Wrapper startup batch script, version 3.3.2
+@REM
+@REM Optional ENV vars
+@REM MVNW_REPOURL - repo url base for downloading maven distribution
+@REM MVNW_USERNAME/MVNW_PASSWORD - user and password for downloading maven
+@REM MVNW_VERBOSE - true: enable verbose log; others: silence the output
+@REM ----------------------------------------------------------------------------
+
+@IF "%__MVNW_ARG0_NAME__%"=="" (SET __MVNW_ARG0_NAME__=%~nx0)
+@SET __MVNW_CMD__=
+@SET __MVNW_ERROR__=
+@SET __MVNW_PSMODULEP_SAVE=%PSModulePath%
+@SET PSModulePath=
+@FOR /F "usebackq tokens=1* delims==" %%A IN (`powershell -noprofile "& {$scriptDir='%~dp0'; $script='%__MVNW_ARG0_NAME__%'; icm -ScriptBlock ([Scriptblock]::Create((Get-Content -Raw '%~f0'))) -NoNewScope}"`) DO @(
+ IF "%%A"=="MVN_CMD" (set __MVNW_CMD__=%%B) ELSE IF "%%B"=="" (echo %%A) ELSE (echo %%A=%%B)
+)
+@SET PSModulePath=%__MVNW_PSMODULEP_SAVE%
+@SET __MVNW_PSMODULEP_SAVE=
+@SET __MVNW_ARG0_NAME__=
+@SET MVNW_USERNAME=
+@SET MVNW_PASSWORD=
+@IF NOT "%__MVNW_CMD__%"=="" (%__MVNW_CMD__% %*)
+@echo Cannot start maven from wrapper >&2 && exit /b 1
+@GOTO :EOF
+: end batch / begin powershell #>
+
+$ErrorActionPreference = "Stop"
+if ($env:MVNW_VERBOSE -eq "true") {
+ $VerbosePreference = "Continue"
+}
+
+# calculate distributionUrl, requires .mvn/wrapper/maven-wrapper.properties
+$distributionUrl = (Get-Content -Raw "$scriptDir/.mvn/wrapper/maven-wrapper.properties" | ConvertFrom-StringData).distributionUrl
+if (!$distributionUrl) {
+ Write-Error "cannot read distributionUrl property in $scriptDir/.mvn/wrapper/maven-wrapper.properties"
+}
+
+switch -wildcard -casesensitive ( $($distributionUrl -replace '^.*/','') ) {
+ "maven-mvnd-*" {
+ $USE_MVND = $true
+ $distributionUrl = $distributionUrl -replace '-bin\.[^.]*$',"-windows-amd64.zip"
+ $MVN_CMD = "mvnd.cmd"
+ break
+ }
+ default {
+ $USE_MVND = $false
+ $MVN_CMD = $script -replace '^mvnw','mvn'
+ break
+ }
+}
+
+# apply MVNW_REPOURL and calculate MAVEN_HOME
+# maven home pattern: ~/.m2/wrapper/dists/{apache-maven-,maven-mvnd--}/
+if ($env:MVNW_REPOURL) {
+ $MVNW_REPO_PATTERN = if ($USE_MVND) { "/org/apache/maven/" } else { "/maven/mvnd/" }
+ $distributionUrl = "$env:MVNW_REPOURL$MVNW_REPO_PATTERN$($distributionUrl -replace '^.*'+$MVNW_REPO_PATTERN,'')"
+}
+$distributionUrlName = $distributionUrl -replace '^.*/',''
+$distributionUrlNameMain = $distributionUrlName -replace '\.[^.]*$','' -replace '-bin$',''
+$MAVEN_HOME_PARENT = "$HOME/.m2/wrapper/dists/$distributionUrlNameMain"
+if ($env:MAVEN_USER_HOME) {
+ $MAVEN_HOME_PARENT = "$env:MAVEN_USER_HOME/wrapper/dists/$distributionUrlNameMain"
+}
+$MAVEN_HOME_NAME = ([System.Security.Cryptography.MD5]::Create().ComputeHash([byte[]][char[]]$distributionUrl) | ForEach-Object {$_.ToString("x2")}) -join ''
+$MAVEN_HOME = "$MAVEN_HOME_PARENT/$MAVEN_HOME_NAME"
+
+if (Test-Path -Path "$MAVEN_HOME" -PathType Container) {
+ Write-Verbose "found existing MAVEN_HOME at $MAVEN_HOME"
+ Write-Output "MVN_CMD=$MAVEN_HOME/bin/$MVN_CMD"
+ exit $?
+}
+
+if (! $distributionUrlNameMain -or ($distributionUrlName -eq $distributionUrlNameMain)) {
+ Write-Error "distributionUrl is not valid, must end with *-bin.zip, but found $distributionUrl"
+}
+
+# prepare tmp dir
+$TMP_DOWNLOAD_DIR_HOLDER = New-TemporaryFile
+$TMP_DOWNLOAD_DIR = New-Item -Itemtype Directory -Path "$TMP_DOWNLOAD_DIR_HOLDER.dir"
+$TMP_DOWNLOAD_DIR_HOLDER.Delete() | Out-Null
+trap {
+ if ($TMP_DOWNLOAD_DIR.Exists) {
+ try { Remove-Item $TMP_DOWNLOAD_DIR -Recurse -Force | Out-Null }
+ catch { Write-Warning "Cannot remove $TMP_DOWNLOAD_DIR" }
+ }
+}
+
+New-Item -Itemtype Directory -Path "$MAVEN_HOME_PARENT" -Force | Out-Null
+
+# Download and Install Apache Maven
+Write-Verbose "Couldn't find MAVEN_HOME, downloading and installing it ..."
+Write-Verbose "Downloading from: $distributionUrl"
+Write-Verbose "Downloading to: $TMP_DOWNLOAD_DIR/$distributionUrlName"
+
+$webclient = New-Object System.Net.WebClient
+if ($env:MVNW_USERNAME -and $env:MVNW_PASSWORD) {
+ $webclient.Credentials = New-Object System.Net.NetworkCredential($env:MVNW_USERNAME, $env:MVNW_PASSWORD)
+}
+[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12
+$webclient.DownloadFile($distributionUrl, "$TMP_DOWNLOAD_DIR/$distributionUrlName") | Out-Null
+
+# If specified, validate the SHA-256 sum of the Maven distribution zip file
+$distributionSha256Sum = (Get-Content -Raw "$scriptDir/.mvn/wrapper/maven-wrapper.properties" | ConvertFrom-StringData).distributionSha256Sum
+if ($distributionSha256Sum) {
+ if ($USE_MVND) {
+ Write-Error "Checksum validation is not supported for maven-mvnd. `nPlease disable validation by removing 'distributionSha256Sum' from your maven-wrapper.properties."
+ }
+ Import-Module $PSHOME\Modules\Microsoft.PowerShell.Utility -Function Get-FileHash
+ if ((Get-FileHash "$TMP_DOWNLOAD_DIR/$distributionUrlName" -Algorithm SHA256).Hash.ToLower() -ne $distributionSha256Sum) {
+ Write-Error "Error: Failed to validate Maven distribution SHA-256, your Maven distribution might be compromised. If you updated your Maven version, you need to update the specified distributionSha256Sum property."
+ }
+}
+
+# unzip and move
+Expand-Archive "$TMP_DOWNLOAD_DIR/$distributionUrlName" -DestinationPath "$TMP_DOWNLOAD_DIR" | Out-Null
+Rename-Item -Path "$TMP_DOWNLOAD_DIR/$distributionUrlNameMain" -NewName $MAVEN_HOME_NAME | Out-Null
+try {
+ Move-Item -Path "$TMP_DOWNLOAD_DIR/$MAVEN_HOME_NAME" -Destination $MAVEN_HOME_PARENT | Out-Null
+} catch {
+ if (! (Test-Path -Path "$MAVEN_HOME" -PathType Container)) {
+ Write-Error "fail to move MAVEN_HOME"
+ }
+} finally {
+ try { Remove-Item $TMP_DOWNLOAD_DIR -Recurse -Force | Out-Null }
+ catch { Write-Warning "Cannot remove $TMP_DOWNLOAD_DIR" }
+}
+
+Write-Output "MVN_CMD=$MAVEN_HOME/bin/$MVN_CMD"
diff --git a/pom.xml b/pom.xml
new file mode 100644
index 0000000..7dffb5e
--- /dev/null
+++ b/pom.xml
@@ -0,0 +1,190 @@
+
+
+ 4.0.0
+
+ org.springframework.boot
+ spring-boot-starter-parent
+ 3.3.2
+
+
+ com.veve-plus
+ root
+ 0.0.1-SNAPSHOT
+ war
+ root
+ Veve API for TMS
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 17
+
+
+
+
+ org.springframework.boot
+ spring-boot-starter-web
+
+
+ org.mybatis.spring.boot
+ mybatis-spring-boot-starter
+ 3.0.3
+
+
+ org.springframework.boot
+ spring-boot-starter-security
+
+
+
+
+ org.springframework.boot
+ spring-boot-devtools
+ runtime
+ true
+
+
+ com.mysql
+ mysql-connector-j
+ runtime
+
+
+ org.mapstruct
+ mapstruct
+ 1.5.5.Final
+
+
+ org.projectlombok
+ lombok
+ 1.18.32
+
+
+ org.springframework.boot
+ spring-boot-starter-test
+ test
+
+
+ org.springframework.boot
+ spring-boot-starter-validation
+
+
+ org.mybatis.spring.boot
+ mybatis-spring-boot-starter-test
+ 3.0.3
+ test
+
+
+ com.jcraft
+ jsch
+ 0.1.55
+
+
+ org.springdoc
+ springdoc-openapi-starter-webmvc-ui
+ 2.5.0
+
+
+ org.json
+ json
+ 20210307
+
+
+ com.google.api-client
+ google-api-client
+ 2.0.0
+
+
+ com.google.oauth-client
+ google-oauth-client-jetty
+ 1.34.1
+
+
+ com.google.apis
+ google-api-services-sheets
+ v4-rev20220927-2.0.0
+
+
+ org.springframework.security
+ spring-security-test
+ test
+
+
+ io.jsonwebtoken
+ jjwt-api
+ 0.12.5
+
+
+ io.jsonwebtoken
+ jjwt-impl
+ 0.12.5
+ runtime
+
+
+ io.jsonwebtoken
+ jjwt-jackson
+ 0.12.5
+ runtime
+
+
+
+
+
+
+
+ org.springframework.boot
+ spring-boot-maven-plugin
+
+
+
+ org.projectlombok
+ lombok
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-compiler-plugin
+ 3.13.0
+
+ ${java.version}
+ ${java.version}
+
+
+ org.projectlombok
+ lombok
+ 1.18.32
+
+
+ org.mapstruct
+ mapstruct-processor
+ 1.5.5.Final
+
+
+ org.projectlombok
+ lombok-mapstruct-binding
+ 0.2.0
+
+
+
+
+
+ -Amapstruct.defaultComponentModel=spring
+
+
+
+
+
+
+
+
diff --git a/src/main/java/com/veve_plus/root/RootApplication.java b/src/main/java/com/veve_plus/root/RootApplication.java
new file mode 100644
index 0000000..d038229
--- /dev/null
+++ b/src/main/java/com/veve_plus/root/RootApplication.java
@@ -0,0 +1,15 @@
+package com.veve_plus.root;
+
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+import org.springframework.scheduling.annotation.EnableScheduling;
+
+@SpringBootApplication
+@EnableScheduling
+public class RootApplication {
+
+ public static void main(String[] args) {
+ SpringApplication.run(RootApplication.class, args);
+ }
+
+}
diff --git a/src/main/java/com/veve_plus/root/ServletInitializer.java b/src/main/java/com/veve_plus/root/ServletInitializer.java
new file mode 100644
index 0000000..dffac3a
--- /dev/null
+++ b/src/main/java/com/veve_plus/root/ServletInitializer.java
@@ -0,0 +1,13 @@
+package com.veve_plus.root;
+
+import org.springframework.boot.builder.SpringApplicationBuilder;
+import org.springframework.boot.web.servlet.support.SpringBootServletInitializer;
+
+public class ServletInitializer extends SpringBootServletInitializer {
+
+ @Override
+ protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
+ return application.sources(RootApplication.class);
+ }
+
+}
diff --git a/src/main/java/com/veve_plus/root/config/CorsConfig.java b/src/main/java/com/veve_plus/root/config/CorsConfig.java
new file mode 100644
index 0000000..704bef6
--- /dev/null
+++ b/src/main/java/com/veve_plus/root/config/CorsConfig.java
@@ -0,0 +1,29 @@
+package com.veve_plus.root.config;
+
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.web.cors.CorsConfiguration;
+import org.springframework.web.cors.UrlBasedCorsConfigurationSource;
+import org.springframework.web.filter.CorsFilter;
+
+import java.util.Arrays;
+
+@Configuration
+public class CorsConfig {
+
+ @Bean
+ public CorsFilter corsFilter(){
+ CorsConfiguration corsConfiguration = new CorsConfiguration();
+ corsConfiguration.setAllowedOrigins(Arrays.asList("http://localhost:3000"
+ , "http://18.143.143.117:3001"
+ , "http://veve.dnkinno.com:3001"));
+ corsConfiguration.setAllowedMethods(Arrays.asList("GET", "POST", "PUT", "DELETE"));
+ corsConfiguration.setAllowedHeaders(Arrays.asList("Authorization", "Content-Type"));
+ corsConfiguration.setAllowCredentials(true); // If credentials are needed
+
+ UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
+ source.registerCorsConfiguration("/**", corsConfiguration);
+
+ return new CorsFilter(source);
+ }
+}
diff --git a/src/main/java/com/veve_plus/root/config/JwtFilter.java b/src/main/java/com/veve_plus/root/config/JwtFilter.java
new file mode 100644
index 0000000..7b06ef6
--- /dev/null
+++ b/src/main/java/com/veve_plus/root/config/JwtFilter.java
@@ -0,0 +1,60 @@
+package com.veve_plus.root.config;
+
+import com.veve_plus.root.service.CustomUserDetailService;
+import com.veve_plus.root.service.JwtService;
+import jakarta.servlet.FilterChain;
+import jakarta.servlet.ServletException;
+import jakarta.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletResponse;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.context.ApplicationContext;
+import org.springframework.security.authentication.UsernamePasswordAuthenticationToken;
+import org.springframework.security.core.context.SecurityContextHolder;
+import org.springframework.security.core.userdetails.UserDetails;
+import org.springframework.security.web.authentication.WebAuthenticationDetails;
+import org.springframework.security.web.authentication.WebAuthenticationDetailsSource;
+import org.springframework.stereotype.Component;
+import org.springframework.web.filter.OncePerRequestFilter;
+
+import java.io.IOException;
+
+@Component
+public class JwtFilter extends OncePerRequestFilter {
+
+ @Autowired
+ private JwtService jwtService;
+
+ @Autowired
+ private ApplicationContext applicationContext;
+
+ @Override
+ protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain filterChain) throws ServletException, IOException {
+ String authHeader = request.getHeader("Authorization");
+ String reqToken = null;
+ String username = null;
+
+ //extract token & username from header
+ if(authHeader != null && authHeader.startsWith("Bearer ")){
+ reqToken = authHeader.substring(7);
+ username = jwtService.extractUsername(reqToken);
+ }
+
+ //getAuthentication() == null mean the request is not authenticated yet
+ if(username != null && SecurityContextHolder.getContext().getAuthentication() == null){
+ //get user info by username
+ UserDetails userDetails = applicationContext.getBean(CustomUserDetailService.class).loadUserByUsername(username);
+ //validate token, if token is valid then create authentication obj
+ if(jwtService.validateToken(reqToken, userDetails)){
+ //if token is valid then it will run next filter: UsernamePasswordAuthenticationFilter
+ //create authToken to make next filter work
+ UsernamePasswordAuthenticationToken authToken = new UsernamePasswordAuthenticationToken(userDetails, null, userDetails.getAuthorities());
+ //passing request data to the new token
+ authToken.setDetails(new WebAuthenticationDetailsSource().buildDetails(request));
+ //set token to context, marking the request as authenticated
+ SecurityContextHolder.getContext().setAuthentication(authToken);
+ }
+ }
+
+ filterChain.doFilter(request, response);
+ }
+}
diff --git a/src/main/java/com/veve_plus/root/config/MyBatisConfig.java b/src/main/java/com/veve_plus/root/config/MyBatisConfig.java
new file mode 100644
index 0000000..e442848
--- /dev/null
+++ b/src/main/java/com/veve_plus/root/config/MyBatisConfig.java
@@ -0,0 +1,34 @@
+package com.veve_plus.root.config;
+
+import org.apache.ibatis.session.SqlSessionFactory;
+import org.mybatis.spring.SqlSessionFactoryBean;
+import org.mybatis.spring.annotation.MapperScan;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.core.io.support.PathMatchingResourcePatternResolver;
+
+import javax.sql.DataSource;
+
+@Configuration
+@MapperScan("com.veve_plus.root.") // Specify the package where your mapper interfaces are located
+public class MyBatisConfig {
+
+ @Bean
+ public SqlSessionFactory sqlSessionFactory(DataSource dataSource) throws Exception {
+ SqlSessionFactoryBean factoryBean = new SqlSessionFactoryBean();
+ factoryBean.setDataSource(dataSource);
+
+ // Set the package where your entity classes are located
+ factoryBean.setTypeAliasesPackage("com.veve_plus.root.**");
+
+ // Set the package where your mapper interfaces are located
+ factoryBean.setMapperLocations(new PathMatchingResourcePatternResolver().getResources("classpath*:mapper/*.xml"));
+
+ // Enable MyBatis logging of SQL statements
+ org.apache.ibatis.session.Configuration configuration = new org.apache.ibatis.session.Configuration();
+ configuration.setLogImpl(org.apache.ibatis.logging.stdout.StdOutImpl.class);
+ factoryBean.setConfiguration(configuration);
+
+ return factoryBean.getObject();
+ }
+}
\ No newline at end of file
diff --git a/src/main/java/com/veve_plus/root/config/WebSecurityConfig.java b/src/main/java/com/veve_plus/root/config/WebSecurityConfig.java
new file mode 100644
index 0000000..fe37001
--- /dev/null
+++ b/src/main/java/com/veve_plus/root/config/WebSecurityConfig.java
@@ -0,0 +1,71 @@
+package com.veve_plus.root.config;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.http.HttpStatus;
+import org.springframework.security.authentication.AuthenticationManager;
+import org.springframework.security.authentication.AuthenticationProvider;
+import org.springframework.security.authentication.dao.DaoAuthenticationProvider;
+import org.springframework.security.config.annotation.authentication.configuration.AuthenticationConfiguration;
+import org.springframework.security.config.annotation.web.builders.HttpSecurity;
+import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
+import org.springframework.security.config.annotation.web.configurers.AbstractHttpConfigurer;
+import org.springframework.security.config.http.SessionCreationPolicy;
+import org.springframework.security.core.userdetails.UserDetailsService;
+import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
+import org.springframework.security.provisioning.JdbcUserDetailsManager;
+import org.springframework.security.provisioning.UserDetailsManager;
+import org.springframework.security.web.SecurityFilterChain;
+import org.springframework.security.web.authentication.UsernamePasswordAuthenticationFilter;
+
+import javax.sql.DataSource;
+
+import static org.springframework.security.config.Customizer.withDefaults;
+
+@Configuration
+@EnableWebSecurity
+public class WebSecurityConfig {
+
+ @Autowired
+ private UserDetailsService userDetailsService;
+
+ @Autowired
+ private JwtFilter jwtFilter;
+
+ private static final String[] WHITE_LIST_URL = { "/api/v1/auth/**", "/v2/api-docs", "/v3/api-docs",
+ "/v3/api-docs/**", "/api-docs", "/api-docs/**", "/swagger-resources", "/swagger-resources/**", "/configuration/ui",
+ "/configuration/security", "/swagger-ui/**", "/webjars/**", "/swagger-ui.html", "/api/auth/**",
+ "/api/test/**", "/authenticate", "/tms/**", "/material/**", "/title/**", "/logout", "/login"};
+
+ @Bean
+ public SecurityFilterChain filterChain(HttpSecurity http) throws Exception{
+ http.httpBasic(withDefaults())
+ .csrf(AbstractHttpConfigurer::disable)
+ .cors(withDefaults())
+ .sessionManagement(session -> session.sessionCreationPolicy(SessionCreationPolicy.STATELESS))
+ .authorizeHttpRequests(authorize -> authorize
+ .requestMatchers(WHITE_LIST_URL).permitAll()
+ .anyRequest().permitAll())
+ .addFilterBefore(jwtFilter, UsernamePasswordAuthenticationFilter.class)
+ ;
+ return http.build();
+ }
+
+
+ @Bean
+ public AuthenticationProvider authenticationProvider(){
+ DaoAuthenticationProvider provider = new DaoAuthenticationProvider();
+ provider.setPasswordEncoder(new BCryptPasswordEncoder(12));
+ provider.setUserDetailsService(userDetailsService);
+
+ return provider;
+ }
+
+ @Bean
+ public AuthenticationManager authenticationManager(AuthenticationConfiguration config) throws Exception{
+ return config.getAuthenticationManager();
+ }
+
+
+}
diff --git a/src/main/java/com/veve_plus/root/constant/TmsSheetConst.java b/src/main/java/com/veve_plus/root/constant/TmsSheetConst.java
new file mode 100644
index 0000000..067cee3
--- /dev/null
+++ b/src/main/java/com/veve_plus/root/constant/TmsSheetConst.java
@@ -0,0 +1,54 @@
+package com.veve_plus.root.constant;
+
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+
+public class TmsSheetConst {
+ public static final String CONST_TASK_DATA_TYPE = "05";
+ public static final String CONST_FILE_DATA_TYPE = "02";
+
+ /**
+ * Value Default
+ */
+ @Getter
+ @AllArgsConstructor
+ public enum Template {
+
+ SHEET_US("US", "Default", "US!A8:Z10000", 0, 0, 0, 0),
+ SHEET_FR("FR", "Default", "FR!A8:Z10000", 0, 0, 0, 0),
+ SHEET_ES("ES", "Default", "ES!A8:Z10000", 0, 0, 0, 0),
+ SHEET_DE("DE", "Default", "DE!A8:Z10000", 0, 0, 0, 0),
+ SHEET_TW("TW", "Default", "TW!A8:Z10000", 0, 0, 0, 0),
+ SHEET_JP("JP", "Default", "JP!A8:Z10000", 0, 0, 0, 0),
+ // SHEET_AR("AR", "Default", "AR!A8:Z10000", 0, 0, 0, 0),
+ SHEET_TH("TH", "Default", "TH!A8:Z10000", 0, 0, 0, 0),
+ SHEET_URGENT("Urgent", "Default", "Urgent!A8:Z10000", 0, 0, 0, 0),
+ SHEET_TN("TN", "Default", "TN!A8:Z10000", 0, 0, 0, 0),
+ SHEET_YL("YL", "Default", "YL!A8:Z10000", 0, 0, 0, 0),
+ ;
+
+ private final String sheetCode;
+ private final String info;
+ private final String dataRange;
+ private final int idxRowStart;
+ private final int idxRowEnd;
+ private final int idxColStart;
+ private final int idxColEnd;
+
+ }
+
+ @Getter
+ @AllArgsConstructor
+ public enum FileSheet {
+ SHEET_FILE_REAL("작품_자료", "Default", "작품_자료!A3:AD10000", 0, 0, 0, 0)
+ ;
+
+ private final String sheetCode;
+ private final String info;
+ private final String dataRange;
+ private final int idxRowStart;
+ private final int idxRowEnd;
+ private final int idxColStart;
+ private final int idxColEnd;
+ }
+}
diff --git a/src/main/java/com/veve_plus/root/controller/AuthController.java b/src/main/java/com/veve_plus/root/controller/AuthController.java
new file mode 100644
index 0000000..3297229
--- /dev/null
+++ b/src/main/java/com/veve_plus/root/controller/AuthController.java
@@ -0,0 +1,23 @@
+package com.veve_plus.root.controller;
+
+import com.veve_plus.root.dto.auth.LoginDto;
+import com.veve_plus.root.service.UserService;
+import lombok.RequiredArgsConstructor;
+import org.springframework.web.bind.annotation.CrossOrigin;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RestController;
+
+@RestController
+@CrossOrigin
+@RequiredArgsConstructor
+public class AuthController {
+
+ private final UserService userService;
+
+ @PostMapping("/login")
+ @CrossOrigin
+ public Object login(@RequestBody LoginDto user){
+ return userService.verify(user);
+ }
+}
diff --git a/src/main/java/com/veve_plus/root/controller/CodeController.java b/src/main/java/com/veve_plus/root/controller/CodeController.java
new file mode 100644
index 0000000..fe5af8f
--- /dev/null
+++ b/src/main/java/com/veve_plus/root/controller/CodeController.java
@@ -0,0 +1,44 @@
+package com.veve_plus.root.controller;
+
+
+import com.veve_plus.root.dto.code.CodeDto;
+import com.veve_plus.root.service.CodeService;
+import io.swagger.v3.oas.annotations.Operation;
+import io.swagger.v3.oas.annotations.tags.Tag;
+import lombok.RequiredArgsConstructor;
+import org.springframework.http.ResponseEntity;
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.List;
+
+/**
+ * The type Code Controller.
+ *
+ * @author : SG.Yesterme
+ * @version : 1.0.0
+ * @date : 2024. 8. 23.
+ */
+@Controller
+@CrossOrigin
+@RequestMapping("/code")
+@Tag(name = "Code APIs")
+@RequiredArgsConstructor
+public class CodeController {
+
+ private final CodeService service;
+
+ /**
+ * List content response entity.
+ *
+ * @return the response entity
+ */
+ @Operation(description = "Get codes information")
+ @GetMapping("/find-group/{groupId}")
+ public ResponseEntity> getCodes(@PathVariable("groupId") String groupId,
+ @RequestParam("lang") String lang) {
+ return ResponseEntity.ok(service.getCodes(groupId, lang));
+ }
+
+
+}
diff --git a/src/main/java/com/veve_plus/root/controller/ContentController.java b/src/main/java/com/veve_plus/root/controller/ContentController.java
new file mode 100644
index 0000000..c3ea2d0
--- /dev/null
+++ b/src/main/java/com/veve_plus/root/controller/ContentController.java
@@ -0,0 +1,60 @@
+package com.veve_plus.root.controller;
+
+import com.veve_plus.root.dto.content.ContentReqDto;
+import com.veve_plus.root.dto.tms.ProjectDto;
+import com.veve_plus.root.entity.Content;
+import com.veve_plus.root.service.ContentService;
+import com.veve_plus.root.service.TmsService;
+import io.swagger.v3.oas.annotations.Operation;
+import io.swagger.v3.oas.annotations.tags.Tag;
+import lombok.RequiredArgsConstructor;
+import org.springframework.http.ResponseEntity;
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.List;
+
+@Controller
+@CrossOrigin
+@RequestMapping("/content")
+@Tag(name = "Content APIs")
+@RequiredArgsConstructor
+public class ContentController {
+
+ private final ContentService contentService;
+ private final TmsService tmsService;
+
+ @PostMapping("/add")
+ @Operation(description = "Add new content")
+ public ResponseEntity addContent(@RequestBody Content content){
+ contentService.insertContent(content);
+ return ResponseEntity.ok(true);
+ }
+
+ @GetMapping("/list-content")
+ @Operation(description = "List all content")
+ public ResponseEntity> listContent(){
+ return ResponseEntity.ok(contentService.listContent());
+ }
+
+ @GetMapping("/list-tms-title")
+ @Operation(description = "Find project by title")
+ public ResponseEntity> listProject(@RequestParam("title") String title){
+ return ResponseEntity.ok(tmsService.findProjectByTitle(title));
+ }
+
+ @PutMapping("/map-content")
+ @Operation(description = "Map Tms id to content")
+ public ResponseEntity
", "\r") //replace with linebreak
+ .replaceAll("<[^>]+>", "") //replace all tags
+ .replaceAll(" ", " ") //replace special char with space
+ .replaceAll("<", "<")
+ .replaceAll(">", ">")
+ .replaceAll("&", "&")
+ .replaceAll(""", "\"")
+ .replaceAll("'", "'")
+ )
+ .createdBy("SYSTEM")
+ .build();
+
+ tmsMapper.insertTranslation(translation);
+ materialMapper.updateTransType(dto.getTranslationType(), dto.getLanguageCode(), dto.getTmsId(), dto.getChapter());
+ }
+ return true;
+ }
+
+ public ResponseEntity insertProjects(String category) throws JsonProcessingException {
+ //check platform
+ String url = "";
+ if("02".equals(category)){
+ url = TOONING_URL;
+ } else {
+ url = TMS_URL;
+ }
+
+ // 1.CALL API LOGIN TO GET TOKEN
+ String loginToken = getLoginToken(category);
+
+ // 2. USE TOKEN TO SEND GET REQUEST
+ String getUrl = url + "/api/projects";
+ RestTemplate template2 = new RestTemplate();
+
+ HttpHeaders header2 = new HttpHeaders();
+ header2.set("authToken", loginToken);
+ header2.set("Cookie", "authToken=" + loginToken);
+
+ // Create the HttpEntity
+ HttpEntity entity2 = new HttpEntity<>(header2);
+
+ // Make the GET request and get the response
+ ResponseEntity data = template2.exchange(getUrl, HttpMethod.GET, entity2, String.class);
+
+ //3. INSERT TRANSLATION TO DB
+ JSONObject translationObject = new JSONObject(data.getBody())
+ .getJSONObject("payload");
+
+ List locale = translationObject.keySet().stream().toList();
+ for(String l : locale){
+ //insert data to table tms_project
+ JSONArray projects = translationObject.getJSONArray(l);
+ for(Object p : projects){
+ JSONObject obj = new JSONObject(p.toString());
+ var dto = ProjectDto.builder()
+ .projectId(obj.getNumber("projectId").toString())
+ .title(obj.getString("title"))
+ .version(obj.getNumber("version").toString())
+ .locale(obj.getJSONArray("hasLocale").toString())
+ .delFlg(obj.getBoolean("deleted")?1:0)
+ .archivedFlg(obj.getBoolean("archived")?1:0)
+ .bookmarkFlg(obj.getBoolean("bookmarked")?1:0)
+ .createdBy("SYSTEM")
+ .updatedBy("SYSTEM")
+ .build();
+
+ tmsMapper.insertProject(dto);
+
+ //insert data to table tms_project_locale
+ var localeDto = ProjectLocaleDto.builder()
+ .projectId(obj.getNumber("projectId").toString())
+ .locale(l)
+ .build();
+
+ tmsMapper.insertProjectLocale(localeDto);
+ contentMapper.mapContent(dto.getProjectId(), dto.getTitle());
+ }
+ }
+
+ return ResponseEntity.ok(data.getBody());
+ }
+
+ public String extractAuthToken(String input){
+ String prefix = "authToken=";
+ int startIndex = input.indexOf(prefix);
+ startIndex += prefix.length();
+ int endIndex = input.indexOf(";",startIndex);
+
+ return input.substring(startIndex, endIndex);
+ }
+
+ public String getLoginToken(String category) throws JsonProcessingException {
+ String url = "";
+ String authToken = "";
+ String domain = "";
+ String body = "";
+
+ if("02".equals(category)){
+ domain = TOONING_URL;
+ body = "{\"email\": \"hanhn@dnkinno.com\", \"password\": \"e10adc3949ba59abbe56e057f20f883e\"}";
+ } else {
+ domain = TMS_URL;
+ body = "{\"email\": \"loctran@dnkinno.com\", \"password\": \"0ea63c6f95b339b5b25768c408a2a3d1\"}";
+ }
+
+ url = domain + "/api/auth/tooning";
+
+ // Set headers
+ HttpHeaders headers = new HttpHeaders();
+ headers.setContentType(MediaType.APPLICATION_JSON);
+
+ // Create the HttpEntity
+ HttpEntity entity = new HttpEntity<>(body, headers);
+
+ // Make the POST request
+ RestTemplate template = new RestTemplate();
+ ResponseEntity response = template.exchange(url, HttpMethod.POST, entity, String.class);
+
+ //extract auth token
+ JSONObject jsonResponse = new JSONObject(response);
+ JSONObject jsonBody = new JSONObject(jsonResponse.getString("body"));
+ if(jsonBody.getBoolean("r")){
+ String cookie = jsonResponse.getJSONObject("headers").getJSONArray("set-cookie").get(0).toString();
+ authToken = extractAuthToken(cookie);
+ }
+
+ return authToken;
+ }
+
+ public List findProjectByTitle(String title){
+ return tmsMapper.findProjectByTitle(title);
+ }
+}
diff --git a/src/main/java/com/veve_plus/root/service/UserService.java b/src/main/java/com/veve_plus/root/service/UserService.java
new file mode 100644
index 0000000..2bd5810
--- /dev/null
+++ b/src/main/java/com/veve_plus/root/service/UserService.java
@@ -0,0 +1,91 @@
+package com.veve_plus.root.service;
+
+import com.veve_plus.root.dto.auth.AuthResponseDto;
+import com.veve_plus.root.dto.auth.LoginDto;
+import com.veve_plus.root.dto.auth.UserPrincipal;
+import com.veve_plus.root.dto.menu.Menu;
+import com.veve_plus.root.dto.user.UserRequest;
+import com.veve_plus.root.dto.user.UserResponse;
+import com.veve_plus.root.dto.user.UserRole;
+import com.veve_plus.root.dto.user.UserSearchRequest;
+import com.veve_plus.root.mapper.MenuMapper;
+import com.veve_plus.root.mapper.UserMapper;
+import lombok.RequiredArgsConstructor;
+import org.springframework.security.authentication.AuthenticationManager;
+import org.springframework.security.authentication.UsernamePasswordAuthenticationToken;
+import org.springframework.security.core.Authentication;
+import org.springframework.security.core.context.SecurityContextHolder;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+
+@Service
+@RequiredArgsConstructor
+public class UserService {
+ private final AuthenticationManager authenticationManager;
+ private final JwtService jwtService;
+ private final RoleService roleService;
+ private final MenuMapper menuMapper;
+ private final UserMapper userMapper;
+
+ public Object verify(LoginDto user) {
+ Authentication authentication = authenticationManager.authenticate(new UsernamePasswordAuthenticationToken(user.getEmail(), user.getPassword()));
+
+ if(authentication.isAuthenticated()){
+ AuthResponseDto rs = new AuthResponseDto();
+ List roles = roleService.findRolesByEmail(user.getEmail());
+ List menuAuthority = menuMapper.getMenusByEmail(user.getEmail());
+
+ rs.setRole(roles);
+ rs.setToken(jwtService.generateToken(user.getEmail()));
+ rs.setUsername(userMapper.findUserInfoByEmail(user.getEmail()).getUsername());
+ rs.setMenuAccess(menuAuthority);
+ rs.setEmail(user.getEmail());
+ return rs;
+ } else {
+ return "FAIL";
+ }
+ }
+
+ public String getCurrentAuditor() {
+ var authentication = SecurityContextHolder.getContext().getAuthentication();
+ if(authentication != null){
+ var principal = authentication.getPrincipal();
+
+ var user = (UserPrincipal)principal;
+ return userMapper.findUserInfoByEmail(user.getUsername()).getUserId();
+ }
+ return "";
+ }
+
+ public List getAllUsersByCondition(UserSearchRequest userSearchRequest){
+ return userMapper.findAllUsersByCondition(userSearchRequest);
+ }
+
+ public void addUser(UserRequest userRequest) {
+ var user = userRequest.toUser();
+ userMapper.insert(user);
+ for (Long roleId : userRequest.getRoleIds()){
+ this.userMapper.insertRole(UserRole.builder()
+ .userId(user.getUserId())
+ .roleId(roleId)
+ .build());
+ }
+ }
+
+ public void editUser(UserRequest userRequest) {
+ var user = userRequest.toUser();
+ this.userMapper.update(user);
+ this.userMapper.deleteRolesByUserId(user.getUserId());
+ for (Long roleId : userRequest.getRoleIds()){
+ this.userMapper.insertRole(UserRole.builder()
+ .userId(user.getUserId())
+ .roleId(roleId)
+ .build());
+ }
+ }
+
+ public UserResponse getInfoUser(String userId) {
+ return userMapper.getInfoUserById(userId);
+ }
+}
diff --git a/src/main/java/com/veve_plus/root/utils/CustomStringUtils.java b/src/main/java/com/veve_plus/root/utils/CustomStringUtils.java
new file mode 100644
index 0000000..c31e99c
--- /dev/null
+++ b/src/main/java/com/veve_plus/root/utils/CustomStringUtils.java
@@ -0,0 +1,81 @@
+package com.veve_plus.root.utils;
+
+import org.apache.commons.lang3.StringUtils;
+
+import java.util.Objects;
+
+public class CustomStringUtils {
+
+ public static final String[] ARR_DATE_SPECIAL_CHAR = {"\\.", "/", ""};
+
+ public static String removeSpecialChar(Object o) {
+ if (Objects.isNull(o)) {
+ return null;
+ }
+ if (o instanceof String) {
+ return String.valueOf(o).replaceAll("[^0-9a-zA-Z]", "");
+ }
+ return null;
+ }
+
+ public static String convertSheetStringDate(Object o) {
+ if (Objects.isNull(o)) {
+ return StringUtils.EMPTY;
+ }
+ String result = "";
+ if (o instanceof String) {
+ String input = o.toString().replaceAll("\\s", "");
+ if (input.isEmpty()) {
+ return input;
+ }
+ int i = 0;
+ String[] partsDt = {};
+ while (i < ARR_DATE_SPECIAL_CHAR.length && partsDt.length != 3) {
+ partsDt = input.split(ARR_DATE_SPECIAL_CHAR[i]);
+ i++;
+ }
+ if (partsDt.length == 3) {
+ for (String part : partsDt) {
+ if (part.length() < 2) {
+ part = "0" + part;
+ }
+ if (part.length() == 4) {
+ result = part + result;
+ } else {
+ result += part;
+ }
+ }
+ }
+ }
+ return result;
+ }
+
+ public static String validBoolean(Object o) {
+ if (Objects.isNull(o)) {
+ return null;
+ }
+ if (o instanceof String) {
+ return String.valueOf(o).equalsIgnoreCase("TRUE")
+ || String.valueOf(o).equalsIgnoreCase("FALSE") ? String.valueOf(o) : null;
+ }
+ return null;
+ }
+
+ public static String valueOf(Object obj) {
+ return (obj == null) ? null : obj.toString();
+ }
+
+ public static boolean isObjectNullOrEmpty(Object obj) {
+ return obj == null || (obj instanceof String && ((String) obj).isEmpty());
+ }
+
+ public static Integer intValueOf(Object obj) {
+ String value = (obj == null) ? null : obj.toString();
+ if (!value.isEmpty()){
+ try {
+ return Integer.valueOf(value);
+ }catch (NumberFormatException e){}
+ }
+ return null;
+ }
+}
diff --git a/src/main/java/com/veve_plus/root/utils/DateTimeUtils.java b/src/main/java/com/veve_plus/root/utils/DateTimeUtils.java
new file mode 100644
index 0000000..20565be
--- /dev/null
+++ b/src/main/java/com/veve_plus/root/utils/DateTimeUtils.java
@@ -0,0 +1,15 @@
+package com.veve_plus.root.utils;
+
+import java.time.ZoneId;
+import java.time.ZonedDateTime;
+import java.time.format.DateTimeFormatter;
+
+public class DateTimeUtils {
+
+ public static final String DATETIME_FORMAT_HOUR = "yyyyMMddHHmm";
+ public static String getVersionFormatDate(){
+ DateTimeFormatter dtf = DateTimeFormatter.ofPattern(DATETIME_FORMAT_HOUR);
+ ZonedDateTime dateTime = ZonedDateTime.now(ZoneId.of("Asia/Ho_Chi_Minh"));
+ return dtf.format(dateTime) + "0000";
+ }
+}
diff --git a/src/main/java/com/veve_plus/root/utils/GSheetsUtils.java b/src/main/java/com/veve_plus/root/utils/GSheetsUtils.java
new file mode 100644
index 0000000..31ae818
--- /dev/null
+++ b/src/main/java/com/veve_plus/root/utils/GSheetsUtils.java
@@ -0,0 +1,198 @@
+package com.veve_plus.root.utils;
+
+import com.google.api.client.auth.oauth2.Credential;
+import com.google.api.client.extensions.java6.auth.oauth2.AuthorizationCodeInstalledApp;
+import com.google.api.client.extensions.jetty.auth.oauth2.LocalServerReceiver;
+import com.google.api.client.googleapis.auth.oauth2.GoogleAuthorizationCodeFlow;
+import com.google.api.client.googleapis.auth.oauth2.GoogleClientSecrets;
+import com.google.api.client.googleapis.javanet.GoogleNetHttpTransport;
+import com.google.api.client.http.javanet.NetHttpTransport;
+import com.google.api.client.json.JsonFactory;
+import com.google.api.client.json.gson.GsonFactory;
+import com.google.api.client.util.store.FileDataStoreFactory;
+import com.google.api.services.sheets.v4.Sheets;
+import com.google.api.services.sheets.v4.SheetsScopes;
+import com.google.api.services.sheets.v4.model.ValueRange;
+import org.springframework.stereotype.Component;
+
+import java.io.FileNotFoundException;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.net.URISyntaxException;
+import java.net.URL;
+import java.security.GeneralSecurityException;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.LinkedHashMap;
+import java.util.List;
+
+@Component
+public class GSheetsUtils {
+
+ private static final String APPLICATION_NAME = "GE Plus";
+ private static final JsonFactory JSON_FACTORY = GsonFactory.getDefaultInstance();
+ private static final String CREDENTIALS_FILE_PATH = "/googleCredentials.json";
+ private static final String TOKENS_DIRECTORY_PATH = "tokens";
+ private static final List SCOPES
+ = Collections.singletonList(SheetsScopes.SPREADSHEETS);
+
+ public List> getKSTData(String sheetId, String dataRange) throws IOException, GeneralSecurityException, URISyntaxException {
+ List> values = getValueRange(sheetId, dataRange).getValues();
+ List> resultData = new ArrayList<>();
+ if (values == null || values.isEmpty()) {
+ return null;
+ } else {
+
+ for (List row : values) {
+ int colIndex = 0;
+ if (row.size() < 3 || ("".equals(row.get(4)))) {
+ continue;
+ }
+ while (row.size() < 26) {
+ row.add("");
+ }
+ LinkedHashMap i = new LinkedHashMap<>();
+ //columns B
+ i.put("TMS", row.get(++colIndex));
+ //columns B
+ //TODO confirm geid
+ i.put("GeId", null);
+ //columns E
+ i.put("Lang", row.get(colIndex+=3));
+ //columns F
+ i.put("Title", row.get(++colIndex));
+ //columns G
+ i.put("Chap", row.get(++colIndex));
+ //columns I
+ i.put("Translation delivery date", row.get(colIndex+=2));
+ //columns J
+ i.put("TR", row.get(++colIndex));
+ //columns K
+ i.put("Translation Review", row.get(++colIndex));
+ //columns O
+ i.put("Delivery date", row.get(colIndex+=4));
+ //columns P
+ i.put("Affected month", row.get(++colIndex));
+ //column Q
+ i.put("DL", null);
+ //columns R
+ i.put("Necessity of modification (TMS)", row.get(colIndex+=2));
+ //columns S
+ i.put("PSD upload deadline", row.get(++colIndex));
+ //columns U
+ i.put("Date of issue", row.get(colIndex+=2));
+ //columns W
+ i.put("Reason for schedule change", row.get(colIndex+=2));
+ //columns O
+ //TODO
+ i.put("Done", null);
+ //columns X
+ i.put("Reason", row.get(++colIndex));
+ //columns T
+ //TODO
+ i.put("Combine check note", null);
+ //columns U
+ //TODO
+ i.put("TR ready", null);
+ //columns P
+ resultData.add(i);
+ }
+ }
+ return resultData;
+ }
+
+ /**
+ * Get value from Google Sheet by range
+ */
+ public ValueRange getValueRange(String spreadId, String range) throws GeneralSecurityException, IOException, URISyntaxException {
+ final NetHttpTransport HTTP_TRANSPORT = GoogleNetHttpTransport.newTrustedTransport();
+ Sheets service = new Sheets.Builder(HTTP_TRANSPORT, JSON_FACTORY, getCredentials(HTTP_TRANSPORT))
+ .setApplicationName(APPLICATION_NAME)
+ .build();
+ return service.spreadsheets().values()
+ .get(spreadId, range)
+ .execute();
+ }
+
+ /**
+ * Creates an authorized Credential object.
+ *
+ * @param HTTP_TRANSPORT The network HTTP Transport.
+ * @return An authorized Credential object.
+ * @throws IOException If the googleCredentials.json file cannot be found.
+ */
+ private Credential getCredentials(final NetHttpTransport HTTP_TRANSPORT)
+ throws IOException, URISyntaxException {
+ // Load client secrets.
+ InputStream in = GSheetsUtils.class.getResourceAsStream(CREDENTIALS_FILE_PATH);
+ if (in == null) {
+ throw new FileNotFoundException("Resource not found: " + CREDENTIALS_FILE_PATH);
+ }
+ GoogleClientSecrets clientSecrets =
+ GoogleClientSecrets.load(JSON_FACTORY, new InputStreamReader(in));
+
+ URL url = this.getClass().getClassLoader().getResource(TOKENS_DIRECTORY_PATH);
+ // Build flow and trigger user authorization request.
+ GoogleAuthorizationCodeFlow flow = new GoogleAuthorizationCodeFlow.Builder(
+ HTTP_TRANSPORT, JSON_FACTORY, clientSecrets, SCOPES)
+ .setDataStoreFactory(new FileDataStoreFactory(new java.io.File(url.toURI())))
+ .setAccessType("offline")
+ .build();
+ LocalServerReceiver receiver = new LocalServerReceiver.Builder().setPort(8888).build();
+ return new AuthorizationCodeInstalledApp(flow, receiver).authorize("user");
+ }
+
+ /**
+ * Fetch data to map
+ */
+ public List> getFileData(String sheetId, String dataRange) throws IOException, GeneralSecurityException, URISyntaxException {
+ List> values = getValueRange(sheetId, dataRange).getValues();
+ List> resultData = new ArrayList<>();
+ if (values == null || values.isEmpty()) {
+ throw new IOException("Data not found");
+ } else {
+ for (List row : values) {
+ int colIndex = 0;
+ if (row.size() < 3 || ("".equals(row.get(1)) && "".equals(row.get(2)) && "".equals(row.get(3)))) {
+ continue;
+ }
+ while (row.size() < 30) {
+ row.add("");
+ }
+ LinkedHashMap i = new LinkedHashMap<>();
+ //A
+ i.put("언어", row.get(colIndex));
+ //B
+ i.put("TMS", row.get(++colIndex));
+ //C
+ i.put("작품명", row.get(++colIndex));
+ //D
+ i.put("언센 서링", row.get(++colIndex));
+ //E
+ i.put("파일규격", row.get(++colIndex));
+ //F
+ i.put("US PSD 작업", row.get(++colIndex));
+ //O
+ i.put("식자 세팅", row.get(colIndex+=10));
+ //P
+ i.put("로고 전달", row.get(++colIndex));
+ //R
+ i.put("담당 DM", row.get(colIndex+=2));
+ //X
+ i.put("국문 PSD", row.get(colIndex+=5));
+ //Y
+ i.put("영문 PSD", row.get(++colIndex));
+ //Z
+ i.put("특이사항 (식자가 전달)", row.get(++colIndex));
+ //AA
+ i.put("비고 (레진 내부 정보 공유)", row.get(++colIndex));
+ //AB
+ i.put("번역문 링크", row.get(++colIndex));
+ resultData.add(i);
+ }
+ }
+
+ return resultData;
+ }
+}
diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties
new file mode 100644
index 0000000..33768be
--- /dev/null
+++ b/src/main/resources/application.properties
@@ -0,0 +1,50 @@
+spring.application.name=admin
+
+#Server port
+server.port = 8080
+
+# JDBC properties
+spring.datasource.url=jdbc:mysql://61.28.226.9:3306/gone
+spring.datasource.username=geuser1
+spring.datasource.password=Dki@2023
+spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
+
+#spring.security.user.name=admin
+#spring.security.user.password=password
+# Logging
+logging.level.org.springframework.security=TRACE
+logging.level.org.springframework.web=TRACE
+logging.level.org.hibernate.SQL=TRACE
+logging.level.org.hibernate.type.descriptor.sql.BasicBinder=TRACE
+
+# MyBatis configuration
+mybatis.mapper-locations=classpath:mapper/*.xml
+mybatis.configuration.map-underscore-to-camel-case=true
+mybatis.configuration.default-fetch-size=100
+mybatis.configuration.default-statement-timeout=30
+# MyBatis Configuration
+mybatis.configuration.cache-enabled=true
+mybatis.configuration.lazy-loading-enabled=true
+mybatis.configuration.aggressive-lazy-loading=true
+mybatis.configuration.multiple-result-sets-enabled=true
+mybatis.configuration.use-column-label=true
+mybatis.configuration.use-generated-keys=false
+mybatis.configuration.auto-mapping-behavior=PARTIAL
+mybatis.configuration.auto-mapping-unknown-column-behavior=NONE
+mybatis.configuration.default-executor-type=SIMPLE
+mybatis.configuration.safe-row-bounds-enabled=false
+mybatis.configuration.safe-result-handler-enabled=true
+mybatis.configuration.local-cache-scope=SESSION
+mybatis.configuration.jdbc-type-for-null=OTHER
+mybatis.configuration.lazy-load-trigger-methods=equals,clone,hashCode,toString
+mybatis.configuration.default-enum-type-handler=org.apache.ibatis.type.EnumTypeHandler
+mybatis.configuration.call-setters-on-nulls=false
+mybatis.configuration.return-instance-for-empty-row=false
+mybatis.configuration.log-prefix=exampleLogPreFix_
+
+spring.servlet.multipart.max-file-size=20MB
+spring.servlet.multipart.max-request-size=20MB
+
+#Schedule config
+scheduler.enabled=true
+
diff --git a/src/main/resources/googleCredentials.json b/src/main/resources/googleCredentials.json
new file mode 100644
index 0000000..0962f0e
--- /dev/null
+++ b/src/main/resources/googleCredentials.json
@@ -0,0 +1,13 @@
+{
+ "web": {
+ "client_id": "1005980214427-7u7ui56hoc592epchsu2bvrtcjmntah1.apps.googleusercontent.com",
+ "project_id": "wide-brook-398209",
+ "auth_uri": "https://accounts.google.com/o/oauth2/auth",
+ "token_uri": "https://oauth2.googleapis.com/token",
+ "auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs",
+ "client_secret": "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",
+ "redirect_uris": [
+ "http://localhost:8888/Callback"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/mapper/CodeMapper.xml b/src/main/resources/mapper/CodeMapper.xml
new file mode 100644
index 0000000..375fd7b
--- /dev/null
+++ b/src/main/resources/mapper/CodeMapper.xml
@@ -0,0 +1,18 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/main/resources/mapper/ContentMapper.xml b/src/main/resources/mapper/ContentMapper.xml
new file mode 100644
index 0000000..6e4db66
--- /dev/null
+++ b/src/main/resources/mapper/ContentMapper.xml
@@ -0,0 +1,51 @@
+
+
+
+
+ UPDATE tb_content
+ SET tms_id = #{tmsId}
+ WHERE content = #{content}
+
+
+
+ UPDATE tb_content
+ SET tms_id = NULL
+ WHERE content = #{content}
+
+
+
+ INSERT INTO tb_content (
+ content,
+ del_yn,
+ tms_id,
+ created_by,
+ updated_by,
+ created_time,
+ updated_time
+ )
+ SELECT
+ #{content},
+ #{locale},
+ #{tmsId},
+ #{createdBy},
+ #{updatedBy},
+ #{createdTime},
+ #{updatedTime}
+ WHERE NOT EXISTS (
+ SELECT *
+ FROM tb_content
+ WHERE content = #{content}
+ )
+
+
+
+
\ No newline at end of file
diff --git a/src/main/resources/mapper/GSheetMapper.xml b/src/main/resources/mapper/GSheetMapper.xml
new file mode 100644
index 0000000..33fa97e
--- /dev/null
+++ b/src/main/resources/mapper/GSheetMapper.xml
@@ -0,0 +1,131 @@
+
+
+
+
+
+ INSERT INTO tb_kst_task_history (
+ `version`
+ ,`title_ge_id`
+ ,disk_type
+ ,platform_code
+ ,title
+ ,chapter
+ ,open_date
+ ,trans_delivery_date
+ ,trans_review_date
+ ,is_trans_review
+ ,affected_delivery_date
+ ,affected_date
+ ,dki_delivery_date
+ ,is_modify
+ ,psd_upload_dealine
+ ,final_subset_upload
+ ,tms_psd_upload
+ ,qc_user_id
+ ,issued_date
+ ,writer
+ ,schedule_change_reason
+ ,is_confirmed
+ ,note
+ ,content_key
+ ,google_api_id
+ ,google_row
+ ,google_sheet_name
+ ,is_urgent
+ ,created_date
+ ,created_by
+ ,updated_date
+ ,updated_by
+ )
+ VALUES
+
+ #{element.version}
+ ,#{element.geId}
+ ,#{element.diskType}
+ ,#{element.platformCode}
+ ,#{element.title}
+ ,#{element.chapter}
+ ,#{element.openDate}
+ ,#{element.transDeliveryDate}
+ ,#{element.transReviewDate}
+ ,#{element.isTransReview}
+ ,#{element.affectedDeliveryDate}
+ ,#{element.affectedMonth}
+ ,#{element.dkiDeliveryDate}
+ ,#{element.isModify}
+ ,#{element.psdUploadDealine}
+ ,#{element.finalSubsetUpload}
+ ,#{element.tmsPsdUpload}
+ ,#{element.qcUserId}
+ ,#{element.issuedDate}
+ ,#{element.writer}
+ ,#{element.scheduleChangeReason}
+ ,#{element.isConfirmed}
+ ,#{element.note}
+ ,#{element.contentKey}
+ ,#{element.googleApiId}
+ ,#{element.googleRow}
+ ,#{element.language}
+ ,#{element.isUrgent}
+ ,SYSDATE()
+ ,#{element.createdBy}
+ ,SYSDATE()
+ ,'BATCH'
+
+
+
+
+
+
+ INSERT INTO tb_kidari_file_history (
+ version
+ ,language
+ ,tms
+ ,content
+ ,is_censored
+ ,file_spec
+ ,use_us_psd
+ ,is_set
+ ,is_logo
+ ,dm_name
+ ,psd_url_kr
+ ,psd_url_en
+ ,tr_url
+ ,note
+ ,memo
+ ,created_by
+ ,updated_by
+ ,created_time
+ ,updated_time
+ )
+ VALUES
+
+ #{element.version}
+ ,#{element.language}
+ ,#{element.tms}
+ ,#{element.content}
+ ,#{element.isCensored}
+ ,#{element.fileSpec}
+ ,#{element.useUsPsd}
+ ,#{element.is_set}
+ ,#{element.is_logo}
+ ,#{element.dm_name}
+ ,#{element.psd_url_kr}
+ ,#{element.psd_url_en}
+ ,#{element.tr_url}
+ ,#{element.note}
+ ,#{element.memo}
+ ,'BATCH'
+ ,'BATCH'
+ ,SYSDATE()
+ ,SYSDATE()
+
+
+
\ No newline at end of file
diff --git a/src/main/resources/mapper/MaterialMapper.xml b/src/main/resources/mapper/MaterialMapper.xml
new file mode 100644
index 0000000..64f497b
--- /dev/null
+++ b/src/main/resources/mapper/MaterialMapper.xml
@@ -0,0 +1,165 @@
+
+
+
+
+
+
+ UPDATE tb_kst_task
+ SET download_status = #{downloadStatus}
+ , download_date = #{downloadDate}
+ , download_user = #{downloadUser}
+ , is_trans_review = #{translateStatus}
+ , editor_note = #{editorNote}
+ , kst_note = #{kstNote}
+ , qc_note = #{qcNote}
+ , tms_chapter = #{tmsChapter}
+ WHERE idx = #{id}
+
+
+
+ UPDATE tb_kst_task tkt
+ INNER JOIN (
+ SELECT tkt.idx
+ FROM tb_kst_task tkt
+ INNER JOIN tb_content tc
+ ON tc.content = tkt.title
+ AND tc.tms_id = #{tmsId}
+ WHERE tkt.language = CASE WHEN #{language} = 'de_DE' THEN 'DE'
+ WHEN #{language} = 'en_US' THEN 'US'
+ WHEN #{language} = 'es_ES' THEN 'ES'
+ WHEN #{language} = 'fr_FR' THEN 'FR'
+ WHEN #{language} = 'ja_JP' THEN 'JP'
+ WHEN #{language} = 'ko_KR' THEN 'KR'
+ WHEN #{language} = 'zh_CN' THEN 'CN'
+ WHEN #{language} = 'zh_TW' THEN 'TW'
+ WHEN #{language} = 'th_TH' THEN 'TH'
+ WHEN #{language} = 'tr_TR' THEN 'TR'
+ WHEN #{language} = 'ar_001' THEN 'AR'
+ END
+ AND tkt.chapter = #{chapter}
+ ) target_task
+ ON tkt.idx = target_task.idx
+ SET tkt.trans_type = #{transType},
+ tkt.translation_download_status = '01'
+
+
+
+ INSERT INTO tb_kst_task (
+ language
+ , title
+ , chapter
+ , tms_chapter
+ , affected_delivery_date
+ , dki_delivery_date
+ , is_trans_review
+ , is_urgent
+ , created_date
+ , created_by
+ , updated_date
+ , updated_by
+ ) VALUES (
+ #{language}
+ , #{title}
+ , #{chapter}
+ , #{chapter}
+ , #{affectedDeliveryDate}
+ , #{dkiDeliveryDate}
+ , #{isTransReview}
+ , #{isUrgent}
+ , SYSDATE()
+ , 'SYSTEM'
+ , SYSDATE()
+ , 'SYSTEM'
+ )
+ ON DUPLICATE KEY UPDATE
+ language = #{language}
+ , title = #{title}
+ , chapter = #{chapter}
+ , affected_delivery_date = #{affectedDeliveryDate}
+ , dki_delivery_date = #{dkiDeliveryDate}
+ , is_trans_review = #{isTransReview}
+ , updated_date = SYSDATE()
+ , updated_by = 'SYSTEM'
+
+
+
+ UPDATE tb_kst_task
+ SET typing_status = #{typingStatus}
+ , type_complete_time = CASE WHEN #{typingStatus} = 2
+ THEN DATE_FORMAT(SYSDATE(), '%Y%m%d%H%i%s')
+ ELSE NULL
+ END
+ , updated_date = SYSDATE()
+ , updated_by = 'SYSTEM'
+ WHERE language = #{language}
+ AND chapter = #{chapter}
+ AND title = (select content from tb_content where tms_id = #{tmsId})
+
+
+
+ UPDATE tb_kst_task
+ SET typing_status = #{typingStatus}
+ , type_complete_time = CASE WHEN #{typingStatus} = 2
+ THEN DATE_FORMAT(SYSDATE(), '%Y%m%d%H%i%s')
+ ELSE NULL
+ END
+ , updated_date = SYSDATE()
+ , updated_by = 'SYSTEM'
+ WHERE language = #{language}
+ AND chapter = #{chapter}
+ AND title = (select content from tb_content where tooning_id = #{tmsId})
+
+
+
+
+
\ No newline at end of file
diff --git a/src/main/resources/mapper/MenuMapper.xml b/src/main/resources/mapper/MenuMapper.xml
new file mode 100644
index 0000000..1323f68
--- /dev/null
+++ b/src/main/resources/mapper/MenuMapper.xml
@@ -0,0 +1,87 @@
+
+
+
+
+
+
+
+ INSERT INTO tb_menu (pid, type, name, url, menu_sort, icon, status, permission, created_by, updated_by, created_time, updated_time)
+ VALUES (
+ #{pid},
+ #{type},
+ #{name},
+ #{url},
+ #{menuSort},
+ #{icon},
+ #{status},
+ #{permission},
+ #{createdBy},
+ #{updatedBy},
+ #{createdTime},
+ #{updatedTime}
+ )
+
+
+ UPDATE tb_menu
+ SET
+ pid = #{pid},
+ type = #{type},
+ name = #{name},
+ url = #{url},
+ menu_sort = #{menuSort},
+ icon = #{icon},
+ status= #{status},
+ permission = #{permission},
+ updated_by = #{updatedBy},
+ updated_time = #{updatedTime}
+ WHERE
+ menu_id = #{menuId}
+
+
+
+
+
+
diff --git a/src/main/resources/mapper/RoleMapper.xml b/src/main/resources/mapper/RoleMapper.xml
new file mode 100644
index 0000000..73fa09a
--- /dev/null
+++ b/src/main/resources/mapper/RoleMapper.xml
@@ -0,0 +1,108 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ INSERT INTO tb_role (
+ role_id,
+ name,
+ description,
+ status,
+ created_by,
+ updated_by,
+ created_time,
+ updated_time
+ ) VALUES (
+ #{roleId},
+ #{name},
+ #{description},
+ #{status},
+ #{createdBy},
+ #{updatedBy},
+ #{createdTime},
+ #{updatedTime}
+ )
+
+
+ UPDATE tb_role
+ SET
+ name = #{name},
+ description = #{description},
+ status = #{status},
+ updated_by = #{updatedBy},
+ updated_time = #{updatedTime}
+ WHERE
+ role_id = #{roleId}
+
+
+
+ DELETE FROM tb_roles_menus WHERE role_id = #{roleId}
+
+
+
+
+
diff --git a/src/main/resources/mapper/TaskMapper.xml b/src/main/resources/mapper/TaskMapper.xml
new file mode 100644
index 0000000..823635b
--- /dev/null
+++ b/src/main/resources/mapper/TaskMapper.xml
@@ -0,0 +1,63 @@
+
+
+
+
+
+
+
+ UPDATE tb_task
+ SET edit_status = #{editStatus}
+ WHERE idx = #{taskId}
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/main/resources/mapper/TitleMapper.xml b/src/main/resources/mapper/TitleMapper.xml
new file mode 100644
index 0000000..56043f0
--- /dev/null
+++ b/src/main/resources/mapper/TitleMapper.xml
@@ -0,0 +1,88 @@
+
+
+
+
+
+
+
+ UPDATE tb_content_title
+ SET font_size = #{fontSize}
+ , font_type_code = #{fontTypeCode}
+ , updated_time = now()
+ , updated_by = '000'
+ WHERE idx = #{id}
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/main/resources/mapper/TmsMapper.xml b/src/main/resources/mapper/TmsMapper.xml
new file mode 100644
index 0000000..ce6148b
--- /dev/null
+++ b/src/main/resources/mapper/TmsMapper.xml
@@ -0,0 +1,165 @@
+
+
+
+
+ INSERT INTO tb_translation (
+ tms_id,
+ chapter,
+ language_code,
+ seq_no,
+ coordinate_x,
+ coordinate_y,
+ width,
+ height,
+ text_content,
+ color_code,
+ del_flg,
+ created_by,
+ updated_by,
+ created_time,
+ updated_time
+ ) VALUES (
+ #{tmsId},
+ #{chapter},
+ #{languageCode},
+ #{seqNo},
+ #{positionX},
+ #{positionY},
+ #{width},
+ #{height},
+ #{textContent},
+ #{colorCode},
+ #{delFlg},
+ #{createdBy},
+ #{updatedBy},
+ SYSDATE(),
+ SYSDATE()
+ )
+ ON DUPLICATE KEY UPDATE
+ coordinate_x = #{positionX},
+ coordinate_y = #{positionY},
+ width = #{width},
+ height = #{height},
+ text_content = #{textContent},
+ color_code = #{colorCode},
+ del_flg = #{delFlg},
+ created_by = #{createdBy},
+ updated_by = #{updatedBy},
+ updated_time = SYSDATE()
+
+
+
+ INSERT INTO tb_tms_project (
+ project_id,
+ title,
+ version,
+ locale,
+ del_flg,
+ archived_flg,
+ bookmark_flg,
+ created_by,
+ updated_by,
+ created_time,
+ updated_time
+ ) VALUES (
+ #{projectId},
+ #{title},
+ #{version},
+ #{locale},
+ #{delFlg},
+ #{archivedFlg},
+ #{bookmarkFlg},
+ #{createdBy},
+ #{updatedBy},
+ SYSDATE(),
+ SYSDATE()
+ )
+ ON DUPLICATE KEY UPDATE
+ title = #{title},
+ version = #{version},
+ locale = #{locale},
+ del_flg = #{delFlg},
+ archived_flg = #{archivedFlg},
+ bookmark_flg = #{bookmarkFlg},
+ created_by = #{createdBy},
+ updated_by = #{updatedBy},
+ updated_time = SYSDATE()
+
+
+
+ INSERT INTO tb_tms_project_locale (
+ project_id,
+ locale
+ )
+ SELECT
+ #{projectId},
+ #{locale}
+ WHERE NOT EXISTS (
+ SELECT *
+ FROM tb_tms_project_locale
+ WHERE project_id = #{projectId}
+ AND locale = #{locale}
+ )
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/main/resources/mapper/UserMapper.xml b/src/main/resources/mapper/UserMapper.xml
new file mode 100644
index 0000000..1464a7d
--- /dev/null
+++ b/src/main/resources/mapper/UserMapper.xml
@@ -0,0 +1,260 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ INSERT INTO tb_user (
+ user_id,
+ dept_id,
+ username,
+ first_name,
+ last_name,
+ gender,
+ phone,
+ email,
+ contract_no,
+ contract_date,
+ identity_no,
+ issued_date,
+ issued_place,
+ tax_code,
+ avatar_name,
+ avatar_path,
+ password,
+ download_password,
+ is_admin,
+ is_manager,
+ is_locked,
+ is_expired,
+ is_credential_expired,
+ status,
+ level,
+ bank,
+ bank_account,
+ classification,
+ created_by,
+ updated_by,
+ pwd_reset_time,
+ created_time,
+ updated_time
+ )
+ VALUES (
+ #{userId},
+ #{deptId},
+ #{username},
+ #{firstName},
+ #{lastName},
+ #{gender},
+ #{phone},
+ #{email},
+ #{contractNo},
+ #{contractDate},
+ #{identityNo},
+ #{issuedDate},
+ #{issuedPlace},
+ #{taxCode},
+ #{avatarName},
+ #{avatarPath},
+ #{password},
+ SHA2(#{downloadPassword}, '512'),
+ #{isAdmin},
+ #{isManager},
+ #{isLocked},
+ #{isExpired},
+ #{isCredentialExpired},
+ #{status},
+ #{level},
+ #{bank},
+ #{bankAccount},
+ #{classification},
+ #{createdBy},
+ #{updatedBy},
+ #{pwdResetTime},
+ SYSDATE(),
+ SYSDATE()
+ )
+
+
+
+ INSERT INTO tb_users_roles (
+ user_id,
+ role_id,
+ created_by,
+ updated_by,
+ created_time,
+ updated_time
+ ) VALUES (
+ #{userId},
+ #{roleId},
+ #{createdBy},
+ #{updatedBy},
+ SYSDATE(),
+ SYSDATE()
+ )
+
+
+
+ UPDATE tb_user
+ SET
+ dept_id = #{deptId},
+ username = #{username},
+ first_name = #{firstName},
+ last_name = #{lastName},
+ gender = #{gender},
+ phone = #{phone},
+
+ contract_no = #{contractNo},
+ contract_date = #{contractDate},
+ identity_no = #{identityNo},
+ issued_date = #{issuedDate},
+ issued_place = #{issuedPlace},
+ tax_code = #{taxCode},
+ is_manager = #{isManager},
+ classification = #{classification},
+ status = #{status},
+ level = #{level},
+ bank = #{bank},
+ bank_account = #{bankAccount},
+ updated_by = #{updatedBy},
+ updated_time = SYSDATE()
+ WHERE user_id = #{userId}
+
+
+
+ DELETE FROM tb_users_roles WHERE user_id = #{userId}
+
+
+
+
+
\ No newline at end of file
diff --git a/src/main/resources/tokens/StoredCredential b/src/main/resources/tokens/StoredCredential
new file mode 100644
index 0000000..f832d63
Binary files /dev/null and b/src/main/resources/tokens/StoredCredential differ
diff --git a/src/test/java/com/veve_plus/root/RootApplicationTests.java b/src/test/java/com/veve_plus/root/RootApplicationTests.java
new file mode 100644
index 0000000..12849e4
--- /dev/null
+++ b/src/test/java/com/veve_plus/root/RootApplicationTests.java
@@ -0,0 +1,13 @@
+package com.veve_plus.root;
+
+import org.junit.jupiter.api.Test;
+import org.springframework.boot.test.context.SpringBootTest;
+
+@SpringBootTest
+class RootApplicationTests {
+
+ @Test
+ void contextLoads() {
+ }
+
+}
diff --git a/target/classes/application.properties b/target/classes/application.properties
new file mode 100644
index 0000000..33768be
--- /dev/null
+++ b/target/classes/application.properties
@@ -0,0 +1,50 @@
+spring.application.name=admin
+
+#Server port
+server.port = 8080
+
+# JDBC properties
+spring.datasource.url=jdbc:mysql://61.28.226.9:3306/gone
+spring.datasource.username=geuser1
+spring.datasource.password=Dki@2023
+spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
+
+#spring.security.user.name=admin
+#spring.security.user.password=password
+# Logging
+logging.level.org.springframework.security=TRACE
+logging.level.org.springframework.web=TRACE
+logging.level.org.hibernate.SQL=TRACE
+logging.level.org.hibernate.type.descriptor.sql.BasicBinder=TRACE
+
+# MyBatis configuration
+mybatis.mapper-locations=classpath:mapper/*.xml
+mybatis.configuration.map-underscore-to-camel-case=true
+mybatis.configuration.default-fetch-size=100
+mybatis.configuration.default-statement-timeout=30
+# MyBatis Configuration
+mybatis.configuration.cache-enabled=true
+mybatis.configuration.lazy-loading-enabled=true
+mybatis.configuration.aggressive-lazy-loading=true
+mybatis.configuration.multiple-result-sets-enabled=true
+mybatis.configuration.use-column-label=true
+mybatis.configuration.use-generated-keys=false
+mybatis.configuration.auto-mapping-behavior=PARTIAL
+mybatis.configuration.auto-mapping-unknown-column-behavior=NONE
+mybatis.configuration.default-executor-type=SIMPLE
+mybatis.configuration.safe-row-bounds-enabled=false
+mybatis.configuration.safe-result-handler-enabled=true
+mybatis.configuration.local-cache-scope=SESSION
+mybatis.configuration.jdbc-type-for-null=OTHER
+mybatis.configuration.lazy-load-trigger-methods=equals,clone,hashCode,toString
+mybatis.configuration.default-enum-type-handler=org.apache.ibatis.type.EnumTypeHandler
+mybatis.configuration.call-setters-on-nulls=false
+mybatis.configuration.return-instance-for-empty-row=false
+mybatis.configuration.log-prefix=exampleLogPreFix_
+
+spring.servlet.multipart.max-file-size=20MB
+spring.servlet.multipart.max-request-size=20MB
+
+#Schedule config
+scheduler.enabled=true
+
diff --git a/target/classes/com/veve_plus/root/RootApplication.class b/target/classes/com/veve_plus/root/RootApplication.class
new file mode 100644
index 0000000..b8da340
Binary files /dev/null and b/target/classes/com/veve_plus/root/RootApplication.class differ
diff --git a/target/classes/com/veve_plus/root/ServletInitializer.class b/target/classes/com/veve_plus/root/ServletInitializer.class
new file mode 100644
index 0000000..ff6a079
Binary files /dev/null and b/target/classes/com/veve_plus/root/ServletInitializer.class differ
diff --git a/target/classes/com/veve_plus/root/config/CorsConfig.class b/target/classes/com/veve_plus/root/config/CorsConfig.class
new file mode 100644
index 0000000..9500b94
Binary files /dev/null and b/target/classes/com/veve_plus/root/config/CorsConfig.class differ
diff --git a/target/classes/com/veve_plus/root/config/JwtFilter.class b/target/classes/com/veve_plus/root/config/JwtFilter.class
new file mode 100644
index 0000000..70949d2
Binary files /dev/null and b/target/classes/com/veve_plus/root/config/JwtFilter.class differ
diff --git a/target/classes/com/veve_plus/root/config/MyBatisConfig.class b/target/classes/com/veve_plus/root/config/MyBatisConfig.class
new file mode 100644
index 0000000..122a68d
Binary files /dev/null and b/target/classes/com/veve_plus/root/config/MyBatisConfig.class differ
diff --git a/target/classes/com/veve_plus/root/config/WebSecurityConfig.class b/target/classes/com/veve_plus/root/config/WebSecurityConfig.class
new file mode 100644
index 0000000..020de45
Binary files /dev/null and b/target/classes/com/veve_plus/root/config/WebSecurityConfig.class differ
diff --git a/target/classes/com/veve_plus/root/constant/TmsSheetConst$FileSheet.class b/target/classes/com/veve_plus/root/constant/TmsSheetConst$FileSheet.class
new file mode 100644
index 0000000..f7088c3
Binary files /dev/null and b/target/classes/com/veve_plus/root/constant/TmsSheetConst$FileSheet.class differ
diff --git a/target/classes/com/veve_plus/root/constant/TmsSheetConst$Template.class b/target/classes/com/veve_plus/root/constant/TmsSheetConst$Template.class
new file mode 100644
index 0000000..4de0ef8
Binary files /dev/null and b/target/classes/com/veve_plus/root/constant/TmsSheetConst$Template.class differ
diff --git a/target/classes/com/veve_plus/root/constant/TmsSheetConst.class b/target/classes/com/veve_plus/root/constant/TmsSheetConst.class
new file mode 100644
index 0000000..1fadb0b
Binary files /dev/null and b/target/classes/com/veve_plus/root/constant/TmsSheetConst.class differ
diff --git a/target/classes/com/veve_plus/root/controller/AuthController.class b/target/classes/com/veve_plus/root/controller/AuthController.class
new file mode 100644
index 0000000..e0906c9
Binary files /dev/null and b/target/classes/com/veve_plus/root/controller/AuthController.class differ
diff --git a/target/classes/com/veve_plus/root/controller/CodeController.class b/target/classes/com/veve_plus/root/controller/CodeController.class
new file mode 100644
index 0000000..b29c978
Binary files /dev/null and b/target/classes/com/veve_plus/root/controller/CodeController.class differ
diff --git a/target/classes/com/veve_plus/root/controller/ContentController.class b/target/classes/com/veve_plus/root/controller/ContentController.class
new file mode 100644
index 0000000..f77d4e8
Binary files /dev/null and b/target/classes/com/veve_plus/root/controller/ContentController.class differ
diff --git a/target/classes/com/veve_plus/root/controller/MaterialController.class b/target/classes/com/veve_plus/root/controller/MaterialController.class
new file mode 100644
index 0000000..1296232
Binary files /dev/null and b/target/classes/com/veve_plus/root/controller/MaterialController.class differ
diff --git a/target/classes/com/veve_plus/root/controller/MenuController.class b/target/classes/com/veve_plus/root/controller/MenuController.class
new file mode 100644
index 0000000..1ec9c89
Binary files /dev/null and b/target/classes/com/veve_plus/root/controller/MenuController.class differ
diff --git a/target/classes/com/veve_plus/root/controller/RoleController.class b/target/classes/com/veve_plus/root/controller/RoleController.class
new file mode 100644
index 0000000..dbfeb5d
Binary files /dev/null and b/target/classes/com/veve_plus/root/controller/RoleController.class differ
diff --git a/target/classes/com/veve_plus/root/controller/TaskController.class b/target/classes/com/veve_plus/root/controller/TaskController.class
new file mode 100644
index 0000000..dc9db7d
Binary files /dev/null and b/target/classes/com/veve_plus/root/controller/TaskController.class differ
diff --git a/target/classes/com/veve_plus/root/controller/TitleController.class b/target/classes/com/veve_plus/root/controller/TitleController.class
new file mode 100644
index 0000000..d0a3fe3
Binary files /dev/null and b/target/classes/com/veve_plus/root/controller/TitleController.class differ
diff --git a/target/classes/com/veve_plus/root/controller/TmsController.class b/target/classes/com/veve_plus/root/controller/TmsController.class
new file mode 100644
index 0000000..c894623
Binary files /dev/null and b/target/classes/com/veve_plus/root/controller/TmsController.class differ
diff --git a/target/classes/com/veve_plus/root/controller/UserController.class b/target/classes/com/veve_plus/root/controller/UserController.class
new file mode 100644
index 0000000..7fd133b
Binary files /dev/null and b/target/classes/com/veve_plus/root/controller/UserController.class differ
diff --git a/target/classes/com/veve_plus/root/dto/auth/AuthResponseDto.class b/target/classes/com/veve_plus/root/dto/auth/AuthResponseDto.class
new file mode 100644
index 0000000..ab1e361
Binary files /dev/null and b/target/classes/com/veve_plus/root/dto/auth/AuthResponseDto.class differ
diff --git a/target/classes/com/veve_plus/root/dto/auth/LoginDto.class b/target/classes/com/veve_plus/root/dto/auth/LoginDto.class
new file mode 100644
index 0000000..36f5f21
Binary files /dev/null and b/target/classes/com/veve_plus/root/dto/auth/LoginDto.class differ
diff --git a/target/classes/com/veve_plus/root/dto/auth/UserPrincipal.class b/target/classes/com/veve_plus/root/dto/auth/UserPrincipal.class
new file mode 100644
index 0000000..1e20de8
Binary files /dev/null and b/target/classes/com/veve_plus/root/dto/auth/UserPrincipal.class differ
diff --git a/target/classes/com/veve_plus/root/dto/code/CodeDto$CodeDtoBuilder.class b/target/classes/com/veve_plus/root/dto/code/CodeDto$CodeDtoBuilder.class
new file mode 100644
index 0000000..6875324
Binary files /dev/null and b/target/classes/com/veve_plus/root/dto/code/CodeDto$CodeDtoBuilder.class differ
diff --git a/target/classes/com/veve_plus/root/dto/code/CodeDto.class b/target/classes/com/veve_plus/root/dto/code/CodeDto.class
new file mode 100644
index 0000000..9f06773
Binary files /dev/null and b/target/classes/com/veve_plus/root/dto/code/CodeDto.class differ
diff --git a/target/classes/com/veve_plus/root/dto/content/ContentDto$ContentDtoBuilder.class b/target/classes/com/veve_plus/root/dto/content/ContentDto$ContentDtoBuilder.class
new file mode 100644
index 0000000..6296858
Binary files /dev/null and b/target/classes/com/veve_plus/root/dto/content/ContentDto$ContentDtoBuilder.class differ
diff --git a/target/classes/com/veve_plus/root/dto/content/ContentDto.class b/target/classes/com/veve_plus/root/dto/content/ContentDto.class
new file mode 100644
index 0000000..d81507f
Binary files /dev/null and b/target/classes/com/veve_plus/root/dto/content/ContentDto.class differ
diff --git a/target/classes/com/veve_plus/root/dto/content/ContentReqDto$ContentReqDtoBuilder.class b/target/classes/com/veve_plus/root/dto/content/ContentReqDto$ContentReqDtoBuilder.class
new file mode 100644
index 0000000..f5647f5
Binary files /dev/null and b/target/classes/com/veve_plus/root/dto/content/ContentReqDto$ContentReqDtoBuilder.class differ
diff --git a/target/classes/com/veve_plus/root/dto/content/ContentReqDto.class b/target/classes/com/veve_plus/root/dto/content/ContentReqDto.class
new file mode 100644
index 0000000..1f680a1
Binary files /dev/null and b/target/classes/com/veve_plus/root/dto/content/ContentReqDto.class differ
diff --git a/target/classes/com/veve_plus/root/dto/content/ContentTitleDto$ContentTitleDtoBuilder.class b/target/classes/com/veve_plus/root/dto/content/ContentTitleDto$ContentTitleDtoBuilder.class
new file mode 100644
index 0000000..c3a25dd
Binary files /dev/null and b/target/classes/com/veve_plus/root/dto/content/ContentTitleDto$ContentTitleDtoBuilder.class differ
diff --git a/target/classes/com/veve_plus/root/dto/content/ContentTitleDto.class b/target/classes/com/veve_plus/root/dto/content/ContentTitleDto.class
new file mode 100644
index 0000000..79d31cc
Binary files /dev/null and b/target/classes/com/veve_plus/root/dto/content/ContentTitleDto.class differ
diff --git a/target/classes/com/veve_plus/root/dto/material/MaterialDto$MaterialDtoBuilder.class b/target/classes/com/veve_plus/root/dto/material/MaterialDto$MaterialDtoBuilder.class
new file mode 100644
index 0000000..d2fb7cf
Binary files /dev/null and b/target/classes/com/veve_plus/root/dto/material/MaterialDto$MaterialDtoBuilder.class differ
diff --git a/target/classes/com/veve_plus/root/dto/material/MaterialDto.class b/target/classes/com/veve_plus/root/dto/material/MaterialDto.class
new file mode 100644
index 0000000..8124c35
Binary files /dev/null and b/target/classes/com/veve_plus/root/dto/material/MaterialDto.class differ
diff --git a/target/classes/com/veve_plus/root/dto/material/MaterialTypingStatusDto$MaterialTypingStatusDtoBuilder.class b/target/classes/com/veve_plus/root/dto/material/MaterialTypingStatusDto$MaterialTypingStatusDtoBuilder.class
new file mode 100644
index 0000000..e4d4193
Binary files /dev/null and b/target/classes/com/veve_plus/root/dto/material/MaterialTypingStatusDto$MaterialTypingStatusDtoBuilder.class differ
diff --git a/target/classes/com/veve_plus/root/dto/material/MaterialTypingStatusDto.class b/target/classes/com/veve_plus/root/dto/material/MaterialTypingStatusDto.class
new file mode 100644
index 0000000..4d87434
Binary files /dev/null and b/target/classes/com/veve_plus/root/dto/material/MaterialTypingStatusDto.class differ
diff --git a/target/classes/com/veve_plus/root/dto/menu/Menu.class b/target/classes/com/veve_plus/root/dto/menu/Menu.class
new file mode 100644
index 0000000..c9ce6ba
Binary files /dev/null and b/target/classes/com/veve_plus/root/dto/menu/Menu.class differ
diff --git a/target/classes/com/veve_plus/root/dto/menu/MenuHierarchyResponse$MenuHierarchyResponseBuilder.class b/target/classes/com/veve_plus/root/dto/menu/MenuHierarchyResponse$MenuHierarchyResponseBuilder.class
new file mode 100644
index 0000000..0db8d71
Binary files /dev/null and b/target/classes/com/veve_plus/root/dto/menu/MenuHierarchyResponse$MenuHierarchyResponseBuilder.class differ
diff --git a/target/classes/com/veve_plus/root/dto/menu/MenuHierarchyResponse.class b/target/classes/com/veve_plus/root/dto/menu/MenuHierarchyResponse.class
new file mode 100644
index 0000000..74aca05
Binary files /dev/null and b/target/classes/com/veve_plus/root/dto/menu/MenuHierarchyResponse.class differ
diff --git a/target/classes/com/veve_plus/root/dto/menu/MenuResponse$MenuResponseBuilder.class b/target/classes/com/veve_plus/root/dto/menu/MenuResponse$MenuResponseBuilder.class
new file mode 100644
index 0000000..c17cb02
Binary files /dev/null and b/target/classes/com/veve_plus/root/dto/menu/MenuResponse$MenuResponseBuilder.class differ
diff --git a/target/classes/com/veve_plus/root/dto/menu/MenuResponse.class b/target/classes/com/veve_plus/root/dto/menu/MenuResponse.class
new file mode 100644
index 0000000..07991c6
Binary files /dev/null and b/target/classes/com/veve_plus/root/dto/menu/MenuResponse.class differ
diff --git a/target/classes/com/veve_plus/root/dto/menu/MenuSearchRequest$MenuSearchRequestBuilder.class b/target/classes/com/veve_plus/root/dto/menu/MenuSearchRequest$MenuSearchRequestBuilder.class
new file mode 100644
index 0000000..427cab2
Binary files /dev/null and b/target/classes/com/veve_plus/root/dto/menu/MenuSearchRequest$MenuSearchRequestBuilder.class differ
diff --git a/target/classes/com/veve_plus/root/dto/menu/MenuSearchRequest.class b/target/classes/com/veve_plus/root/dto/menu/MenuSearchRequest.class
new file mode 100644
index 0000000..116988a
Binary files /dev/null and b/target/classes/com/veve_plus/root/dto/menu/MenuSearchRequest.class differ
diff --git a/target/classes/com/veve_plus/root/dto/role/Role$RoleBuilder.class b/target/classes/com/veve_plus/root/dto/role/Role$RoleBuilder.class
new file mode 100644
index 0000000..2c0bdd4
Binary files /dev/null and b/target/classes/com/veve_plus/root/dto/role/Role$RoleBuilder.class differ
diff --git a/target/classes/com/veve_plus/root/dto/role/Role.class b/target/classes/com/veve_plus/root/dto/role/Role.class
new file mode 100644
index 0000000..6911b8f
Binary files /dev/null and b/target/classes/com/veve_plus/root/dto/role/Role.class differ
diff --git a/target/classes/com/veve_plus/root/dto/role/RoleMenu$RoleMenuBuilder.class b/target/classes/com/veve_plus/root/dto/role/RoleMenu$RoleMenuBuilder.class
new file mode 100644
index 0000000..37e10a4
Binary files /dev/null and b/target/classes/com/veve_plus/root/dto/role/RoleMenu$RoleMenuBuilder.class differ
diff --git a/target/classes/com/veve_plus/root/dto/role/RoleMenu.class b/target/classes/com/veve_plus/root/dto/role/RoleMenu.class
new file mode 100644
index 0000000..4310733
Binary files /dev/null and b/target/classes/com/veve_plus/root/dto/role/RoleMenu.class differ
diff --git a/target/classes/com/veve_plus/root/dto/role/RoleRequest$RoleRequestBuilder.class b/target/classes/com/veve_plus/root/dto/role/RoleRequest$RoleRequestBuilder.class
new file mode 100644
index 0000000..e07d5c1
Binary files /dev/null and b/target/classes/com/veve_plus/root/dto/role/RoleRequest$RoleRequestBuilder.class differ
diff --git a/target/classes/com/veve_plus/root/dto/role/RoleRequest.class b/target/classes/com/veve_plus/root/dto/role/RoleRequest.class
new file mode 100644
index 0000000..e7eff42
Binary files /dev/null and b/target/classes/com/veve_plus/root/dto/role/RoleRequest.class differ
diff --git a/target/classes/com/veve_plus/root/dto/role/RoleResponse$RoleResponseBuilder.class b/target/classes/com/veve_plus/root/dto/role/RoleResponse$RoleResponseBuilder.class
new file mode 100644
index 0000000..0e3d992
Binary files /dev/null and b/target/classes/com/veve_plus/root/dto/role/RoleResponse$RoleResponseBuilder.class differ
diff --git a/target/classes/com/veve_plus/root/dto/role/RoleResponse.class b/target/classes/com/veve_plus/root/dto/role/RoleResponse.class
new file mode 100644
index 0000000..54e5db5
Binary files /dev/null and b/target/classes/com/veve_plus/root/dto/role/RoleResponse.class differ
diff --git a/target/classes/com/veve_plus/root/dto/role/RoleSearchRequest$RoleSearchRequestBuilder.class b/target/classes/com/veve_plus/root/dto/role/RoleSearchRequest$RoleSearchRequestBuilder.class
new file mode 100644
index 0000000..ee1d2fa
Binary files /dev/null and b/target/classes/com/veve_plus/root/dto/role/RoleSearchRequest$RoleSearchRequestBuilder.class differ
diff --git a/target/classes/com/veve_plus/root/dto/role/RoleSearchRequest.class b/target/classes/com/veve_plus/root/dto/role/RoleSearchRequest.class
new file mode 100644
index 0000000..91710ec
Binary files /dev/null and b/target/classes/com/veve_plus/root/dto/role/RoleSearchRequest.class differ
diff --git a/target/classes/com/veve_plus/root/dto/role/RoleUser$RoleUserBuilder.class b/target/classes/com/veve_plus/root/dto/role/RoleUser$RoleUserBuilder.class
new file mode 100644
index 0000000..71ecde9
Binary files /dev/null and b/target/classes/com/veve_plus/root/dto/role/RoleUser$RoleUserBuilder.class differ
diff --git a/target/classes/com/veve_plus/root/dto/role/RoleUser.class b/target/classes/com/veve_plus/root/dto/role/RoleUser.class
new file mode 100644
index 0000000..7c7012c
Binary files /dev/null and b/target/classes/com/veve_plus/root/dto/role/RoleUser.class differ
diff --git a/target/classes/com/veve_plus/root/dto/task/KstTaskHistoryDto.class b/target/classes/com/veve_plus/root/dto/task/KstTaskHistoryDto.class
new file mode 100644
index 0000000..234aa66
Binary files /dev/null and b/target/classes/com/veve_plus/root/dto/task/KstTaskHistoryDto.class differ
diff --git a/target/classes/com/veve_plus/root/dto/task/TaskDto.class b/target/classes/com/veve_plus/root/dto/task/TaskDto.class
new file mode 100644
index 0000000..28cf982
Binary files /dev/null and b/target/classes/com/veve_plus/root/dto/task/TaskDto.class differ
diff --git a/target/classes/com/veve_plus/root/dto/title/TitleDto$TitleDtoBuilder.class b/target/classes/com/veve_plus/root/dto/title/TitleDto$TitleDtoBuilder.class
new file mode 100644
index 0000000..3c08caf
Binary files /dev/null and b/target/classes/com/veve_plus/root/dto/title/TitleDto$TitleDtoBuilder.class differ
diff --git a/target/classes/com/veve_plus/root/dto/title/TitleDto.class b/target/classes/com/veve_plus/root/dto/title/TitleDto.class
new file mode 100644
index 0000000..adf34fb
Binary files /dev/null and b/target/classes/com/veve_plus/root/dto/title/TitleDto.class differ
diff --git a/target/classes/com/veve_plus/root/dto/title/TitleUpdDto$TitleUpdDtoBuilder.class b/target/classes/com/veve_plus/root/dto/title/TitleUpdDto$TitleUpdDtoBuilder.class
new file mode 100644
index 0000000..119ad3b
Binary files /dev/null and b/target/classes/com/veve_plus/root/dto/title/TitleUpdDto$TitleUpdDtoBuilder.class differ
diff --git a/target/classes/com/veve_plus/root/dto/title/TitleUpdDto.class b/target/classes/com/veve_plus/root/dto/title/TitleUpdDto.class
new file mode 100644
index 0000000..c822e84
Binary files /dev/null and b/target/classes/com/veve_plus/root/dto/title/TitleUpdDto.class differ
diff --git a/target/classes/com/veve_plus/root/dto/tms/ProjectDto$ProjectDtoBuilder.class b/target/classes/com/veve_plus/root/dto/tms/ProjectDto$ProjectDtoBuilder.class
new file mode 100644
index 0000000..3f93757
Binary files /dev/null and b/target/classes/com/veve_plus/root/dto/tms/ProjectDto$ProjectDtoBuilder.class differ
diff --git a/target/classes/com/veve_plus/root/dto/tms/ProjectDto.class b/target/classes/com/veve_plus/root/dto/tms/ProjectDto.class
new file mode 100644
index 0000000..27c9771
Binary files /dev/null and b/target/classes/com/veve_plus/root/dto/tms/ProjectDto.class differ
diff --git a/target/classes/com/veve_plus/root/dto/tms/ProjectLocaleDto$ProjectLocaleDtoBuilder.class b/target/classes/com/veve_plus/root/dto/tms/ProjectLocaleDto$ProjectLocaleDtoBuilder.class
new file mode 100644
index 0000000..e4ed084
Binary files /dev/null and b/target/classes/com/veve_plus/root/dto/tms/ProjectLocaleDto$ProjectLocaleDtoBuilder.class differ
diff --git a/target/classes/com/veve_plus/root/dto/tms/ProjectLocaleDto.class b/target/classes/com/veve_plus/root/dto/tms/ProjectLocaleDto.class
new file mode 100644
index 0000000..8af85cb
Binary files /dev/null and b/target/classes/com/veve_plus/root/dto/tms/ProjectLocaleDto.class differ
diff --git a/target/classes/com/veve_plus/root/dto/tms/TmsReqDto$TmsReqDtoBuilder.class b/target/classes/com/veve_plus/root/dto/tms/TmsReqDto$TmsReqDtoBuilder.class
new file mode 100644
index 0000000..a9167b9
Binary files /dev/null and b/target/classes/com/veve_plus/root/dto/tms/TmsReqDto$TmsReqDtoBuilder.class differ
diff --git a/target/classes/com/veve_plus/root/dto/tms/TmsReqDto.class b/target/classes/com/veve_plus/root/dto/tms/TmsReqDto.class
new file mode 100644
index 0000000..06681e8
Binary files /dev/null and b/target/classes/com/veve_plus/root/dto/tms/TmsReqDto.class differ
diff --git a/target/classes/com/veve_plus/root/dto/tms/TranslationDto$TranslationDtoBuilder.class b/target/classes/com/veve_plus/root/dto/tms/TranslationDto$TranslationDtoBuilder.class
new file mode 100644
index 0000000..4006b06
Binary files /dev/null and b/target/classes/com/veve_plus/root/dto/tms/TranslationDto$TranslationDtoBuilder.class differ
diff --git a/target/classes/com/veve_plus/root/dto/tms/TranslationDto.class b/target/classes/com/veve_plus/root/dto/tms/TranslationDto.class
new file mode 100644
index 0000000..453281e
Binary files /dev/null and b/target/classes/com/veve_plus/root/dto/tms/TranslationDto.class differ
diff --git a/target/classes/com/veve_plus/root/dto/user/UserDto$UserDtoBuilder.class b/target/classes/com/veve_plus/root/dto/user/UserDto$UserDtoBuilder.class
new file mode 100644
index 0000000..6b7146e
Binary files /dev/null and b/target/classes/com/veve_plus/root/dto/user/UserDto$UserDtoBuilder.class differ
diff --git a/target/classes/com/veve_plus/root/dto/user/UserDto.class b/target/classes/com/veve_plus/root/dto/user/UserDto.class
new file mode 100644
index 0000000..39f11df
Binary files /dev/null and b/target/classes/com/veve_plus/root/dto/user/UserDto.class differ
diff --git a/target/classes/com/veve_plus/root/dto/user/UserRequest$UserRequestBuilder.class b/target/classes/com/veve_plus/root/dto/user/UserRequest$UserRequestBuilder.class
new file mode 100644
index 0000000..d2bc77a
Binary files /dev/null and b/target/classes/com/veve_plus/root/dto/user/UserRequest$UserRequestBuilder.class differ
diff --git a/target/classes/com/veve_plus/root/dto/user/UserRequest.class b/target/classes/com/veve_plus/root/dto/user/UserRequest.class
new file mode 100644
index 0000000..c4adfaa
Binary files /dev/null and b/target/classes/com/veve_plus/root/dto/user/UserRequest.class differ
diff --git a/target/classes/com/veve_plus/root/dto/user/UserResponse$UserResponseBuilder.class b/target/classes/com/veve_plus/root/dto/user/UserResponse$UserResponseBuilder.class
new file mode 100644
index 0000000..347c151
Binary files /dev/null and b/target/classes/com/veve_plus/root/dto/user/UserResponse$UserResponseBuilder.class differ
diff --git a/target/classes/com/veve_plus/root/dto/user/UserResponse.class b/target/classes/com/veve_plus/root/dto/user/UserResponse.class
new file mode 100644
index 0000000..3e60643
Binary files /dev/null and b/target/classes/com/veve_plus/root/dto/user/UserResponse.class differ
diff --git a/target/classes/com/veve_plus/root/dto/user/UserRole$UserRoleBuilder.class b/target/classes/com/veve_plus/root/dto/user/UserRole$UserRoleBuilder.class
new file mode 100644
index 0000000..e2c3b4a
Binary files /dev/null and b/target/classes/com/veve_plus/root/dto/user/UserRole$UserRoleBuilder.class differ
diff --git a/target/classes/com/veve_plus/root/dto/user/UserRole.class b/target/classes/com/veve_plus/root/dto/user/UserRole.class
new file mode 100644
index 0000000..d9481c3
Binary files /dev/null and b/target/classes/com/veve_plus/root/dto/user/UserRole.class differ
diff --git a/target/classes/com/veve_plus/root/dto/user/UserSearchRequest$UserSearchRequestBuilder.class b/target/classes/com/veve_plus/root/dto/user/UserSearchRequest$UserSearchRequestBuilder.class
new file mode 100644
index 0000000..51e1bd2
Binary files /dev/null and b/target/classes/com/veve_plus/root/dto/user/UserSearchRequest$UserSearchRequestBuilder.class differ
diff --git a/target/classes/com/veve_plus/root/dto/user/UserSearchRequest.class b/target/classes/com/veve_plus/root/dto/user/UserSearchRequest.class
new file mode 100644
index 0000000..18c2ca1
Binary files /dev/null and b/target/classes/com/veve_plus/root/dto/user/UserSearchRequest.class differ
diff --git a/target/classes/com/veve_plus/root/entity/Content.class b/target/classes/com/veve_plus/root/entity/Content.class
new file mode 100644
index 0000000..ae9c845
Binary files /dev/null and b/target/classes/com/veve_plus/root/entity/Content.class differ
diff --git a/target/classes/com/veve_plus/root/entity/GSheetData.class b/target/classes/com/veve_plus/root/entity/GSheetData.class
new file mode 100644
index 0000000..beeda55
Binary files /dev/null and b/target/classes/com/veve_plus/root/entity/GSheetData.class differ
diff --git a/target/classes/com/veve_plus/root/entity/GSheetFileData.class b/target/classes/com/veve_plus/root/entity/GSheetFileData.class
new file mode 100644
index 0000000..158e0bc
Binary files /dev/null and b/target/classes/com/veve_plus/root/entity/GSheetFileData.class differ
diff --git a/target/classes/com/veve_plus/root/entity/User$UserBuilder.class b/target/classes/com/veve_plus/root/entity/User$UserBuilder.class
new file mode 100644
index 0000000..0580aa0
Binary files /dev/null and b/target/classes/com/veve_plus/root/entity/User$UserBuilder.class differ
diff --git a/target/classes/com/veve_plus/root/entity/User.class b/target/classes/com/veve_plus/root/entity/User.class
new file mode 100644
index 0000000..cc3c4c3
Binary files /dev/null and b/target/classes/com/veve_plus/root/entity/User.class differ
diff --git a/target/classes/com/veve_plus/root/mapper/CodeMapper.class b/target/classes/com/veve_plus/root/mapper/CodeMapper.class
new file mode 100644
index 0000000..6e2789e
Binary files /dev/null and b/target/classes/com/veve_plus/root/mapper/CodeMapper.class differ
diff --git a/target/classes/com/veve_plus/root/mapper/ContentMapper.class b/target/classes/com/veve_plus/root/mapper/ContentMapper.class
new file mode 100644
index 0000000..457fa87
Binary files /dev/null and b/target/classes/com/veve_plus/root/mapper/ContentMapper.class differ
diff --git a/target/classes/com/veve_plus/root/mapper/GSheetMapper.class b/target/classes/com/veve_plus/root/mapper/GSheetMapper.class
new file mode 100644
index 0000000..5d4e8ae
Binary files /dev/null and b/target/classes/com/veve_plus/root/mapper/GSheetMapper.class differ
diff --git a/target/classes/com/veve_plus/root/mapper/MaterialMapper.class b/target/classes/com/veve_plus/root/mapper/MaterialMapper.class
new file mode 100644
index 0000000..bfcfc53
Binary files /dev/null and b/target/classes/com/veve_plus/root/mapper/MaterialMapper.class differ
diff --git a/target/classes/com/veve_plus/root/mapper/MenuMapper.class b/target/classes/com/veve_plus/root/mapper/MenuMapper.class
new file mode 100644
index 0000000..ba9304d
Binary files /dev/null and b/target/classes/com/veve_plus/root/mapper/MenuMapper.class differ
diff --git a/target/classes/com/veve_plus/root/mapper/RoleMapper.class b/target/classes/com/veve_plus/root/mapper/RoleMapper.class
new file mode 100644
index 0000000..94f1749
Binary files /dev/null and b/target/classes/com/veve_plus/root/mapper/RoleMapper.class differ
diff --git a/target/classes/com/veve_plus/root/mapper/TaskMapper.class b/target/classes/com/veve_plus/root/mapper/TaskMapper.class
new file mode 100644
index 0000000..918c468
Binary files /dev/null and b/target/classes/com/veve_plus/root/mapper/TaskMapper.class differ
diff --git a/target/classes/com/veve_plus/root/mapper/TitleMapper.class b/target/classes/com/veve_plus/root/mapper/TitleMapper.class
new file mode 100644
index 0000000..31b91ba
Binary files /dev/null and b/target/classes/com/veve_plus/root/mapper/TitleMapper.class differ
diff --git a/target/classes/com/veve_plus/root/mapper/TmsMapper.class b/target/classes/com/veve_plus/root/mapper/TmsMapper.class
new file mode 100644
index 0000000..42e46d0
Binary files /dev/null and b/target/classes/com/veve_plus/root/mapper/TmsMapper.class differ
diff --git a/target/classes/com/veve_plus/root/mapper/UserMapper.class b/target/classes/com/veve_plus/root/mapper/UserMapper.class
new file mode 100644
index 0000000..295211a
Binary files /dev/null and b/target/classes/com/veve_plus/root/mapper/UserMapper.class differ
diff --git a/target/classes/com/veve_plus/root/schedule/GSheetSchedule.class b/target/classes/com/veve_plus/root/schedule/GSheetSchedule.class
new file mode 100644
index 0000000..920ea16
Binary files /dev/null and b/target/classes/com/veve_plus/root/schedule/GSheetSchedule.class differ
diff --git a/target/classes/com/veve_plus/root/schedule/TmsScheduler.class b/target/classes/com/veve_plus/root/schedule/TmsScheduler.class
new file mode 100644
index 0000000..5f14ca1
Binary files /dev/null and b/target/classes/com/veve_plus/root/schedule/TmsScheduler.class differ
diff --git a/target/classes/com/veve_plus/root/service/CodeService.class b/target/classes/com/veve_plus/root/service/CodeService.class
new file mode 100644
index 0000000..f3199af
Binary files /dev/null and b/target/classes/com/veve_plus/root/service/CodeService.class differ
diff --git a/target/classes/com/veve_plus/root/service/ContentService.class b/target/classes/com/veve_plus/root/service/ContentService.class
new file mode 100644
index 0000000..010d985
Binary files /dev/null and b/target/classes/com/veve_plus/root/service/ContentService.class differ
diff --git a/target/classes/com/veve_plus/root/service/CustomUserDetailService.class b/target/classes/com/veve_plus/root/service/CustomUserDetailService.class
new file mode 100644
index 0000000..85999c5
Binary files /dev/null and b/target/classes/com/veve_plus/root/service/CustomUserDetailService.class differ
diff --git a/target/classes/com/veve_plus/root/service/JwtService.class b/target/classes/com/veve_plus/root/service/JwtService.class
new file mode 100644
index 0000000..cda973b
Binary files /dev/null and b/target/classes/com/veve_plus/root/service/JwtService.class differ
diff --git a/target/classes/com/veve_plus/root/service/MaterialService.class b/target/classes/com/veve_plus/root/service/MaterialService.class
new file mode 100644
index 0000000..e0ac98b
Binary files /dev/null and b/target/classes/com/veve_plus/root/service/MaterialService.class differ
diff --git a/target/classes/com/veve_plus/root/service/MenuService.class b/target/classes/com/veve_plus/root/service/MenuService.class
new file mode 100644
index 0000000..8025bd6
Binary files /dev/null and b/target/classes/com/veve_plus/root/service/MenuService.class differ
diff --git a/target/classes/com/veve_plus/root/service/RoleService.class b/target/classes/com/veve_plus/root/service/RoleService.class
new file mode 100644
index 0000000..a9f5f93
Binary files /dev/null and b/target/classes/com/veve_plus/root/service/RoleService.class differ
diff --git a/target/classes/com/veve_plus/root/service/TaskService.class b/target/classes/com/veve_plus/root/service/TaskService.class
new file mode 100644
index 0000000..39b5f9c
Binary files /dev/null and b/target/classes/com/veve_plus/root/service/TaskService.class differ
diff --git a/target/classes/com/veve_plus/root/service/TitleService.class b/target/classes/com/veve_plus/root/service/TitleService.class
new file mode 100644
index 0000000..519ccf0
Binary files /dev/null and b/target/classes/com/veve_plus/root/service/TitleService.class differ
diff --git a/target/classes/com/veve_plus/root/service/TmsGSheetService.class b/target/classes/com/veve_plus/root/service/TmsGSheetService.class
new file mode 100644
index 0000000..468d0f4
Binary files /dev/null and b/target/classes/com/veve_plus/root/service/TmsGSheetService.class differ
diff --git a/target/classes/com/veve_plus/root/service/TmsService.class b/target/classes/com/veve_plus/root/service/TmsService.class
new file mode 100644
index 0000000..d7ab561
Binary files /dev/null and b/target/classes/com/veve_plus/root/service/TmsService.class differ
diff --git a/target/classes/com/veve_plus/root/service/UserService.class b/target/classes/com/veve_plus/root/service/UserService.class
new file mode 100644
index 0000000..83c748a
Binary files /dev/null and b/target/classes/com/veve_plus/root/service/UserService.class differ
diff --git a/target/classes/com/veve_plus/root/utils/CustomStringUtils.class b/target/classes/com/veve_plus/root/utils/CustomStringUtils.class
new file mode 100644
index 0000000..20ba78a
Binary files /dev/null and b/target/classes/com/veve_plus/root/utils/CustomStringUtils.class differ
diff --git a/target/classes/com/veve_plus/root/utils/DateTimeUtils.class b/target/classes/com/veve_plus/root/utils/DateTimeUtils.class
new file mode 100644
index 0000000..1f55392
Binary files /dev/null and b/target/classes/com/veve_plus/root/utils/DateTimeUtils.class differ
diff --git a/target/classes/com/veve_plus/root/utils/GSheetsUtils.class b/target/classes/com/veve_plus/root/utils/GSheetsUtils.class
new file mode 100644
index 0000000..8fafdee
Binary files /dev/null and b/target/classes/com/veve_plus/root/utils/GSheetsUtils.class differ
diff --git a/target/classes/googleCredentials.json b/target/classes/googleCredentials.json
new file mode 100644
index 0000000..0962f0e
--- /dev/null
+++ b/target/classes/googleCredentials.json
@@ -0,0 +1,13 @@
+{
+ "web": {
+ "client_id": "1005980214427-7u7ui56hoc592epchsu2bvrtcjmntah1.apps.googleusercontent.com",
+ "project_id": "wide-brook-398209",
+ "auth_uri": "https://accounts.google.com/o/oauth2/auth",
+ "token_uri": "https://oauth2.googleapis.com/token",
+ "auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs",
+ "client_secret": "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",
+ "redirect_uris": [
+ "http://localhost:8888/Callback"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/target/classes/mapper/CodeMapper.xml b/target/classes/mapper/CodeMapper.xml
new file mode 100644
index 0000000..375fd7b
--- /dev/null
+++ b/target/classes/mapper/CodeMapper.xml
@@ -0,0 +1,18 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/target/classes/mapper/ContentMapper.xml b/target/classes/mapper/ContentMapper.xml
new file mode 100644
index 0000000..6e4db66
--- /dev/null
+++ b/target/classes/mapper/ContentMapper.xml
@@ -0,0 +1,51 @@
+
+
+
+
+ UPDATE tb_content
+ SET tms_id = #{tmsId}
+ WHERE content = #{content}
+
+
+
+ UPDATE tb_content
+ SET tms_id = NULL
+ WHERE content = #{content}
+
+
+
+ INSERT INTO tb_content (
+ content,
+ del_yn,
+ tms_id,
+ created_by,
+ updated_by,
+ created_time,
+ updated_time
+ )
+ SELECT
+ #{content},
+ #{locale},
+ #{tmsId},
+ #{createdBy},
+ #{updatedBy},
+ #{createdTime},
+ #{updatedTime}
+ WHERE NOT EXISTS (
+ SELECT *
+ FROM tb_content
+ WHERE content = #{content}
+ )
+
+
+
+
\ No newline at end of file
diff --git a/target/classes/mapper/GSheetMapper.xml b/target/classes/mapper/GSheetMapper.xml
new file mode 100644
index 0000000..33fa97e
--- /dev/null
+++ b/target/classes/mapper/GSheetMapper.xml
@@ -0,0 +1,131 @@
+
+
+
+
+
+ INSERT INTO tb_kst_task_history (
+ `version`
+ ,`title_ge_id`
+ ,disk_type
+ ,platform_code
+ ,title
+ ,chapter
+ ,open_date
+ ,trans_delivery_date
+ ,trans_review_date
+ ,is_trans_review
+ ,affected_delivery_date
+ ,affected_date
+ ,dki_delivery_date
+ ,is_modify
+ ,psd_upload_dealine
+ ,final_subset_upload
+ ,tms_psd_upload
+ ,qc_user_id
+ ,issued_date
+ ,writer
+ ,schedule_change_reason
+ ,is_confirmed
+ ,note
+ ,content_key
+ ,google_api_id
+ ,google_row
+ ,google_sheet_name
+ ,is_urgent
+ ,created_date
+ ,created_by
+ ,updated_date
+ ,updated_by
+ )
+ VALUES
+
+ #{element.version}
+ ,#{element.geId}
+ ,#{element.diskType}
+ ,#{element.platformCode}
+ ,#{element.title}
+ ,#{element.chapter}
+ ,#{element.openDate}
+ ,#{element.transDeliveryDate}
+ ,#{element.transReviewDate}
+ ,#{element.isTransReview}
+ ,#{element.affectedDeliveryDate}
+ ,#{element.affectedMonth}
+ ,#{element.dkiDeliveryDate}
+ ,#{element.isModify}
+ ,#{element.psdUploadDealine}
+ ,#{element.finalSubsetUpload}
+ ,#{element.tmsPsdUpload}
+ ,#{element.qcUserId}
+ ,#{element.issuedDate}
+ ,#{element.writer}
+ ,#{element.scheduleChangeReason}
+ ,#{element.isConfirmed}
+ ,#{element.note}
+ ,#{element.contentKey}
+ ,#{element.googleApiId}
+ ,#{element.googleRow}
+ ,#{element.language}
+ ,#{element.isUrgent}
+ ,SYSDATE()
+ ,#{element.createdBy}
+ ,SYSDATE()
+ ,'BATCH'
+
+
+
+
+
+
+ INSERT INTO tb_kidari_file_history (
+ version
+ ,language
+ ,tms
+ ,content
+ ,is_censored
+ ,file_spec
+ ,use_us_psd
+ ,is_set
+ ,is_logo
+ ,dm_name
+ ,psd_url_kr
+ ,psd_url_en
+ ,tr_url
+ ,note
+ ,memo
+ ,created_by
+ ,updated_by
+ ,created_time
+ ,updated_time
+ )
+ VALUES
+
+ #{element.version}
+ ,#{element.language}
+ ,#{element.tms}
+ ,#{element.content}
+ ,#{element.isCensored}
+ ,#{element.fileSpec}
+ ,#{element.useUsPsd}
+ ,#{element.is_set}
+ ,#{element.is_logo}
+ ,#{element.dm_name}
+ ,#{element.psd_url_kr}
+ ,#{element.psd_url_en}
+ ,#{element.tr_url}
+ ,#{element.note}
+ ,#{element.memo}
+ ,'BATCH'
+ ,'BATCH'
+ ,SYSDATE()
+ ,SYSDATE()
+
+
+
\ No newline at end of file
diff --git a/target/classes/mapper/MaterialMapper.xml b/target/classes/mapper/MaterialMapper.xml
new file mode 100644
index 0000000..64f497b
--- /dev/null
+++ b/target/classes/mapper/MaterialMapper.xml
@@ -0,0 +1,165 @@
+
+
+
+
+
+
+ UPDATE tb_kst_task
+ SET download_status = #{downloadStatus}
+ , download_date = #{downloadDate}
+ , download_user = #{downloadUser}
+ , is_trans_review = #{translateStatus}
+ , editor_note = #{editorNote}
+ , kst_note = #{kstNote}
+ , qc_note = #{qcNote}
+ , tms_chapter = #{tmsChapter}
+ WHERE idx = #{id}
+
+
+
+ UPDATE tb_kst_task tkt
+ INNER JOIN (
+ SELECT tkt.idx
+ FROM tb_kst_task tkt
+ INNER JOIN tb_content tc
+ ON tc.content = tkt.title
+ AND tc.tms_id = #{tmsId}
+ WHERE tkt.language = CASE WHEN #{language} = 'de_DE' THEN 'DE'
+ WHEN #{language} = 'en_US' THEN 'US'
+ WHEN #{language} = 'es_ES' THEN 'ES'
+ WHEN #{language} = 'fr_FR' THEN 'FR'
+ WHEN #{language} = 'ja_JP' THEN 'JP'
+ WHEN #{language} = 'ko_KR' THEN 'KR'
+ WHEN #{language} = 'zh_CN' THEN 'CN'
+ WHEN #{language} = 'zh_TW' THEN 'TW'
+ WHEN #{language} = 'th_TH' THEN 'TH'
+ WHEN #{language} = 'tr_TR' THEN 'TR'
+ WHEN #{language} = 'ar_001' THEN 'AR'
+ END
+ AND tkt.chapter = #{chapter}
+ ) target_task
+ ON tkt.idx = target_task.idx
+ SET tkt.trans_type = #{transType},
+ tkt.translation_download_status = '01'
+
+
+
+ INSERT INTO tb_kst_task (
+ language
+ , title
+ , chapter
+ , tms_chapter
+ , affected_delivery_date
+ , dki_delivery_date
+ , is_trans_review
+ , is_urgent
+ , created_date
+ , created_by
+ , updated_date
+ , updated_by
+ ) VALUES (
+ #{language}
+ , #{title}
+ , #{chapter}
+ , #{chapter}
+ , #{affectedDeliveryDate}
+ , #{dkiDeliveryDate}
+ , #{isTransReview}
+ , #{isUrgent}
+ , SYSDATE()
+ , 'SYSTEM'
+ , SYSDATE()
+ , 'SYSTEM'
+ )
+ ON DUPLICATE KEY UPDATE
+ language = #{language}
+ , title = #{title}
+ , chapter = #{chapter}
+ , affected_delivery_date = #{affectedDeliveryDate}
+ , dki_delivery_date = #{dkiDeliveryDate}
+ , is_trans_review = #{isTransReview}
+ , updated_date = SYSDATE()
+ , updated_by = 'SYSTEM'
+
+
+
+ UPDATE tb_kst_task
+ SET typing_status = #{typingStatus}
+ , type_complete_time = CASE WHEN #{typingStatus} = 2
+ THEN DATE_FORMAT(SYSDATE(), '%Y%m%d%H%i%s')
+ ELSE NULL
+ END
+ , updated_date = SYSDATE()
+ , updated_by = 'SYSTEM'
+ WHERE language = #{language}
+ AND chapter = #{chapter}
+ AND title = (select content from tb_content where tms_id = #{tmsId})
+
+
+
+ UPDATE tb_kst_task
+ SET typing_status = #{typingStatus}
+ , type_complete_time = CASE WHEN #{typingStatus} = 2
+ THEN DATE_FORMAT(SYSDATE(), '%Y%m%d%H%i%s')
+ ELSE NULL
+ END
+ , updated_date = SYSDATE()
+ , updated_by = 'SYSTEM'
+ WHERE language = #{language}
+ AND chapter = #{chapter}
+ AND title = (select content from tb_content where tooning_id = #{tmsId})
+
+
+
+
+
\ No newline at end of file
diff --git a/target/classes/mapper/MenuMapper.xml b/target/classes/mapper/MenuMapper.xml
new file mode 100644
index 0000000..1323f68
--- /dev/null
+++ b/target/classes/mapper/MenuMapper.xml
@@ -0,0 +1,87 @@
+
+
+
+
+
+
+
+ INSERT INTO tb_menu (pid, type, name, url, menu_sort, icon, status, permission, created_by, updated_by, created_time, updated_time)
+ VALUES (
+ #{pid},
+ #{type},
+ #{name},
+ #{url},
+ #{menuSort},
+ #{icon},
+ #{status},
+ #{permission},
+ #{createdBy},
+ #{updatedBy},
+ #{createdTime},
+ #{updatedTime}
+ )
+
+
+ UPDATE tb_menu
+ SET
+ pid = #{pid},
+ type = #{type},
+ name = #{name},
+ url = #{url},
+ menu_sort = #{menuSort},
+ icon = #{icon},
+ status= #{status},
+ permission = #{permission},
+ updated_by = #{updatedBy},
+ updated_time = #{updatedTime}
+ WHERE
+ menu_id = #{menuId}
+
+
+
+
+
+
diff --git a/target/classes/mapper/RoleMapper.xml b/target/classes/mapper/RoleMapper.xml
new file mode 100644
index 0000000..73fa09a
--- /dev/null
+++ b/target/classes/mapper/RoleMapper.xml
@@ -0,0 +1,108 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ INSERT INTO tb_role (
+ role_id,
+ name,
+ description,
+ status,
+ created_by,
+ updated_by,
+ created_time,
+ updated_time
+ ) VALUES (
+ #{roleId},
+ #{name},
+ #{description},
+ #{status},
+ #{createdBy},
+ #{updatedBy},
+ #{createdTime},
+ #{updatedTime}
+ )
+
+
+ UPDATE tb_role
+ SET
+ name = #{name},
+ description = #{description},
+ status = #{status},
+ updated_by = #{updatedBy},
+ updated_time = #{updatedTime}
+ WHERE
+ role_id = #{roleId}
+
+
+
+ DELETE FROM tb_roles_menus WHERE role_id = #{roleId}
+
+
+
+
+
diff --git a/target/classes/mapper/TaskMapper.xml b/target/classes/mapper/TaskMapper.xml
new file mode 100644
index 0000000..823635b
--- /dev/null
+++ b/target/classes/mapper/TaskMapper.xml
@@ -0,0 +1,63 @@
+
+
+
+
+
+
+
+ UPDATE tb_task
+ SET edit_status = #{editStatus}
+ WHERE idx = #{taskId}
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/target/classes/mapper/TitleMapper.xml b/target/classes/mapper/TitleMapper.xml
new file mode 100644
index 0000000..56043f0
--- /dev/null
+++ b/target/classes/mapper/TitleMapper.xml
@@ -0,0 +1,88 @@
+
+
+
+
+
+
+
+ UPDATE tb_content_title
+ SET font_size = #{fontSize}
+ , font_type_code = #{fontTypeCode}
+ , updated_time = now()
+ , updated_by = '000'
+ WHERE idx = #{id}
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/target/classes/mapper/TmsMapper.xml b/target/classes/mapper/TmsMapper.xml
new file mode 100644
index 0000000..ce6148b
--- /dev/null
+++ b/target/classes/mapper/TmsMapper.xml
@@ -0,0 +1,165 @@
+
+
+
+
+ INSERT INTO tb_translation (
+ tms_id,
+ chapter,
+ language_code,
+ seq_no,
+ coordinate_x,
+ coordinate_y,
+ width,
+ height,
+ text_content,
+ color_code,
+ del_flg,
+ created_by,
+ updated_by,
+ created_time,
+ updated_time
+ ) VALUES (
+ #{tmsId},
+ #{chapter},
+ #{languageCode},
+ #{seqNo},
+ #{positionX},
+ #{positionY},
+ #{width},
+ #{height},
+ #{textContent},
+ #{colorCode},
+ #{delFlg},
+ #{createdBy},
+ #{updatedBy},
+ SYSDATE(),
+ SYSDATE()
+ )
+ ON DUPLICATE KEY UPDATE
+ coordinate_x = #{positionX},
+ coordinate_y = #{positionY},
+ width = #{width},
+ height = #{height},
+ text_content = #{textContent},
+ color_code = #{colorCode},
+ del_flg = #{delFlg},
+ created_by = #{createdBy},
+ updated_by = #{updatedBy},
+ updated_time = SYSDATE()
+
+
+
+ INSERT INTO tb_tms_project (
+ project_id,
+ title,
+ version,
+ locale,
+ del_flg,
+ archived_flg,
+ bookmark_flg,
+ created_by,
+ updated_by,
+ created_time,
+ updated_time
+ ) VALUES (
+ #{projectId},
+ #{title},
+ #{version},
+ #{locale},
+ #{delFlg},
+ #{archivedFlg},
+ #{bookmarkFlg},
+ #{createdBy},
+ #{updatedBy},
+ SYSDATE(),
+ SYSDATE()
+ )
+ ON DUPLICATE KEY UPDATE
+ title = #{title},
+ version = #{version},
+ locale = #{locale},
+ del_flg = #{delFlg},
+ archived_flg = #{archivedFlg},
+ bookmark_flg = #{bookmarkFlg},
+ created_by = #{createdBy},
+ updated_by = #{updatedBy},
+ updated_time = SYSDATE()
+
+
+
+ INSERT INTO tb_tms_project_locale (
+ project_id,
+ locale
+ )
+ SELECT
+ #{projectId},
+ #{locale}
+ WHERE NOT EXISTS (
+ SELECT *
+ FROM tb_tms_project_locale
+ WHERE project_id = #{projectId}
+ AND locale = #{locale}
+ )
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/target/classes/mapper/UserMapper.xml b/target/classes/mapper/UserMapper.xml
new file mode 100644
index 0000000..1464a7d
--- /dev/null
+++ b/target/classes/mapper/UserMapper.xml
@@ -0,0 +1,260 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ INSERT INTO tb_user (
+ user_id,
+ dept_id,
+ username,
+ first_name,
+ last_name,
+ gender,
+ phone,
+ email,
+ contract_no,
+ contract_date,
+ identity_no,
+ issued_date,
+ issued_place,
+ tax_code,
+ avatar_name,
+ avatar_path,
+ password,
+ download_password,
+ is_admin,
+ is_manager,
+ is_locked,
+ is_expired,
+ is_credential_expired,
+ status,
+ level,
+ bank,
+ bank_account,
+ classification,
+ created_by,
+ updated_by,
+ pwd_reset_time,
+ created_time,
+ updated_time
+ )
+ VALUES (
+ #{userId},
+ #{deptId},
+ #{username},
+ #{firstName},
+ #{lastName},
+ #{gender},
+ #{phone},
+ #{email},
+ #{contractNo},
+ #{contractDate},
+ #{identityNo},
+ #{issuedDate},
+ #{issuedPlace},
+ #{taxCode},
+ #{avatarName},
+ #{avatarPath},
+ #{password},
+ SHA2(#{downloadPassword}, '512'),
+ #{isAdmin},
+ #{isManager},
+ #{isLocked},
+ #{isExpired},
+ #{isCredentialExpired},
+ #{status},
+ #{level},
+ #{bank},
+ #{bankAccount},
+ #{classification},
+ #{createdBy},
+ #{updatedBy},
+ #{pwdResetTime},
+ SYSDATE(),
+ SYSDATE()
+ )
+
+
+
+ INSERT INTO tb_users_roles (
+ user_id,
+ role_id,
+ created_by,
+ updated_by,
+ created_time,
+ updated_time
+ ) VALUES (
+ #{userId},
+ #{roleId},
+ #{createdBy},
+ #{updatedBy},
+ SYSDATE(),
+ SYSDATE()
+ )
+
+
+
+ UPDATE tb_user
+ SET
+ dept_id = #{deptId},
+ username = #{username},
+ first_name = #{firstName},
+ last_name = #{lastName},
+ gender = #{gender},
+ phone = #{phone},
+
+ contract_no = #{contractNo},
+ contract_date = #{contractDate},
+ identity_no = #{identityNo},
+ issued_date = #{issuedDate},
+ issued_place = #{issuedPlace},
+ tax_code = #{taxCode},
+ is_manager = #{isManager},
+ classification = #{classification},
+ status = #{status},
+ level = #{level},
+ bank = #{bank},
+ bank_account = #{bankAccount},
+ updated_by = #{updatedBy},
+ updated_time = SYSDATE()
+ WHERE user_id = #{userId}
+
+
+
+ DELETE FROM tb_users_roles WHERE user_id = #{userId}
+
+
+
+
+
\ No newline at end of file
diff --git a/target/classes/tokens/StoredCredential b/target/classes/tokens/StoredCredential
new file mode 100644
index 0000000..22e8757
Binary files /dev/null and b/target/classes/tokens/StoredCredential differ
diff --git a/target/maven-archiver/pom.properties b/target/maven-archiver/pom.properties
new file mode 100644
index 0000000..923fdcb
--- /dev/null
+++ b/target/maven-archiver/pom.properties
@@ -0,0 +1,3 @@
+artifactId=root
+groupId=com.veve-plus
+version=0.0.1-SNAPSHOT
diff --git a/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst b/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst
new file mode 100644
index 0000000..1e96c60
--- /dev/null
+++ b/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst
@@ -0,0 +1,109 @@
+com/veve_plus/root/service/CodeService.class
+com/veve_plus/root/dto/content/ContentDto.class
+com/veve_plus/root/dto/user/UserSearchRequest.class
+com/veve_plus/root/dto/auth/UserPrincipal.class
+com/veve_plus/root/dto/role/Role.class
+com/veve_plus/root/dto/role/RoleResponse$RoleResponseBuilder.class
+com/veve_plus/root/config/WebSecurityConfig.class
+com/veve_plus/root/dto/material/MaterialDto$MaterialDtoBuilder.class
+com/veve_plus/root/dto/role/RoleSearchRequest.class
+com/veve_plus/root/dto/tms/TmsReqDto.class
+com/veve_plus/root/dto/tms/TranslationDto$TranslationDtoBuilder.class
+com/veve_plus/root/service/TaskService.class
+com/veve_plus/root/dto/auth/LoginDto.class
+com/veve_plus/root/entity/GSheetFileData.class
+com/veve_plus/root/controller/MenuController.class
+com/veve_plus/root/entity/GSheetData.class
+com/veve_plus/root/mapper/TmsMapper.class
+com/veve_plus/root/service/MaterialService.class
+com/veve_plus/root/dto/code/CodeDto$CodeDtoBuilder.class
+com/veve_plus/root/mapper/CodeMapper.class
+com/veve_plus/root/constant/TmsSheetConst$Template.class
+com/veve_plus/root/entity/User$UserBuilder.class
+com/veve_plus/root/service/CustomUserDetailService.class
+com/veve_plus/root/dto/role/RoleRequest$RoleRequestBuilder.class
+com/veve_plus/root/utils/DateTimeUtils.class
+com/veve_plus/root/dto/tms/ProjectDto$ProjectDtoBuilder.class
+com/veve_plus/root/dto/content/ContentTitleDto.class
+com/veve_plus/root/RootApplication.class
+com/veve_plus/root/mapper/MaterialMapper.class
+com/veve_plus/root/controller/TitleController.class
+com/veve_plus/root/config/JwtFilter.class
+com/veve_plus/root/dto/content/ContentReqDto$ContentReqDtoBuilder.class
+com/veve_plus/root/service/ContentService.class
+com/veve_plus/root/entity/User.class
+com/veve_plus/root/dto/menu/MenuSearchRequest.class
+com/veve_plus/root/mapper/GSheetMapper.class
+com/veve_plus/root/mapper/ContentMapper.class
+com/veve_plus/root/controller/UserController.class
+com/veve_plus/root/dto/menu/MenuResponse$MenuResponseBuilder.class
+com/veve_plus/root/dto/content/ContentReqDto.class
+com/veve_plus/root/dto/title/TitleDto$TitleDtoBuilder.class
+com/veve_plus/root/dto/title/TitleUpdDto$TitleUpdDtoBuilder.class
+com/veve_plus/root/dto/tms/ProjectLocaleDto$ProjectLocaleDtoBuilder.class
+com/veve_plus/root/dto/user/UserDto.class
+com/veve_plus/root/controller/TmsController.class
+com/veve_plus/root/dto/user/UserRole.class
+com/veve_plus/root/dto/user/UserRequest.class
+com/veve_plus/root/dto/user/UserDto$UserDtoBuilder.class
+com/veve_plus/root/schedule/TmsScheduler.class
+com/veve_plus/root/dto/task/KstTaskHistoryDto.class
+com/veve_plus/root/dto/user/UserResponse.class
+com/veve_plus/root/service/UserService.class
+com/veve_plus/root/utils/GSheetsUtils.class
+com/veve_plus/root/mapper/RoleMapper.class
+com/veve_plus/root/dto/role/Role$RoleBuilder.class
+com/veve_plus/root/dto/title/TitleDto.class
+com/veve_plus/root/constant/TmsSheetConst.class
+com/veve_plus/root/config/CorsConfig.class
+com/veve_plus/root/mapper/UserMapper.class
+com/veve_plus/root/dto/material/MaterialTypingStatusDto$MaterialTypingStatusDtoBuilder.class
+com/veve_plus/root/config/MyBatisConfig.class
+com/veve_plus/root/constant/TmsSheetConst$FileSheet.class
+com/veve_plus/root/mapper/MenuMapper.class
+com/veve_plus/root/dto/auth/AuthResponseDto.class
+com/veve_plus/root/controller/AuthController.class
+com/veve_plus/root/controller/TaskController.class
+com/veve_plus/root/dto/menu/Menu.class
+com/veve_plus/root/controller/CodeController.class
+com/veve_plus/root/dto/role/RoleMenu$RoleMenuBuilder.class
+com/veve_plus/root/service/RoleService.class
+com/veve_plus/root/service/TitleService.class
+com/veve_plus/root/dto/tms/TmsReqDto$TmsReqDtoBuilder.class
+com/veve_plus/root/utils/CustomStringUtils.class
+com/veve_plus/root/dto/task/TaskDto.class
+com/veve_plus/root/dto/user/UserRequest$UserRequestBuilder.class
+com/veve_plus/root/mapper/TaskMapper.class
+com/veve_plus/root/dto/menu/MenuResponse.class
+com/veve_plus/root/mapper/TitleMapper.class
+com/veve_plus/root/service/TmsGSheetService.class
+com/veve_plus/root/controller/ContentController.class
+com/veve_plus/root/dto/tms/ProjectDto.class
+com/veve_plus/root/dto/material/MaterialDto.class
+com/veve_plus/root/service/JwtService.class
+com/veve_plus/root/dto/menu/MenuHierarchyResponse$MenuHierarchyResponseBuilder.class
+com/veve_plus/root/dto/menu/MenuHierarchyResponse.class
+com/veve_plus/root/dto/tms/ProjectLocaleDto.class
+com/veve_plus/root/controller/RoleController.class
+com/veve_plus/root/schedule/GSheetSchedule.class
+com/veve_plus/root/dto/role/RoleSearchRequest$RoleSearchRequestBuilder.class
+com/veve_plus/root/dto/role/RoleRequest.class
+com/veve_plus/root/dto/user/UserRole$UserRoleBuilder.class
+com/veve_plus/root/dto/role/RoleResponse.class
+com/veve_plus/root/ServletInitializer.class
+com/veve_plus/root/dto/content/ContentTitleDto$ContentTitleDtoBuilder.class
+com/veve_plus/root/dto/role/RoleMenu.class
+com/veve_plus/root/dto/title/TitleUpdDto.class
+com/veve_plus/root/dto/menu/MenuSearchRequest$MenuSearchRequestBuilder.class
+com/veve_plus/root/dto/content/ContentDto$ContentDtoBuilder.class
+com/veve_plus/root/dto/user/UserSearchRequest$UserSearchRequestBuilder.class
+com/veve_plus/root/dto/role/RoleUser.class
+com/veve_plus/root/dto/role/RoleUser$RoleUserBuilder.class
+com/veve_plus/root/dto/code/CodeDto.class
+com/veve_plus/root/controller/MaterialController.class
+com/veve_plus/root/service/TmsService.class
+com/veve_plus/root/dto/tms/TranslationDto.class
+com/veve_plus/root/entity/Content.class
+com/veve_plus/root/dto/material/MaterialTypingStatusDto.class
+com/veve_plus/root/service/MenuService.class
+com/veve_plus/root/dto/user/UserResponse$UserResponseBuilder.class
diff --git a/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst b/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst
new file mode 100644
index 0000000..9519610
--- /dev/null
+++ b/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst
@@ -0,0 +1,80 @@
+/Users/dki/Documents/VEVE_api_git/veve/src/main/java/com/veve_plus/root/RootApplication.java
+/Users/dki/Documents/VEVE_api_git/veve/src/main/java/com/veve_plus/root/ServletInitializer.java
+/Users/dki/Documents/VEVE_api_git/veve/src/main/java/com/veve_plus/root/config/CorsConfig.java
+/Users/dki/Documents/VEVE_api_git/veve/src/main/java/com/veve_plus/root/config/JwtFilter.java
+/Users/dki/Documents/VEVE_api_git/veve/src/main/java/com/veve_plus/root/config/MyBatisConfig.java
+/Users/dki/Documents/VEVE_api_git/veve/src/main/java/com/veve_plus/root/config/WebSecurityConfig.java
+/Users/dki/Documents/VEVE_api_git/veve/src/main/java/com/veve_plus/root/constant/TmsSheetConst.java
+/Users/dki/Documents/VEVE_api_git/veve/src/main/java/com/veve_plus/root/controller/AuthController.java
+/Users/dki/Documents/VEVE_api_git/veve/src/main/java/com/veve_plus/root/controller/CodeController.java
+/Users/dki/Documents/VEVE_api_git/veve/src/main/java/com/veve_plus/root/controller/ContentController.java
+/Users/dki/Documents/VEVE_api_git/veve/src/main/java/com/veve_plus/root/controller/MaterialController.java
+/Users/dki/Documents/VEVE_api_git/veve/src/main/java/com/veve_plus/root/controller/MenuController.java
+/Users/dki/Documents/VEVE_api_git/veve/src/main/java/com/veve_plus/root/controller/RoleController.java
+/Users/dki/Documents/VEVE_api_git/veve/src/main/java/com/veve_plus/root/controller/TaskController.java
+/Users/dki/Documents/VEVE_api_git/veve/src/main/java/com/veve_plus/root/controller/TitleController.java
+/Users/dki/Documents/VEVE_api_git/veve/src/main/java/com/veve_plus/root/controller/TmsController.java
+/Users/dki/Documents/VEVE_api_git/veve/src/main/java/com/veve_plus/root/controller/UserController.java
+/Users/dki/Documents/VEVE_api_git/veve/src/main/java/com/veve_plus/root/dto/auth/AuthResponseDto.java
+/Users/dki/Documents/VEVE_api_git/veve/src/main/java/com/veve_plus/root/dto/auth/LoginDto.java
+/Users/dki/Documents/VEVE_api_git/veve/src/main/java/com/veve_plus/root/dto/auth/UserPrincipal.java
+/Users/dki/Documents/VEVE_api_git/veve/src/main/java/com/veve_plus/root/dto/code/CodeDto.java
+/Users/dki/Documents/VEVE_api_git/veve/src/main/java/com/veve_plus/root/dto/content/ContentDto.java
+/Users/dki/Documents/VEVE_api_git/veve/src/main/java/com/veve_plus/root/dto/content/ContentReqDto.java
+/Users/dki/Documents/VEVE_api_git/veve/src/main/java/com/veve_plus/root/dto/content/ContentTitleDto.java
+/Users/dki/Documents/VEVE_api_git/veve/src/main/java/com/veve_plus/root/dto/material/MaterialDto.java
+/Users/dki/Documents/VEVE_api_git/veve/src/main/java/com/veve_plus/root/dto/material/MaterialTypingStatusDto.java
+/Users/dki/Documents/VEVE_api_git/veve/src/main/java/com/veve_plus/root/dto/menu/Menu.java
+/Users/dki/Documents/VEVE_api_git/veve/src/main/java/com/veve_plus/root/dto/menu/MenuHierarchyResponse.java
+/Users/dki/Documents/VEVE_api_git/veve/src/main/java/com/veve_plus/root/dto/menu/MenuResponse.java
+/Users/dki/Documents/VEVE_api_git/veve/src/main/java/com/veve_plus/root/dto/menu/MenuSearchRequest.java
+/Users/dki/Documents/VEVE_api_git/veve/src/main/java/com/veve_plus/root/dto/role/Role.java
+/Users/dki/Documents/VEVE_api_git/veve/src/main/java/com/veve_plus/root/dto/role/RoleMenu.java
+/Users/dki/Documents/VEVE_api_git/veve/src/main/java/com/veve_plus/root/dto/role/RoleRequest.java
+/Users/dki/Documents/VEVE_api_git/veve/src/main/java/com/veve_plus/root/dto/role/RoleResponse.java
+/Users/dki/Documents/VEVE_api_git/veve/src/main/java/com/veve_plus/root/dto/role/RoleSearchRequest.java
+/Users/dki/Documents/VEVE_api_git/veve/src/main/java/com/veve_plus/root/dto/role/RoleUser.java
+/Users/dki/Documents/VEVE_api_git/veve/src/main/java/com/veve_plus/root/dto/task/KstTaskHistoryDto.java
+/Users/dki/Documents/VEVE_api_git/veve/src/main/java/com/veve_plus/root/dto/task/TaskDto.java
+/Users/dki/Documents/VEVE_api_git/veve/src/main/java/com/veve_plus/root/dto/title/TitleDto.java
+/Users/dki/Documents/VEVE_api_git/veve/src/main/java/com/veve_plus/root/dto/title/TitleUpdDto.java
+/Users/dki/Documents/VEVE_api_git/veve/src/main/java/com/veve_plus/root/dto/tms/ProjectDto.java
+/Users/dki/Documents/VEVE_api_git/veve/src/main/java/com/veve_plus/root/dto/tms/ProjectLocaleDto.java
+/Users/dki/Documents/VEVE_api_git/veve/src/main/java/com/veve_plus/root/dto/tms/TmsReqDto.java
+/Users/dki/Documents/VEVE_api_git/veve/src/main/java/com/veve_plus/root/dto/tms/TranslationDto.java
+/Users/dki/Documents/VEVE_api_git/veve/src/main/java/com/veve_plus/root/dto/user/UserDto.java
+/Users/dki/Documents/VEVE_api_git/veve/src/main/java/com/veve_plus/root/dto/user/UserRequest.java
+/Users/dki/Documents/VEVE_api_git/veve/src/main/java/com/veve_plus/root/dto/user/UserResponse.java
+/Users/dki/Documents/VEVE_api_git/veve/src/main/java/com/veve_plus/root/dto/user/UserRole.java
+/Users/dki/Documents/VEVE_api_git/veve/src/main/java/com/veve_plus/root/dto/user/UserSearchRequest.java
+/Users/dki/Documents/VEVE_api_git/veve/src/main/java/com/veve_plus/root/entity/Content.java
+/Users/dki/Documents/VEVE_api_git/veve/src/main/java/com/veve_plus/root/entity/GSheetData.java
+/Users/dki/Documents/VEVE_api_git/veve/src/main/java/com/veve_plus/root/entity/GSheetFileData.java
+/Users/dki/Documents/VEVE_api_git/veve/src/main/java/com/veve_plus/root/entity/User.java
+/Users/dki/Documents/VEVE_api_git/veve/src/main/java/com/veve_plus/root/mapper/CodeMapper.java
+/Users/dki/Documents/VEVE_api_git/veve/src/main/java/com/veve_plus/root/mapper/ContentMapper.java
+/Users/dki/Documents/VEVE_api_git/veve/src/main/java/com/veve_plus/root/mapper/GSheetMapper.java
+/Users/dki/Documents/VEVE_api_git/veve/src/main/java/com/veve_plus/root/mapper/MaterialMapper.java
+/Users/dki/Documents/VEVE_api_git/veve/src/main/java/com/veve_plus/root/mapper/MenuMapper.java
+/Users/dki/Documents/VEVE_api_git/veve/src/main/java/com/veve_plus/root/mapper/RoleMapper.java
+/Users/dki/Documents/VEVE_api_git/veve/src/main/java/com/veve_plus/root/mapper/TaskMapper.java
+/Users/dki/Documents/VEVE_api_git/veve/src/main/java/com/veve_plus/root/mapper/TitleMapper.java
+/Users/dki/Documents/VEVE_api_git/veve/src/main/java/com/veve_plus/root/mapper/TmsMapper.java
+/Users/dki/Documents/VEVE_api_git/veve/src/main/java/com/veve_plus/root/mapper/UserMapper.java
+/Users/dki/Documents/VEVE_api_git/veve/src/main/java/com/veve_plus/root/schedule/GSheetSchedule.java
+/Users/dki/Documents/VEVE_api_git/veve/src/main/java/com/veve_plus/root/schedule/TmsScheduler.java
+/Users/dki/Documents/VEVE_api_git/veve/src/main/java/com/veve_plus/root/service/CodeService.java
+/Users/dki/Documents/VEVE_api_git/veve/src/main/java/com/veve_plus/root/service/ContentService.java
+/Users/dki/Documents/VEVE_api_git/veve/src/main/java/com/veve_plus/root/service/CustomUserDetailService.java
+/Users/dki/Documents/VEVE_api_git/veve/src/main/java/com/veve_plus/root/service/JwtService.java
+/Users/dki/Documents/VEVE_api_git/veve/src/main/java/com/veve_plus/root/service/MaterialService.java
+/Users/dki/Documents/VEVE_api_git/veve/src/main/java/com/veve_plus/root/service/MenuService.java
+/Users/dki/Documents/VEVE_api_git/veve/src/main/java/com/veve_plus/root/service/RoleService.java
+/Users/dki/Documents/VEVE_api_git/veve/src/main/java/com/veve_plus/root/service/TaskService.java
+/Users/dki/Documents/VEVE_api_git/veve/src/main/java/com/veve_plus/root/service/TitleService.java
+/Users/dki/Documents/VEVE_api_git/veve/src/main/java/com/veve_plus/root/service/TmsGSheetService.java
+/Users/dki/Documents/VEVE_api_git/veve/src/main/java/com/veve_plus/root/service/TmsService.java
+/Users/dki/Documents/VEVE_api_git/veve/src/main/java/com/veve_plus/root/service/UserService.java
+/Users/dki/Documents/VEVE_api_git/veve/src/main/java/com/veve_plus/root/utils/CustomStringUtils.java
+/Users/dki/Documents/VEVE_api_git/veve/src/main/java/com/veve_plus/root/utils/DateTimeUtils.java
+/Users/dki/Documents/VEVE_api_git/veve/src/main/java/com/veve_plus/root/utils/GSheetsUtils.java
diff --git a/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/createdFiles.lst b/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/createdFiles.lst
new file mode 100644
index 0000000..365b146
--- /dev/null
+++ b/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/createdFiles.lst
@@ -0,0 +1 @@
+com/veve_plus/root/RootApplicationTests.class
diff --git a/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/inputFiles.lst b/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/inputFiles.lst
new file mode 100644
index 0000000..c83c776
--- /dev/null
+++ b/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/inputFiles.lst
@@ -0,0 +1 @@
+/Users/dki/Documents/VEVE_api_git/veve/src/test/java/com/veve_plus/root/RootApplicationTests.java
diff --git a/target/root-0.0.1-SNAPSHOT/WEB-INF/classes/application.properties b/target/root-0.0.1-SNAPSHOT/WEB-INF/classes/application.properties
new file mode 100644
index 0000000..33768be
--- /dev/null
+++ b/target/root-0.0.1-SNAPSHOT/WEB-INF/classes/application.properties
@@ -0,0 +1,50 @@
+spring.application.name=admin
+
+#Server port
+server.port = 8080
+
+# JDBC properties
+spring.datasource.url=jdbc:mysql://61.28.226.9:3306/gone
+spring.datasource.username=geuser1
+spring.datasource.password=Dki@2023
+spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
+
+#spring.security.user.name=admin
+#spring.security.user.password=password
+# Logging
+logging.level.org.springframework.security=TRACE
+logging.level.org.springframework.web=TRACE
+logging.level.org.hibernate.SQL=TRACE
+logging.level.org.hibernate.type.descriptor.sql.BasicBinder=TRACE
+
+# MyBatis configuration
+mybatis.mapper-locations=classpath:mapper/*.xml
+mybatis.configuration.map-underscore-to-camel-case=true
+mybatis.configuration.default-fetch-size=100
+mybatis.configuration.default-statement-timeout=30
+# MyBatis Configuration
+mybatis.configuration.cache-enabled=true
+mybatis.configuration.lazy-loading-enabled=true
+mybatis.configuration.aggressive-lazy-loading=true
+mybatis.configuration.multiple-result-sets-enabled=true
+mybatis.configuration.use-column-label=true
+mybatis.configuration.use-generated-keys=false
+mybatis.configuration.auto-mapping-behavior=PARTIAL
+mybatis.configuration.auto-mapping-unknown-column-behavior=NONE
+mybatis.configuration.default-executor-type=SIMPLE
+mybatis.configuration.safe-row-bounds-enabled=false
+mybatis.configuration.safe-result-handler-enabled=true
+mybatis.configuration.local-cache-scope=SESSION
+mybatis.configuration.jdbc-type-for-null=OTHER
+mybatis.configuration.lazy-load-trigger-methods=equals,clone,hashCode,toString
+mybatis.configuration.default-enum-type-handler=org.apache.ibatis.type.EnumTypeHandler
+mybatis.configuration.call-setters-on-nulls=false
+mybatis.configuration.return-instance-for-empty-row=false
+mybatis.configuration.log-prefix=exampleLogPreFix_
+
+spring.servlet.multipart.max-file-size=20MB
+spring.servlet.multipart.max-request-size=20MB
+
+#Schedule config
+scheduler.enabled=true
+
diff --git a/target/root-0.0.1-SNAPSHOT/WEB-INF/classes/com/veve_plus/root/RootApplication.class b/target/root-0.0.1-SNAPSHOT/WEB-INF/classes/com/veve_plus/root/RootApplication.class
new file mode 100644
index 0000000..b8da340
Binary files /dev/null and b/target/root-0.0.1-SNAPSHOT/WEB-INF/classes/com/veve_plus/root/RootApplication.class differ
diff --git a/target/root-0.0.1-SNAPSHOT/WEB-INF/classes/com/veve_plus/root/ServletInitializer.class b/target/root-0.0.1-SNAPSHOT/WEB-INF/classes/com/veve_plus/root/ServletInitializer.class
new file mode 100644
index 0000000..ff6a079
Binary files /dev/null and b/target/root-0.0.1-SNAPSHOT/WEB-INF/classes/com/veve_plus/root/ServletInitializer.class differ
diff --git a/target/root-0.0.1-SNAPSHOT/WEB-INF/classes/com/veve_plus/root/config/CorsConfig.class b/target/root-0.0.1-SNAPSHOT/WEB-INF/classes/com/veve_plus/root/config/CorsConfig.class
new file mode 100644
index 0000000..9500b94
Binary files /dev/null and b/target/root-0.0.1-SNAPSHOT/WEB-INF/classes/com/veve_plus/root/config/CorsConfig.class differ
diff --git a/target/root-0.0.1-SNAPSHOT/WEB-INF/classes/com/veve_plus/root/config/JwtFilter.class b/target/root-0.0.1-SNAPSHOT/WEB-INF/classes/com/veve_plus/root/config/JwtFilter.class
new file mode 100644
index 0000000..70949d2
Binary files /dev/null and b/target/root-0.0.1-SNAPSHOT/WEB-INF/classes/com/veve_plus/root/config/JwtFilter.class differ
diff --git a/target/root-0.0.1-SNAPSHOT/WEB-INF/classes/com/veve_plus/root/config/MyBatisConfig.class b/target/root-0.0.1-SNAPSHOT/WEB-INF/classes/com/veve_plus/root/config/MyBatisConfig.class
new file mode 100644
index 0000000..122a68d
Binary files /dev/null and b/target/root-0.0.1-SNAPSHOT/WEB-INF/classes/com/veve_plus/root/config/MyBatisConfig.class differ
diff --git a/target/root-0.0.1-SNAPSHOT/WEB-INF/classes/com/veve_plus/root/config/WebSecurityConfig.class b/target/root-0.0.1-SNAPSHOT/WEB-INF/classes/com/veve_plus/root/config/WebSecurityConfig.class
new file mode 100644
index 0000000..020de45
Binary files /dev/null and b/target/root-0.0.1-SNAPSHOT/WEB-INF/classes/com/veve_plus/root/config/WebSecurityConfig.class differ
diff --git a/target/root-0.0.1-SNAPSHOT/WEB-INF/classes/com/veve_plus/root/constant/TmsSheetConst$FileSheet.class b/target/root-0.0.1-SNAPSHOT/WEB-INF/classes/com/veve_plus/root/constant/TmsSheetConst$FileSheet.class
new file mode 100644
index 0000000..f7088c3
Binary files /dev/null and b/target/root-0.0.1-SNAPSHOT/WEB-INF/classes/com/veve_plus/root/constant/TmsSheetConst$FileSheet.class differ
diff --git a/target/root-0.0.1-SNAPSHOT/WEB-INF/classes/com/veve_plus/root/constant/TmsSheetConst$Template.class b/target/root-0.0.1-SNAPSHOT/WEB-INF/classes/com/veve_plus/root/constant/TmsSheetConst$Template.class
new file mode 100644
index 0000000..4de0ef8
Binary files /dev/null and b/target/root-0.0.1-SNAPSHOT/WEB-INF/classes/com/veve_plus/root/constant/TmsSheetConst$Template.class differ
diff --git a/target/root-0.0.1-SNAPSHOT/WEB-INF/classes/com/veve_plus/root/constant/TmsSheetConst.class b/target/root-0.0.1-SNAPSHOT/WEB-INF/classes/com/veve_plus/root/constant/TmsSheetConst.class
new file mode 100644
index 0000000..1fadb0b
Binary files /dev/null and b/target/root-0.0.1-SNAPSHOT/WEB-INF/classes/com/veve_plus/root/constant/TmsSheetConst.class differ
diff --git a/target/root-0.0.1-SNAPSHOT/WEB-INF/classes/com/veve_plus/root/controller/AuthController.class b/target/root-0.0.1-SNAPSHOT/WEB-INF/classes/com/veve_plus/root/controller/AuthController.class
new file mode 100644
index 0000000..e0906c9
Binary files /dev/null and b/target/root-0.0.1-SNAPSHOT/WEB-INF/classes/com/veve_plus/root/controller/AuthController.class differ
diff --git a/target/root-0.0.1-SNAPSHOT/WEB-INF/classes/com/veve_plus/root/controller/CodeController.class b/target/root-0.0.1-SNAPSHOT/WEB-INF/classes/com/veve_plus/root/controller/CodeController.class
new file mode 100644
index 0000000..b29c978
Binary files /dev/null and b/target/root-0.0.1-SNAPSHOT/WEB-INF/classes/com/veve_plus/root/controller/CodeController.class differ
diff --git a/target/root-0.0.1-SNAPSHOT/WEB-INF/classes/com/veve_plus/root/controller/ContentController.class b/target/root-0.0.1-SNAPSHOT/WEB-INF/classes/com/veve_plus/root/controller/ContentController.class
new file mode 100644
index 0000000..f77d4e8
Binary files /dev/null and b/target/root-0.0.1-SNAPSHOT/WEB-INF/classes/com/veve_plus/root/controller/ContentController.class differ
diff --git a/target/root-0.0.1-SNAPSHOT/WEB-INF/classes/com/veve_plus/root/controller/MaterialController.class b/target/root-0.0.1-SNAPSHOT/WEB-INF/classes/com/veve_plus/root/controller/MaterialController.class
new file mode 100644
index 0000000..1296232
Binary files /dev/null and b/target/root-0.0.1-SNAPSHOT/WEB-INF/classes/com/veve_plus/root/controller/MaterialController.class differ
diff --git a/target/root-0.0.1-SNAPSHOT/WEB-INF/classes/com/veve_plus/root/controller/MenuController.class b/target/root-0.0.1-SNAPSHOT/WEB-INF/classes/com/veve_plus/root/controller/MenuController.class
new file mode 100644
index 0000000..1ec9c89
Binary files /dev/null and b/target/root-0.0.1-SNAPSHOT/WEB-INF/classes/com/veve_plus/root/controller/MenuController.class differ
diff --git a/target/root-0.0.1-SNAPSHOT/WEB-INF/classes/com/veve_plus/root/controller/RoleController.class b/target/root-0.0.1-SNAPSHOT/WEB-INF/classes/com/veve_plus/root/controller/RoleController.class
new file mode 100644
index 0000000..dbfeb5d
Binary files /dev/null and b/target/root-0.0.1-SNAPSHOT/WEB-INF/classes/com/veve_plus/root/controller/RoleController.class differ
diff --git a/target/root-0.0.1-SNAPSHOT/WEB-INF/classes/com/veve_plus/root/controller/TaskController.class b/target/root-0.0.1-SNAPSHOT/WEB-INF/classes/com/veve_plus/root/controller/TaskController.class
new file mode 100644
index 0000000..dc9db7d
Binary files /dev/null and b/target/root-0.0.1-SNAPSHOT/WEB-INF/classes/com/veve_plus/root/controller/TaskController.class differ
diff --git a/target/root-0.0.1-SNAPSHOT/WEB-INF/classes/com/veve_plus/root/controller/TitleController.class b/target/root-0.0.1-SNAPSHOT/WEB-INF/classes/com/veve_plus/root/controller/TitleController.class
new file mode 100644
index 0000000..d0a3fe3
Binary files /dev/null and b/target/root-0.0.1-SNAPSHOT/WEB-INF/classes/com/veve_plus/root/controller/TitleController.class differ
diff --git a/target/root-0.0.1-SNAPSHOT/WEB-INF/classes/com/veve_plus/root/controller/TmsController.class b/target/root-0.0.1-SNAPSHOT/WEB-INF/classes/com/veve_plus/root/controller/TmsController.class
new file mode 100644
index 0000000..c894623
Binary files /dev/null and b/target/root-0.0.1-SNAPSHOT/WEB-INF/classes/com/veve_plus/root/controller/TmsController.class differ
diff --git a/target/root-0.0.1-SNAPSHOT/WEB-INF/classes/com/veve_plus/root/controller/UserController.class b/target/root-0.0.1-SNAPSHOT/WEB-INF/classes/com/veve_plus/root/controller/UserController.class
new file mode 100644
index 0000000..7fd133b
Binary files /dev/null and b/target/root-0.0.1-SNAPSHOT/WEB-INF/classes/com/veve_plus/root/controller/UserController.class differ
diff --git a/target/root-0.0.1-SNAPSHOT/WEB-INF/classes/com/veve_plus/root/dto/auth/AuthResponseDto.class b/target/root-0.0.1-SNAPSHOT/WEB-INF/classes/com/veve_plus/root/dto/auth/AuthResponseDto.class
new file mode 100644
index 0000000..ab1e361
Binary files /dev/null and b/target/root-0.0.1-SNAPSHOT/WEB-INF/classes/com/veve_plus/root/dto/auth/AuthResponseDto.class differ
diff --git a/target/root-0.0.1-SNAPSHOT/WEB-INF/classes/com/veve_plus/root/dto/auth/LoginDto.class b/target/root-0.0.1-SNAPSHOT/WEB-INF/classes/com/veve_plus/root/dto/auth/LoginDto.class
new file mode 100644
index 0000000..36f5f21
Binary files /dev/null and b/target/root-0.0.1-SNAPSHOT/WEB-INF/classes/com/veve_plus/root/dto/auth/LoginDto.class differ
diff --git a/target/root-0.0.1-SNAPSHOT/WEB-INF/classes/com/veve_plus/root/dto/auth/UserPrincipal.class b/target/root-0.0.1-SNAPSHOT/WEB-INF/classes/com/veve_plus/root/dto/auth/UserPrincipal.class
new file mode 100644
index 0000000..1e20de8
Binary files /dev/null and b/target/root-0.0.1-SNAPSHOT/WEB-INF/classes/com/veve_plus/root/dto/auth/UserPrincipal.class differ
diff --git a/target/root-0.0.1-SNAPSHOT/WEB-INF/classes/com/veve_plus/root/dto/code/CodeDto$CodeDtoBuilder.class b/target/root-0.0.1-SNAPSHOT/WEB-INF/classes/com/veve_plus/root/dto/code/CodeDto$CodeDtoBuilder.class
new file mode 100644
index 0000000..6875324
Binary files /dev/null and b/target/root-0.0.1-SNAPSHOT/WEB-INF/classes/com/veve_plus/root/dto/code/CodeDto$CodeDtoBuilder.class differ
diff --git a/target/root-0.0.1-SNAPSHOT/WEB-INF/classes/com/veve_plus/root/dto/code/CodeDto.class b/target/root-0.0.1-SNAPSHOT/WEB-INF/classes/com/veve_plus/root/dto/code/CodeDto.class
new file mode 100644
index 0000000..9f06773
Binary files /dev/null and b/target/root-0.0.1-SNAPSHOT/WEB-INF/classes/com/veve_plus/root/dto/code/CodeDto.class differ
diff --git a/target/root-0.0.1-SNAPSHOT/WEB-INF/classes/com/veve_plus/root/dto/content/ContentDto$ContentDtoBuilder.class b/target/root-0.0.1-SNAPSHOT/WEB-INF/classes/com/veve_plus/root/dto/content/ContentDto$ContentDtoBuilder.class
new file mode 100644
index 0000000..6296858
Binary files /dev/null and b/target/root-0.0.1-SNAPSHOT/WEB-INF/classes/com/veve_plus/root/dto/content/ContentDto$ContentDtoBuilder.class differ
diff --git a/target/root-0.0.1-SNAPSHOT/WEB-INF/classes/com/veve_plus/root/dto/content/ContentDto.class b/target/root-0.0.1-SNAPSHOT/WEB-INF/classes/com/veve_plus/root/dto/content/ContentDto.class
new file mode 100644
index 0000000..d81507f
Binary files /dev/null and b/target/root-0.0.1-SNAPSHOT/WEB-INF/classes/com/veve_plus/root/dto/content/ContentDto.class differ
diff --git a/target/root-0.0.1-SNAPSHOT/WEB-INF/classes/com/veve_plus/root/dto/content/ContentReqDto$ContentReqDtoBuilder.class b/target/root-0.0.1-SNAPSHOT/WEB-INF/classes/com/veve_plus/root/dto/content/ContentReqDto$ContentReqDtoBuilder.class
new file mode 100644
index 0000000..f5647f5
Binary files /dev/null and b/target/root-0.0.1-SNAPSHOT/WEB-INF/classes/com/veve_plus/root/dto/content/ContentReqDto$ContentReqDtoBuilder.class differ
diff --git a/target/root-0.0.1-SNAPSHOT/WEB-INF/classes/com/veve_plus/root/dto/content/ContentReqDto.class b/target/root-0.0.1-SNAPSHOT/WEB-INF/classes/com/veve_plus/root/dto/content/ContentReqDto.class
new file mode 100644
index 0000000..1f680a1
Binary files /dev/null and b/target/root-0.0.1-SNAPSHOT/WEB-INF/classes/com/veve_plus/root/dto/content/ContentReqDto.class differ
diff --git a/target/root-0.0.1-SNAPSHOT/WEB-INF/classes/com/veve_plus/root/dto/content/ContentTitleDto$ContentTitleDtoBuilder.class b/target/root-0.0.1-SNAPSHOT/WEB-INF/classes/com/veve_plus/root/dto/content/ContentTitleDto$ContentTitleDtoBuilder.class
new file mode 100644
index 0000000..c3a25dd
Binary files /dev/null and b/target/root-0.0.1-SNAPSHOT/WEB-INF/classes/com/veve_plus/root/dto/content/ContentTitleDto$ContentTitleDtoBuilder.class differ
diff --git a/target/root-0.0.1-SNAPSHOT/WEB-INF/classes/com/veve_plus/root/dto/content/ContentTitleDto.class b/target/root-0.0.1-SNAPSHOT/WEB-INF/classes/com/veve_plus/root/dto/content/ContentTitleDto.class
new file mode 100644
index 0000000..79d31cc
Binary files /dev/null and b/target/root-0.0.1-SNAPSHOT/WEB-INF/classes/com/veve_plus/root/dto/content/ContentTitleDto.class differ
diff --git a/target/root-0.0.1-SNAPSHOT/WEB-INF/classes/com/veve_plus/root/dto/material/MaterialDto$MaterialDtoBuilder.class b/target/root-0.0.1-SNAPSHOT/WEB-INF/classes/com/veve_plus/root/dto/material/MaterialDto$MaterialDtoBuilder.class
new file mode 100644
index 0000000..d2fb7cf
Binary files /dev/null and b/target/root-0.0.1-SNAPSHOT/WEB-INF/classes/com/veve_plus/root/dto/material/MaterialDto$MaterialDtoBuilder.class differ
diff --git a/target/root-0.0.1-SNAPSHOT/WEB-INF/classes/com/veve_plus/root/dto/material/MaterialDto.class b/target/root-0.0.1-SNAPSHOT/WEB-INF/classes/com/veve_plus/root/dto/material/MaterialDto.class
new file mode 100644
index 0000000..8124c35
Binary files /dev/null and b/target/root-0.0.1-SNAPSHOT/WEB-INF/classes/com/veve_plus/root/dto/material/MaterialDto.class differ
diff --git a/target/root-0.0.1-SNAPSHOT/WEB-INF/classes/com/veve_plus/root/dto/material/MaterialTypingStatusDto$MaterialTypingStatusDtoBuilder.class b/target/root-0.0.1-SNAPSHOT/WEB-INF/classes/com/veve_plus/root/dto/material/MaterialTypingStatusDto$MaterialTypingStatusDtoBuilder.class
new file mode 100644
index 0000000..e4d4193
Binary files /dev/null and b/target/root-0.0.1-SNAPSHOT/WEB-INF/classes/com/veve_plus/root/dto/material/MaterialTypingStatusDto$MaterialTypingStatusDtoBuilder.class differ
diff --git a/target/root-0.0.1-SNAPSHOT/WEB-INF/classes/com/veve_plus/root/dto/material/MaterialTypingStatusDto.class b/target/root-0.0.1-SNAPSHOT/WEB-INF/classes/com/veve_plus/root/dto/material/MaterialTypingStatusDto.class
new file mode 100644
index 0000000..4d87434
Binary files /dev/null and b/target/root-0.0.1-SNAPSHOT/WEB-INF/classes/com/veve_plus/root/dto/material/MaterialTypingStatusDto.class differ
diff --git a/target/root-0.0.1-SNAPSHOT/WEB-INF/classes/com/veve_plus/root/dto/menu/Menu.class b/target/root-0.0.1-SNAPSHOT/WEB-INF/classes/com/veve_plus/root/dto/menu/Menu.class
new file mode 100644
index 0000000..c9ce6ba
Binary files /dev/null and b/target/root-0.0.1-SNAPSHOT/WEB-INF/classes/com/veve_plus/root/dto/menu/Menu.class differ
diff --git a/target/root-0.0.1-SNAPSHOT/WEB-INF/classes/com/veve_plus/root/dto/menu/MenuHierarchyResponse$MenuHierarchyResponseBuilder.class b/target/root-0.0.1-SNAPSHOT/WEB-INF/classes/com/veve_plus/root/dto/menu/MenuHierarchyResponse$MenuHierarchyResponseBuilder.class
new file mode 100644
index 0000000..0db8d71
Binary files /dev/null and b/target/root-0.0.1-SNAPSHOT/WEB-INF/classes/com/veve_plus/root/dto/menu/MenuHierarchyResponse$MenuHierarchyResponseBuilder.class differ
diff --git a/target/root-0.0.1-SNAPSHOT/WEB-INF/classes/com/veve_plus/root/dto/menu/MenuHierarchyResponse.class b/target/root-0.0.1-SNAPSHOT/WEB-INF/classes/com/veve_plus/root/dto/menu/MenuHierarchyResponse.class
new file mode 100644
index 0000000..74aca05
Binary files /dev/null and b/target/root-0.0.1-SNAPSHOT/WEB-INF/classes/com/veve_plus/root/dto/menu/MenuHierarchyResponse.class differ
diff --git a/target/root-0.0.1-SNAPSHOT/WEB-INF/classes/com/veve_plus/root/dto/menu/MenuResponse$MenuResponseBuilder.class b/target/root-0.0.1-SNAPSHOT/WEB-INF/classes/com/veve_plus/root/dto/menu/MenuResponse$MenuResponseBuilder.class
new file mode 100644
index 0000000..c17cb02
Binary files /dev/null and b/target/root-0.0.1-SNAPSHOT/WEB-INF/classes/com/veve_plus/root/dto/menu/MenuResponse$MenuResponseBuilder.class differ
diff --git a/target/root-0.0.1-SNAPSHOT/WEB-INF/classes/com/veve_plus/root/dto/menu/MenuResponse.class b/target/root-0.0.1-SNAPSHOT/WEB-INF/classes/com/veve_plus/root/dto/menu/MenuResponse.class
new file mode 100644
index 0000000..07991c6
Binary files /dev/null and b/target/root-0.0.1-SNAPSHOT/WEB-INF/classes/com/veve_plus/root/dto/menu/MenuResponse.class differ
diff --git a/target/root-0.0.1-SNAPSHOT/WEB-INF/classes/com/veve_plus/root/dto/menu/MenuSearchRequest$MenuSearchRequestBuilder.class b/target/root-0.0.1-SNAPSHOT/WEB-INF/classes/com/veve_plus/root/dto/menu/MenuSearchRequest$MenuSearchRequestBuilder.class
new file mode 100644
index 0000000..427cab2
Binary files /dev/null and b/target/root-0.0.1-SNAPSHOT/WEB-INF/classes/com/veve_plus/root/dto/menu/MenuSearchRequest$MenuSearchRequestBuilder.class differ
diff --git a/target/root-0.0.1-SNAPSHOT/WEB-INF/classes/com/veve_plus/root/dto/menu/MenuSearchRequest.class b/target/root-0.0.1-SNAPSHOT/WEB-INF/classes/com/veve_plus/root/dto/menu/MenuSearchRequest.class
new file mode 100644
index 0000000..116988a
Binary files /dev/null and b/target/root-0.0.1-SNAPSHOT/WEB-INF/classes/com/veve_plus/root/dto/menu/MenuSearchRequest.class differ
diff --git a/target/root-0.0.1-SNAPSHOT/WEB-INF/classes/com/veve_plus/root/dto/role/Role$RoleBuilder.class b/target/root-0.0.1-SNAPSHOT/WEB-INF/classes/com/veve_plus/root/dto/role/Role$RoleBuilder.class
new file mode 100644
index 0000000..2c0bdd4
Binary files /dev/null and b/target/root-0.0.1-SNAPSHOT/WEB-INF/classes/com/veve_plus/root/dto/role/Role$RoleBuilder.class differ
diff --git a/target/root-0.0.1-SNAPSHOT/WEB-INF/classes/com/veve_plus/root/dto/role/Role.class b/target/root-0.0.1-SNAPSHOT/WEB-INF/classes/com/veve_plus/root/dto/role/Role.class
new file mode 100644
index 0000000..6911b8f
Binary files /dev/null and b/target/root-0.0.1-SNAPSHOT/WEB-INF/classes/com/veve_plus/root/dto/role/Role.class differ
diff --git a/target/root-0.0.1-SNAPSHOT/WEB-INF/classes/com/veve_plus/root/dto/role/RoleMenu$RoleMenuBuilder.class b/target/root-0.0.1-SNAPSHOT/WEB-INF/classes/com/veve_plus/root/dto/role/RoleMenu$RoleMenuBuilder.class
new file mode 100644
index 0000000..37e10a4
Binary files /dev/null and b/target/root-0.0.1-SNAPSHOT/WEB-INF/classes/com/veve_plus/root/dto/role/RoleMenu$RoleMenuBuilder.class differ
diff --git a/target/root-0.0.1-SNAPSHOT/WEB-INF/classes/com/veve_plus/root/dto/role/RoleMenu.class b/target/root-0.0.1-SNAPSHOT/WEB-INF/classes/com/veve_plus/root/dto/role/RoleMenu.class
new file mode 100644
index 0000000..4310733
Binary files /dev/null and b/target/root-0.0.1-SNAPSHOT/WEB-INF/classes/com/veve_plus/root/dto/role/RoleMenu.class differ
diff --git a/target/root-0.0.1-SNAPSHOT/WEB-INF/classes/com/veve_plus/root/dto/role/RoleRequest$RoleRequestBuilder.class b/target/root-0.0.1-SNAPSHOT/WEB-INF/classes/com/veve_plus/root/dto/role/RoleRequest$RoleRequestBuilder.class
new file mode 100644
index 0000000..e07d5c1
Binary files /dev/null and b/target/root-0.0.1-SNAPSHOT/WEB-INF/classes/com/veve_plus/root/dto/role/RoleRequest$RoleRequestBuilder.class differ
diff --git a/target/root-0.0.1-SNAPSHOT/WEB-INF/classes/com/veve_plus/root/dto/role/RoleRequest.class b/target/root-0.0.1-SNAPSHOT/WEB-INF/classes/com/veve_plus/root/dto/role/RoleRequest.class
new file mode 100644
index 0000000..e7eff42
Binary files /dev/null and b/target/root-0.0.1-SNAPSHOT/WEB-INF/classes/com/veve_plus/root/dto/role/RoleRequest.class differ
diff --git a/target/root-0.0.1-SNAPSHOT/WEB-INF/classes/com/veve_plus/root/dto/role/RoleResponse$RoleResponseBuilder.class b/target/root-0.0.1-SNAPSHOT/WEB-INF/classes/com/veve_plus/root/dto/role/RoleResponse$RoleResponseBuilder.class
new file mode 100644
index 0000000..0e3d992
Binary files /dev/null and b/target/root-0.0.1-SNAPSHOT/WEB-INF/classes/com/veve_plus/root/dto/role/RoleResponse$RoleResponseBuilder.class differ
diff --git a/target/root-0.0.1-SNAPSHOT/WEB-INF/classes/com/veve_plus/root/dto/role/RoleResponse.class b/target/root-0.0.1-SNAPSHOT/WEB-INF/classes/com/veve_plus/root/dto/role/RoleResponse.class
new file mode 100644
index 0000000..54e5db5
Binary files /dev/null and b/target/root-0.0.1-SNAPSHOT/WEB-INF/classes/com/veve_plus/root/dto/role/RoleResponse.class differ
diff --git a/target/root-0.0.1-SNAPSHOT/WEB-INF/classes/com/veve_plus/root/dto/role/RoleSearchRequest$RoleSearchRequestBuilder.class b/target/root-0.0.1-SNAPSHOT/WEB-INF/classes/com/veve_plus/root/dto/role/RoleSearchRequest$RoleSearchRequestBuilder.class
new file mode 100644
index 0000000..ee1d2fa
Binary files /dev/null and b/target/root-0.0.1-SNAPSHOT/WEB-INF/classes/com/veve_plus/root/dto/role/RoleSearchRequest$RoleSearchRequestBuilder.class differ
diff --git a/target/root-0.0.1-SNAPSHOT/WEB-INF/classes/com/veve_plus/root/dto/role/RoleSearchRequest.class b/target/root-0.0.1-SNAPSHOT/WEB-INF/classes/com/veve_plus/root/dto/role/RoleSearchRequest.class
new file mode 100644
index 0000000..91710ec
Binary files /dev/null and b/target/root-0.0.1-SNAPSHOT/WEB-INF/classes/com/veve_plus/root/dto/role/RoleSearchRequest.class differ
diff --git a/target/root-0.0.1-SNAPSHOT/WEB-INF/classes/com/veve_plus/root/dto/role/RoleUser$RoleUserBuilder.class b/target/root-0.0.1-SNAPSHOT/WEB-INF/classes/com/veve_plus/root/dto/role/RoleUser$RoleUserBuilder.class
new file mode 100644
index 0000000..71ecde9
Binary files /dev/null and b/target/root-0.0.1-SNAPSHOT/WEB-INF/classes/com/veve_plus/root/dto/role/RoleUser$RoleUserBuilder.class differ
diff --git a/target/root-0.0.1-SNAPSHOT/WEB-INF/classes/com/veve_plus/root/dto/role/RoleUser.class b/target/root-0.0.1-SNAPSHOT/WEB-INF/classes/com/veve_plus/root/dto/role/RoleUser.class
new file mode 100644
index 0000000..7c7012c
Binary files /dev/null and b/target/root-0.0.1-SNAPSHOT/WEB-INF/classes/com/veve_plus/root/dto/role/RoleUser.class differ
diff --git a/target/root-0.0.1-SNAPSHOT/WEB-INF/classes/com/veve_plus/root/dto/task/KstTaskHistoryDto.class b/target/root-0.0.1-SNAPSHOT/WEB-INF/classes/com/veve_plus/root/dto/task/KstTaskHistoryDto.class
new file mode 100644
index 0000000..234aa66
Binary files /dev/null and b/target/root-0.0.1-SNAPSHOT/WEB-INF/classes/com/veve_plus/root/dto/task/KstTaskHistoryDto.class differ
diff --git a/target/root-0.0.1-SNAPSHOT/WEB-INF/classes/com/veve_plus/root/dto/task/TaskDto.class b/target/root-0.0.1-SNAPSHOT/WEB-INF/classes/com/veve_plus/root/dto/task/TaskDto.class
new file mode 100644
index 0000000..28cf982
Binary files /dev/null and b/target/root-0.0.1-SNAPSHOT/WEB-INF/classes/com/veve_plus/root/dto/task/TaskDto.class differ
diff --git a/target/root-0.0.1-SNAPSHOT/WEB-INF/classes/com/veve_plus/root/dto/title/TitleDto$TitleDtoBuilder.class b/target/root-0.0.1-SNAPSHOT/WEB-INF/classes/com/veve_plus/root/dto/title/TitleDto$TitleDtoBuilder.class
new file mode 100644
index 0000000..3c08caf
Binary files /dev/null and b/target/root-0.0.1-SNAPSHOT/WEB-INF/classes/com/veve_plus/root/dto/title/TitleDto$TitleDtoBuilder.class differ
diff --git a/target/root-0.0.1-SNAPSHOT/WEB-INF/classes/com/veve_plus/root/dto/title/TitleDto.class b/target/root-0.0.1-SNAPSHOT/WEB-INF/classes/com/veve_plus/root/dto/title/TitleDto.class
new file mode 100644
index 0000000..adf34fb
Binary files /dev/null and b/target/root-0.0.1-SNAPSHOT/WEB-INF/classes/com/veve_plus/root/dto/title/TitleDto.class differ
diff --git a/target/root-0.0.1-SNAPSHOT/WEB-INF/classes/com/veve_plus/root/dto/title/TitleUpdDto$TitleUpdDtoBuilder.class b/target/root-0.0.1-SNAPSHOT/WEB-INF/classes/com/veve_plus/root/dto/title/TitleUpdDto$TitleUpdDtoBuilder.class
new file mode 100644
index 0000000..119ad3b
Binary files /dev/null and b/target/root-0.0.1-SNAPSHOT/WEB-INF/classes/com/veve_plus/root/dto/title/TitleUpdDto$TitleUpdDtoBuilder.class differ
diff --git a/target/root-0.0.1-SNAPSHOT/WEB-INF/classes/com/veve_plus/root/dto/title/TitleUpdDto.class b/target/root-0.0.1-SNAPSHOT/WEB-INF/classes/com/veve_plus/root/dto/title/TitleUpdDto.class
new file mode 100644
index 0000000..c822e84
Binary files /dev/null and b/target/root-0.0.1-SNAPSHOT/WEB-INF/classes/com/veve_plus/root/dto/title/TitleUpdDto.class differ
diff --git a/target/root-0.0.1-SNAPSHOT/WEB-INF/classes/com/veve_plus/root/dto/tms/ProjectDto$ProjectDtoBuilder.class b/target/root-0.0.1-SNAPSHOT/WEB-INF/classes/com/veve_plus/root/dto/tms/ProjectDto$ProjectDtoBuilder.class
new file mode 100644
index 0000000..3f93757
Binary files /dev/null and b/target/root-0.0.1-SNAPSHOT/WEB-INF/classes/com/veve_plus/root/dto/tms/ProjectDto$ProjectDtoBuilder.class differ
diff --git a/target/root-0.0.1-SNAPSHOT/WEB-INF/classes/com/veve_plus/root/dto/tms/ProjectDto.class b/target/root-0.0.1-SNAPSHOT/WEB-INF/classes/com/veve_plus/root/dto/tms/ProjectDto.class
new file mode 100644
index 0000000..27c9771
Binary files /dev/null and b/target/root-0.0.1-SNAPSHOT/WEB-INF/classes/com/veve_plus/root/dto/tms/ProjectDto.class differ
diff --git a/target/root-0.0.1-SNAPSHOT/WEB-INF/classes/com/veve_plus/root/dto/tms/ProjectLocaleDto$ProjectLocaleDtoBuilder.class b/target/root-0.0.1-SNAPSHOT/WEB-INF/classes/com/veve_plus/root/dto/tms/ProjectLocaleDto$ProjectLocaleDtoBuilder.class
new file mode 100644
index 0000000..e4ed084
Binary files /dev/null and b/target/root-0.0.1-SNAPSHOT/WEB-INF/classes/com/veve_plus/root/dto/tms/ProjectLocaleDto$ProjectLocaleDtoBuilder.class differ
diff --git a/target/root-0.0.1-SNAPSHOT/WEB-INF/classes/com/veve_plus/root/dto/tms/ProjectLocaleDto.class b/target/root-0.0.1-SNAPSHOT/WEB-INF/classes/com/veve_plus/root/dto/tms/ProjectLocaleDto.class
new file mode 100644
index 0000000..8af85cb
Binary files /dev/null and b/target/root-0.0.1-SNAPSHOT/WEB-INF/classes/com/veve_plus/root/dto/tms/ProjectLocaleDto.class differ
diff --git a/target/root-0.0.1-SNAPSHOT/WEB-INF/classes/com/veve_plus/root/dto/tms/TmsReqDto$TmsReqDtoBuilder.class b/target/root-0.0.1-SNAPSHOT/WEB-INF/classes/com/veve_plus/root/dto/tms/TmsReqDto$TmsReqDtoBuilder.class
new file mode 100644
index 0000000..a9167b9
Binary files /dev/null and b/target/root-0.0.1-SNAPSHOT/WEB-INF/classes/com/veve_plus/root/dto/tms/TmsReqDto$TmsReqDtoBuilder.class differ
diff --git a/target/root-0.0.1-SNAPSHOT/WEB-INF/classes/com/veve_plus/root/dto/tms/TmsReqDto.class b/target/root-0.0.1-SNAPSHOT/WEB-INF/classes/com/veve_plus/root/dto/tms/TmsReqDto.class
new file mode 100644
index 0000000..06681e8
Binary files /dev/null and b/target/root-0.0.1-SNAPSHOT/WEB-INF/classes/com/veve_plus/root/dto/tms/TmsReqDto.class differ
diff --git a/target/root-0.0.1-SNAPSHOT/WEB-INF/classes/com/veve_plus/root/dto/tms/TranslationDto$TranslationDtoBuilder.class b/target/root-0.0.1-SNAPSHOT/WEB-INF/classes/com/veve_plus/root/dto/tms/TranslationDto$TranslationDtoBuilder.class
new file mode 100644
index 0000000..4006b06
Binary files /dev/null and b/target/root-0.0.1-SNAPSHOT/WEB-INF/classes/com/veve_plus/root/dto/tms/TranslationDto$TranslationDtoBuilder.class differ
diff --git a/target/root-0.0.1-SNAPSHOT/WEB-INF/classes/com/veve_plus/root/dto/tms/TranslationDto.class b/target/root-0.0.1-SNAPSHOT/WEB-INF/classes/com/veve_plus/root/dto/tms/TranslationDto.class
new file mode 100644
index 0000000..453281e
Binary files /dev/null and b/target/root-0.0.1-SNAPSHOT/WEB-INF/classes/com/veve_plus/root/dto/tms/TranslationDto.class differ
diff --git a/target/root-0.0.1-SNAPSHOT/WEB-INF/classes/com/veve_plus/root/dto/user/UserDto$UserDtoBuilder.class b/target/root-0.0.1-SNAPSHOT/WEB-INF/classes/com/veve_plus/root/dto/user/UserDto$UserDtoBuilder.class
new file mode 100644
index 0000000..6b7146e
Binary files /dev/null and b/target/root-0.0.1-SNAPSHOT/WEB-INF/classes/com/veve_plus/root/dto/user/UserDto$UserDtoBuilder.class differ
diff --git a/target/root-0.0.1-SNAPSHOT/WEB-INF/classes/com/veve_plus/root/dto/user/UserDto.class b/target/root-0.0.1-SNAPSHOT/WEB-INF/classes/com/veve_plus/root/dto/user/UserDto.class
new file mode 100644
index 0000000..39f11df
Binary files /dev/null and b/target/root-0.0.1-SNAPSHOT/WEB-INF/classes/com/veve_plus/root/dto/user/UserDto.class differ
diff --git a/target/root-0.0.1-SNAPSHOT/WEB-INF/classes/com/veve_plus/root/dto/user/UserRequest$UserRequestBuilder.class b/target/root-0.0.1-SNAPSHOT/WEB-INF/classes/com/veve_plus/root/dto/user/UserRequest$UserRequestBuilder.class
new file mode 100644
index 0000000..d2bc77a
Binary files /dev/null and b/target/root-0.0.1-SNAPSHOT/WEB-INF/classes/com/veve_plus/root/dto/user/UserRequest$UserRequestBuilder.class differ
diff --git a/target/root-0.0.1-SNAPSHOT/WEB-INF/classes/com/veve_plus/root/dto/user/UserRequest.class b/target/root-0.0.1-SNAPSHOT/WEB-INF/classes/com/veve_plus/root/dto/user/UserRequest.class
new file mode 100644
index 0000000..c4adfaa
Binary files /dev/null and b/target/root-0.0.1-SNAPSHOT/WEB-INF/classes/com/veve_plus/root/dto/user/UserRequest.class differ
diff --git a/target/root-0.0.1-SNAPSHOT/WEB-INF/classes/com/veve_plus/root/dto/user/UserResponse$UserResponseBuilder.class b/target/root-0.0.1-SNAPSHOT/WEB-INF/classes/com/veve_plus/root/dto/user/UserResponse$UserResponseBuilder.class
new file mode 100644
index 0000000..347c151
Binary files /dev/null and b/target/root-0.0.1-SNAPSHOT/WEB-INF/classes/com/veve_plus/root/dto/user/UserResponse$UserResponseBuilder.class differ
diff --git a/target/root-0.0.1-SNAPSHOT/WEB-INF/classes/com/veve_plus/root/dto/user/UserResponse.class b/target/root-0.0.1-SNAPSHOT/WEB-INF/classes/com/veve_plus/root/dto/user/UserResponse.class
new file mode 100644
index 0000000..3e60643
Binary files /dev/null and b/target/root-0.0.1-SNAPSHOT/WEB-INF/classes/com/veve_plus/root/dto/user/UserResponse.class differ
diff --git a/target/root-0.0.1-SNAPSHOT/WEB-INF/classes/com/veve_plus/root/dto/user/UserRole$UserRoleBuilder.class b/target/root-0.0.1-SNAPSHOT/WEB-INF/classes/com/veve_plus/root/dto/user/UserRole$UserRoleBuilder.class
new file mode 100644
index 0000000..e2c3b4a
Binary files /dev/null and b/target/root-0.0.1-SNAPSHOT/WEB-INF/classes/com/veve_plus/root/dto/user/UserRole$UserRoleBuilder.class differ
diff --git a/target/root-0.0.1-SNAPSHOT/WEB-INF/classes/com/veve_plus/root/dto/user/UserRole.class b/target/root-0.0.1-SNAPSHOT/WEB-INF/classes/com/veve_plus/root/dto/user/UserRole.class
new file mode 100644
index 0000000..d9481c3
Binary files /dev/null and b/target/root-0.0.1-SNAPSHOT/WEB-INF/classes/com/veve_plus/root/dto/user/UserRole.class differ
diff --git a/target/root-0.0.1-SNAPSHOT/WEB-INF/classes/com/veve_plus/root/dto/user/UserSearchRequest$UserSearchRequestBuilder.class b/target/root-0.0.1-SNAPSHOT/WEB-INF/classes/com/veve_plus/root/dto/user/UserSearchRequest$UserSearchRequestBuilder.class
new file mode 100644
index 0000000..51e1bd2
Binary files /dev/null and b/target/root-0.0.1-SNAPSHOT/WEB-INF/classes/com/veve_plus/root/dto/user/UserSearchRequest$UserSearchRequestBuilder.class differ
diff --git a/target/root-0.0.1-SNAPSHOT/WEB-INF/classes/com/veve_plus/root/dto/user/UserSearchRequest.class b/target/root-0.0.1-SNAPSHOT/WEB-INF/classes/com/veve_plus/root/dto/user/UserSearchRequest.class
new file mode 100644
index 0000000..18c2ca1
Binary files /dev/null and b/target/root-0.0.1-SNAPSHOT/WEB-INF/classes/com/veve_plus/root/dto/user/UserSearchRequest.class differ
diff --git a/target/root-0.0.1-SNAPSHOT/WEB-INF/classes/com/veve_plus/root/entity/Content.class b/target/root-0.0.1-SNAPSHOT/WEB-INF/classes/com/veve_plus/root/entity/Content.class
new file mode 100644
index 0000000..ae9c845
Binary files /dev/null and b/target/root-0.0.1-SNAPSHOT/WEB-INF/classes/com/veve_plus/root/entity/Content.class differ
diff --git a/target/root-0.0.1-SNAPSHOT/WEB-INF/classes/com/veve_plus/root/entity/GSheetData.class b/target/root-0.0.1-SNAPSHOT/WEB-INF/classes/com/veve_plus/root/entity/GSheetData.class
new file mode 100644
index 0000000..beeda55
Binary files /dev/null and b/target/root-0.0.1-SNAPSHOT/WEB-INF/classes/com/veve_plus/root/entity/GSheetData.class differ
diff --git a/target/root-0.0.1-SNAPSHOT/WEB-INF/classes/com/veve_plus/root/entity/GSheetFileData.class b/target/root-0.0.1-SNAPSHOT/WEB-INF/classes/com/veve_plus/root/entity/GSheetFileData.class
new file mode 100644
index 0000000..158e0bc
Binary files /dev/null and b/target/root-0.0.1-SNAPSHOT/WEB-INF/classes/com/veve_plus/root/entity/GSheetFileData.class differ
diff --git a/target/root-0.0.1-SNAPSHOT/WEB-INF/classes/com/veve_plus/root/entity/User$UserBuilder.class b/target/root-0.0.1-SNAPSHOT/WEB-INF/classes/com/veve_plus/root/entity/User$UserBuilder.class
new file mode 100644
index 0000000..0580aa0
Binary files /dev/null and b/target/root-0.0.1-SNAPSHOT/WEB-INF/classes/com/veve_plus/root/entity/User$UserBuilder.class differ
diff --git a/target/root-0.0.1-SNAPSHOT/WEB-INF/classes/com/veve_plus/root/entity/User.class b/target/root-0.0.1-SNAPSHOT/WEB-INF/classes/com/veve_plus/root/entity/User.class
new file mode 100644
index 0000000..cc3c4c3
Binary files /dev/null and b/target/root-0.0.1-SNAPSHOT/WEB-INF/classes/com/veve_plus/root/entity/User.class differ
diff --git a/target/root-0.0.1-SNAPSHOT/WEB-INF/classes/com/veve_plus/root/mapper/CodeMapper.class b/target/root-0.0.1-SNAPSHOT/WEB-INF/classes/com/veve_plus/root/mapper/CodeMapper.class
new file mode 100644
index 0000000..6e2789e
Binary files /dev/null and b/target/root-0.0.1-SNAPSHOT/WEB-INF/classes/com/veve_plus/root/mapper/CodeMapper.class differ
diff --git a/target/root-0.0.1-SNAPSHOT/WEB-INF/classes/com/veve_plus/root/mapper/ContentMapper.class b/target/root-0.0.1-SNAPSHOT/WEB-INF/classes/com/veve_plus/root/mapper/ContentMapper.class
new file mode 100644
index 0000000..457fa87
Binary files /dev/null and b/target/root-0.0.1-SNAPSHOT/WEB-INF/classes/com/veve_plus/root/mapper/ContentMapper.class differ
diff --git a/target/root-0.0.1-SNAPSHOT/WEB-INF/classes/com/veve_plus/root/mapper/GSheetMapper.class b/target/root-0.0.1-SNAPSHOT/WEB-INF/classes/com/veve_plus/root/mapper/GSheetMapper.class
new file mode 100644
index 0000000..5d4e8ae
Binary files /dev/null and b/target/root-0.0.1-SNAPSHOT/WEB-INF/classes/com/veve_plus/root/mapper/GSheetMapper.class differ
diff --git a/target/root-0.0.1-SNAPSHOT/WEB-INF/classes/com/veve_plus/root/mapper/MaterialMapper.class b/target/root-0.0.1-SNAPSHOT/WEB-INF/classes/com/veve_plus/root/mapper/MaterialMapper.class
new file mode 100644
index 0000000..bfcfc53
Binary files /dev/null and b/target/root-0.0.1-SNAPSHOT/WEB-INF/classes/com/veve_plus/root/mapper/MaterialMapper.class differ
diff --git a/target/root-0.0.1-SNAPSHOT/WEB-INF/classes/com/veve_plus/root/mapper/MenuMapper.class b/target/root-0.0.1-SNAPSHOT/WEB-INF/classes/com/veve_plus/root/mapper/MenuMapper.class
new file mode 100644
index 0000000..ba9304d
Binary files /dev/null and b/target/root-0.0.1-SNAPSHOT/WEB-INF/classes/com/veve_plus/root/mapper/MenuMapper.class differ
diff --git a/target/root-0.0.1-SNAPSHOT/WEB-INF/classes/com/veve_plus/root/mapper/RoleMapper.class b/target/root-0.0.1-SNAPSHOT/WEB-INF/classes/com/veve_plus/root/mapper/RoleMapper.class
new file mode 100644
index 0000000..94f1749
Binary files /dev/null and b/target/root-0.0.1-SNAPSHOT/WEB-INF/classes/com/veve_plus/root/mapper/RoleMapper.class differ
diff --git a/target/root-0.0.1-SNAPSHOT/WEB-INF/classes/com/veve_plus/root/mapper/TaskMapper.class b/target/root-0.0.1-SNAPSHOT/WEB-INF/classes/com/veve_plus/root/mapper/TaskMapper.class
new file mode 100644
index 0000000..918c468
Binary files /dev/null and b/target/root-0.0.1-SNAPSHOT/WEB-INF/classes/com/veve_plus/root/mapper/TaskMapper.class differ
diff --git a/target/root-0.0.1-SNAPSHOT/WEB-INF/classes/com/veve_plus/root/mapper/TitleMapper.class b/target/root-0.0.1-SNAPSHOT/WEB-INF/classes/com/veve_plus/root/mapper/TitleMapper.class
new file mode 100644
index 0000000..31b91ba
Binary files /dev/null and b/target/root-0.0.1-SNAPSHOT/WEB-INF/classes/com/veve_plus/root/mapper/TitleMapper.class differ
diff --git a/target/root-0.0.1-SNAPSHOT/WEB-INF/classes/com/veve_plus/root/mapper/TmsMapper.class b/target/root-0.0.1-SNAPSHOT/WEB-INF/classes/com/veve_plus/root/mapper/TmsMapper.class
new file mode 100644
index 0000000..42e46d0
Binary files /dev/null and b/target/root-0.0.1-SNAPSHOT/WEB-INF/classes/com/veve_plus/root/mapper/TmsMapper.class differ
diff --git a/target/root-0.0.1-SNAPSHOT/WEB-INF/classes/com/veve_plus/root/mapper/UserMapper.class b/target/root-0.0.1-SNAPSHOT/WEB-INF/classes/com/veve_plus/root/mapper/UserMapper.class
new file mode 100644
index 0000000..295211a
Binary files /dev/null and b/target/root-0.0.1-SNAPSHOT/WEB-INF/classes/com/veve_plus/root/mapper/UserMapper.class differ
diff --git a/target/root-0.0.1-SNAPSHOT/WEB-INF/classes/com/veve_plus/root/schedule/GSheetSchedule.class b/target/root-0.0.1-SNAPSHOT/WEB-INF/classes/com/veve_plus/root/schedule/GSheetSchedule.class
new file mode 100644
index 0000000..a359e45
Binary files /dev/null and b/target/root-0.0.1-SNAPSHOT/WEB-INF/classes/com/veve_plus/root/schedule/GSheetSchedule.class differ
diff --git a/target/root-0.0.1-SNAPSHOT/WEB-INF/classes/com/veve_plus/root/schedule/TmsScheduler.class b/target/root-0.0.1-SNAPSHOT/WEB-INF/classes/com/veve_plus/root/schedule/TmsScheduler.class
new file mode 100644
index 0000000..68b7861
Binary files /dev/null and b/target/root-0.0.1-SNAPSHOT/WEB-INF/classes/com/veve_plus/root/schedule/TmsScheduler.class differ
diff --git a/target/root-0.0.1-SNAPSHOT/WEB-INF/classes/com/veve_plus/root/service/CodeService.class b/target/root-0.0.1-SNAPSHOT/WEB-INF/classes/com/veve_plus/root/service/CodeService.class
new file mode 100644
index 0000000..f3199af
Binary files /dev/null and b/target/root-0.0.1-SNAPSHOT/WEB-INF/classes/com/veve_plus/root/service/CodeService.class differ
diff --git a/target/root-0.0.1-SNAPSHOT/WEB-INF/classes/com/veve_plus/root/service/ContentService.class b/target/root-0.0.1-SNAPSHOT/WEB-INF/classes/com/veve_plus/root/service/ContentService.class
new file mode 100644
index 0000000..010d985
Binary files /dev/null and b/target/root-0.0.1-SNAPSHOT/WEB-INF/classes/com/veve_plus/root/service/ContentService.class differ
diff --git a/target/root-0.0.1-SNAPSHOT/WEB-INF/classes/com/veve_plus/root/service/CustomUserDetailService.class b/target/root-0.0.1-SNAPSHOT/WEB-INF/classes/com/veve_plus/root/service/CustomUserDetailService.class
new file mode 100644
index 0000000..85999c5
Binary files /dev/null and b/target/root-0.0.1-SNAPSHOT/WEB-INF/classes/com/veve_plus/root/service/CustomUserDetailService.class differ
diff --git a/target/root-0.0.1-SNAPSHOT/WEB-INF/classes/com/veve_plus/root/service/JwtService.class b/target/root-0.0.1-SNAPSHOT/WEB-INF/classes/com/veve_plus/root/service/JwtService.class
new file mode 100644
index 0000000..cda973b
Binary files /dev/null and b/target/root-0.0.1-SNAPSHOT/WEB-INF/classes/com/veve_plus/root/service/JwtService.class differ
diff --git a/target/root-0.0.1-SNAPSHOT/WEB-INF/classes/com/veve_plus/root/service/MaterialService.class b/target/root-0.0.1-SNAPSHOT/WEB-INF/classes/com/veve_plus/root/service/MaterialService.class
new file mode 100644
index 0000000..e0ac98b
Binary files /dev/null and b/target/root-0.0.1-SNAPSHOT/WEB-INF/classes/com/veve_plus/root/service/MaterialService.class differ
diff --git a/target/root-0.0.1-SNAPSHOT/WEB-INF/classes/com/veve_plus/root/service/MenuService.class b/target/root-0.0.1-SNAPSHOT/WEB-INF/classes/com/veve_plus/root/service/MenuService.class
new file mode 100644
index 0000000..8025bd6
Binary files /dev/null and b/target/root-0.0.1-SNAPSHOT/WEB-INF/classes/com/veve_plus/root/service/MenuService.class differ
diff --git a/target/root-0.0.1-SNAPSHOT/WEB-INF/classes/com/veve_plus/root/service/RoleService.class b/target/root-0.0.1-SNAPSHOT/WEB-INF/classes/com/veve_plus/root/service/RoleService.class
new file mode 100644
index 0000000..a9f5f93
Binary files /dev/null and b/target/root-0.0.1-SNAPSHOT/WEB-INF/classes/com/veve_plus/root/service/RoleService.class differ
diff --git a/target/root-0.0.1-SNAPSHOT/WEB-INF/classes/com/veve_plus/root/service/TaskService.class b/target/root-0.0.1-SNAPSHOT/WEB-INF/classes/com/veve_plus/root/service/TaskService.class
new file mode 100644
index 0000000..2f5a162
Binary files /dev/null and b/target/root-0.0.1-SNAPSHOT/WEB-INF/classes/com/veve_plus/root/service/TaskService.class differ
diff --git a/target/root-0.0.1-SNAPSHOT/WEB-INF/classes/com/veve_plus/root/service/TitleService.class b/target/root-0.0.1-SNAPSHOT/WEB-INF/classes/com/veve_plus/root/service/TitleService.class
new file mode 100644
index 0000000..519ccf0
Binary files /dev/null and b/target/root-0.0.1-SNAPSHOT/WEB-INF/classes/com/veve_plus/root/service/TitleService.class differ
diff --git a/target/root-0.0.1-SNAPSHOT/WEB-INF/classes/com/veve_plus/root/service/TmsGSheetService.class b/target/root-0.0.1-SNAPSHOT/WEB-INF/classes/com/veve_plus/root/service/TmsGSheetService.class
new file mode 100644
index 0000000..468d0f4
Binary files /dev/null and b/target/root-0.0.1-SNAPSHOT/WEB-INF/classes/com/veve_plus/root/service/TmsGSheetService.class differ
diff --git a/target/root-0.0.1-SNAPSHOT/WEB-INF/classes/com/veve_plus/root/service/TmsService.class b/target/root-0.0.1-SNAPSHOT/WEB-INF/classes/com/veve_plus/root/service/TmsService.class
new file mode 100644
index 0000000..e24fe63
Binary files /dev/null and b/target/root-0.0.1-SNAPSHOT/WEB-INF/classes/com/veve_plus/root/service/TmsService.class differ
diff --git a/target/root-0.0.1-SNAPSHOT/WEB-INF/classes/com/veve_plus/root/service/UserService.class b/target/root-0.0.1-SNAPSHOT/WEB-INF/classes/com/veve_plus/root/service/UserService.class
new file mode 100644
index 0000000..83c748a
Binary files /dev/null and b/target/root-0.0.1-SNAPSHOT/WEB-INF/classes/com/veve_plus/root/service/UserService.class differ
diff --git a/target/root-0.0.1-SNAPSHOT/WEB-INF/classes/com/veve_plus/root/utils/CustomStringUtils.class b/target/root-0.0.1-SNAPSHOT/WEB-INF/classes/com/veve_plus/root/utils/CustomStringUtils.class
new file mode 100644
index 0000000..20ba78a
Binary files /dev/null and b/target/root-0.0.1-SNAPSHOT/WEB-INF/classes/com/veve_plus/root/utils/CustomStringUtils.class differ
diff --git a/target/root-0.0.1-SNAPSHOT/WEB-INF/classes/com/veve_plus/root/utils/DateTimeUtils.class b/target/root-0.0.1-SNAPSHOT/WEB-INF/classes/com/veve_plus/root/utils/DateTimeUtils.class
new file mode 100644
index 0000000..1f55392
Binary files /dev/null and b/target/root-0.0.1-SNAPSHOT/WEB-INF/classes/com/veve_plus/root/utils/DateTimeUtils.class differ
diff --git a/target/root-0.0.1-SNAPSHOT/WEB-INF/classes/com/veve_plus/root/utils/GSheetsUtils.class b/target/root-0.0.1-SNAPSHOT/WEB-INF/classes/com/veve_plus/root/utils/GSheetsUtils.class
new file mode 100644
index 0000000..8fafdee
Binary files /dev/null and b/target/root-0.0.1-SNAPSHOT/WEB-INF/classes/com/veve_plus/root/utils/GSheetsUtils.class differ
diff --git a/target/root-0.0.1-SNAPSHOT/WEB-INF/classes/googleCredentials.json b/target/root-0.0.1-SNAPSHOT/WEB-INF/classes/googleCredentials.json
new file mode 100644
index 0000000..0962f0e
--- /dev/null
+++ b/target/root-0.0.1-SNAPSHOT/WEB-INF/classes/googleCredentials.json
@@ -0,0 +1,13 @@
+{
+ "web": {
+ "client_id": "1005980214427-7u7ui56hoc592epchsu2bvrtcjmntah1.apps.googleusercontent.com",
+ "project_id": "wide-brook-398209",
+ "auth_uri": "https://accounts.google.com/o/oauth2/auth",
+ "token_uri": "https://oauth2.googleapis.com/token",
+ "auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs",
+ "client_secret": "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",
+ "redirect_uris": [
+ "http://localhost:8888/Callback"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/target/root-0.0.1-SNAPSHOT/WEB-INF/classes/mapper/CodeMapper.xml b/target/root-0.0.1-SNAPSHOT/WEB-INF/classes/mapper/CodeMapper.xml
new file mode 100644
index 0000000..375fd7b
--- /dev/null
+++ b/target/root-0.0.1-SNAPSHOT/WEB-INF/classes/mapper/CodeMapper.xml
@@ -0,0 +1,18 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/target/root-0.0.1-SNAPSHOT/WEB-INF/classes/mapper/ContentMapper.xml b/target/root-0.0.1-SNAPSHOT/WEB-INF/classes/mapper/ContentMapper.xml
new file mode 100644
index 0000000..6e4db66
--- /dev/null
+++ b/target/root-0.0.1-SNAPSHOT/WEB-INF/classes/mapper/ContentMapper.xml
@@ -0,0 +1,51 @@
+
+
+
+
+ UPDATE tb_content
+ SET tms_id = #{tmsId}
+ WHERE content = #{content}
+
+
+
+ UPDATE tb_content
+ SET tms_id = NULL
+ WHERE content = #{content}
+
+
+
+ INSERT INTO tb_content (
+ content,
+ del_yn,
+ tms_id,
+ created_by,
+ updated_by,
+ created_time,
+ updated_time
+ )
+ SELECT
+ #{content},
+ #{locale},
+ #{tmsId},
+ #{createdBy},
+ #{updatedBy},
+ #{createdTime},
+ #{updatedTime}
+ WHERE NOT EXISTS (
+ SELECT *
+ FROM tb_content
+ WHERE content = #{content}
+ )
+
+
+
+
\ No newline at end of file
diff --git a/target/root-0.0.1-SNAPSHOT/WEB-INF/classes/mapper/GSheetMapper.xml b/target/root-0.0.1-SNAPSHOT/WEB-INF/classes/mapper/GSheetMapper.xml
new file mode 100644
index 0000000..33fa97e
--- /dev/null
+++ b/target/root-0.0.1-SNAPSHOT/WEB-INF/classes/mapper/GSheetMapper.xml
@@ -0,0 +1,131 @@
+
+
+
+
+
+ INSERT INTO tb_kst_task_history (
+ `version`
+ ,`title_ge_id`
+ ,disk_type
+ ,platform_code
+ ,title
+ ,chapter
+ ,open_date
+ ,trans_delivery_date
+ ,trans_review_date
+ ,is_trans_review
+ ,affected_delivery_date
+ ,affected_date
+ ,dki_delivery_date
+ ,is_modify
+ ,psd_upload_dealine
+ ,final_subset_upload
+ ,tms_psd_upload
+ ,qc_user_id
+ ,issued_date
+ ,writer
+ ,schedule_change_reason
+ ,is_confirmed
+ ,note
+ ,content_key
+ ,google_api_id
+ ,google_row
+ ,google_sheet_name
+ ,is_urgent
+ ,created_date
+ ,created_by
+ ,updated_date
+ ,updated_by
+ )
+ VALUES
+
+ #{element.version}
+ ,#{element.geId}
+ ,#{element.diskType}
+ ,#{element.platformCode}
+ ,#{element.title}
+ ,#{element.chapter}
+ ,#{element.openDate}
+ ,#{element.transDeliveryDate}
+ ,#{element.transReviewDate}
+ ,#{element.isTransReview}
+ ,#{element.affectedDeliveryDate}
+ ,#{element.affectedMonth}
+ ,#{element.dkiDeliveryDate}
+ ,#{element.isModify}
+ ,#{element.psdUploadDealine}
+ ,#{element.finalSubsetUpload}
+ ,#{element.tmsPsdUpload}
+ ,#{element.qcUserId}
+ ,#{element.issuedDate}
+ ,#{element.writer}
+ ,#{element.scheduleChangeReason}
+ ,#{element.isConfirmed}
+ ,#{element.note}
+ ,#{element.contentKey}
+ ,#{element.googleApiId}
+ ,#{element.googleRow}
+ ,#{element.language}
+ ,#{element.isUrgent}
+ ,SYSDATE()
+ ,#{element.createdBy}
+ ,SYSDATE()
+ ,'BATCH'
+
+
+
+
+
+
+ INSERT INTO tb_kidari_file_history (
+ version
+ ,language
+ ,tms
+ ,content
+ ,is_censored
+ ,file_spec
+ ,use_us_psd
+ ,is_set
+ ,is_logo
+ ,dm_name
+ ,psd_url_kr
+ ,psd_url_en
+ ,tr_url
+ ,note
+ ,memo
+ ,created_by
+ ,updated_by
+ ,created_time
+ ,updated_time
+ )
+ VALUES
+
+ #{element.version}
+ ,#{element.language}
+ ,#{element.tms}
+ ,#{element.content}
+ ,#{element.isCensored}
+ ,#{element.fileSpec}
+ ,#{element.useUsPsd}
+ ,#{element.is_set}
+ ,#{element.is_logo}
+ ,#{element.dm_name}
+ ,#{element.psd_url_kr}
+ ,#{element.psd_url_en}
+ ,#{element.tr_url}
+ ,#{element.note}
+ ,#{element.memo}
+ ,'BATCH'
+ ,'BATCH'
+ ,SYSDATE()
+ ,SYSDATE()
+
+
+
\ No newline at end of file
diff --git a/target/root-0.0.1-SNAPSHOT/WEB-INF/classes/mapper/MaterialMapper.xml b/target/root-0.0.1-SNAPSHOT/WEB-INF/classes/mapper/MaterialMapper.xml
new file mode 100644
index 0000000..64f497b
--- /dev/null
+++ b/target/root-0.0.1-SNAPSHOT/WEB-INF/classes/mapper/MaterialMapper.xml
@@ -0,0 +1,165 @@
+
+
+
+
+
+
+ UPDATE tb_kst_task
+ SET download_status = #{downloadStatus}
+ , download_date = #{downloadDate}
+ , download_user = #{downloadUser}
+ , is_trans_review = #{translateStatus}
+ , editor_note = #{editorNote}
+ , kst_note = #{kstNote}
+ , qc_note = #{qcNote}
+ , tms_chapter = #{tmsChapter}
+ WHERE idx = #{id}
+
+
+
+ UPDATE tb_kst_task tkt
+ INNER JOIN (
+ SELECT tkt.idx
+ FROM tb_kst_task tkt
+ INNER JOIN tb_content tc
+ ON tc.content = tkt.title
+ AND tc.tms_id = #{tmsId}
+ WHERE tkt.language = CASE WHEN #{language} = 'de_DE' THEN 'DE'
+ WHEN #{language} = 'en_US' THEN 'US'
+ WHEN #{language} = 'es_ES' THEN 'ES'
+ WHEN #{language} = 'fr_FR' THEN 'FR'
+ WHEN #{language} = 'ja_JP' THEN 'JP'
+ WHEN #{language} = 'ko_KR' THEN 'KR'
+ WHEN #{language} = 'zh_CN' THEN 'CN'
+ WHEN #{language} = 'zh_TW' THEN 'TW'
+ WHEN #{language} = 'th_TH' THEN 'TH'
+ WHEN #{language} = 'tr_TR' THEN 'TR'
+ WHEN #{language} = 'ar_001' THEN 'AR'
+ END
+ AND tkt.chapter = #{chapter}
+ ) target_task
+ ON tkt.idx = target_task.idx
+ SET tkt.trans_type = #{transType},
+ tkt.translation_download_status = '01'
+
+
+
+ INSERT INTO tb_kst_task (
+ language
+ , title
+ , chapter
+ , tms_chapter
+ , affected_delivery_date
+ , dki_delivery_date
+ , is_trans_review
+ , is_urgent
+ , created_date
+ , created_by
+ , updated_date
+ , updated_by
+ ) VALUES (
+ #{language}
+ , #{title}
+ , #{chapter}
+ , #{chapter}
+ , #{affectedDeliveryDate}
+ , #{dkiDeliveryDate}
+ , #{isTransReview}
+ , #{isUrgent}
+ , SYSDATE()
+ , 'SYSTEM'
+ , SYSDATE()
+ , 'SYSTEM'
+ )
+ ON DUPLICATE KEY UPDATE
+ language = #{language}
+ , title = #{title}
+ , chapter = #{chapter}
+ , affected_delivery_date = #{affectedDeliveryDate}
+ , dki_delivery_date = #{dkiDeliveryDate}
+ , is_trans_review = #{isTransReview}
+ , updated_date = SYSDATE()
+ , updated_by = 'SYSTEM'
+
+
+
+ UPDATE tb_kst_task
+ SET typing_status = #{typingStatus}
+ , type_complete_time = CASE WHEN #{typingStatus} = 2
+ THEN DATE_FORMAT(SYSDATE(), '%Y%m%d%H%i%s')
+ ELSE NULL
+ END
+ , updated_date = SYSDATE()
+ , updated_by = 'SYSTEM'
+ WHERE language = #{language}
+ AND chapter = #{chapter}
+ AND title = (select content from tb_content where tms_id = #{tmsId})
+
+
+
+ UPDATE tb_kst_task
+ SET typing_status = #{typingStatus}
+ , type_complete_time = CASE WHEN #{typingStatus} = 2
+ THEN DATE_FORMAT(SYSDATE(), '%Y%m%d%H%i%s')
+ ELSE NULL
+ END
+ , updated_date = SYSDATE()
+ , updated_by = 'SYSTEM'
+ WHERE language = #{language}
+ AND chapter = #{chapter}
+ AND title = (select content from tb_content where tooning_id = #{tmsId})
+
+
+
+
+
\ No newline at end of file
diff --git a/target/root-0.0.1-SNAPSHOT/WEB-INF/classes/mapper/MenuMapper.xml b/target/root-0.0.1-SNAPSHOT/WEB-INF/classes/mapper/MenuMapper.xml
new file mode 100644
index 0000000..1323f68
--- /dev/null
+++ b/target/root-0.0.1-SNAPSHOT/WEB-INF/classes/mapper/MenuMapper.xml
@@ -0,0 +1,87 @@
+
+
+
+
+
+
+
+ INSERT INTO tb_menu (pid, type, name, url, menu_sort, icon, status, permission, created_by, updated_by, created_time, updated_time)
+ VALUES (
+ #{pid},
+ #{type},
+ #{name},
+ #{url},
+ #{menuSort},
+ #{icon},
+ #{status},
+ #{permission},
+ #{createdBy},
+ #{updatedBy},
+ #{createdTime},
+ #{updatedTime}
+ )
+
+
+ UPDATE tb_menu
+ SET
+ pid = #{pid},
+ type = #{type},
+ name = #{name},
+ url = #{url},
+ menu_sort = #{menuSort},
+ icon = #{icon},
+ status= #{status},
+ permission = #{permission},
+ updated_by = #{updatedBy},
+ updated_time = #{updatedTime}
+ WHERE
+ menu_id = #{menuId}
+
+
+
+
+
+
diff --git a/target/root-0.0.1-SNAPSHOT/WEB-INF/classes/mapper/RoleMapper.xml b/target/root-0.0.1-SNAPSHOT/WEB-INF/classes/mapper/RoleMapper.xml
new file mode 100644
index 0000000..73fa09a
--- /dev/null
+++ b/target/root-0.0.1-SNAPSHOT/WEB-INF/classes/mapper/RoleMapper.xml
@@ -0,0 +1,108 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ INSERT INTO tb_role (
+ role_id,
+ name,
+ description,
+ status,
+ created_by,
+ updated_by,
+ created_time,
+ updated_time
+ ) VALUES (
+ #{roleId},
+ #{name},
+ #{description},
+ #{status},
+ #{createdBy},
+ #{updatedBy},
+ #{createdTime},
+ #{updatedTime}
+ )
+
+
+ UPDATE tb_role
+ SET
+ name = #{name},
+ description = #{description},
+ status = #{status},
+ updated_by = #{updatedBy},
+ updated_time = #{updatedTime}
+ WHERE
+ role_id = #{roleId}
+
+
+
+ DELETE FROM tb_roles_menus WHERE role_id = #{roleId}
+
+
+
+
+
diff --git a/target/root-0.0.1-SNAPSHOT/WEB-INF/classes/mapper/TaskMapper.xml b/target/root-0.0.1-SNAPSHOT/WEB-INF/classes/mapper/TaskMapper.xml
new file mode 100644
index 0000000..823635b
--- /dev/null
+++ b/target/root-0.0.1-SNAPSHOT/WEB-INF/classes/mapper/TaskMapper.xml
@@ -0,0 +1,63 @@
+
+
+
+
+
+
+
+ UPDATE tb_task
+ SET edit_status = #{editStatus}
+ WHERE idx = #{taskId}
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/target/root-0.0.1-SNAPSHOT/WEB-INF/classes/mapper/TitleMapper.xml b/target/root-0.0.1-SNAPSHOT/WEB-INF/classes/mapper/TitleMapper.xml
new file mode 100644
index 0000000..56043f0
--- /dev/null
+++ b/target/root-0.0.1-SNAPSHOT/WEB-INF/classes/mapper/TitleMapper.xml
@@ -0,0 +1,88 @@
+
+
+
+
+
+
+
+ UPDATE tb_content_title
+ SET font_size = #{fontSize}
+ , font_type_code = #{fontTypeCode}
+ , updated_time = now()
+ , updated_by = '000'
+ WHERE idx = #{id}
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/target/root-0.0.1-SNAPSHOT/WEB-INF/classes/mapper/TmsMapper.xml b/target/root-0.0.1-SNAPSHOT/WEB-INF/classes/mapper/TmsMapper.xml
new file mode 100644
index 0000000..ce6148b
--- /dev/null
+++ b/target/root-0.0.1-SNAPSHOT/WEB-INF/classes/mapper/TmsMapper.xml
@@ -0,0 +1,165 @@
+
+
+
+
+ INSERT INTO tb_translation (
+ tms_id,
+ chapter,
+ language_code,
+ seq_no,
+ coordinate_x,
+ coordinate_y,
+ width,
+ height,
+ text_content,
+ color_code,
+ del_flg,
+ created_by,
+ updated_by,
+ created_time,
+ updated_time
+ ) VALUES (
+ #{tmsId},
+ #{chapter},
+ #{languageCode},
+ #{seqNo},
+ #{positionX},
+ #{positionY},
+ #{width},
+ #{height},
+ #{textContent},
+ #{colorCode},
+ #{delFlg},
+ #{createdBy},
+ #{updatedBy},
+ SYSDATE(),
+ SYSDATE()
+ )
+ ON DUPLICATE KEY UPDATE
+ coordinate_x = #{positionX},
+ coordinate_y = #{positionY},
+ width = #{width},
+ height = #{height},
+ text_content = #{textContent},
+ color_code = #{colorCode},
+ del_flg = #{delFlg},
+ created_by = #{createdBy},
+ updated_by = #{updatedBy},
+ updated_time = SYSDATE()
+
+
+
+ INSERT INTO tb_tms_project (
+ project_id,
+ title,
+ version,
+ locale,
+ del_flg,
+ archived_flg,
+ bookmark_flg,
+ created_by,
+ updated_by,
+ created_time,
+ updated_time
+ ) VALUES (
+ #{projectId},
+ #{title},
+ #{version},
+ #{locale},
+ #{delFlg},
+ #{archivedFlg},
+ #{bookmarkFlg},
+ #{createdBy},
+ #{updatedBy},
+ SYSDATE(),
+ SYSDATE()
+ )
+ ON DUPLICATE KEY UPDATE
+ title = #{title},
+ version = #{version},
+ locale = #{locale},
+ del_flg = #{delFlg},
+ archived_flg = #{archivedFlg},
+ bookmark_flg = #{bookmarkFlg},
+ created_by = #{createdBy},
+ updated_by = #{updatedBy},
+ updated_time = SYSDATE()
+
+
+
+ INSERT INTO tb_tms_project_locale (
+ project_id,
+ locale
+ )
+ SELECT
+ #{projectId},
+ #{locale}
+ WHERE NOT EXISTS (
+ SELECT *
+ FROM tb_tms_project_locale
+ WHERE project_id = #{projectId}
+ AND locale = #{locale}
+ )
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/target/root-0.0.1-SNAPSHOT/WEB-INF/classes/mapper/UserMapper.xml b/target/root-0.0.1-SNAPSHOT/WEB-INF/classes/mapper/UserMapper.xml
new file mode 100644
index 0000000..1464a7d
--- /dev/null
+++ b/target/root-0.0.1-SNAPSHOT/WEB-INF/classes/mapper/UserMapper.xml
@@ -0,0 +1,260 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ INSERT INTO tb_user (
+ user_id,
+ dept_id,
+ username,
+ first_name,
+ last_name,
+ gender,
+ phone,
+ email,
+ contract_no,
+ contract_date,
+ identity_no,
+ issued_date,
+ issued_place,
+ tax_code,
+ avatar_name,
+ avatar_path,
+ password,
+ download_password,
+ is_admin,
+ is_manager,
+ is_locked,
+ is_expired,
+ is_credential_expired,
+ status,
+ level,
+ bank,
+ bank_account,
+ classification,
+ created_by,
+ updated_by,
+ pwd_reset_time,
+ created_time,
+ updated_time
+ )
+ VALUES (
+ #{userId},
+ #{deptId},
+ #{username},
+ #{firstName},
+ #{lastName},
+ #{gender},
+ #{phone},
+ #{email},
+ #{contractNo},
+ #{contractDate},
+ #{identityNo},
+ #{issuedDate},
+ #{issuedPlace},
+ #{taxCode},
+ #{avatarName},
+ #{avatarPath},
+ #{password},
+ SHA2(#{downloadPassword}, '512'),
+ #{isAdmin},
+ #{isManager},
+ #{isLocked},
+ #{isExpired},
+ #{isCredentialExpired},
+ #{status},
+ #{level},
+ #{bank},
+ #{bankAccount},
+ #{classification},
+ #{createdBy},
+ #{updatedBy},
+ #{pwdResetTime},
+ SYSDATE(),
+ SYSDATE()
+ )
+
+
+
+ INSERT INTO tb_users_roles (
+ user_id,
+ role_id,
+ created_by,
+ updated_by,
+ created_time,
+ updated_time
+ ) VALUES (
+ #{userId},
+ #{roleId},
+ #{createdBy},
+ #{updatedBy},
+ SYSDATE(),
+ SYSDATE()
+ )
+
+
+
+ UPDATE tb_user
+ SET
+ dept_id = #{deptId},
+ username = #{username},
+ first_name = #{firstName},
+ last_name = #{lastName},
+ gender = #{gender},
+ phone = #{phone},
+
+ contract_no = #{contractNo},
+ contract_date = #{contractDate},
+ identity_no = #{identityNo},
+ issued_date = #{issuedDate},
+ issued_place = #{issuedPlace},
+ tax_code = #{taxCode},
+ is_manager = #{isManager},
+ classification = #{classification},
+ status = #{status},
+ level = #{level},
+ bank = #{bank},
+ bank_account = #{bankAccount},
+ updated_by = #{updatedBy},
+ updated_time = SYSDATE()
+ WHERE user_id = #{userId}
+
+
+
+ DELETE FROM tb_users_roles WHERE user_id = #{userId}
+
+
+
+
+
\ No newline at end of file
diff --git a/target/root-0.0.1-SNAPSHOT/WEB-INF/classes/tokens/StoredCredential b/target/root-0.0.1-SNAPSHOT/WEB-INF/classes/tokens/StoredCredential
new file mode 100644
index 0000000..f832d63
Binary files /dev/null and b/target/root-0.0.1-SNAPSHOT/WEB-INF/classes/tokens/StoredCredential differ
diff --git a/target/root-0.0.1-SNAPSHOT/WEB-INF/lib/HikariCP-5.1.0.jar b/target/root-0.0.1-SNAPSHOT/WEB-INF/lib/HikariCP-5.1.0.jar
new file mode 100644
index 0000000..0aa1c9f
Binary files /dev/null and b/target/root-0.0.1-SNAPSHOT/WEB-INF/lib/HikariCP-5.1.0.jar differ
diff --git a/target/root-0.0.1-SNAPSHOT/WEB-INF/lib/checker-qual-3.12.0.jar b/target/root-0.0.1-SNAPSHOT/WEB-INF/lib/checker-qual-3.12.0.jar
new file mode 100644
index 0000000..e9eed80
Binary files /dev/null and b/target/root-0.0.1-SNAPSHOT/WEB-INF/lib/checker-qual-3.12.0.jar differ
diff --git a/target/root-0.0.1-SNAPSHOT/WEB-INF/lib/classmate-1.7.0.jar b/target/root-0.0.1-SNAPSHOT/WEB-INF/lib/classmate-1.7.0.jar
new file mode 100644
index 0000000..984a779
Binary files /dev/null and b/target/root-0.0.1-SNAPSHOT/WEB-INF/lib/classmate-1.7.0.jar differ
diff --git a/target/root-0.0.1-SNAPSHOT/WEB-INF/lib/commons-codec-1.16.1.jar b/target/root-0.0.1-SNAPSHOT/WEB-INF/lib/commons-codec-1.16.1.jar
new file mode 100644
index 0000000..f896649
Binary files /dev/null and b/target/root-0.0.1-SNAPSHOT/WEB-INF/lib/commons-codec-1.16.1.jar differ
diff --git a/target/root-0.0.1-SNAPSHOT/WEB-INF/lib/commons-lang3-3.14.0.jar b/target/root-0.0.1-SNAPSHOT/WEB-INF/lib/commons-lang3-3.14.0.jar
new file mode 100644
index 0000000..da9302f
Binary files /dev/null and b/target/root-0.0.1-SNAPSHOT/WEB-INF/lib/commons-lang3-3.14.0.jar differ
diff --git a/target/root-0.0.1-SNAPSHOT/WEB-INF/lib/commons-logging-1.2.jar b/target/root-0.0.1-SNAPSHOT/WEB-INF/lib/commons-logging-1.2.jar
new file mode 100644
index 0000000..93a3b9f
Binary files /dev/null and b/target/root-0.0.1-SNAPSHOT/WEB-INF/lib/commons-logging-1.2.jar differ
diff --git a/target/root-0.0.1-SNAPSHOT/WEB-INF/lib/error_prone_annotations-2.11.0.jar b/target/root-0.0.1-SNAPSHOT/WEB-INF/lib/error_prone_annotations-2.11.0.jar
new file mode 100644
index 0000000..bec7656
Binary files /dev/null and b/target/root-0.0.1-SNAPSHOT/WEB-INF/lib/error_prone_annotations-2.11.0.jar differ
diff --git a/target/root-0.0.1-SNAPSHOT/WEB-INF/lib/failureaccess-1.0.1.jar b/target/root-0.0.1-SNAPSHOT/WEB-INF/lib/failureaccess-1.0.1.jar
new file mode 100644
index 0000000..9b56dc7
Binary files /dev/null and b/target/root-0.0.1-SNAPSHOT/WEB-INF/lib/failureaccess-1.0.1.jar differ
diff --git a/target/root-0.0.1-SNAPSHOT/WEB-INF/lib/google-api-client-2.0.0.jar b/target/root-0.0.1-SNAPSHOT/WEB-INF/lib/google-api-client-2.0.0.jar
new file mode 100644
index 0000000..fd8e989
Binary files /dev/null and b/target/root-0.0.1-SNAPSHOT/WEB-INF/lib/google-api-client-2.0.0.jar differ
diff --git a/target/root-0.0.1-SNAPSHOT/WEB-INF/lib/google-api-services-sheets-v4-rev20220927-2.0.0.jar b/target/root-0.0.1-SNAPSHOT/WEB-INF/lib/google-api-services-sheets-v4-rev20220927-2.0.0.jar
new file mode 100644
index 0000000..c1fd73a
Binary files /dev/null and b/target/root-0.0.1-SNAPSHOT/WEB-INF/lib/google-api-services-sheets-v4-rev20220927-2.0.0.jar differ
diff --git a/target/root-0.0.1-SNAPSHOT/WEB-INF/lib/google-http-client-1.42.1.jar b/target/root-0.0.1-SNAPSHOT/WEB-INF/lib/google-http-client-1.42.1.jar
new file mode 100644
index 0000000..b553c7e
Binary files /dev/null and b/target/root-0.0.1-SNAPSHOT/WEB-INF/lib/google-http-client-1.42.1.jar differ
diff --git a/target/root-0.0.1-SNAPSHOT/WEB-INF/lib/google-http-client-apache-v2-1.42.1.jar b/target/root-0.0.1-SNAPSHOT/WEB-INF/lib/google-http-client-apache-v2-1.42.1.jar
new file mode 100644
index 0000000..b86bd3d
Binary files /dev/null and b/target/root-0.0.1-SNAPSHOT/WEB-INF/lib/google-http-client-apache-v2-1.42.1.jar differ
diff --git a/target/root-0.0.1-SNAPSHOT/WEB-INF/lib/google-http-client-gson-1.42.1.jar b/target/root-0.0.1-SNAPSHOT/WEB-INF/lib/google-http-client-gson-1.42.1.jar
new file mode 100644
index 0000000..7c5676f
Binary files /dev/null and b/target/root-0.0.1-SNAPSHOT/WEB-INF/lib/google-http-client-gson-1.42.1.jar differ
diff --git a/target/root-0.0.1-SNAPSHOT/WEB-INF/lib/google-oauth-client-1.34.1.jar b/target/root-0.0.1-SNAPSHOT/WEB-INF/lib/google-oauth-client-1.34.1.jar
new file mode 100644
index 0000000..795f7e4
Binary files /dev/null and b/target/root-0.0.1-SNAPSHOT/WEB-INF/lib/google-oauth-client-1.34.1.jar differ
diff --git a/target/root-0.0.1-SNAPSHOT/WEB-INF/lib/google-oauth-client-java6-1.34.1.jar b/target/root-0.0.1-SNAPSHOT/WEB-INF/lib/google-oauth-client-java6-1.34.1.jar
new file mode 100644
index 0000000..c01c79a
Binary files /dev/null and b/target/root-0.0.1-SNAPSHOT/WEB-INF/lib/google-oauth-client-java6-1.34.1.jar differ
diff --git a/target/root-0.0.1-SNAPSHOT/WEB-INF/lib/google-oauth-client-jetty-1.34.1.jar b/target/root-0.0.1-SNAPSHOT/WEB-INF/lib/google-oauth-client-jetty-1.34.1.jar
new file mode 100644
index 0000000..178d1b9
Binary files /dev/null and b/target/root-0.0.1-SNAPSHOT/WEB-INF/lib/google-oauth-client-jetty-1.34.1.jar differ
diff --git a/target/root-0.0.1-SNAPSHOT/WEB-INF/lib/grpc-context-1.27.2.jar b/target/root-0.0.1-SNAPSHOT/WEB-INF/lib/grpc-context-1.27.2.jar
new file mode 100644
index 0000000..fd8615e
Binary files /dev/null and b/target/root-0.0.1-SNAPSHOT/WEB-INF/lib/grpc-context-1.27.2.jar differ
diff --git a/target/root-0.0.1-SNAPSHOT/WEB-INF/lib/gson-2.10.1.jar b/target/root-0.0.1-SNAPSHOT/WEB-INF/lib/gson-2.10.1.jar
new file mode 100644
index 0000000..a88c5bd
Binary files /dev/null and b/target/root-0.0.1-SNAPSHOT/WEB-INF/lib/gson-2.10.1.jar differ
diff --git a/target/root-0.0.1-SNAPSHOT/WEB-INF/lib/guava-31.1-jre.jar b/target/root-0.0.1-SNAPSHOT/WEB-INF/lib/guava-31.1-jre.jar
new file mode 100644
index 0000000..1681922
Binary files /dev/null and b/target/root-0.0.1-SNAPSHOT/WEB-INF/lib/guava-31.1-jre.jar differ
diff --git a/target/root-0.0.1-SNAPSHOT/WEB-INF/lib/hibernate-validator-8.0.1.Final.jar b/target/root-0.0.1-SNAPSHOT/WEB-INF/lib/hibernate-validator-8.0.1.Final.jar
new file mode 100644
index 0000000..3f966da
Binary files /dev/null and b/target/root-0.0.1-SNAPSHOT/WEB-INF/lib/hibernate-validator-8.0.1.Final.jar differ
diff --git a/target/root-0.0.1-SNAPSHOT/WEB-INF/lib/httpclient-4.5.13.jar b/target/root-0.0.1-SNAPSHOT/WEB-INF/lib/httpclient-4.5.13.jar
new file mode 100644
index 0000000..218ee25
Binary files /dev/null and b/target/root-0.0.1-SNAPSHOT/WEB-INF/lib/httpclient-4.5.13.jar differ
diff --git a/target/root-0.0.1-SNAPSHOT/WEB-INF/lib/httpcore-4.4.16.jar b/target/root-0.0.1-SNAPSHOT/WEB-INF/lib/httpcore-4.4.16.jar
new file mode 100644
index 0000000..f0bdebe
Binary files /dev/null and b/target/root-0.0.1-SNAPSHOT/WEB-INF/lib/httpcore-4.4.16.jar differ
diff --git a/target/root-0.0.1-SNAPSHOT/WEB-INF/lib/j2objc-annotations-1.3.jar b/target/root-0.0.1-SNAPSHOT/WEB-INF/lib/j2objc-annotations-1.3.jar
new file mode 100644
index 0000000..a429c72
Binary files /dev/null and b/target/root-0.0.1-SNAPSHOT/WEB-INF/lib/j2objc-annotations-1.3.jar differ
diff --git a/target/root-0.0.1-SNAPSHOT/WEB-INF/lib/jackson-annotations-2.17.2.jar b/target/root-0.0.1-SNAPSHOT/WEB-INF/lib/jackson-annotations-2.17.2.jar
new file mode 100644
index 0000000..c13bcb9
Binary files /dev/null and b/target/root-0.0.1-SNAPSHOT/WEB-INF/lib/jackson-annotations-2.17.2.jar differ
diff --git a/target/root-0.0.1-SNAPSHOT/WEB-INF/lib/jackson-core-2.17.2.jar b/target/root-0.0.1-SNAPSHOT/WEB-INF/lib/jackson-core-2.17.2.jar
new file mode 100644
index 0000000..34be902
Binary files /dev/null and b/target/root-0.0.1-SNAPSHOT/WEB-INF/lib/jackson-core-2.17.2.jar differ
diff --git a/target/root-0.0.1-SNAPSHOT/WEB-INF/lib/jackson-databind-2.17.2.jar b/target/root-0.0.1-SNAPSHOT/WEB-INF/lib/jackson-databind-2.17.2.jar
new file mode 100644
index 0000000..3750b8c
Binary files /dev/null and b/target/root-0.0.1-SNAPSHOT/WEB-INF/lib/jackson-databind-2.17.2.jar differ
diff --git a/target/root-0.0.1-SNAPSHOT/WEB-INF/lib/jackson-dataformat-yaml-2.17.2.jar b/target/root-0.0.1-SNAPSHOT/WEB-INF/lib/jackson-dataformat-yaml-2.17.2.jar
new file mode 100644
index 0000000..c47febc
Binary files /dev/null and b/target/root-0.0.1-SNAPSHOT/WEB-INF/lib/jackson-dataformat-yaml-2.17.2.jar differ
diff --git a/target/root-0.0.1-SNAPSHOT/WEB-INF/lib/jackson-datatype-jdk8-2.17.2.jar b/target/root-0.0.1-SNAPSHOT/WEB-INF/lib/jackson-datatype-jdk8-2.17.2.jar
new file mode 100644
index 0000000..c6ff58a
Binary files /dev/null and b/target/root-0.0.1-SNAPSHOT/WEB-INF/lib/jackson-datatype-jdk8-2.17.2.jar differ
diff --git a/target/root-0.0.1-SNAPSHOT/WEB-INF/lib/jackson-datatype-jsr310-2.17.2.jar b/target/root-0.0.1-SNAPSHOT/WEB-INF/lib/jackson-datatype-jsr310-2.17.2.jar
new file mode 100644
index 0000000..3aa01f1
Binary files /dev/null and b/target/root-0.0.1-SNAPSHOT/WEB-INF/lib/jackson-datatype-jsr310-2.17.2.jar differ
diff --git a/target/root-0.0.1-SNAPSHOT/WEB-INF/lib/jackson-module-parameter-names-2.17.2.jar b/target/root-0.0.1-SNAPSHOT/WEB-INF/lib/jackson-module-parameter-names-2.17.2.jar
new file mode 100644
index 0000000..288bf56
Binary files /dev/null and b/target/root-0.0.1-SNAPSHOT/WEB-INF/lib/jackson-module-parameter-names-2.17.2.jar differ
diff --git a/target/root-0.0.1-SNAPSHOT/WEB-INF/lib/jakarta.activation-api-2.1.3.jar b/target/root-0.0.1-SNAPSHOT/WEB-INF/lib/jakarta.activation-api-2.1.3.jar
new file mode 100644
index 0000000..0d015d5
Binary files /dev/null and b/target/root-0.0.1-SNAPSHOT/WEB-INF/lib/jakarta.activation-api-2.1.3.jar differ
diff --git a/target/root-0.0.1-SNAPSHOT/WEB-INF/lib/jakarta.annotation-api-2.1.1.jar b/target/root-0.0.1-SNAPSHOT/WEB-INF/lib/jakarta.annotation-api-2.1.1.jar
new file mode 100644
index 0000000..e13b7df
Binary files /dev/null and b/target/root-0.0.1-SNAPSHOT/WEB-INF/lib/jakarta.annotation-api-2.1.1.jar differ
diff --git a/target/root-0.0.1-SNAPSHOT/WEB-INF/lib/jakarta.validation-api-3.0.2.jar b/target/root-0.0.1-SNAPSHOT/WEB-INF/lib/jakarta.validation-api-3.0.2.jar
new file mode 100644
index 0000000..254c7a2
Binary files /dev/null and b/target/root-0.0.1-SNAPSHOT/WEB-INF/lib/jakarta.validation-api-3.0.2.jar differ
diff --git a/target/root-0.0.1-SNAPSHOT/WEB-INF/lib/jakarta.xml.bind-api-4.0.2.jar b/target/root-0.0.1-SNAPSHOT/WEB-INF/lib/jakarta.xml.bind-api-4.0.2.jar
new file mode 100644
index 0000000..4824282
Binary files /dev/null and b/target/root-0.0.1-SNAPSHOT/WEB-INF/lib/jakarta.xml.bind-api-4.0.2.jar differ
diff --git a/target/root-0.0.1-SNAPSHOT/WEB-INF/lib/jboss-logging-3.5.3.Final.jar b/target/root-0.0.1-SNAPSHOT/WEB-INF/lib/jboss-logging-3.5.3.Final.jar
new file mode 100644
index 0000000..a922e47
Binary files /dev/null and b/target/root-0.0.1-SNAPSHOT/WEB-INF/lib/jboss-logging-3.5.3.Final.jar differ
diff --git a/target/root-0.0.1-SNAPSHOT/WEB-INF/lib/jjwt-api-0.12.5.jar b/target/root-0.0.1-SNAPSHOT/WEB-INF/lib/jjwt-api-0.12.5.jar
new file mode 100644
index 0000000..fe4810d
Binary files /dev/null and b/target/root-0.0.1-SNAPSHOT/WEB-INF/lib/jjwt-api-0.12.5.jar differ
diff --git a/target/root-0.0.1-SNAPSHOT/WEB-INF/lib/jjwt-impl-0.12.5.jar b/target/root-0.0.1-SNAPSHOT/WEB-INF/lib/jjwt-impl-0.12.5.jar
new file mode 100644
index 0000000..3964071
Binary files /dev/null and b/target/root-0.0.1-SNAPSHOT/WEB-INF/lib/jjwt-impl-0.12.5.jar differ
diff --git a/target/root-0.0.1-SNAPSHOT/WEB-INF/lib/jjwt-jackson-0.12.5.jar b/target/root-0.0.1-SNAPSHOT/WEB-INF/lib/jjwt-jackson-0.12.5.jar
new file mode 100644
index 0000000..7602cf4
Binary files /dev/null and b/target/root-0.0.1-SNAPSHOT/WEB-INF/lib/jjwt-jackson-0.12.5.jar differ
diff --git a/target/root-0.0.1-SNAPSHOT/WEB-INF/lib/jsch-0.1.55.jar b/target/root-0.0.1-SNAPSHOT/WEB-INF/lib/jsch-0.1.55.jar
new file mode 100644
index 0000000..c6fd21d
Binary files /dev/null and b/target/root-0.0.1-SNAPSHOT/WEB-INF/lib/jsch-0.1.55.jar differ
diff --git a/target/root-0.0.1-SNAPSHOT/WEB-INF/lib/json-20210307.jar b/target/root-0.0.1-SNAPSHOT/WEB-INF/lib/json-20210307.jar
new file mode 100644
index 0000000..6583ea5
Binary files /dev/null and b/target/root-0.0.1-SNAPSHOT/WEB-INF/lib/json-20210307.jar differ
diff --git a/target/root-0.0.1-SNAPSHOT/WEB-INF/lib/jsr305-3.0.2.jar b/target/root-0.0.1-SNAPSHOT/WEB-INF/lib/jsr305-3.0.2.jar
new file mode 100644
index 0000000..59222d9
Binary files /dev/null and b/target/root-0.0.1-SNAPSHOT/WEB-INF/lib/jsr305-3.0.2.jar differ
diff --git a/target/root-0.0.1-SNAPSHOT/WEB-INF/lib/jul-to-slf4j-2.0.13.jar b/target/root-0.0.1-SNAPSHOT/WEB-INF/lib/jul-to-slf4j-2.0.13.jar
new file mode 100644
index 0000000..cbd370c
Binary files /dev/null and b/target/root-0.0.1-SNAPSHOT/WEB-INF/lib/jul-to-slf4j-2.0.13.jar differ
diff --git a/target/root-0.0.1-SNAPSHOT/WEB-INF/lib/listenablefuture-9999.0-empty-to-avoid-conflict-with-guava.jar b/target/root-0.0.1-SNAPSHOT/WEB-INF/lib/listenablefuture-9999.0-empty-to-avoid-conflict-with-guava.jar
new file mode 100644
index 0000000..45832c0
Binary files /dev/null and b/target/root-0.0.1-SNAPSHOT/WEB-INF/lib/listenablefuture-9999.0-empty-to-avoid-conflict-with-guava.jar differ
diff --git a/target/root-0.0.1-SNAPSHOT/WEB-INF/lib/log4j-api-2.23.1.jar b/target/root-0.0.1-SNAPSHOT/WEB-INF/lib/log4j-api-2.23.1.jar
new file mode 100644
index 0000000..0e8e3f5
Binary files /dev/null and b/target/root-0.0.1-SNAPSHOT/WEB-INF/lib/log4j-api-2.23.1.jar differ
diff --git a/target/root-0.0.1-SNAPSHOT/WEB-INF/lib/log4j-to-slf4j-2.23.1.jar b/target/root-0.0.1-SNAPSHOT/WEB-INF/lib/log4j-to-slf4j-2.23.1.jar
new file mode 100644
index 0000000..81b5143
Binary files /dev/null and b/target/root-0.0.1-SNAPSHOT/WEB-INF/lib/log4j-to-slf4j-2.23.1.jar differ
diff --git a/target/root-0.0.1-SNAPSHOT/WEB-INF/lib/logback-classic-1.5.6.jar b/target/root-0.0.1-SNAPSHOT/WEB-INF/lib/logback-classic-1.5.6.jar
new file mode 100644
index 0000000..7ac4c1b
Binary files /dev/null and b/target/root-0.0.1-SNAPSHOT/WEB-INF/lib/logback-classic-1.5.6.jar differ
diff --git a/target/root-0.0.1-SNAPSHOT/WEB-INF/lib/logback-core-1.5.6.jar b/target/root-0.0.1-SNAPSHOT/WEB-INF/lib/logback-core-1.5.6.jar
new file mode 100644
index 0000000..9c75e36
Binary files /dev/null and b/target/root-0.0.1-SNAPSHOT/WEB-INF/lib/logback-core-1.5.6.jar differ
diff --git a/target/root-0.0.1-SNAPSHOT/WEB-INF/lib/lombok-1.18.32.jar b/target/root-0.0.1-SNAPSHOT/WEB-INF/lib/lombok-1.18.32.jar
new file mode 100644
index 0000000..2bb9a79
Binary files /dev/null and b/target/root-0.0.1-SNAPSHOT/WEB-INF/lib/lombok-1.18.32.jar differ
diff --git a/target/root-0.0.1-SNAPSHOT/WEB-INF/lib/mapstruct-1.5.5.Final.jar b/target/root-0.0.1-SNAPSHOT/WEB-INF/lib/mapstruct-1.5.5.Final.jar
new file mode 100644
index 0000000..9380888
Binary files /dev/null and b/target/root-0.0.1-SNAPSHOT/WEB-INF/lib/mapstruct-1.5.5.Final.jar differ
diff --git a/target/root-0.0.1-SNAPSHOT/WEB-INF/lib/micrometer-commons-1.13.2.jar b/target/root-0.0.1-SNAPSHOT/WEB-INF/lib/micrometer-commons-1.13.2.jar
new file mode 100644
index 0000000..accbdaf
Binary files /dev/null and b/target/root-0.0.1-SNAPSHOT/WEB-INF/lib/micrometer-commons-1.13.2.jar differ
diff --git a/target/root-0.0.1-SNAPSHOT/WEB-INF/lib/micrometer-observation-1.13.2.jar b/target/root-0.0.1-SNAPSHOT/WEB-INF/lib/micrometer-observation-1.13.2.jar
new file mode 100644
index 0000000..ff3e956
Binary files /dev/null and b/target/root-0.0.1-SNAPSHOT/WEB-INF/lib/micrometer-observation-1.13.2.jar differ
diff --git a/target/root-0.0.1-SNAPSHOT/WEB-INF/lib/mybatis-3.5.14.jar b/target/root-0.0.1-SNAPSHOT/WEB-INF/lib/mybatis-3.5.14.jar
new file mode 100644
index 0000000..d5c3961
Binary files /dev/null and b/target/root-0.0.1-SNAPSHOT/WEB-INF/lib/mybatis-3.5.14.jar differ
diff --git a/target/root-0.0.1-SNAPSHOT/WEB-INF/lib/mybatis-spring-3.0.3.jar b/target/root-0.0.1-SNAPSHOT/WEB-INF/lib/mybatis-spring-3.0.3.jar
new file mode 100644
index 0000000..95c4542
Binary files /dev/null and b/target/root-0.0.1-SNAPSHOT/WEB-INF/lib/mybatis-spring-3.0.3.jar differ
diff --git a/target/root-0.0.1-SNAPSHOT/WEB-INF/lib/mybatis-spring-boot-autoconfigure-3.0.3.jar b/target/root-0.0.1-SNAPSHOT/WEB-INF/lib/mybatis-spring-boot-autoconfigure-3.0.3.jar
new file mode 100644
index 0000000..decf302
Binary files /dev/null and b/target/root-0.0.1-SNAPSHOT/WEB-INF/lib/mybatis-spring-boot-autoconfigure-3.0.3.jar differ
diff --git a/target/root-0.0.1-SNAPSHOT/WEB-INF/lib/mybatis-spring-boot-starter-3.0.3.jar b/target/root-0.0.1-SNAPSHOT/WEB-INF/lib/mybatis-spring-boot-starter-3.0.3.jar
new file mode 100644
index 0000000..860dc99
Binary files /dev/null and b/target/root-0.0.1-SNAPSHOT/WEB-INF/lib/mybatis-spring-boot-starter-3.0.3.jar differ
diff --git a/target/root-0.0.1-SNAPSHOT/WEB-INF/lib/mysql-connector-j-8.3.0.jar b/target/root-0.0.1-SNAPSHOT/WEB-INF/lib/mysql-connector-j-8.3.0.jar
new file mode 100644
index 0000000..5c720ab
Binary files /dev/null and b/target/root-0.0.1-SNAPSHOT/WEB-INF/lib/mysql-connector-j-8.3.0.jar differ
diff --git a/target/root-0.0.1-SNAPSHOT/WEB-INF/lib/opencensus-api-0.31.1.jar b/target/root-0.0.1-SNAPSHOT/WEB-INF/lib/opencensus-api-0.31.1.jar
new file mode 100644
index 0000000..32f2501
Binary files /dev/null and b/target/root-0.0.1-SNAPSHOT/WEB-INF/lib/opencensus-api-0.31.1.jar differ
diff --git a/target/root-0.0.1-SNAPSHOT/WEB-INF/lib/opencensus-contrib-http-util-0.31.1.jar b/target/root-0.0.1-SNAPSHOT/WEB-INF/lib/opencensus-contrib-http-util-0.31.1.jar
new file mode 100644
index 0000000..f96d0da
Binary files /dev/null and b/target/root-0.0.1-SNAPSHOT/WEB-INF/lib/opencensus-contrib-http-util-0.31.1.jar differ
diff --git a/target/root-0.0.1-SNAPSHOT/WEB-INF/lib/slf4j-api-2.0.13.jar b/target/root-0.0.1-SNAPSHOT/WEB-INF/lib/slf4j-api-2.0.13.jar
new file mode 100644
index 0000000..a800cc2
Binary files /dev/null and b/target/root-0.0.1-SNAPSHOT/WEB-INF/lib/slf4j-api-2.0.13.jar differ
diff --git a/target/root-0.0.1-SNAPSHOT/WEB-INF/lib/snakeyaml-2.2.jar b/target/root-0.0.1-SNAPSHOT/WEB-INF/lib/snakeyaml-2.2.jar
new file mode 100644
index 0000000..275dd57
Binary files /dev/null and b/target/root-0.0.1-SNAPSHOT/WEB-INF/lib/snakeyaml-2.2.jar differ
diff --git a/target/root-0.0.1-SNAPSHOT/WEB-INF/lib/spring-aop-6.1.11.jar b/target/root-0.0.1-SNAPSHOT/WEB-INF/lib/spring-aop-6.1.11.jar
new file mode 100644
index 0000000..a543569
Binary files /dev/null and b/target/root-0.0.1-SNAPSHOT/WEB-INF/lib/spring-aop-6.1.11.jar differ
diff --git a/target/root-0.0.1-SNAPSHOT/WEB-INF/lib/spring-beans-6.1.11.jar b/target/root-0.0.1-SNAPSHOT/WEB-INF/lib/spring-beans-6.1.11.jar
new file mode 100644
index 0000000..c0655a8
Binary files /dev/null and b/target/root-0.0.1-SNAPSHOT/WEB-INF/lib/spring-beans-6.1.11.jar differ
diff --git a/target/root-0.0.1-SNAPSHOT/WEB-INF/lib/spring-boot-3.3.2.jar b/target/root-0.0.1-SNAPSHOT/WEB-INF/lib/spring-boot-3.3.2.jar
new file mode 100644
index 0000000..248a422
Binary files /dev/null and b/target/root-0.0.1-SNAPSHOT/WEB-INF/lib/spring-boot-3.3.2.jar differ
diff --git a/target/root-0.0.1-SNAPSHOT/WEB-INF/lib/spring-boot-autoconfigure-3.3.2.jar b/target/root-0.0.1-SNAPSHOT/WEB-INF/lib/spring-boot-autoconfigure-3.3.2.jar
new file mode 100644
index 0000000..54a6b85
Binary files /dev/null and b/target/root-0.0.1-SNAPSHOT/WEB-INF/lib/spring-boot-autoconfigure-3.3.2.jar differ
diff --git a/target/root-0.0.1-SNAPSHOT/WEB-INF/lib/spring-boot-starter-3.3.2.jar b/target/root-0.0.1-SNAPSHOT/WEB-INF/lib/spring-boot-starter-3.3.2.jar
new file mode 100644
index 0000000..f05ae2e
Binary files /dev/null and b/target/root-0.0.1-SNAPSHOT/WEB-INF/lib/spring-boot-starter-3.3.2.jar differ
diff --git a/target/root-0.0.1-SNAPSHOT/WEB-INF/lib/spring-boot-starter-jdbc-3.3.2.jar b/target/root-0.0.1-SNAPSHOT/WEB-INF/lib/spring-boot-starter-jdbc-3.3.2.jar
new file mode 100644
index 0000000..d4d3cd6
Binary files /dev/null and b/target/root-0.0.1-SNAPSHOT/WEB-INF/lib/spring-boot-starter-jdbc-3.3.2.jar differ
diff --git a/target/root-0.0.1-SNAPSHOT/WEB-INF/lib/spring-boot-starter-json-3.3.2.jar b/target/root-0.0.1-SNAPSHOT/WEB-INF/lib/spring-boot-starter-json-3.3.2.jar
new file mode 100644
index 0000000..dbdee4c
Binary files /dev/null and b/target/root-0.0.1-SNAPSHOT/WEB-INF/lib/spring-boot-starter-json-3.3.2.jar differ
diff --git a/target/root-0.0.1-SNAPSHOT/WEB-INF/lib/spring-boot-starter-logging-3.3.2.jar b/target/root-0.0.1-SNAPSHOT/WEB-INF/lib/spring-boot-starter-logging-3.3.2.jar
new file mode 100644
index 0000000..b56e984
Binary files /dev/null and b/target/root-0.0.1-SNAPSHOT/WEB-INF/lib/spring-boot-starter-logging-3.3.2.jar differ
diff --git a/target/root-0.0.1-SNAPSHOT/WEB-INF/lib/spring-boot-starter-security-3.3.2.jar b/target/root-0.0.1-SNAPSHOT/WEB-INF/lib/spring-boot-starter-security-3.3.2.jar
new file mode 100644
index 0000000..53b066a
Binary files /dev/null and b/target/root-0.0.1-SNAPSHOT/WEB-INF/lib/spring-boot-starter-security-3.3.2.jar differ
diff --git a/target/root-0.0.1-SNAPSHOT/WEB-INF/lib/spring-boot-starter-tomcat-3.3.2.jar b/target/root-0.0.1-SNAPSHOT/WEB-INF/lib/spring-boot-starter-tomcat-3.3.2.jar
new file mode 100644
index 0000000..ec6b72b
Binary files /dev/null and b/target/root-0.0.1-SNAPSHOT/WEB-INF/lib/spring-boot-starter-tomcat-3.3.2.jar differ
diff --git a/target/root-0.0.1-SNAPSHOT/WEB-INF/lib/spring-boot-starter-validation-3.3.2.jar b/target/root-0.0.1-SNAPSHOT/WEB-INF/lib/spring-boot-starter-validation-3.3.2.jar
new file mode 100644
index 0000000..3b0bbdf
Binary files /dev/null and b/target/root-0.0.1-SNAPSHOT/WEB-INF/lib/spring-boot-starter-validation-3.3.2.jar differ
diff --git a/target/root-0.0.1-SNAPSHOT/WEB-INF/lib/spring-boot-starter-web-3.3.2.jar b/target/root-0.0.1-SNAPSHOT/WEB-INF/lib/spring-boot-starter-web-3.3.2.jar
new file mode 100644
index 0000000..142b1a8
Binary files /dev/null and b/target/root-0.0.1-SNAPSHOT/WEB-INF/lib/spring-boot-starter-web-3.3.2.jar differ
diff --git a/target/root-0.0.1-SNAPSHOT/WEB-INF/lib/spring-context-6.1.11.jar b/target/root-0.0.1-SNAPSHOT/WEB-INF/lib/spring-context-6.1.11.jar
new file mode 100644
index 0000000..e1756c9
Binary files /dev/null and b/target/root-0.0.1-SNAPSHOT/WEB-INF/lib/spring-context-6.1.11.jar differ
diff --git a/target/root-0.0.1-SNAPSHOT/WEB-INF/lib/spring-core-6.1.11.jar b/target/root-0.0.1-SNAPSHOT/WEB-INF/lib/spring-core-6.1.11.jar
new file mode 100644
index 0000000..1eb0e88
Binary files /dev/null and b/target/root-0.0.1-SNAPSHOT/WEB-INF/lib/spring-core-6.1.11.jar differ
diff --git a/target/root-0.0.1-SNAPSHOT/WEB-INF/lib/spring-expression-6.1.11.jar b/target/root-0.0.1-SNAPSHOT/WEB-INF/lib/spring-expression-6.1.11.jar
new file mode 100644
index 0000000..994792f
Binary files /dev/null and b/target/root-0.0.1-SNAPSHOT/WEB-INF/lib/spring-expression-6.1.11.jar differ
diff --git a/target/root-0.0.1-SNAPSHOT/WEB-INF/lib/spring-jcl-6.1.11.jar b/target/root-0.0.1-SNAPSHOT/WEB-INF/lib/spring-jcl-6.1.11.jar
new file mode 100644
index 0000000..37bcad6
Binary files /dev/null and b/target/root-0.0.1-SNAPSHOT/WEB-INF/lib/spring-jcl-6.1.11.jar differ
diff --git a/target/root-0.0.1-SNAPSHOT/WEB-INF/lib/spring-jdbc-6.1.11.jar b/target/root-0.0.1-SNAPSHOT/WEB-INF/lib/spring-jdbc-6.1.11.jar
new file mode 100644
index 0000000..8d2558c
Binary files /dev/null and b/target/root-0.0.1-SNAPSHOT/WEB-INF/lib/spring-jdbc-6.1.11.jar differ
diff --git a/target/root-0.0.1-SNAPSHOT/WEB-INF/lib/spring-security-config-6.3.1.jar b/target/root-0.0.1-SNAPSHOT/WEB-INF/lib/spring-security-config-6.3.1.jar
new file mode 100644
index 0000000..2779d3f
Binary files /dev/null and b/target/root-0.0.1-SNAPSHOT/WEB-INF/lib/spring-security-config-6.3.1.jar differ
diff --git a/target/root-0.0.1-SNAPSHOT/WEB-INF/lib/spring-security-core-6.3.1.jar b/target/root-0.0.1-SNAPSHOT/WEB-INF/lib/spring-security-core-6.3.1.jar
new file mode 100644
index 0000000..507c727
Binary files /dev/null and b/target/root-0.0.1-SNAPSHOT/WEB-INF/lib/spring-security-core-6.3.1.jar differ
diff --git a/target/root-0.0.1-SNAPSHOT/WEB-INF/lib/spring-security-crypto-6.3.1.jar b/target/root-0.0.1-SNAPSHOT/WEB-INF/lib/spring-security-crypto-6.3.1.jar
new file mode 100644
index 0000000..396ce0e
Binary files /dev/null and b/target/root-0.0.1-SNAPSHOT/WEB-INF/lib/spring-security-crypto-6.3.1.jar differ
diff --git a/target/root-0.0.1-SNAPSHOT/WEB-INF/lib/spring-security-web-6.3.1.jar b/target/root-0.0.1-SNAPSHOT/WEB-INF/lib/spring-security-web-6.3.1.jar
new file mode 100644
index 0000000..612e412
Binary files /dev/null and b/target/root-0.0.1-SNAPSHOT/WEB-INF/lib/spring-security-web-6.3.1.jar differ
diff --git a/target/root-0.0.1-SNAPSHOT/WEB-INF/lib/spring-tx-6.1.11.jar b/target/root-0.0.1-SNAPSHOT/WEB-INF/lib/spring-tx-6.1.11.jar
new file mode 100644
index 0000000..0f83151
Binary files /dev/null and b/target/root-0.0.1-SNAPSHOT/WEB-INF/lib/spring-tx-6.1.11.jar differ
diff --git a/target/root-0.0.1-SNAPSHOT/WEB-INF/lib/spring-web-6.1.11.jar b/target/root-0.0.1-SNAPSHOT/WEB-INF/lib/spring-web-6.1.11.jar
new file mode 100644
index 0000000..2497458
Binary files /dev/null and b/target/root-0.0.1-SNAPSHOT/WEB-INF/lib/spring-web-6.1.11.jar differ
diff --git a/target/root-0.0.1-SNAPSHOT/WEB-INF/lib/spring-webmvc-6.1.11.jar b/target/root-0.0.1-SNAPSHOT/WEB-INF/lib/spring-webmvc-6.1.11.jar
new file mode 100644
index 0000000..d5c5cca
Binary files /dev/null and b/target/root-0.0.1-SNAPSHOT/WEB-INF/lib/spring-webmvc-6.1.11.jar differ
diff --git a/target/root-0.0.1-SNAPSHOT/WEB-INF/lib/springdoc-openapi-starter-common-2.5.0.jar b/target/root-0.0.1-SNAPSHOT/WEB-INF/lib/springdoc-openapi-starter-common-2.5.0.jar
new file mode 100644
index 0000000..c158800
Binary files /dev/null and b/target/root-0.0.1-SNAPSHOT/WEB-INF/lib/springdoc-openapi-starter-common-2.5.0.jar differ
diff --git a/target/root-0.0.1-SNAPSHOT/WEB-INF/lib/springdoc-openapi-starter-webmvc-api-2.5.0.jar b/target/root-0.0.1-SNAPSHOT/WEB-INF/lib/springdoc-openapi-starter-webmvc-api-2.5.0.jar
new file mode 100644
index 0000000..8021c97
Binary files /dev/null and b/target/root-0.0.1-SNAPSHOT/WEB-INF/lib/springdoc-openapi-starter-webmvc-api-2.5.0.jar differ
diff --git a/target/root-0.0.1-SNAPSHOT/WEB-INF/lib/springdoc-openapi-starter-webmvc-ui-2.5.0.jar b/target/root-0.0.1-SNAPSHOT/WEB-INF/lib/springdoc-openapi-starter-webmvc-ui-2.5.0.jar
new file mode 100644
index 0000000..f68d68d
Binary files /dev/null and b/target/root-0.0.1-SNAPSHOT/WEB-INF/lib/springdoc-openapi-starter-webmvc-ui-2.5.0.jar differ
diff --git a/target/root-0.0.1-SNAPSHOT/WEB-INF/lib/swagger-annotations-jakarta-2.2.21.jar b/target/root-0.0.1-SNAPSHOT/WEB-INF/lib/swagger-annotations-jakarta-2.2.21.jar
new file mode 100644
index 0000000..d7aee89
Binary files /dev/null and b/target/root-0.0.1-SNAPSHOT/WEB-INF/lib/swagger-annotations-jakarta-2.2.21.jar differ
diff --git a/target/root-0.0.1-SNAPSHOT/WEB-INF/lib/swagger-core-jakarta-2.2.21.jar b/target/root-0.0.1-SNAPSHOT/WEB-INF/lib/swagger-core-jakarta-2.2.21.jar
new file mode 100644
index 0000000..dc78989
Binary files /dev/null and b/target/root-0.0.1-SNAPSHOT/WEB-INF/lib/swagger-core-jakarta-2.2.21.jar differ
diff --git a/target/root-0.0.1-SNAPSHOT/WEB-INF/lib/swagger-models-jakarta-2.2.21.jar b/target/root-0.0.1-SNAPSHOT/WEB-INF/lib/swagger-models-jakarta-2.2.21.jar
new file mode 100644
index 0000000..124fed0
Binary files /dev/null and b/target/root-0.0.1-SNAPSHOT/WEB-INF/lib/swagger-models-jakarta-2.2.21.jar differ
diff --git a/target/root-0.0.1-SNAPSHOT/WEB-INF/lib/swagger-ui-5.13.0.jar b/target/root-0.0.1-SNAPSHOT/WEB-INF/lib/swagger-ui-5.13.0.jar
new file mode 100644
index 0000000..ef4e2d5
Binary files /dev/null and b/target/root-0.0.1-SNAPSHOT/WEB-INF/lib/swagger-ui-5.13.0.jar differ
diff --git a/target/root-0.0.1-SNAPSHOT/WEB-INF/lib/tomcat-embed-core-10.1.26.jar b/target/root-0.0.1-SNAPSHOT/WEB-INF/lib/tomcat-embed-core-10.1.26.jar
new file mode 100644
index 0000000..064c35c
Binary files /dev/null and b/target/root-0.0.1-SNAPSHOT/WEB-INF/lib/tomcat-embed-core-10.1.26.jar differ
diff --git a/target/root-0.0.1-SNAPSHOT/WEB-INF/lib/tomcat-embed-el-10.1.26.jar b/target/root-0.0.1-SNAPSHOT/WEB-INF/lib/tomcat-embed-el-10.1.26.jar
new file mode 100644
index 0000000..a2a2f98
Binary files /dev/null and b/target/root-0.0.1-SNAPSHOT/WEB-INF/lib/tomcat-embed-el-10.1.26.jar differ
diff --git a/target/root-0.0.1-SNAPSHOT/WEB-INF/lib/tomcat-embed-websocket-10.1.26.jar b/target/root-0.0.1-SNAPSHOT/WEB-INF/lib/tomcat-embed-websocket-10.1.26.jar
new file mode 100644
index 0000000..09e3604
Binary files /dev/null and b/target/root-0.0.1-SNAPSHOT/WEB-INF/lib/tomcat-embed-websocket-10.1.26.jar differ
diff --git a/target/surefire-reports/TEST-com.veve_plus.root.RootApplicationTests.xml b/target/surefire-reports/TEST-com.veve_plus.root.RootApplicationTests.xml
new file mode 100644
index 0000000..251d6fd
--- /dev/null
+++ b/target/surefire-reports/TEST-com.veve_plus.root.RootApplicationTests.xml
@@ -0,0 +1,178 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/target/surefire-reports/com.veve_plus.root.RootApplicationTests.txt b/target/surefire-reports/com.veve_plus.root.RootApplicationTests.txt
new file mode 100644
index 0000000..f3c75cb
--- /dev/null
+++ b/target/surefire-reports/com.veve_plus.root.RootApplicationTests.txt
@@ -0,0 +1,4 @@
+-------------------------------------------------------------------------------
+Test set: com.veve_plus.root.RootApplicationTests
+-------------------------------------------------------------------------------
+Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 1.947 s -- in com.veve_plus.root.RootApplicationTests
diff --git a/target/test-classes/com/veve_plus/root/RootApplicationTests.class b/target/test-classes/com/veve_plus/root/RootApplicationTests.class
new file mode 100644
index 0000000..dc9a066
Binary files /dev/null and b/target/test-classes/com/veve_plus/root/RootApplicationTests.class differ