forked from BLC/sgeUpdated
Add sge-backend foldery
This commit is contained in:
Submodule sge-backend deleted from 9eae0b7282
33
sge-backend/.gitignore
vendored
Normal file
33
sge-backend/.gitignore
vendored
Normal file
@@ -0,0 +1,33 @@
|
||||
HELP.md
|
||||
target/
|
||||
!.mvn/wrapper/maven-wrapper.jar
|
||||
!**/src/main/**/target/
|
||||
!**/src/test/**/target/
|
||||
.mvn/
|
||||
### STS ###
|
||||
.apt_generated
|
||||
.classpath
|
||||
.factorypath
|
||||
.project
|
||||
.settings
|
||||
.springBeans
|
||||
.sts4-cache
|
||||
|
||||
### IntelliJ IDEA ###
|
||||
.idea/
|
||||
*.iws
|
||||
*.iml
|
||||
*.ipr
|
||||
|
||||
### NetBeans ###
|
||||
/nbproject/private/
|
||||
/nbbuild/
|
||||
/dist/
|
||||
/nbdist/
|
||||
/.nb-gradle/
|
||||
build/
|
||||
!**/src/main/**/build/
|
||||
!**/src/test/**/build/
|
||||
|
||||
### VS Code ###
|
||||
.vscode/
|
||||
9
sge-backend/Dockerfile
Normal file
9
sge-backend/Dockerfile
Normal file
@@ -0,0 +1,9 @@
|
||||
FROM openjdk:17-jdk-slim
|
||||
|
||||
WORKDIR /app
|
||||
|
||||
COPY target/sgs-backend.jar app.jar
|
||||
|
||||
EXPOSE 8080
|
||||
|
||||
ENTRYPOINT ["java", "-jar", "app.jar"]
|
||||
316
sge-backend/mvnw
vendored
Normal file
316
sge-backend/mvnw
vendored
Normal file
@@ -0,0 +1,316 @@
|
||||
#!/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.
|
||||
# ----------------------------------------------------------------------------
|
||||
|
||||
# ----------------------------------------------------------------------------
|
||||
# Maven Start Up Batch script
|
||||
#
|
||||
# Required ENV vars:
|
||||
# ------------------
|
||||
# JAVA_HOME - location of a JDK home dir
|
||||
#
|
||||
# Optional ENV vars
|
||||
# -----------------
|
||||
# M2_HOME - location of maven2's installed home dir
|
||||
# MAVEN_OPTS - parameters passed to the Java VM when running Maven
|
||||
# e.g. to debug Maven itself, use
|
||||
# set MAVEN_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000
|
||||
# MAVEN_SKIP_RC - flag to disable loading of mavenrc files
|
||||
# ----------------------------------------------------------------------------
|
||||
|
||||
if [ -z "$MAVEN_SKIP_RC" ] ; then
|
||||
|
||||
if [ -f /usr/local/etc/mavenrc ] ; then
|
||||
. /usr/local/etc/mavenrc
|
||||
fi
|
||||
|
||||
if [ -f /etc/mavenrc ] ; then
|
||||
. /etc/mavenrc
|
||||
fi
|
||||
|
||||
if [ -f "$HOME/.mavenrc" ] ; then
|
||||
. "$HOME/.mavenrc"
|
||||
fi
|
||||
|
||||
fi
|
||||
|
||||
# OS specific support. $var _must_ be set to either true or false.
|
||||
cygwin=false;
|
||||
darwin=false;
|
||||
mingw=false
|
||||
case "`uname`" in
|
||||
CYGWIN*) cygwin=true ;;
|
||||
MINGW*) mingw=true;;
|
||||
Darwin*) darwin=true
|
||||
# Use /usr/libexec/java_home if available, otherwise fall back to /Library/Java/Home
|
||||
# See https://developer.apple.com/library/mac/qa/qa1170/_index.html
|
||||
if [ -z "$JAVA_HOME" ]; then
|
||||
if [ -x "/usr/libexec/java_home" ]; then
|
||||
export JAVA_HOME="`/usr/libexec/java_home`"
|
||||
else
|
||||
export JAVA_HOME="/Library/Java/Home"
|
||||
fi
|
||||
fi
|
||||
;;
|
||||
esac
|
||||
|
||||
if [ -z "$JAVA_HOME" ] ; then
|
||||
if [ -r /etc/gentoo-release ] ; then
|
||||
JAVA_HOME=`java-config --jre-home`
|
||||
fi
|
||||
fi
|
||||
|
||||
if [ -z "$M2_HOME" ] ; then
|
||||
## resolve links - $0 may be a link to maven's home
|
||||
PRG="$0"
|
||||
|
||||
# need this for relative symlinks
|
||||
while [ -h "$PRG" ] ; do
|
||||
ls=`ls -ld "$PRG"`
|
||||
link=`expr "$ls" : '.*-> \(.*\)$'`
|
||||
if expr "$link" : '/.*' > /dev/null; then
|
||||
PRG="$link"
|
||||
else
|
||||
PRG="`dirname "$PRG"`/$link"
|
||||
fi
|
||||
done
|
||||
|
||||
saveddir=`pwd`
|
||||
|
||||
M2_HOME=`dirname "$PRG"`/..
|
||||
|
||||
# make it fully qualified
|
||||
M2_HOME=`cd "$M2_HOME" && pwd`
|
||||
|
||||
cd "$saveddir"
|
||||
# echo Using m2 at $M2_HOME
|
||||
fi
|
||||
|
||||
# For Cygwin, ensure paths are in UNIX format before anything is touched
|
||||
if $cygwin ; then
|
||||
[ -n "$M2_HOME" ] &&
|
||||
M2_HOME=`cygpath --unix "$M2_HOME"`
|
||||
[ -n "$JAVA_HOME" ] &&
|
||||
JAVA_HOME=`cygpath --unix "$JAVA_HOME"`
|
||||
[ -n "$CLASSPATH" ] &&
|
||||
CLASSPATH=`cygpath --path --unix "$CLASSPATH"`
|
||||
fi
|
||||
|
||||
# For Mingw, ensure paths are in UNIX format before anything is touched
|
||||
if $mingw ; then
|
||||
[ -n "$M2_HOME" ] &&
|
||||
M2_HOME="`(cd "$M2_HOME"; pwd)`"
|
||||
[ -n "$JAVA_HOME" ] &&
|
||||
JAVA_HOME="`(cd "$JAVA_HOME"; pwd)`"
|
||||
fi
|
||||
|
||||
if [ -z "$JAVA_HOME" ]; then
|
||||
javaExecutable="`which javac`"
|
||||
if [ -n "$javaExecutable" ] && ! [ "`expr \"$javaExecutable\" : '\([^ ]*\)'`" = "no" ]; then
|
||||
# readlink(1) is not available as standard on Solaris 10.
|
||||
readLink=`which readlink`
|
||||
if [ ! `expr "$readLink" : '\([^ ]*\)'` = "no" ]; then
|
||||
if $darwin ; then
|
||||
javaHome="`dirname \"$javaExecutable\"`"
|
||||
javaExecutable="`cd \"$javaHome\" && pwd -P`/javac"
|
||||
else
|
||||
javaExecutable="`readlink -f \"$javaExecutable\"`"
|
||||
fi
|
||||
javaHome="`dirname \"$javaExecutable\"`"
|
||||
javaHome=`expr "$javaHome" : '\(.*\)/bin'`
|
||||
JAVA_HOME="$javaHome"
|
||||
export JAVA_HOME
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
|
||||
if [ -z "$JAVACMD" ] ; then
|
||||
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"
|
||||
else
|
||||
JAVACMD="$JAVA_HOME/bin/java"
|
||||
fi
|
||||
else
|
||||
JAVACMD="`\\unset -f command; \\command -v java`"
|
||||
fi
|
||||
fi
|
||||
|
||||
if [ ! -x "$JAVACMD" ] ; then
|
||||
echo "Error: JAVA_HOME is not defined correctly." >&2
|
||||
echo " We cannot execute $JAVACMD" >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [ -z "$JAVA_HOME" ] ; then
|
||||
echo "Warning: JAVA_HOME environment variable is not set."
|
||||
fi
|
||||
|
||||
CLASSWORLDS_LAUNCHER=org.codehaus.plexus.classworlds.launcher.Launcher
|
||||
|
||||
# traverses directory structure from process work directory to filesystem root
|
||||
# first directory with .mvn subdirectory is considered project base directory
|
||||
find_maven_basedir() {
|
||||
|
||||
if [ -z "$1" ]
|
||||
then
|
||||
echo "Path not specified to find_maven_basedir"
|
||||
return 1
|
||||
fi
|
||||
|
||||
basedir="$1"
|
||||
wdir="$1"
|
||||
while [ "$wdir" != '/' ] ; do
|
||||
if [ -d "$wdir"/.mvn ] ; then
|
||||
basedir=$wdir
|
||||
break
|
||||
fi
|
||||
# workaround for JBEAP-8937 (on Solaris 10/Sparc)
|
||||
if [ -d "${wdir}" ]; then
|
||||
wdir=`cd "$wdir/.."; pwd`
|
||||
fi
|
||||
# end of workaround
|
||||
done
|
||||
echo "${basedir}"
|
||||
}
|
||||
|
||||
# concatenates all lines of a file
|
||||
concat_lines() {
|
||||
if [ -f "$1" ]; then
|
||||
echo "$(tr -s '\n' ' ' < "$1")"
|
||||
fi
|
||||
}
|
||||
|
||||
BASE_DIR=`find_maven_basedir "$(pwd)"`
|
||||
if [ -z "$BASE_DIR" ]; then
|
||||
exit 1;
|
||||
fi
|
||||
|
||||
##########################################################################################
|
||||
# Extension to allow automatically downloading the maven-wrapper.jar from Maven-central
|
||||
# This allows using the maven wrapper in projects that prohibit checking in binary data.
|
||||
##########################################################################################
|
||||
if [ -r "$BASE_DIR/.mvn/wrapper/maven-wrapper.jar" ]; then
|
||||
if [ "$MVNW_VERBOSE" = true ]; then
|
||||
echo "Found .mvn/wrapper/maven-wrapper.jar"
|
||||
fi
|
||||
else
|
||||
if [ "$MVNW_VERBOSE" = true ]; then
|
||||
echo "Couldn't find .mvn/wrapper/maven-wrapper.jar, downloading it ..."
|
||||
fi
|
||||
if [ -n "$MVNW_REPOURL" ]; then
|
||||
jarUrl="$MVNW_REPOURL/org/apache/maven/wrapper/maven-wrapper/3.1.0/maven-wrapper-3.1.0.jar"
|
||||
else
|
||||
jarUrl="https://repo.maven.apache.org/maven2/org/apache/maven/wrapper/maven-wrapper/3.1.0/maven-wrapper-3.1.0.jar"
|
||||
fi
|
||||
while IFS="=" read key value; do
|
||||
case "$key" in (wrapperUrl) jarUrl="$value"; break ;;
|
||||
esac
|
||||
done < "$BASE_DIR/.mvn/wrapper/maven-wrapper.properties"
|
||||
if [ "$MVNW_VERBOSE" = true ]; then
|
||||
echo "Downloading from: $jarUrl"
|
||||
fi
|
||||
wrapperJarPath="$BASE_DIR/.mvn/wrapper/maven-wrapper.jar"
|
||||
if $cygwin; then
|
||||
wrapperJarPath=`cygpath --path --windows "$wrapperJarPath"`
|
||||
fi
|
||||
|
||||
if command -v wget > /dev/null; then
|
||||
if [ "$MVNW_VERBOSE" = true ]; then
|
||||
echo "Found wget ... using wget"
|
||||
fi
|
||||
if [ -z "$MVNW_USERNAME" ] || [ -z "$MVNW_PASSWORD" ]; then
|
||||
wget "$jarUrl" -O "$wrapperJarPath" || rm -f "$wrapperJarPath"
|
||||
else
|
||||
wget --http-user=$MVNW_USERNAME --http-password=$MVNW_PASSWORD "$jarUrl" -O "$wrapperJarPath" || rm -f "$wrapperJarPath"
|
||||
fi
|
||||
elif command -v curl > /dev/null; then
|
||||
if [ "$MVNW_VERBOSE" = true ]; then
|
||||
echo "Found curl ... using curl"
|
||||
fi
|
||||
if [ -z "$MVNW_USERNAME" ] || [ -z "$MVNW_PASSWORD" ]; then
|
||||
curl -o "$wrapperJarPath" "$jarUrl" -f
|
||||
else
|
||||
curl --user $MVNW_USERNAME:$MVNW_PASSWORD -o "$wrapperJarPath" "$jarUrl" -f
|
||||
fi
|
||||
|
||||
else
|
||||
if [ "$MVNW_VERBOSE" = true ]; then
|
||||
echo "Falling back to using Java to download"
|
||||
fi
|
||||
javaClass="$BASE_DIR/.mvn/wrapper/MavenWrapperDownloader.java"
|
||||
# For Cygwin, switch paths to Windows format before running javac
|
||||
if $cygwin; then
|
||||
javaClass=`cygpath --path --windows "$javaClass"`
|
||||
fi
|
||||
if [ -e "$javaClass" ]; then
|
||||
if [ ! -e "$BASE_DIR/.mvn/wrapper/MavenWrapperDownloader.class" ]; then
|
||||
if [ "$MVNW_VERBOSE" = true ]; then
|
||||
echo " - Compiling MavenWrapperDownloader.java ..."
|
||||
fi
|
||||
# Compiling the Java class
|
||||
("$JAVA_HOME/bin/javac" "$javaClass")
|
||||
fi
|
||||
if [ -e "$BASE_DIR/.mvn/wrapper/MavenWrapperDownloader.class" ]; then
|
||||
# Running the downloader
|
||||
if [ "$MVNW_VERBOSE" = true ]; then
|
||||
echo " - Running MavenWrapperDownloader.java ..."
|
||||
fi
|
||||
("$JAVA_HOME/bin/java" -cp .mvn/wrapper MavenWrapperDownloader "$MAVEN_PROJECTBASEDIR")
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
##########################################################################################
|
||||
# End of extension
|
||||
##########################################################################################
|
||||
|
||||
export MAVEN_PROJECTBASEDIR=${MAVEN_BASEDIR:-"$BASE_DIR"}
|
||||
if [ "$MVNW_VERBOSE" = true ]; then
|
||||
echo $MAVEN_PROJECTBASEDIR
|
||||
fi
|
||||
MAVEN_OPTS="$(concat_lines "$MAVEN_PROJECTBASEDIR/.mvn/jvm.config") $MAVEN_OPTS"
|
||||
|
||||
# For Cygwin, switch paths to Windows format before running java
|
||||
if $cygwin; then
|
||||
[ -n "$M2_HOME" ] &&
|
||||
M2_HOME=`cygpath --path --windows "$M2_HOME"`
|
||||
[ -n "$JAVA_HOME" ] &&
|
||||
JAVA_HOME=`cygpath --path --windows "$JAVA_HOME"`
|
||||
[ -n "$CLASSPATH" ] &&
|
||||
CLASSPATH=`cygpath --path --windows "$CLASSPATH"`
|
||||
[ -n "$MAVEN_PROJECTBASEDIR" ] &&
|
||||
MAVEN_PROJECTBASEDIR=`cygpath --path --windows "$MAVEN_PROJECTBASEDIR"`
|
||||
fi
|
||||
|
||||
# Provide a "standardized" way to retrieve the CLI args that will
|
||||
# work with both Windows and non-Windows executions.
|
||||
MAVEN_CMD_LINE_ARGS="$MAVEN_CONFIG $@"
|
||||
export MAVEN_CMD_LINE_ARGS
|
||||
|
||||
WRAPPER_LAUNCHER=org.apache.maven.wrapper.MavenWrapperMain
|
||||
|
||||
exec "$JAVACMD" \
|
||||
$MAVEN_OPTS \
|
||||
$MAVEN_DEBUG_OPTS \
|
||||
-classpath "$MAVEN_PROJECTBASEDIR/.mvn/wrapper/maven-wrapper.jar" \
|
||||
"-Dmaven.home=${M2_HOME}" \
|
||||
"-Dmaven.multiModuleProjectDirectory=${MAVEN_PROJECTBASEDIR}" \
|
||||
${WRAPPER_LAUNCHER} $MAVEN_CONFIG "$@"
|
||||
188
sge-backend/mvnw.cmd
vendored
Normal file
188
sge-backend/mvnw.cmd
vendored
Normal file
@@ -0,0 +1,188 @@
|
||||
@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 Maven Start Up Batch script
|
||||
@REM
|
||||
@REM Required ENV vars:
|
||||
@REM JAVA_HOME - location of a JDK home dir
|
||||
@REM
|
||||
@REM Optional ENV vars
|
||||
@REM M2_HOME - location of maven2's installed home dir
|
||||
@REM MAVEN_BATCH_ECHO - set to 'on' to enable the echoing of the batch commands
|
||||
@REM MAVEN_BATCH_PAUSE - set to 'on' to wait for a keystroke before ending
|
||||
@REM MAVEN_OPTS - parameters passed to the Java VM when running Maven
|
||||
@REM e.g. to debug Maven itself, use
|
||||
@REM set MAVEN_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000
|
||||
@REM MAVEN_SKIP_RC - flag to disable loading of mavenrc files
|
||||
@REM ----------------------------------------------------------------------------
|
||||
|
||||
@REM Begin all REM lines with '@' in case MAVEN_BATCH_ECHO is 'on'
|
||||
@echo off
|
||||
@REM set title of command window
|
||||
title %0
|
||||
@REM enable echoing by setting MAVEN_BATCH_ECHO to 'on'
|
||||
@if "%MAVEN_BATCH_ECHO%" == "on" echo %MAVEN_BATCH_ECHO%
|
||||
|
||||
@REM set %HOME% to equivalent of $HOME
|
||||
if "%HOME%" == "" (set "HOME=%HOMEDRIVE%%HOMEPATH%")
|
||||
|
||||
@REM Execute a user defined script before this one
|
||||
if not "%MAVEN_SKIP_RC%" == "" goto skipRcPre
|
||||
@REM check for pre script, once with legacy .bat ending and once with .cmd ending
|
||||
if exist "%USERPROFILE%\mavenrc_pre.bat" call "%USERPROFILE%\mavenrc_pre.bat" %*
|
||||
if exist "%USERPROFILE%\mavenrc_pre.cmd" call "%USERPROFILE%\mavenrc_pre.cmd" %*
|
||||
:skipRcPre
|
||||
|
||||
@setlocal
|
||||
|
||||
set ERROR_CODE=0
|
||||
|
||||
@REM To isolate internal variables from possible post scripts, we use another setlocal
|
||||
@setlocal
|
||||
|
||||
@REM ==== START VALIDATION ====
|
||||
if not "%JAVA_HOME%" == "" goto OkJHome
|
||||
|
||||
echo.
|
||||
echo Error: JAVA_HOME not found in your environment. >&2
|
||||
echo Please set the JAVA_HOME variable in your environment to match the >&2
|
||||
echo location of your Java installation. >&2
|
||||
echo.
|
||||
goto error
|
||||
|
||||
:OkJHome
|
||||
if exist "%JAVA_HOME%\bin\java.exe" goto init
|
||||
|
||||
echo.
|
||||
echo Error: JAVA_HOME is set to an invalid directory. >&2
|
||||
echo JAVA_HOME = "%JAVA_HOME%" >&2
|
||||
echo Please set the JAVA_HOME variable in your environment to match the >&2
|
||||
echo location of your Java installation. >&2
|
||||
echo.
|
||||
goto error
|
||||
|
||||
@REM ==== END VALIDATION ====
|
||||
|
||||
:init
|
||||
|
||||
@REM Find the project base dir, i.e. the directory that contains the folder ".mvn".
|
||||
@REM Fallback to current working directory if not found.
|
||||
|
||||
set MAVEN_PROJECTBASEDIR=%MAVEN_BASEDIR%
|
||||
IF NOT "%MAVEN_PROJECTBASEDIR%"=="" goto endDetectBaseDir
|
||||
|
||||
set EXEC_DIR=%CD%
|
||||
set WDIR=%EXEC_DIR%
|
||||
:findBaseDir
|
||||
IF EXIST "%WDIR%"\.mvn goto baseDirFound
|
||||
cd ..
|
||||
IF "%WDIR%"=="%CD%" goto baseDirNotFound
|
||||
set WDIR=%CD%
|
||||
goto findBaseDir
|
||||
|
||||
:baseDirFound
|
||||
set MAVEN_PROJECTBASEDIR=%WDIR%
|
||||
cd "%EXEC_DIR%"
|
||||
goto endDetectBaseDir
|
||||
|
||||
:baseDirNotFound
|
||||
set MAVEN_PROJECTBASEDIR=%EXEC_DIR%
|
||||
cd "%EXEC_DIR%"
|
||||
|
||||
:endDetectBaseDir
|
||||
|
||||
IF NOT EXIST "%MAVEN_PROJECTBASEDIR%\.mvn\jvm.config" goto endReadAdditionalConfig
|
||||
|
||||
@setlocal EnableExtensions EnableDelayedExpansion
|
||||
for /F "usebackq delims=" %%a in ("%MAVEN_PROJECTBASEDIR%\.mvn\jvm.config") do set JVM_CONFIG_MAVEN_PROPS=!JVM_CONFIG_MAVEN_PROPS! %%a
|
||||
@endlocal & set JVM_CONFIG_MAVEN_PROPS=%JVM_CONFIG_MAVEN_PROPS%
|
||||
|
||||
:endReadAdditionalConfig
|
||||
|
||||
SET MAVEN_JAVA_EXE="%JAVA_HOME%\bin\java.exe"
|
||||
set WRAPPER_JAR="%MAVEN_PROJECTBASEDIR%\.mvn\wrapper\maven-wrapper.jar"
|
||||
set WRAPPER_LAUNCHER=org.apache.maven.wrapper.MavenWrapperMain
|
||||
|
||||
set DOWNLOAD_URL="https://repo.maven.apache.org/maven2/org/apache/maven/wrapper/maven-wrapper/3.1.0/maven-wrapper-3.1.0.jar"
|
||||
|
||||
FOR /F "usebackq tokens=1,2 delims==" %%A IN ("%MAVEN_PROJECTBASEDIR%\.mvn\wrapper\maven-wrapper.properties") DO (
|
||||
IF "%%A"=="wrapperUrl" SET DOWNLOAD_URL=%%B
|
||||
)
|
||||
|
||||
@REM Extension to allow automatically downloading the maven-wrapper.jar from Maven-central
|
||||
@REM This allows using the maven wrapper in projects that prohibit checking in binary data.
|
||||
if exist %WRAPPER_JAR% (
|
||||
if "%MVNW_VERBOSE%" == "true" (
|
||||
echo Found %WRAPPER_JAR%
|
||||
)
|
||||
) else (
|
||||
if not "%MVNW_REPOURL%" == "" (
|
||||
SET DOWNLOAD_URL="%MVNW_REPOURL%/org/apache/maven/wrapper/maven-wrapper/3.1.0/maven-wrapper-3.1.0.jar"
|
||||
)
|
||||
if "%MVNW_VERBOSE%" == "true" (
|
||||
echo Couldn't find %WRAPPER_JAR%, downloading it ...
|
||||
echo Downloading from: %DOWNLOAD_URL%
|
||||
)
|
||||
|
||||
powershell -Command "&{"^
|
||||
"$webclient = new-object System.Net.WebClient;"^
|
||||
"if (-not ([string]::IsNullOrEmpty('%MVNW_USERNAME%') -and [string]::IsNullOrEmpty('%MVNW_PASSWORD%'))) {"^
|
||||
"$webclient.Credentials = new-object System.Net.NetworkCredential('%MVNW_USERNAME%', '%MVNW_PASSWORD%');"^
|
||||
"}"^
|
||||
"[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12; $webclient.DownloadFile('%DOWNLOAD_URL%', '%WRAPPER_JAR%')"^
|
||||
"}"
|
||||
if "%MVNW_VERBOSE%" == "true" (
|
||||
echo Finished downloading %WRAPPER_JAR%
|
||||
)
|
||||
)
|
||||
@REM End of extension
|
||||
|
||||
@REM Provide a "standardized" way to retrieve the CLI args that will
|
||||
@REM work with both Windows and non-Windows executions.
|
||||
set MAVEN_CMD_LINE_ARGS=%*
|
||||
|
||||
%MAVEN_JAVA_EXE% ^
|
||||
%JVM_CONFIG_MAVEN_PROPS% ^
|
||||
%MAVEN_OPTS% ^
|
||||
%MAVEN_DEBUG_OPTS% ^
|
||||
-classpath %WRAPPER_JAR% ^
|
||||
"-Dmaven.multiModuleProjectDirectory=%MAVEN_PROJECTBASEDIR%" ^
|
||||
%WRAPPER_LAUNCHER% %MAVEN_CONFIG% %*
|
||||
if ERRORLEVEL 1 goto error
|
||||
goto end
|
||||
|
||||
:error
|
||||
set ERROR_CODE=1
|
||||
|
||||
:end
|
||||
@endlocal & set ERROR_CODE=%ERROR_CODE%
|
||||
|
||||
if not "%MAVEN_SKIP_RC%"=="" goto skipRcPost
|
||||
@REM check for post script, once with legacy .bat ending and once with .cmd ending
|
||||
if exist "%USERPROFILE%\mavenrc_post.bat" call "%USERPROFILE%\mavenrc_post.bat"
|
||||
if exist "%USERPROFILE%\mavenrc_post.cmd" call "%USERPROFILE%\mavenrc_post.cmd"
|
||||
:skipRcPost
|
||||
|
||||
@REM pause the script if MAVEN_BATCH_PAUSE is set to 'on'
|
||||
if "%MAVEN_BATCH_PAUSE%"=="on" pause
|
||||
|
||||
if "%MAVEN_TERMINATE_CMD%"=="on" exit %ERROR_CODE%
|
||||
|
||||
cmd /C exit /B %ERROR_CODE%
|
||||
6
sge-backend/package-lock.json
generated
Normal file
6
sge-backend/package-lock.json
generated
Normal file
@@ -0,0 +1,6 @@
|
||||
{
|
||||
"name": "sge-backend",
|
||||
"lockfileVersion": 2,
|
||||
"requires": true,
|
||||
"packages": {}
|
||||
}
|
||||
133
sge-backend/pom.xml
Normal file
133
sge-backend/pom.xml
Normal file
@@ -0,0 +1,133 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project xmlns="http://maven.apache.org/POM/4.0.0"
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
<parent>
|
||||
<groupId>org.springframework.boot</groupId>
|
||||
<artifactId>spring-boot-starter-parent</artifactId>
|
||||
<version>2.5.4</version>
|
||||
<relativePath />
|
||||
</parent>
|
||||
<groupId>com.sgs</groupId>
|
||||
<artifactId>sgs</artifactId>
|
||||
<version>0.0.1-SNAPSHOT</version>
|
||||
<name>sgs</name>
|
||||
<description>SGS project for Spring Boot</description>
|
||||
<properties>
|
||||
<java.version>17</java.version>
|
||||
</properties>
|
||||
<dependencies>
|
||||
<dependency>
|
||||
<groupId>org.springframework.boot</groupId>
|
||||
<artifactId>spring-boot-starter</artifactId>
|
||||
<exclusions>
|
||||
<exclusion>
|
||||
<groupId>org.springframework.boot</groupId>
|
||||
<artifactId>spring-boot-starter-logging</artifactId>
|
||||
</exclusion>
|
||||
</exclusions>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.springframework.boot</groupId>
|
||||
<artifactId>spring-boot-starter-data-jpa</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.apache.poi</groupId>
|
||||
<artifactId>poi-ooxml</artifactId>
|
||||
<version>4.1.2</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.springframework.boot</groupId>
|
||||
<artifactId>spring-boot-starter-web</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.springframework.boot</groupId>
|
||||
<artifactId>spring-boot-starter-validation</artifactId>
|
||||
<version>3.0.4</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.apache.commons</groupId>
|
||||
<artifactId>commons-collections4</artifactId>
|
||||
<version>4.4</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.graphql-java-kickstart</groupId>
|
||||
<artifactId>graphql-spring-boot-starter</artifactId>
|
||||
<version>11.0.0</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.graphql-java-kickstart</groupId>
|
||||
<artifactId>graphql-java-tools</artifactId>
|
||||
<version>11.0.0</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.zhokhov.graphql</groupId>
|
||||
<artifactId>graphql-datetime-spring-boot-starter</artifactId>
|
||||
<version>4.0.0</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.postgresql</groupId>
|
||||
<artifactId>postgresql</artifactId>
|
||||
<scope>runtime</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.springframework.boot</groupId>
|
||||
<artifactId>spring-boot-starter-security</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>io.jsonwebtoken</groupId>
|
||||
<artifactId>jjwt</artifactId>
|
||||
<version>0.9.1</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>commons-dbcp</groupId>
|
||||
<artifactId>commons-dbcp</artifactId>
|
||||
<version>1.4</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.springframework.boot</groupId>
|
||||
<artifactId>spring-boot-starter-log4j2</artifactId>
|
||||
<version>2.7.0</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.json</groupId>
|
||||
<artifactId>json</artifactId>
|
||||
<version>20210307</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.apache.commons</groupId>
|
||||
<artifactId>commons-email</artifactId>
|
||||
<version>1.5</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.springframework.boot</groupId>
|
||||
<artifactId>spring-boot-starter-test</artifactId>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.springframework</groupId>
|
||||
<artifactId>spring-webflux</artifactId>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.fasterxml.jackson.core</groupId>
|
||||
<artifactId>jackson-databind</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.springframework.boot</groupId>
|
||||
<artifactId>spring-boot-starter-amqp</artifactId>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
|
||||
<build>
|
||||
<plugins>
|
||||
<plugin>
|
||||
<groupId>org.springframework.boot</groupId>
|
||||
<artifactId>spring-boot-maven-plugin</artifactId>
|
||||
</plugin>
|
||||
</plugins>
|
||||
<finalName>sgs-backend</finalName>
|
||||
</build>
|
||||
|
||||
</project>
|
||||
BIN
sge-backend/src/.DS_Store
vendored
Normal file
BIN
sge-backend/src/.DS_Store
vendored
Normal file
Binary file not shown.
BIN
sge-backend/src/main/.DS_Store
vendored
Normal file
BIN
sge-backend/src/main/.DS_Store
vendored
Normal file
Binary file not shown.
851
sge-backend/src/main/java/com/sgs/SgsApplication.java
Normal file
851
sge-backend/src/main/java/com/sgs/SgsApplication.java
Normal file
@@ -0,0 +1,851 @@
|
||||
package com.sgs;
|
||||
|
||||
import com.sgs.graphql.activitySubUnit.domain.ActivitySubUnit;
|
||||
import com.sgs.graphql.activitySubUnit.service.ActivitySubUnitService;
|
||||
import com.sgs.graphql.city.domain.City;
|
||||
import com.sgs.graphql.city.repo.CityRepo;
|
||||
import com.sgs.graphql.city.service.CityService;
|
||||
import com.sgs.graphql.consuptionUnit.domain.ConsuptionUnit;
|
||||
import com.sgs.graphql.consuptionUnit.repo.ConsuptionUnitRepo;
|
||||
import com.sgs.graphql.consuptionUnit.service.ConsuptionUnitService;
|
||||
import com.sgs.graphql.country.domain.Country;
|
||||
import com.sgs.graphql.country.repo.CountryRepo;
|
||||
import com.sgs.graphql.country.service.CountryService;
|
||||
import com.sgs.graphql.district.domain.District;
|
||||
import com.sgs.graphql.district.repo.DistrictRepo;
|
||||
import com.sgs.graphql.district.service.DistrictService;
|
||||
import com.sgs.graphql.emissionScope.domain.EmissionScope;
|
||||
import com.sgs.graphql.emissionScope.service.EmissionScopeService;
|
||||
import com.sgs.graphql.emissionSource.domain.EmissionSource;
|
||||
import com.sgs.graphql.emissionSource.repo.EmissionSourceRepo;
|
||||
import com.sgs.graphql.emissionSource.service.EmissionSourceService;
|
||||
import com.sgs.graphql.emissionSourceConvertUnits.domain.EmissionSourceConvertUnit;
|
||||
import com.sgs.graphql.emissionSourceConvertUnits.service.EmissionSourceConvertUnitService;
|
||||
import com.sgs.graphql.gpcReference.domain.GpcReference;
|
||||
import com.sgs.graphql.gpcReference.service.GpcReferenceService;
|
||||
import com.sgs.graphql.mail.domain.MailInfo;
|
||||
import com.sgs.graphql.mail.service.MailInfoService;
|
||||
import com.sgs.graphql.mcfType.domain.McfType;
|
||||
import com.sgs.graphql.mcfType.service.McfTypeService;
|
||||
import com.sgs.graphql.neighborhood.domain.Neighborhood;
|
||||
import com.sgs.graphql.neighborhood.repo.NeighborhoodRepo;
|
||||
import com.sgs.graphql.neighborhood.service.NeighborhoodService;
|
||||
import com.sgs.graphql.organization.domain.Organization;
|
||||
import com.sgs.graphql.organization.service.OrganizationService;
|
||||
import com.sgs.graphql.permission.domain.Permission;
|
||||
import com.sgs.graphql.permission.domain.PermissionDescription;
|
||||
import com.sgs.graphql.permission.domain.PermissionName;
|
||||
import com.sgs.graphql.permission.service.PermissionService;
|
||||
import com.sgs.graphql.role.domain.Role;
|
||||
import com.sgs.graphql.role.repo.RoleRepo;
|
||||
import com.sgs.graphql.role.service.RoleService;
|
||||
import com.sgs.graphql.sector.domain.Sector;
|
||||
import com.sgs.graphql.sector.service.SectorService;
|
||||
import com.sgs.graphql.solidWasteType.domain.SolidWasteType;
|
||||
import com.sgs.graphql.solidWasteType.service.SolidWasteTypeService;
|
||||
import com.sgs.graphql.subSector.domain.SubSector;
|
||||
import com.sgs.graphql.subSector.repo.SubSectorRepo;
|
||||
import com.sgs.graphql.subSector.service.SubSectorService;
|
||||
import com.sgs.graphql.user.domain.User;
|
||||
import com.sgs.graphql.user.service.UserService;
|
||||
import com.sgs.graphql.wasteEmissionSource.domain.WasteEmissionSourceSupplement;
|
||||
import com.sgs.graphql.wasteEmissionSource.service.WasteEmissionSourceSupplementService;
|
||||
|
||||
import org.json.JSONArray;
|
||||
import org.json.JSONObject;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.beans.factory.annotation.Value;
|
||||
import org.springframework.boot.CommandLineRunner;
|
||||
import org.springframework.boot.SpringApplication;
|
||||
import org.springframework.boot.autoconfigure.SpringBootApplication;
|
||||
import org.springframework.security.crypto.password.PasswordEncoder;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
import java.nio.charset.StandardCharsets;
|
||||
import java.nio.file.Files;
|
||||
import java.nio.file.Paths;
|
||||
import java.util.*;
|
||||
|
||||
@SpringBootApplication
|
||||
public class SgsApplication implements CommandLineRunner {
|
||||
|
||||
private final PermissionService permissionService;
|
||||
private final RoleService roleService;
|
||||
private final RoleRepo roleRepo;
|
||||
private final NeighborhoodRepo neighborhoodRepo;
|
||||
private final NeighborhoodService neighborhoodService;
|
||||
private final CityService cityService;
|
||||
private final CityRepo cityRepo;
|
||||
private final DistrictRepo districtRepo;
|
||||
private final DistrictService districtService;
|
||||
private final CountryRepo countryRepo;
|
||||
private final CountryService countryService;
|
||||
private final OrganizationService organizationService;
|
||||
private final UserService userService;
|
||||
private final PasswordEncoder passwordEncoder;
|
||||
private final SectorService sectorService;
|
||||
private final SubSectorService subSectorService;
|
||||
private final EmissionScopeService emissionScopeService;
|
||||
private final GpcReferenceService gpcReferenceService;
|
||||
private final SubSectorRepo subSectorRepo;
|
||||
private final ActivitySubUnitService activitySubUnitService;
|
||||
private final ConsuptionUnitService consuptionUnitService;
|
||||
private final EmissionSourceService emissionSourceService;
|
||||
private final EmissionSourceRepo emissionSourceRepo;
|
||||
private final ConsuptionUnitRepo consuptionUnitRepo;
|
||||
private final EmissionSourceConvertUnitService emissionSourceConvertUnitService;
|
||||
private final SolidWasteTypeService solidWasteTypeService;
|
||||
private final McfTypeService mcfTypeService;
|
||||
private final WasteEmissionSourceSupplementService wasteEmissionSourceSupplementService;
|
||||
private final MailInfoService mailInfoService;
|
||||
|
||||
@Value("${mail.hostname:mail.blc-css.com}")
|
||||
private String mailHostname;
|
||||
|
||||
@Value("${mail.smtp.port:465}")
|
||||
private int mailSmtpPort;
|
||||
|
||||
@Value("${mail.address:info@blc-css.com}")
|
||||
private String mailAddress;
|
||||
|
||||
@Value("${mail.password:}")
|
||||
private String mailPassword;
|
||||
|
||||
public static void main(String[] args) {
|
||||
SpringApplication.run(SgsApplication.class, args);
|
||||
}
|
||||
|
||||
@Autowired
|
||||
public SgsApplication(RoleService roleService, PermissionService permissionService, RoleRepo roleRepo,
|
||||
NeighborhoodRepo neighborhoodRepo, NeighborhoodService neighborhoodService, CityService cityService,
|
||||
CityRepo cityRepo, DistrictRepo districtRepo, DistrictService districtService, CountryRepo countryRepo,
|
||||
CountryService countryService, OrganizationService organizationService, UserService userService,
|
||||
PasswordEncoder passwordEncoder, SectorService sectorService, SubSectorService subSectorService,
|
||||
EmissionScopeService emissionScopeService, GpcReferenceService gpcReferenceService,
|
||||
SubSectorRepo subSectorRepo, ActivitySubUnitService activitySubUnitService,
|
||||
ConsuptionUnitService consuptionUnitService, EmissionSourceService emissionSourceService,
|
||||
EmissionSourceRepo emissionSourceRepo, ConsuptionUnitRepo consuptionUnitRepo,
|
||||
EmissionSourceConvertUnitService emissionSourceConvertUnitService,
|
||||
SolidWasteTypeService solidWasteTypeService, McfTypeService mcfTypeService,
|
||||
WasteEmissionSourceSupplementService wasteEmissionSourceSupplementService,
|
||||
MailInfoService mailInfoService) {
|
||||
this.roleService = roleService;
|
||||
this.permissionService = permissionService;
|
||||
this.roleRepo = roleRepo;
|
||||
this.neighborhoodRepo = neighborhoodRepo;
|
||||
this.neighborhoodService = neighborhoodService;
|
||||
this.cityService = cityService;
|
||||
this.cityRepo = cityRepo;
|
||||
this.districtRepo = districtRepo;
|
||||
this.districtService = districtService;
|
||||
this.countryRepo = countryRepo;
|
||||
this.countryService = countryService;
|
||||
this.organizationService = organizationService;
|
||||
this.userService = userService;
|
||||
this.passwordEncoder = passwordEncoder;
|
||||
this.sectorService = sectorService;
|
||||
this.subSectorService = subSectorService;
|
||||
this.emissionScopeService = emissionScopeService;
|
||||
this.gpcReferenceService = gpcReferenceService;
|
||||
this.subSectorRepo = subSectorRepo;
|
||||
this.activitySubUnitService = activitySubUnitService;
|
||||
this.consuptionUnitService = consuptionUnitService;
|
||||
this.emissionSourceService = emissionSourceService;
|
||||
this.emissionSourceRepo = emissionSourceRepo;
|
||||
this.consuptionUnitRepo = consuptionUnitRepo;
|
||||
this.emissionSourceConvertUnitService = emissionSourceConvertUnitService;
|
||||
this.solidWasteTypeService = solidWasteTypeService;
|
||||
this.mcfTypeService = mcfTypeService;
|
||||
this.wasteEmissionSourceSupplementService = wasteEmissionSourceSupplementService;
|
||||
this.mailInfoService = mailInfoService;
|
||||
}
|
||||
|
||||
void createDefaultOrganization() {
|
||||
Organization organization = new Organization();
|
||||
organization.setTag("BLC");
|
||||
organization.setDescription("BLC Communication and Security Systems");
|
||||
organizationService.save(organization);
|
||||
}
|
||||
|
||||
void createDefaultUser() {
|
||||
Role role = roleRepo.findByTag("SUPER_ADMIN").orElse(null);
|
||||
List<Permission> permissions = new ArrayList<>();
|
||||
if (!permissionService.findAll().isEmpty()) {
|
||||
permissions.addAll(permissionService.findAll());
|
||||
}
|
||||
role.setPermissions(permissions);
|
||||
|
||||
// List<Organization> organizations = organizationRepo.findByTag("BLC");
|
||||
|
||||
User admin = new User();
|
||||
admin.setFirstName("Seda");
|
||||
admin.setLastName("Kemikli");
|
||||
admin.setEmail("seda.kemikli@blc-css.com");
|
||||
admin.setPhoneNumber("11111111");
|
||||
admin.setPassword(passwordEncoder.encode("admin"));
|
||||
// if (organizations.size() == 1) {
|
||||
// admin.setOrganizations(organizations);
|
||||
// }
|
||||
admin.setRole(role);
|
||||
admin.setStatus("aktif");
|
||||
userService.save(admin);
|
||||
}
|
||||
|
||||
public void createDefaultPermission() {
|
||||
|
||||
Permission activities_get = new Permission();
|
||||
activities_get.setTag(PermissionName.ACTIVITIES_GET);
|
||||
activities_get.setDescription(PermissionDescription.ACTIVITIES_GET);
|
||||
|
||||
Permission paginate_user_histories = new Permission();
|
||||
paginate_user_histories.setTag(PermissionName.PAGINATE_USER_HISTORIES);
|
||||
paginate_user_histories.setDescription(PermissionDescription.PAGINATE_USER_HISTORIES);
|
||||
|
||||
Permission activity_sub_units_get = new Permission();
|
||||
activity_sub_units_get.setTag(PermissionName.ACTIVITY_SUB_UNITS_GET);
|
||||
activity_sub_units_get.setDescription(PermissionDescription.ACTIVITY_SUB_UNITS_GET);
|
||||
|
||||
Permission sub_sectors_get = new Permission();
|
||||
sub_sectors_get.setTag(PermissionName.SUB_SECTORS_GET);
|
||||
sub_sectors_get.setDescription(PermissionDescription.SUB_SECTORS_GET);
|
||||
|
||||
Permission sectors_get = new Permission();
|
||||
sectors_get.setTag(PermissionName.SECTORS_GET);
|
||||
sectors_get.setDescription(PermissionDescription.SECTORS_GET);
|
||||
|
||||
Permission deleted_items = new Permission();
|
||||
deleted_items.setTag(PermissionName.GET_DELETED_ITEMS);
|
||||
deleted_items.setDescription(PermissionDescription.GET_DELETED_ITEMS);
|
||||
|
||||
Permission user_create = new Permission();
|
||||
user_create.setTag(PermissionName.USER_CREATE);
|
||||
user_create.setDescription(PermissionDescription.USER_CREATE);
|
||||
|
||||
Permission user_update = new Permission();
|
||||
user_update.setTag(PermissionName.USER_UPDATE);
|
||||
user_update.setDescription(PermissionDescription.USER_UPDATE);
|
||||
|
||||
Permission user_delete = new Permission();
|
||||
user_delete.setTag(PermissionName.USER_DELETE);
|
||||
user_delete.setDescription(PermissionDescription.USER_DELETE);
|
||||
|
||||
Permission paginate_users_get = new Permission();
|
||||
paginate_users_get.setTag(PermissionName.PAGINATE_USERS_GET);
|
||||
paginate_users_get.setDescription(PermissionDescription.PAGINATE_USERS_GET);
|
||||
|
||||
Permission role_create = new Permission();
|
||||
role_create.setTag(PermissionName.ROLE_CREATE);
|
||||
role_create.setDescription(PermissionDescription.ROLE_CREATE);
|
||||
|
||||
Permission role_update = new Permission();
|
||||
role_update.setTag(PermissionName.ROLE_UPDATE);
|
||||
role_update.setDescription(PermissionDescription.ROLE_UPDATE);
|
||||
|
||||
Permission role_delete = new Permission();
|
||||
role_delete.setTag(PermissionName.ROLE_DELETE);
|
||||
role_delete.setDescription(PermissionDescription.ROLE_DELETE);
|
||||
|
||||
Permission paginate_roles_get = new Permission();
|
||||
paginate_roles_get.setTag(PermissionName.PAGINATE_ROLES_GET);
|
||||
paginate_roles_get.setDescription(PermissionDescription.PAGINATE_ROLES_GET);
|
||||
|
||||
Permission organization_create = new Permission();
|
||||
organization_create.setTag(PermissionName.ORGANIZATION_CREATE);
|
||||
organization_create.setDescription(PermissionDescription.ORGANIZATION_CREATE);
|
||||
|
||||
Permission organization_update = new Permission();
|
||||
organization_update.setTag(PermissionName.ORGANIZATION_UPDATE);
|
||||
organization_update.setDescription(PermissionDescription.ORGANIZATION_UPDATE);
|
||||
|
||||
Permission organization_delete = new Permission();
|
||||
organization_delete.setTag(PermissionName.ORGANIZATION_DELETE);
|
||||
organization_delete.setDescription(PermissionDescription.ORGANIZATION_DELETE);
|
||||
|
||||
Permission paginate_organizations_get = new Permission();
|
||||
paginate_organizations_get.setTag(PermissionName.PAGINATE_ORGANIZATIONS_GET);
|
||||
paginate_organizations_get.setDescription(PermissionDescription.PAGINATE_ORGANIZATIONS_GET);
|
||||
|
||||
Permission area_create = new Permission();
|
||||
area_create.setTag(PermissionName.AREA_CREATE);
|
||||
area_create.setDescription(PermissionDescription.AREA_CREATE);
|
||||
|
||||
Permission area_update = new Permission();
|
||||
area_update.setTag(PermissionName.AREA_UPDATE);
|
||||
area_update.setDescription(PermissionDescription.AREA_UPDATE);
|
||||
|
||||
Permission area_delete = new Permission();
|
||||
area_delete.setTag(PermissionName.AREA_DELETE);
|
||||
area_delete.setDescription(PermissionDescription.AREA_DELETE);
|
||||
|
||||
Permission paginate_areas_get = new Permission();
|
||||
paginate_areas_get.setTag(PermissionName.PAGINATE_AREAS_GET);
|
||||
paginate_areas_get.setDescription(PermissionDescription.PAGINATE_AREAS_GET);
|
||||
|
||||
Permission neighborhood_create = new Permission();
|
||||
neighborhood_create.setTag(PermissionName.NEIGHBORHOOD_CREATE);
|
||||
neighborhood_create.setDescription(PermissionDescription.NEIGHBORHOOD_CREATE);
|
||||
|
||||
Permission neighborhood_update = new Permission();
|
||||
neighborhood_update.setTag(PermissionName.NEIGHBORHOOD_UPDATE);
|
||||
neighborhood_update.setDescription(PermissionDescription.NEIGHBORHOOD_UPDATE);
|
||||
|
||||
Permission neighborhood_delete = new Permission();
|
||||
neighborhood_delete.setTag(PermissionName.NEIGHBORHOOD_DELETE);
|
||||
neighborhood_delete.setDescription(PermissionDescription.NEIGHBORHOOD_DELETE);
|
||||
|
||||
Permission paginate_neighborhoods_get = new Permission();
|
||||
paginate_neighborhoods_get.setTag(PermissionName.PAGINATE_NEIGHBORHOODS_GET);
|
||||
paginate_neighborhoods_get.setDescription(PermissionDescription.PAGINATE_NEIGHBORHOODS_GET);
|
||||
|
||||
Permission paginate_cities_get = new Permission();
|
||||
paginate_cities_get.setTag(PermissionName.PAGINATE_CITIES_GET);
|
||||
paginate_cities_get.setDescription(PermissionDescription.PAGINATE_CITIES_GET);
|
||||
|
||||
Permission paginate_districts_get = new Permission();
|
||||
paginate_districts_get.setTag(PermissionName.PAGINATE_DISTRICTS_GET);
|
||||
paginate_districts_get.setDescription(PermissionDescription.PAGINATE_DISTRICTS_GET);
|
||||
|
||||
Permission paginate_countries_get = new Permission();
|
||||
paginate_countries_get.setTag(PermissionName.PAGINATE_COUNTRIES_GET);
|
||||
paginate_countries_get.setDescription(PermissionDescription.PAGINATE_COUNTRIES_GET);
|
||||
|
||||
Permission emission_source_create = new Permission();
|
||||
emission_source_create.setTag(PermissionName.EMISSION_SOURCE_CREATE);
|
||||
emission_source_create.setDescription(PermissionDescription.EMISSION_SOURCE_CREATE);
|
||||
|
||||
Permission emission_source_update = new Permission();
|
||||
emission_source_update.setTag(PermissionName.EMISSION_SOURCE_UPDATE);
|
||||
emission_source_update.setDescription(PermissionDescription.EMISSION_SOURCE_UPDATE);
|
||||
|
||||
Permission emission_source_delete = new Permission();
|
||||
emission_source_delete.setTag(PermissionName.EMISSION_SOURCE_DELETE);
|
||||
emission_source_delete.setDescription(PermissionDescription.EMISSION_SOURCE_DELETE);
|
||||
|
||||
Permission paginate_emission_sources_get = new Permission();
|
||||
paginate_emission_sources_get.setTag(PermissionName.PAGINATE_EMISSION_SOURCES_GET);
|
||||
paginate_emission_sources_get.setDescription(PermissionDescription.PAGINATE_EMISSION_SOURCES_GET);
|
||||
|
||||
Permission dataset_create = new Permission();
|
||||
dataset_create.setTag(PermissionName.DATASET_CREATE);
|
||||
dataset_create.setDescription(PermissionDescription.DATASET_CREATE);
|
||||
|
||||
Permission dataset_update = new Permission();
|
||||
dataset_update.setTag(PermissionName.DATASET_UPDATE);
|
||||
dataset_update.setDescription(PermissionDescription.DATASET_UPDATE);
|
||||
|
||||
Permission dataset_delete = new Permission();
|
||||
dataset_delete.setTag(PermissionName.DATASET_DELETE);
|
||||
dataset_delete.setDescription(PermissionDescription.DATASET_DELETE);
|
||||
|
||||
Permission paginate_datasets_get = new Permission();
|
||||
paginate_datasets_get.setTag(PermissionName.PAGINATE_DATASETS_GET);
|
||||
paginate_datasets_get.setDescription(PermissionDescription.PAGINATE_DATASETS_GET);
|
||||
|
||||
Permission answer_create = new Permission();
|
||||
answer_create.setTag(PermissionName.ANSWER_CREATE);
|
||||
answer_create.setDescription(PermissionDescription.ANSWER_CREATE);
|
||||
|
||||
Permission answer_update = new Permission();
|
||||
answer_update.setTag(PermissionName.ANSWER_UPDATE);
|
||||
answer_update.setDescription(PermissionDescription.ANSWER_UPDATE);
|
||||
|
||||
Permission answer_delete = new Permission();
|
||||
answer_delete.setTag(PermissionName.ANSWER_DELETE);
|
||||
answer_delete.setDescription(PermissionDescription.ANSWER_DELETE);
|
||||
|
||||
Permission paginate_answers_get = new Permission();
|
||||
paginate_answers_get.setTag(PermissionName.PAGINATE_ANSWERS_GET);
|
||||
paginate_answers_get.setDescription(PermissionDescription.PAGINATE_ANSWERS_GET);
|
||||
|
||||
Permission question_create = new Permission();
|
||||
question_create.setTag(PermissionName.QUESTION_CREATE);
|
||||
question_create.setDescription(PermissionDescription.QUESTION_CREATE);
|
||||
|
||||
Permission question_update = new Permission();
|
||||
question_update.setTag(PermissionName.QUESTION_UPDATE);
|
||||
question_update.setDescription(PermissionDescription.QUESTION_UPDATE);
|
||||
|
||||
Permission question_delete = new Permission();
|
||||
question_delete.setTag(PermissionName.QUESTION_DELETE);
|
||||
question_delete.setDescription(PermissionDescription.QUESTION_DELETE);
|
||||
|
||||
Permission paginate_questions_get = new Permission();
|
||||
paginate_questions_get.setTag(PermissionName.PAGINATE_QUESTIONS_GET);
|
||||
paginate_questions_get.setDescription(PermissionDescription.PAGINATE_QUESTIONS_GET);
|
||||
|
||||
Permission undelete_items = new Permission();
|
||||
undelete_items.setTag(PermissionName.UNDELETE_ITEMS);
|
||||
undelete_items.setDescription(PermissionDescription.UNDELETE_ITEMS);
|
||||
|
||||
Permission published_survey_create = new Permission();
|
||||
published_survey_create.setTag(PermissionName.PUBLISHED_SURVEY_CREATE);
|
||||
published_survey_create.setDescription(PermissionDescription.PUBLISHED_SURVEY_CREATE);
|
||||
|
||||
Permission surveys_get = new Permission();
|
||||
surveys_get.setTag(PermissionName.SURVEYS_GET);
|
||||
surveys_get.setDescription(PermissionDescription.SURVEYS_GET);
|
||||
|
||||
Permission paginate_surveys_get = new Permission();
|
||||
paginate_surveys_get.setTag(PermissionName.PAGINATE_SURVEYS_GET);
|
||||
paginate_surveys_get.setDescription(PermissionDescription.PAGINATE_SURVEYS_GET);
|
||||
|
||||
Permission survey_update = new Permission();
|
||||
survey_update.setTag(PermissionName.SURVEY_UPDATE);
|
||||
survey_update.setDescription(PermissionDescription.SURVEY_UPDATE);
|
||||
|
||||
Permission survey_delete = new Permission();
|
||||
survey_delete.setTag(PermissionName.SURVEY_DELETE);
|
||||
survey_delete.setDescription(PermissionDescription.SURVEY_DELETE);
|
||||
|
||||
Permission survey_add = new Permission();
|
||||
survey_add.setTag(PermissionName.SURVEY_ADD);
|
||||
survey_add.setDescription(PermissionDescription.SURVEY_ADD);
|
||||
|
||||
Permission show_graphics = new Permission();
|
||||
show_graphics.setTag(PermissionName.SHOW_GRAPHICS);
|
||||
show_graphics.setDescription(PermissionDescription.SHOW_GRAPHICS);
|
||||
|
||||
Permission settings_access = new Permission();
|
||||
settings_access.setTag(PermissionName.SETTINGS_ACCESS);
|
||||
settings_access.setDescription(PermissionDescription.SETTINGS_ACCESS);
|
||||
|
||||
Permission data_center_create = new Permission();
|
||||
data_center_create.setTag(PermissionName.DATA_CENTER_CREATE);
|
||||
data_center_create.setDescription(PermissionDescription.DATA_CENTER_CREATE);
|
||||
|
||||
Permission data_center_delete = new Permission();
|
||||
data_center_delete.setTag(PermissionName.DATA_CENTER_DELETE);
|
||||
data_center_delete.setDescription(PermissionDescription.DATA_CENTER_DELETE);
|
||||
|
||||
Permission data_center_update = new Permission();
|
||||
data_center_update.setTag(PermissionName.DATA_CENTER_UPDATE);
|
||||
data_center_update.setDescription(PermissionDescription.DATA_CENTER_UPDATE);
|
||||
|
||||
Permission data_center_read = new Permission();
|
||||
data_center_read.setTag(PermissionName.DATA_CENTER_READ);
|
||||
data_center_read.setDescription(PermissionDescription.DATA_CENTER_READ);
|
||||
|
||||
permissionService.saveAll(List.of(
|
||||
show_graphics, activities_get, paginate_user_histories, activity_sub_units_get, sub_sectors_get,
|
||||
sectors_get, deleted_items, undelete_items, user_create, user_update, user_delete, paginate_users_get,
|
||||
role_create, role_update, role_delete, paginate_roles_get,
|
||||
organization_create, organization_update, organization_delete, paginate_organizations_get,
|
||||
area_create, area_update, area_delete, paginate_areas_get,
|
||||
neighborhood_create, neighborhood_update, neighborhood_delete, paginate_neighborhoods_get,
|
||||
paginate_districts_get,
|
||||
paginate_cities_get,
|
||||
paginate_countries_get,
|
||||
emission_source_create, emission_source_update, emission_source_delete, paginate_emission_sources_get,
|
||||
dataset_create, dataset_update, dataset_delete, paginate_datasets_get,
|
||||
answer_create, answer_delete, answer_update, paginate_answers_get,
|
||||
question_create, question_delete, question_update, paginate_questions_get,
|
||||
published_survey_create, surveys_get, paginate_surveys_get,
|
||||
survey_add, survey_delete, survey_update, settings_access, data_center_create, data_center_delete,
|
||||
data_center_update, data_center_read));
|
||||
}
|
||||
|
||||
public void createDefaultRole() {
|
||||
Role role = new Role();
|
||||
role.setTag("SUPER_ADMIN");
|
||||
role.setPermissions(permissionService.findAll());
|
||||
roleService.save(role);
|
||||
}
|
||||
|
||||
void createCountry() {
|
||||
Country country = new Country();
|
||||
country.setCountryCode("TR");
|
||||
country.setName("Turkiye");
|
||||
countryRepo.save(country);
|
||||
|
||||
}
|
||||
|
||||
public void createCitiesFromJson() throws IOException {
|
||||
InputStream is = getClass().getResourceAsStream("/XDataSetModuleFiles/cities.json");
|
||||
String data = new String(is.readAllBytes(), StandardCharsets.UTF_8);
|
||||
JSONArray jsonArray = new JSONArray(data);
|
||||
|
||||
for (int i = 0; i < jsonArray.length(); i++) {
|
||||
JSONObject jsonObject = jsonArray.getJSONObject(i);
|
||||
String cityName = jsonObject.getString("name");
|
||||
JSONArray cityCoordinates = jsonObject.getJSONArray("coordinates");
|
||||
|
||||
City city = new City();
|
||||
city.setName(cityName);
|
||||
city.setCoordinates(cityCoordinates.toString());
|
||||
city.setCountry(countryService.findAll().get(0));
|
||||
cityRepo.save(city);
|
||||
}
|
||||
}
|
||||
|
||||
public void createDistrictFromJson() throws IOException {
|
||||
InputStream is = getClass().getResourceAsStream("/XDataSetModuleFiles/districts.json");
|
||||
String data = new String(is.readAllBytes(), StandardCharsets.UTF_8);
|
||||
JSONArray jsonArray = new JSONArray(data);
|
||||
|
||||
for (int i = 0; i < jsonArray.length(); i++) {
|
||||
JSONObject jsonObject = jsonArray.getJSONObject(i);
|
||||
String districtName = jsonObject.getString("name");
|
||||
String cityName = jsonObject.getString("city");
|
||||
JSONArray districtCoordinates = jsonObject.getJSONArray("coordinates");
|
||||
|
||||
City city = cityRepo.findByName(cityName);
|
||||
District district = new District();
|
||||
district.setName(districtName);
|
||||
district.setCoordinates(districtCoordinates.toString());
|
||||
district.setCity(city);
|
||||
|
||||
districtRepo.save(district);
|
||||
}
|
||||
}
|
||||
|
||||
void createNeighborhoodsFromJson() throws IOException {
|
||||
InputStream is = getClass().getResourceAsStream("/XDataSetModuleFiles/neighbourhoods.json");
|
||||
String data = new String(is.readAllBytes(), StandardCharsets.UTF_8);
|
||||
JSONArray jsonArray = new JSONArray(data);
|
||||
|
||||
for (int i = 0; i < jsonArray.length(); i++) {
|
||||
JSONObject jsonObject = jsonArray.getJSONObject(i);
|
||||
String cityName = jsonObject.getString("city");
|
||||
String districtName = jsonObject.getString("district");
|
||||
String neighborhoodName = jsonObject.getString("name");
|
||||
double minLong = jsonObject.getDouble("minLong");
|
||||
double minLat = jsonObject.getDouble("minLat");
|
||||
double maxLong = jsonObject.getDouble("maxLong");
|
||||
double maxLat = jsonObject.getDouble("maxLat");
|
||||
|
||||
City city = cityRepo.findByName(cityName);
|
||||
if (city != null) {
|
||||
District district = city.getDistricts().stream()
|
||||
.filter(d -> d.getName().equals(districtName))
|
||||
.findFirst()
|
||||
.orElse(null);
|
||||
|
||||
if (district != null) {
|
||||
Neighborhood neighborhood = new Neighborhood();
|
||||
neighborhood.setName(neighborhoodName);
|
||||
neighborhood.setDistrict(district);
|
||||
neighborhood.setMinLong(minLong);
|
||||
neighborhood.setMinLat(minLat);
|
||||
neighborhood.setMaxLong(maxLong);
|
||||
neighborhood.setMaxLat(maxLat);
|
||||
|
||||
neighborhoodRepo.save(neighborhood);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void createSectorAndSubSectorFromJson() throws IOException {
|
||||
InputStream is = getClass().getResourceAsStream("/XDataSetModuleFiles/SectorsAndSubSectors.json");
|
||||
String data = new String(is.readAllBytes(), StandardCharsets.UTF_8);
|
||||
JSONObject fullJson = new JSONObject(data);
|
||||
JSONArray jsonArray = fullJson.getJSONArray("Sectors");
|
||||
|
||||
for (int i = 0; i < jsonArray.length(); i++) {
|
||||
JSONObject jsonObject = jsonArray.getJSONObject(i);
|
||||
Sector sector = new Sector();
|
||||
sector.setTag(jsonObject.getString("SectorName"));
|
||||
sector.setSectorNo(jsonObject.getInt("SectorNo"));
|
||||
sector.setDescription(jsonObject.getString("SectorName"));
|
||||
sectorService.save(sector);
|
||||
|
||||
JSONArray subSectorsJson = jsonObject.getJSONArray("SubSectors");
|
||||
for (int j = 0; j < subSectorsJson.length(); j++) {
|
||||
JSONObject subSectorJson = subSectorsJson.getJSONObject(j);
|
||||
SubSector subSector = new SubSector();
|
||||
subSector.setSubSectorNo(subSectorJson.getInt("SubSectorNo"));
|
||||
subSector.setTag(subSectorJson.getString("Name"));
|
||||
subSector.setDescription(subSectorJson.getString("Name"));
|
||||
subSector.setSector(sector);
|
||||
subSectorService.save(subSector);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void createGpcReference() throws IOException {
|
||||
InputStream is = getClass().getResourceAsStream("/XDataSetModuleFiles/GpcReferenceNumbers.json");
|
||||
String data = new String(is.readAllBytes(), StandardCharsets.UTF_8);
|
||||
JSONObject fullJson = new JSONObject(data);
|
||||
JSONArray jsonArray = fullJson.getJSONArray("data");
|
||||
|
||||
for (int i = 0; i < jsonArray.length(); i++) {
|
||||
GpcReference gpcReference = new GpcReference();
|
||||
gpcReference.setReferenceNumber(jsonArray.getString(i));
|
||||
gpcReference.setDescription(jsonArray.getString(i));
|
||||
gpcReferenceService.save(gpcReference);
|
||||
}
|
||||
}
|
||||
|
||||
void createConsuptionUnit() throws IOException {
|
||||
InputStream is = getClass().getResourceAsStream("/XDataSetModuleFiles/ConsuptionUnits.json");
|
||||
String data = new String(is.readAllBytes(), StandardCharsets.UTF_8);
|
||||
JSONObject fullJson = new JSONObject(data);
|
||||
JSONArray jsonArray = fullJson.getJSONArray("units");
|
||||
|
||||
for (int i = 0; i < jsonArray.length(); i++) {
|
||||
JSONObject unitObject = jsonArray.getJSONObject(i);
|
||||
|
||||
String unitName = unitObject.getString("name");
|
||||
String unitDescription = unitObject.getString("description");
|
||||
|
||||
ConsuptionUnit consuptionUnit = new ConsuptionUnit();
|
||||
consuptionUnit.setTag(unitName);
|
||||
consuptionUnit.setDescription(unitDescription);
|
||||
consuptionUnitService.save(consuptionUnit);
|
||||
}
|
||||
}
|
||||
|
||||
void createEmissionSourceConvertUnit() throws IOException {
|
||||
InputStream is = getClass().getResourceAsStream("/XDataSetModuleFiles/EmissionSourceConvertUnit.json");
|
||||
String data = new String(is.readAllBytes(), StandardCharsets.UTF_8);
|
||||
JSONObject fullJson = new JSONObject(data);
|
||||
JSONArray jsonArray = fullJson.getJSONArray("Data");
|
||||
|
||||
for (int i = 0; i < jsonArray.length(); i++) {
|
||||
JSONObject obj = jsonArray.getJSONObject(i);
|
||||
List<EmissionSource> emissionSourceList = emissionSourceRepo.findByTag(obj.getString("EmissionSource"));
|
||||
ConsuptionUnit consuptionUnit = consuptionUnitRepo.findByTag(obj.getString("ConsuptionUnit")).get(0);
|
||||
|
||||
for (EmissionSource emissionSource : emissionSourceList) {
|
||||
if (consuptionUnit != null) {
|
||||
emissionSource.setConvertUnitCheck(true);
|
||||
EmissionSource updatedEmissionSource = emissionSourceService.update(emissionSource);
|
||||
EmissionSourceConvertUnit unit = new EmissionSourceConvertUnit();
|
||||
unit.setEmissionSource(updatedEmissionSource);
|
||||
unit.setUnit(consuptionUnit);
|
||||
unit.setValue(obj.getDouble("Amount"));
|
||||
emissionSourceConvertUnitService.save(unit);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void createEmissionScope() {
|
||||
for (int i = 1; i < 4; i++) {
|
||||
EmissionScope emissionScope = new EmissionScope();
|
||||
emissionScope.setTag("Kapsam-" + i);
|
||||
emissionScope.setDescription("Kapsam-" + i);
|
||||
emissionScopeService.save(emissionScope);
|
||||
}
|
||||
}
|
||||
|
||||
void createActivitySubUnit() throws IOException {
|
||||
InputStream is = getClass().getResourceAsStream("/XDataSetModuleFiles/ActivitySubUnits.json");
|
||||
String data = new String(is.readAllBytes(), StandardCharsets.UTF_8);
|
||||
JSONObject fullJson = new JSONObject(data);
|
||||
List<String> tags = Arrays.asList("Konutlar", "Ticari ve Kurumsal Binalar", "İmalat Sanayi ve İnşaat Yapı",
|
||||
"Tarım, Ormancılık, Balıkçılık Faaliyetleri ve Balık Çiftlikleri",
|
||||
"Kömür Madenciliği, İşlenmesi, Depolanması ve Taşınmasından Kaynaklanan Kaçak Emisyonlar",
|
||||
"Karayolu Taşımacılığı", "Havayolu Taşımacılığı", "Demiryolu Taşımacılığı", "Arazi Taşımacılığı",
|
||||
"Denizyolu Taşımacılığı");
|
||||
|
||||
for (String tag : tags) {
|
||||
JSONArray jsonArray = fullJson.getJSONArray(tag);
|
||||
SubSector subSector = subSectorRepo.findByTag(tag);
|
||||
for (int i = 0; i < jsonArray.length(); i++) {
|
||||
ActivitySubUnit activitySubUnit = new ActivitySubUnit();
|
||||
activitySubUnit.setTag(jsonArray.getString(i));
|
||||
activitySubUnit.setDescription(jsonArray.getString(i));
|
||||
activitySubUnit.setSubSector(subSector);
|
||||
activitySubUnitService.save(activitySubUnit);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void createEmissionSourceFromJson(String filePath, String[] subSectorTags) throws IOException {
|
||||
InputStream is = getClass().getResourceAsStream("/" + filePath);
|
||||
String data = new String(is.readAllBytes(), StandardCharsets.UTF_8);
|
||||
JSONObject fullJson = new JSONObject(data);
|
||||
JSONArray jsonArray = fullJson.getJSONArray("Data");
|
||||
|
||||
String[] co2Tags = { "CO2", "CO2_1", "CO2_2", "CO2_3", "CO2_4" };
|
||||
String[] ch4Tags = { "CH4 (CO2e)", "CH4 (CO2e)_1", "CH4 (CO2e)_2", "CH4 (CO2e)_3", "CH4 (CO2e)_4" };
|
||||
String[] n20Tags = { "N20 (CO2e)", "N20 (CO2e)_1", "N20 (CO2e)_2", "N20 (CO2e)_3", "N20 (CO2e)_4" };
|
||||
|
||||
for (int i = 0; i < jsonArray.length(); i++) {
|
||||
JSONObject jsonObject = jsonArray.getJSONObject(i);
|
||||
String tag = jsonObject.getString("Emisyon Kaynağı");
|
||||
String scope = jsonObject.optString("scope");
|
||||
|
||||
for (int j = 0; j < subSectorTags.length; j++) {
|
||||
EmissionSource emissionSource = new EmissionSource();
|
||||
emissionSource.setTag(tag);
|
||||
emissionSource.setEmissionScope(scope);
|
||||
emissionSource.setDescription(tag);
|
||||
emissionSource.setCo2(jsonObject.getDouble(co2Tags[j]));
|
||||
emissionSource.setCh4(jsonObject.getDouble(ch4Tags[j]));
|
||||
emissionSource.setN2o(jsonObject.getDouble(n20Tags[j]));
|
||||
emissionSource.setSubSector(subSectorRepo.findByTag(subSectorTags[j]));
|
||||
EmissionSource savedEmissionSource = emissionSourceService.save(emissionSource);
|
||||
|
||||
EmissionSourceConvertUnit tjConvertUnit = new EmissionSourceConvertUnit();
|
||||
tjConvertUnit.setEmissionSource(savedEmissionSource);
|
||||
tjConvertUnit.setValue(1.0);
|
||||
tjConvertUnit.setUnit(consuptionUnitRepo.findByTag("TJ").get(0));
|
||||
EmissionSourceConvertUnit savedTjConvertUnit = emissionSourceConvertUnitService.save(tjConvertUnit);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void createWasteEmissionSourceFromJson(String filePath) throws IOException {
|
||||
InputStream is = getClass().getResourceAsStream("/" + filePath);
|
||||
String data = new String(is.readAllBytes(), StandardCharsets.UTF_8);
|
||||
JSONObject fullJson = new JSONObject(data);
|
||||
JSONArray jsonArray = fullJson.getJSONArray("Data");
|
||||
|
||||
for (int i = 0; i < jsonArray.length(); i++) {
|
||||
JSONObject jsonObject = jsonArray.getJSONObject(i);
|
||||
WasteEmissionSourceSupplement wasteEmissionSourceSupplement = new WasteEmissionSourceSupplement();
|
||||
wasteEmissionSourceSupplement.setDryWeightCH4(jsonObject.optDouble("dryWeightCH4", 0.0));
|
||||
wasteEmissionSourceSupplement.setWetWeightCH4(jsonObject.optDouble("wetWeightCH4", 0.0));
|
||||
wasteEmissionSourceSupplement.setDampWeightCH4(jsonObject.optDouble("dampWeightCH4", 0.0));
|
||||
wasteEmissionSourceSupplement.setDryWeightN2O(jsonObject.optDouble("dryWeightN2O", 0.0));
|
||||
wasteEmissionSourceSupplement.setWetWeightN2O(jsonObject.optDouble("wetWeightN2O", 0.0));
|
||||
WasteEmissionSourceSupplement savedWasteEmissionSourceSupplement = wasteEmissionSourceSupplementService
|
||||
.save(wasteEmissionSourceSupplement);
|
||||
|
||||
String tag = jsonObject.getString("Emisyon Kaynağı");
|
||||
EmissionSource emissionSource = new EmissionSource();
|
||||
emissionSource.setTag(tag);
|
||||
emissionSource.setDescription(tag);
|
||||
emissionSource.setCo2(0.0);
|
||||
emissionSource.setCh4(0.0);
|
||||
emissionSource.setN2o(0.0);
|
||||
emissionSource.setConvertUnitCheck(true);
|
||||
if (i < 2) {
|
||||
emissionSource.setSubSector(subSectorRepo.findByTag("Atıkların Biyolojik Arıtılması"));
|
||||
} else if (i < 10) {
|
||||
emissionSource.setSubSector(subSectorRepo.findByTag("Atık Su Arıtma ve Deşarjı"));
|
||||
} else if (i < 14) {
|
||||
emissionSource.setSubSector(subSectorRepo.findByTag("Yakma ve Açık Yanma"));
|
||||
}
|
||||
emissionSource.setWasteEmissionSourceSupplement(savedWasteEmissionSourceSupplement);
|
||||
emissionSourceService.save(emissionSource);
|
||||
}
|
||||
}
|
||||
|
||||
void createSolidWasteTypeFromJson() throws IOException {
|
||||
InputStream is = getClass().getResourceAsStream("/XDataSetModuleFiles/SolidWasteTypes.json");
|
||||
String data = new String(is.readAllBytes(), StandardCharsets.UTF_8);
|
||||
JSONObject fullJson = new JSONObject(data);
|
||||
JSONArray jsonArray = fullJson.getJSONArray("Data");
|
||||
|
||||
for (int i = 0; i < jsonArray.length(); i++) {
|
||||
JSONObject jsonObject = jsonArray.getJSONObject(i);
|
||||
String typeName = jsonObject.getString("TypeName");
|
||||
double formulaCoefficient = jsonObject.getDouble("FormulaCoefficient");
|
||||
|
||||
SolidWasteType solidWasteType = new SolidWasteType();
|
||||
solidWasteType.setTypeName(typeName);
|
||||
solidWasteType.setFormulaCoefficient(formulaCoefficient);
|
||||
solidWasteTypeService.save(solidWasteType);
|
||||
}
|
||||
}
|
||||
|
||||
void createMcfTypeFromJson() throws IOException {
|
||||
InputStream is = getClass().getResourceAsStream("/XDataSetModuleFiles/MCFType.json");
|
||||
String data = new String(is.readAllBytes(), StandardCharsets.UTF_8);
|
||||
JSONObject fullJson = new JSONObject(data);
|
||||
JSONArray jsonArray = fullJson.getJSONArray("Data");
|
||||
|
||||
for (int i = 0; i < jsonArray.length(); i++) {
|
||||
JSONObject jsonObject = jsonArray.getJSONObject(i);
|
||||
String typeName = jsonObject.getString("TypeName");
|
||||
double value = jsonObject.getDouble("Value");
|
||||
|
||||
McfType mcfType = new McfType();
|
||||
mcfType.setTypeName(typeName);
|
||||
mcfType.setValue(value);
|
||||
mcfTypeService.save(mcfType);
|
||||
}
|
||||
}
|
||||
|
||||
void createDefaultMailInfo() {
|
||||
MailInfo mailInfo = new MailInfo();
|
||||
mailInfo.setHostName(mailHostname);
|
||||
mailInfo.setSmtpPort(mailSmtpPort);
|
||||
mailInfo.setEmailAddress(mailAddress);
|
||||
mailInfo.setEmailPassword(mailPassword);
|
||||
mailInfo.setMainMail(true);
|
||||
mailInfoService.save(mailInfo);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void run(String... args) throws Exception {
|
||||
if (mailInfoService.findAll().isEmpty()) {
|
||||
createDefaultMailInfo();
|
||||
}
|
||||
if (consuptionUnitService.findAll().isEmpty()) {
|
||||
createConsuptionUnit();
|
||||
}
|
||||
if (gpcReferenceService.findAll().isEmpty()) {
|
||||
createGpcReference();
|
||||
}
|
||||
if (emissionScopeService.findAll().isEmpty()) {
|
||||
createEmissionScope();
|
||||
}
|
||||
if (sectorService.findAll().isEmpty()) {
|
||||
createSectorAndSubSectorFromJson();
|
||||
}
|
||||
if (activitySubUnitService.findAll().isEmpty()) {
|
||||
createActivitySubUnit();
|
||||
}
|
||||
if (emissionSourceService.findAll().isEmpty()) {
|
||||
createEmissionSourceFromJson("XDataSetModuleFiles/EmissionSourceYenilenebilirEnerjiEF.json",
|
||||
new String[] { "Güneş Enerji Santrali", "Rüzgar Enerji Santrali", "Hidroelektrik Enerji Santrali",
|
||||
"Biyokütle Enerji Santrali", "Jeotermal Enerji Santrali" });
|
||||
createEmissionSourceFromJson("XDataSetModuleFiles/EmissionSourceSabitEnerjiEF.json",
|
||||
new String[] { "Enerji Endüstrileri", "İmalat Sanayi ve İnşaat Yapı", "Ticari ve Kurumsal Binalar",
|
||||
"Konutlar", "Tarım, Ormancılık, Balıkçılık Faaliyetleri ve Balık Çiftlikleri" });
|
||||
createEmissionSourceFromJson("XDataSetModuleFiles/EmissionSourceUlasimEF.json",
|
||||
new String[] { "Karayolu Taşımacılığı", "Denizyolu Taşımacılığı", "Demiryolu Taşımacılığı",
|
||||
"Arazi Taşımacılığı", "Havayolu Taşımacılığı" });
|
||||
createWasteEmissionSourceFromJson("XDataSetModuleFiles/EmissionSourceAtikEF.json");
|
||||
createEmissionSourceConvertUnit();
|
||||
}
|
||||
if (solidWasteTypeService.findAll().isEmpty()) {
|
||||
createSolidWasteTypeFromJson();
|
||||
}
|
||||
if (mcfTypeService.findAll().isEmpty()) {
|
||||
createMcfTypeFromJson();
|
||||
}
|
||||
if (permissionService.findAll().isEmpty()) {
|
||||
createDefaultPermission();
|
||||
}
|
||||
if (roleService.findAll().isEmpty()) {
|
||||
createDefaultRole();
|
||||
}
|
||||
if (organizationService.findAll().isEmpty()) {
|
||||
createDefaultOrganization();
|
||||
}
|
||||
if (userService.findAll().isEmpty()) {
|
||||
createDefaultUser();
|
||||
}
|
||||
if (countryService.findAll().isEmpty()) {
|
||||
createCountry();
|
||||
}
|
||||
if (cityService.findAll().isEmpty()) {
|
||||
createCitiesFromJson();
|
||||
}
|
||||
if (districtService.findAll().isEmpty()) {
|
||||
createDistrictFromJson();
|
||||
}
|
||||
if (neighborhoodService.findAll().isEmpty()) {
|
||||
createNeighborhoodsFromJson();
|
||||
}
|
||||
// Add new permission if it doesn't exist
|
||||
// [Remove Later]
|
||||
if (permissionService.findAll().stream().noneMatch(p -> PermissionName.SETTINGS_ACCESS.equals(p.getTag()))) {
|
||||
Permission settingsAccess = new Permission();
|
||||
settingsAccess.setTag(PermissionName.SETTINGS_ACCESS);
|
||||
settingsAccess.setDescription(PermissionDescription.SETTINGS_ACCESS);
|
||||
settingsAccess.setDefault_permission(false);
|
||||
settingsAccess.setDeleted(false);
|
||||
permissionService.save(settingsAccess);
|
||||
}
|
||||
Permission settings_access = new Permission();
|
||||
settings_access.setTag(PermissionName.SETTINGS_ACCESS);
|
||||
settings_access.setDescription(PermissionDescription.SETTINGS_ACCESS);
|
||||
}
|
||||
}
|
||||
32
sge-backend/src/main/java/com/sgs/config/CORSConfig.java
Normal file
32
sge-backend/src/main/java/com/sgs/config/CORSConfig.java
Normal file
@@ -0,0 +1,32 @@
|
||||
package com.sgs.config;
|
||||
|
||||
import com.fasterxml.jackson.core.JsonParser;
|
||||
import com.fasterxml.jackson.databind.ObjectMapper;
|
||||
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;
|
||||
|
||||
@Configuration
|
||||
public class CORSConfig {
|
||||
@Bean
|
||||
public CorsFilter corsFilter() {
|
||||
CorsConfiguration config = new CorsConfiguration();
|
||||
config.setAllowCredentials(true);
|
||||
config.addAllowedOrigin("http://localhost:8080");
|
||||
config.addAllowedHeader("*");
|
||||
config.addAllowedOriginPattern("*");
|
||||
config.addAllowedMethod(CorsConfiguration.ALL);
|
||||
UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
|
||||
source.registerCorsConfiguration("/**", config);
|
||||
return new CorsFilter(source);
|
||||
}
|
||||
|
||||
@Bean
|
||||
public ObjectMapper singleQuoteObjectMapper() {
|
||||
ObjectMapper mapper = new ObjectMapper();
|
||||
mapper.configure(JsonParser.Feature.ALLOW_SINGLE_QUOTES, true);
|
||||
return mapper;
|
||||
}
|
||||
}
|
||||
19
sge-backend/src/main/java/com/sgs/config/RabbitMQConfig.java
Normal file
19
sge-backend/src/main/java/com/sgs/config/RabbitMQConfig.java
Normal file
@@ -0,0 +1,19 @@
|
||||
package com.sgs.config;
|
||||
|
||||
import org.springframework.amqp.core.Queue;
|
||||
import org.springframework.context.annotation.Bean;
|
||||
import org.springframework.context.annotation.Configuration;
|
||||
|
||||
@Configuration
|
||||
public class RabbitMQConfig {
|
||||
|
||||
public static final String QUEUE_NAME = "tsstyqueue";
|
||||
|
||||
@Bean
|
||||
public Queue queue() {
|
||||
return new Queue(QUEUE_NAME,
|
||||
true,
|
||||
false,
|
||||
false);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,26 @@
|
||||
package com.sgs.exception;
|
||||
|
||||
import org.springframework.http.HttpStatus;
|
||||
|
||||
public class CustomException extends RuntimeException {
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
private final String message;
|
||||
private final HttpStatus httpStatus;
|
||||
|
||||
public CustomException(String message, HttpStatus httpStatus) {
|
||||
this.message = message;
|
||||
this.httpStatus = httpStatus;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getMessage() {
|
||||
return message;
|
||||
}
|
||||
|
||||
public HttpStatus getHttpStatus() {
|
||||
return httpStatus;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,11 @@
|
||||
package com.sgs.exception;
|
||||
|
||||
public class FileStorageException extends RuntimeException {
|
||||
public FileStorageException(String message) {
|
||||
super(message);
|
||||
}
|
||||
|
||||
public FileStorageException(String message, Throwable cause) {
|
||||
super(message, cause);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,43 @@
|
||||
package com.sgs.exception;
|
||||
|
||||
import org.springframework.boot.web.error.ErrorAttributeOptions;
|
||||
import org.springframework.boot.web.servlet.error.DefaultErrorAttributes;
|
||||
import org.springframework.boot.web.servlet.error.ErrorAttributes;
|
||||
import org.springframework.context.annotation.Bean;
|
||||
import org.springframework.http.HttpStatus;
|
||||
import org.springframework.web.bind.annotation.ExceptionHandler;
|
||||
import org.springframework.web.bind.annotation.RestControllerAdvice;
|
||||
import org.springframework.web.context.request.WebRequest;
|
||||
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
import java.io.IOException;
|
||||
import java.nio.file.AccessDeniedException;
|
||||
import java.util.Map;
|
||||
|
||||
@RestControllerAdvice
|
||||
public class GlobalExceptionHandlerController {
|
||||
@ExceptionHandler(CustomException.class)
|
||||
public void handleCustomException(HttpServletResponse res, CustomException ex) throws IOException {
|
||||
res.sendError(ex.getHttpStatus().value(), ex.getMessage());
|
||||
}
|
||||
|
||||
@ExceptionHandler(AccessDeniedException.class)
|
||||
public void handleAccessDeniedException(HttpServletResponse res) throws IOException {
|
||||
res.sendError(HttpStatus.FORBIDDEN.value(), "Access denied.");
|
||||
}
|
||||
|
||||
@ExceptionHandler(Exception.class)
|
||||
public void handleException(HttpServletResponse res) throws IOException {
|
||||
res.sendError(HttpStatus.BAD_REQUEST.value(), "Something went wrong, please try again.");
|
||||
}
|
||||
|
||||
@Bean
|
||||
public ErrorAttributes errorAttributes() {
|
||||
return new DefaultErrorAttributes() {
|
||||
@Override
|
||||
public Map<String, Object> getErrorAttributes(WebRequest webRequest, ErrorAttributeOptions options) {
|
||||
return super.getErrorAttributes(webRequest, ErrorAttributeOptions.defaults().excluding(ErrorAttributeOptions.Include.EXCEPTION));
|
||||
}
|
||||
};
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,55 @@
|
||||
package com.sgs.exception;
|
||||
|
||||
import graphql.ErrorType;
|
||||
import graphql.GraphQLError;
|
||||
import graphql.language.SourceLocation;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
public class GraphQLCustomError implements GraphQLError {
|
||||
private final String errorCode;
|
||||
private final String message;
|
||||
private final List<SourceLocation> locations;
|
||||
private final List<Object> path;
|
||||
private final Map<String, Object> extensions;
|
||||
|
||||
public GraphQLCustomError(String errorCode, String message, List<SourceLocation> locations, List<Object> path,
|
||||
Map<String, Object> extensions) {
|
||||
this.errorCode = errorCode;
|
||||
this.message = message;
|
||||
this.locations = locations;
|
||||
this.path = path;
|
||||
this.extensions = extensions != null ? extensions : new HashMap<>();
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getMessage() {
|
||||
return message;
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<SourceLocation> getLocations() {
|
||||
return locations;
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<Object> getPath() {
|
||||
return path;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Map<String, Object> getExtensions() {
|
||||
return extensions;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ErrorType getErrorType() {
|
||||
return ErrorType.ValidationError;
|
||||
}
|
||||
|
||||
public String getErrorCode() {
|
||||
return errorCode;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,36 @@
|
||||
package com.sgs.exception;
|
||||
|
||||
import graphql.ErrorClassification;
|
||||
import graphql.ErrorType;
|
||||
import graphql.GraphQLError;
|
||||
import graphql.language.SourceLocation;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
public class GraphQLCustomException extends RuntimeException implements GraphQLError {
|
||||
|
||||
private Map<String, Object> extensions = new HashMap<>();
|
||||
|
||||
public GraphQLCustomException(String message, String invalidField) {
|
||||
super(message);
|
||||
extensions.put("ErrorCode", message);
|
||||
extensions.put("invalidField", invalidField);
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<SourceLocation> getLocations() {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Map<String, Object> getExtensions() {
|
||||
return extensions;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ErrorClassification getErrorType() {
|
||||
return ErrorType.DataFetchingException;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,61 @@
|
||||
package com.sgs.exception;
|
||||
|
||||
import graphql.ExceptionWhileDataFetching;
|
||||
import graphql.GraphQLError;
|
||||
import graphql.kickstart.execution.error.GraphQLErrorHandler;
|
||||
import org.springframework.context.annotation.Primary;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
@Component
|
||||
@Primary // Mark this as the primary handler to resolve the conflict
|
||||
public class GraphQLExceptionHandler implements GraphQLErrorHandler {
|
||||
|
||||
private static final Map<String, String> ERROR_MESSAGES = new HashMap<>();
|
||||
|
||||
static {
|
||||
ERROR_MESSAGES.put("2040",
|
||||
"Bu organizasyon bir veya daha fazla alanla ilişkilendirilmiş olduğu için silinemez. Önce ilişkili alanları kaldırın.");
|
||||
ERROR_MESSAGES.put("2020",
|
||||
"Bu organizasyon bir veya daha fazla kullanıcıyla ilişkilendirilmiş olduğu için silinemez. Önce ilişkili kullanıcıları kaldırın.");
|
||||
ERROR_MESSAGES.put("2010", "Bu tag ile bir organizasyon zaten mevcut.");
|
||||
ERROR_MESSAGES.put("2030", "Bu tag ile silinmiş bir organizasyon zaten mevcut.");
|
||||
// Add other error codes and messages as needed
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<GraphQLError> processErrors(List<GraphQLError> errors) {
|
||||
return errors.stream()
|
||||
.map(this::processError)
|
||||
.collect(Collectors.toList());
|
||||
}
|
||||
|
||||
private GraphQLError processError(GraphQLError error) {
|
||||
if (error instanceof ExceptionWhileDataFetching exceptionError &&
|
||||
exceptionError.getException() instanceof GraphQLCustomException customException) {
|
||||
String errorCode = customException.getMessage();
|
||||
// String errorCode = (String) customException.getExtensions().get("errorCode");
|
||||
|
||||
String errorMessage = ERROR_MESSAGES.getOrDefault(errorCode, "Bilinmeyen hata kodu: " + errorCode);
|
||||
|
||||
// Return a more informative error
|
||||
return new GraphQLCustomError(
|
||||
errorCode,
|
||||
errorMessage,
|
||||
error.getLocations(),
|
||||
error.getPath(),
|
||||
customException.getExtensions());
|
||||
}
|
||||
return error;
|
||||
}
|
||||
|
||||
// Required by GraphQLErrorHandler interface
|
||||
@Override
|
||||
public boolean errorsPresent(List<GraphQLError> errors) {
|
||||
return errors != null && !errors.isEmpty();
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,16 @@
|
||||
package com.sgs.exception;
|
||||
|
||||
|
||||
import org.springframework.http.HttpStatus;
|
||||
import org.springframework.web.bind.annotation.ResponseStatus;
|
||||
|
||||
@ResponseStatus(HttpStatus.NOT_FOUND)
|
||||
public class MyFileNotFoundException extends RuntimeException {
|
||||
public MyFileNotFoundException(String message) {
|
||||
super(message);
|
||||
}
|
||||
|
||||
public MyFileNotFoundException(String message, Throwable cause) {
|
||||
super(message, cause);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,45 @@
|
||||
package com.sgs.graphql.RelationOrganizationToOrganization.domain;
|
||||
|
||||
import com.sgs.graphql.organization.domain.Organization;
|
||||
import com.sgs.lib.dao.domain.BaseDomain;
|
||||
|
||||
import javax.persistence.*;
|
||||
|
||||
@Entity
|
||||
@Table(name = "relation_organization_to_organization")
|
||||
public class OrganizationToOrganization extends BaseDomain {
|
||||
|
||||
private Organization parent;
|
||||
|
||||
private Organization child;
|
||||
|
||||
private boolean deleted;
|
||||
|
||||
@ManyToOne(fetch = FetchType.EAGER, cascade = CascadeType.ALL)
|
||||
@JoinColumn(name = "parent_id")
|
||||
public Organization getParent() {
|
||||
return parent;
|
||||
}
|
||||
|
||||
public void setParent(Organization parent) {
|
||||
this.parent = parent;
|
||||
}
|
||||
|
||||
@ManyToOne(fetch = FetchType.EAGER, cascade = CascadeType.ALL)
|
||||
@JoinColumn(name = "child_id")
|
||||
public Organization getChild() {
|
||||
return child;
|
||||
}
|
||||
|
||||
public void setChild(Organization child) {
|
||||
this.child = child;
|
||||
}
|
||||
|
||||
public boolean isDeleted() {
|
||||
return deleted;
|
||||
}
|
||||
|
||||
public void setDeleted(boolean deleted) {
|
||||
this.deleted = deleted;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,10 @@
|
||||
package com.sgs.graphql.RelationOrganizationToOrganization.repo;
|
||||
|
||||
|
||||
import com.sgs.graphql.RelationOrganizationToOrganization.domain.OrganizationToOrganization;
|
||||
import com.sgs.lib.dao.repo.BaseRepo;
|
||||
import org.springframework.stereotype.Repository;
|
||||
|
||||
@Repository
|
||||
public interface OrganizationToOrganizationRepo extends BaseRepo<OrganizationToOrganization> {
|
||||
}
|
||||
@@ -0,0 +1,7 @@
|
||||
package com.sgs.graphql.RelationOrganizationToOrganization.repo.criteria;
|
||||
|
||||
|
||||
import com.sgs.lib.dao.repo.criteria.BaseCriteria;
|
||||
|
||||
public class OrganizationToOrganizationCriteria extends BaseCriteria {
|
||||
}
|
||||
@@ -0,0 +1,18 @@
|
||||
package com.sgs.graphql.RelationOrganizationToOrganization.repo.criteria.spec;
|
||||
|
||||
|
||||
import com.sgs.graphql.RelationOrganizationToOrganization.domain.OrganizationToOrganization;
|
||||
import com.sgs.graphql.RelationOrganizationToOrganization.repo.criteria.OrganizationToOrganizationCriteria;
|
||||
|
||||
import com.sgs.lib.dao.repo.criteria.spec.BaseCriteriaSpec;
|
||||
import org.springframework.data.jpa.domain.Specification;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
@Component
|
||||
public class OrganizationToOrganizationSpec extends BaseCriteriaSpec<OrganizationToOrganization, OrganizationToOrganizationCriteria> {
|
||||
|
||||
@Override
|
||||
public Specification<OrganizationToOrganization> createForAll(OrganizationToOrganizationCriteria criteria) {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,18 @@
|
||||
package com.sgs.graphql.RelationOrganizationToOrganization.service;
|
||||
|
||||
import com.sgs.graphql.RelationOrganizationToOrganization.domain.OrganizationToOrganization;
|
||||
import com.sgs.graphql.RelationOrganizationToOrganization.repo.OrganizationToOrganizationRepo;
|
||||
import com.sgs.graphql.RelationOrganizationToOrganization.repo.criteria.OrganizationToOrganizationCriteria;
|
||||
import com.sgs.graphql.RelationOrganizationToOrganization.repo.criteria.spec.OrganizationToOrganizationSpec;
|
||||
import com.sgs.lib.dao.service.BaseService;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
@Service
|
||||
public class OrganizationToOrganizationService extends BaseService<OrganizationToOrganization, OrganizationToOrganizationRepo, OrganizationToOrganizationCriteria, OrganizationToOrganizationSpec> {
|
||||
|
||||
@Autowired
|
||||
public OrganizationToOrganizationService(OrganizationToOrganizationRepo repository, OrganizationToOrganizationSpec criteriaSpec) {
|
||||
super(repository, criteriaSpec);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,56 @@
|
||||
package com.sgs.graphql.RelationSurveyQuestion.domain;
|
||||
|
||||
import com.sgs.graphql.question.domain.Question;
|
||||
import com.sgs.graphql.suvery.domain.Survey;
|
||||
import com.sgs.lib.dao.domain.BaseDomain;
|
||||
import org.hibernate.annotations.LazyCollection;
|
||||
import org.hibernate.annotations.LazyCollectionOption;
|
||||
|
||||
import javax.persistence.*;
|
||||
|
||||
@Entity
|
||||
@Table(name = "relation_survey_question")
|
||||
public class RelationSurveyQuestion extends BaseDomain {
|
||||
private Survey survey;
|
||||
private Question question;
|
||||
private int orderNo;
|
||||
private boolean isDeleted;
|
||||
|
||||
@ManyToOne(fetch = FetchType.EAGER)
|
||||
@JoinColumn(name = "survey_id")
|
||||
public Survey getSurvey() {
|
||||
return survey;
|
||||
}
|
||||
|
||||
public void setSurvey(Survey survey) {
|
||||
this.survey = survey;
|
||||
}
|
||||
|
||||
@ManyToOne(fetch = FetchType.EAGER)
|
||||
@JoinColumn(name = "question_id")
|
||||
public Question getQuestion() {
|
||||
return question;
|
||||
}
|
||||
|
||||
public void setQuestion(Question question) {
|
||||
this.question = question;
|
||||
}
|
||||
|
||||
@Column(name = "order_no")
|
||||
public int getOrderNo() {
|
||||
return orderNo;
|
||||
}
|
||||
|
||||
public void setOrderNo(int orderNo) {
|
||||
this.orderNo = orderNo;
|
||||
}
|
||||
|
||||
|
||||
public boolean isDeleted() {
|
||||
return isDeleted;
|
||||
}
|
||||
|
||||
public void setDeleted(boolean deleted) {
|
||||
isDeleted = deleted;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,76 @@
|
||||
package com.sgs.graphql.RelationSurveyQuestion.mutation;
|
||||
|
||||
import com.sgs.graphql.RelationSurveyQuestion.domain.RelationSurveyQuestion;
|
||||
import com.sgs.graphql.RelationSurveyQuestion.mutation.input.RelationSurveyQuestionCreateInput;
|
||||
import com.sgs.graphql.RelationSurveyQuestion.mutation.input.RelationSurveyQuestionUpdateInput;
|
||||
import com.sgs.graphql.RelationSurveyQuestion.mutation.mapper.RelationSurveyQuestionMapper;
|
||||
import com.sgs.graphql.RelationSurveyQuestion.service.RelationSurveyQuestionService;
|
||||
import graphql.kickstart.tools.GraphQLMutationResolver;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Component;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
import java.util.UUID;
|
||||
|
||||
@Validated
|
||||
@Component
|
||||
public class RelationSurveyQuestionMutation implements GraphQLMutationResolver {
|
||||
private final RelationSurveyQuestionMapper relationSurveyQuestionMapper;
|
||||
private final RelationSurveyQuestionService relationSurveyQuestionService;
|
||||
|
||||
@Autowired
|
||||
public RelationSurveyQuestionMutation(RelationSurveyQuestionMapper relationSurveyQuestionMapper, RelationSurveyQuestionService relationSurveyQuestionService) {
|
||||
this.relationSurveyQuestionMapper = relationSurveyQuestionMapper;
|
||||
this.relationSurveyQuestionService = relationSurveyQuestionService;
|
||||
}
|
||||
|
||||
public RelationSurveyQuestion addRelationSurveyQuestion(RelationSurveyQuestionCreateInput input) {
|
||||
return relationSurveyQuestionService.save(relationSurveyQuestionMapper.toEntity(input));
|
||||
}
|
||||
|
||||
|
||||
public RelationSurveyQuestion updateRelationSurveyQuestion(UUID id, RelationSurveyQuestionUpdateInput input) {
|
||||
return relationSurveyQuestionService.findById(id)
|
||||
.map(relationSurveyQuestion -> relationSurveyQuestionService.update(relationSurveyQuestionMapper.updateEntity(relationSurveyQuestion, input)))
|
||||
.orElseThrow(() -> new RuntimeException("No RelationSurveyQuestion found to update."));
|
||||
}
|
||||
|
||||
public Boolean deleteRelationSurveyQuestion(UUID id) {
|
||||
try {
|
||||
RelationSurveyQuestion relationSurveyQuestion = relationSurveyQuestionService.findById(id)
|
||||
.orElseThrow(() -> new RuntimeException("RelationSurveyQuestion not found ID: " + id));
|
||||
if (relationSurveyQuestion != null) {
|
||||
relationSurveyQuestion.setDeleted(true);
|
||||
}
|
||||
RelationSurveyQuestion updatedRelationSurveyQuestion = relationSurveyQuestionService.update(relationSurveyQuestion);
|
||||
if (updatedRelationSurveyQuestion != null) {
|
||||
return true;
|
||||
}
|
||||
} catch (Exception e) {
|
||||
System.out.println("TODO");
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
// Anket içerisinde bir sorunun sıra numarasını günceller.
|
||||
public RelationSurveyQuestion updateOrderNo( UUID surveyId, UUID questionId, int newOrderNo) {
|
||||
// İlişkiyi veritabanından bul.
|
||||
RelationSurveyQuestion relation = relationSurveyQuestionService.findBySurveyIdAndQuestionId(surveyId, questionId);
|
||||
|
||||
if (relation == null) {
|
||||
throw new IllegalArgumentException("Relation not found");
|
||||
}
|
||||
|
||||
relation.setOrderNo(newOrderNo);
|
||||
return relation;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
@@ -0,0 +1,28 @@
|
||||
package com.sgs.graphql.RelationSurveyQuestion.mutation.input;
|
||||
|
||||
import com.sgs.lib.dao.mutation.input.BaseCreateInput;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
public class RelationSurveyQuestionCreateInput extends BaseCreateInput {
|
||||
private UUID question;
|
||||
private int orderNo;
|
||||
|
||||
public int getOrderNo() {
|
||||
return orderNo;
|
||||
}
|
||||
|
||||
public void setOrderNo(int orderNo) {
|
||||
this.orderNo = orderNo;
|
||||
}
|
||||
|
||||
public UUID getQuestion() {
|
||||
return question;
|
||||
}
|
||||
|
||||
public void setQuestion(UUID question) {
|
||||
this.question = question;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
@@ -0,0 +1,25 @@
|
||||
package com.sgs.graphql.RelationSurveyQuestion.mutation.input;
|
||||
import com.sgs.lib.dao.mutation.input.BaseUpdateInput;
|
||||
import java.util.UUID;
|
||||
|
||||
public class RelationSurveyQuestionUpdateInput extends BaseUpdateInput {
|
||||
private UUID question;
|
||||
private int orderNo;
|
||||
|
||||
public int getOrderNo() {
|
||||
return orderNo;
|
||||
}
|
||||
|
||||
public void setOrderNo(int orderNo) {
|
||||
this.orderNo = orderNo;
|
||||
}
|
||||
|
||||
|
||||
public UUID getQuestion() {
|
||||
return question;
|
||||
}
|
||||
|
||||
public void setQuestion(UUID question) {
|
||||
this.question = question;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,39 @@
|
||||
package com.sgs.graphql.RelationSurveyQuestion.mutation.mapper;
|
||||
|
||||
import com.sgs.graphql.RelationSurveyQuestion.domain.RelationSurveyQuestion;
|
||||
import com.sgs.graphql.RelationSurveyQuestion.mutation.input.RelationSurveyQuestionCreateInput;
|
||||
import com.sgs.graphql.RelationSurveyQuestion.mutation.input.RelationSurveyQuestionUpdateInput;
|
||||
import com.sgs.graphql.question.domain.Question;
|
||||
import com.sgs.graphql.question.service.QuestionService;
|
||||
import com.sgs.lib.dao.mutation.mapper.BaseCreateUpdateMapper;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
@Component
|
||||
public class RelationSurveyQuestionMapper extends BaseCreateUpdateMapper<RelationSurveyQuestion, RelationSurveyQuestionCreateInput, RelationSurveyQuestionUpdateInput> {
|
||||
|
||||
|
||||
private final QuestionService questionService;
|
||||
|
||||
|
||||
public RelationSurveyQuestionMapper(QuestionService questionService) {
|
||||
this.questionService = questionService;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public RelationSurveyQuestion toEntity(RelationSurveyQuestionCreateInput input) {
|
||||
RelationSurveyQuestion entity = new RelationSurveyQuestion();
|
||||
entity.setOrderNo(input.getOrderNo());
|
||||
Question question= questionService.findById(input.getQuestion()).orElse(null);
|
||||
entity.setQuestion(question);
|
||||
return entity;
|
||||
}
|
||||
|
||||
@Override
|
||||
public RelationSurveyQuestion updateEntity(RelationSurveyQuestion entity, RelationSurveyQuestionUpdateInput input) {
|
||||
entity.setOrderNo(input.getOrderNo());
|
||||
Question question= questionService.findById(input.getQuestion()).orElse(null);
|
||||
entity.setQuestion(question);
|
||||
return entity;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,51 @@
|
||||
package com.sgs.graphql.RelationSurveyQuestion.query;
|
||||
|
||||
|
||||
import com.sgs.graphql.RelationSurveyQuestion.domain.RelationSurveyQuestion;
|
||||
import com.sgs.graphql.RelationSurveyQuestion.query.pagination.RelationSurveyQuestionPageable;
|
||||
import com.sgs.graphql.RelationSurveyQuestion.repo.criteria.RelationSurveyQuestionCriteria;
|
||||
import com.sgs.graphql.RelationSurveyQuestion.service.RelationSurveyQuestionService;
|
||||
import com.sgs.lib.dao.query.pagination.Pagination;
|
||||
import com.sgs.lib.dao.query.sort.SortBy;
|
||||
import graphql.kickstart.tools.GraphQLQueryResolver;
|
||||
import org.apache.commons.lang3.ObjectUtils;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.data.domain.Sort;
|
||||
import org.springframework.stereotype.Component;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.UUID;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
|
||||
@Component
|
||||
public class RelationSurveyQuestionQueryResolver implements GraphQLQueryResolver {
|
||||
|
||||
private final RelationSurveyQuestionService relationSurveyQuestionService;
|
||||
|
||||
@Autowired
|
||||
public RelationSurveyQuestionQueryResolver(RelationSurveyQuestionService relationSurveyQuestionService) {
|
||||
this.relationSurveyQuestionService = relationSurveyQuestionService;
|
||||
}
|
||||
|
||||
|
||||
public RelationSurveyQuestion relationSurveyQuestion(UUID id){
|
||||
return relationSurveyQuestionService.findById(id).orElse(null);
|
||||
}
|
||||
|
||||
public List<RelationSurveyQuestion> relationSurveyQuestions(RelationSurveyQuestionCriteria criteria, List<SortBy> sortBy){
|
||||
return relationSurveyQuestionService.filterWithSort(ObjectUtils.defaultIfNull(criteria, new RelationSurveyQuestionCriteria()),
|
||||
Sort.by(ObjectUtils.defaultIfNull(sortBy,new ArrayList<SortBy>())
|
||||
.stream()
|
||||
.map(SortBy::toOrder)
|
||||
.collect(Collectors.toList())));
|
||||
}
|
||||
|
||||
public RelationSurveyQuestionPageable paginateRelationSurveyQuestions(Pagination pagination, RelationSurveyQuestionCriteria criteria , List<SortBy> sortBy){
|
||||
return new RelationSurveyQuestionPageable(relationSurveyQuestionService.filterWithPaginate(ObjectUtils.defaultIfNull(criteria,new RelationSurveyQuestionCriteria()),
|
||||
Pagination.toPageRequest(pagination,sortBy)));
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
@@ -0,0 +1,12 @@
|
||||
package com.sgs.graphql.RelationSurveyQuestion.query.pagination;
|
||||
|
||||
|
||||
import com.sgs.graphql.RelationSurveyQuestion.domain.RelationSurveyQuestion;
|
||||
import com.sgs.lib.dao.query.pagination.PaginationResult;
|
||||
import org.springframework.data.domain.Page;
|
||||
|
||||
public class RelationSurveyQuestionPageable extends PaginationResult<RelationSurveyQuestion> {
|
||||
public RelationSurveyQuestionPageable(Page<RelationSurveyQuestion> page) {
|
||||
super(page);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,14 @@
|
||||
package com.sgs.graphql.RelationSurveyQuestion.repo;
|
||||
|
||||
|
||||
import com.sgs.graphql.RelationSurveyQuestion.domain.RelationSurveyQuestion;
|
||||
import com.sgs.lib.dao.repo.BaseRepo;
|
||||
import org.springframework.stereotype.Repository;
|
||||
|
||||
|
||||
@Repository
|
||||
public interface RelationSurveyQuestionRepo extends BaseRepo<RelationSurveyQuestion> {
|
||||
|
||||
|
||||
|
||||
}
|
||||
@@ -0,0 +1,16 @@
|
||||
package com.sgs.graphql.RelationSurveyQuestion.repo.criteria;
|
||||
|
||||
|
||||
import com.sgs.lib.dao.repo.criteria.BaseCriteria;
|
||||
|
||||
public class RelationSurveyQuestionCriteria extends BaseCriteria {
|
||||
private int orderNo;
|
||||
|
||||
public int getOrderNo() {
|
||||
return orderNo;
|
||||
}
|
||||
|
||||
public void setOrderNo(int orderNo) {
|
||||
this.orderNo = orderNo;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,17 @@
|
||||
package com.sgs.graphql.RelationSurveyQuestion.repo.criteria.spec;
|
||||
|
||||
|
||||
import com.sgs.graphql.RelationSurveyQuestion.domain.RelationSurveyQuestion;
|
||||
import com.sgs.graphql.RelationSurveyQuestion.repo.criteria.RelationSurveyQuestionCriteria;
|
||||
import com.sgs.lib.dao.repo.criteria.spec.BaseCriteriaSpec;
|
||||
import org.springframework.data.jpa.domain.Specification;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
@Component
|
||||
public class RelationSurveyQuestionSpec extends BaseCriteriaSpec<RelationSurveyQuestion, RelationSurveyQuestionCriteria> {
|
||||
|
||||
@Override
|
||||
public Specification<RelationSurveyQuestion> createForAll(RelationSurveyQuestionCriteria criteria) {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,38 @@
|
||||
package com.sgs.graphql.RelationSurveyQuestion.service;
|
||||
|
||||
import com.sgs.graphql.RelationSurveyQuestion.domain.RelationSurveyQuestion;
|
||||
import com.sgs.graphql.RelationSurveyQuestion.repo.RelationSurveyQuestionRepo;
|
||||
import com.sgs.graphql.RelationSurveyQuestion.repo.criteria.RelationSurveyQuestionCriteria;
|
||||
import com.sgs.graphql.RelationSurveyQuestion.repo.criteria.spec.RelationSurveyQuestionSpec;
|
||||
import com.sgs.graphql.question.domain.Question;
|
||||
import com.sgs.graphql.suvery.domain.Survey;
|
||||
import com.sgs.lib.dao.service.BaseService;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.util.Optional;
|
||||
import java.util.UUID;
|
||||
|
||||
|
||||
@Service
|
||||
public class RelationSurveyQuestionService extends BaseService<RelationSurveyQuestion, RelationSurveyQuestionRepo, RelationSurveyQuestionCriteria, RelationSurveyQuestionSpec> {
|
||||
|
||||
@Autowired
|
||||
public RelationSurveyQuestionService(RelationSurveyQuestionRepo repository, RelationSurveyQuestionSpec criteriaSpec) {
|
||||
super(repository, criteriaSpec);
|
||||
}
|
||||
|
||||
|
||||
public RelationSurveyQuestion findBySurveyIdAndQuestionId(UUID surveyId, UUID questionId) {
|
||||
|
||||
|
||||
RelationSurveyQuestion relation = findBySurveyIdAndQuestionId(surveyId, questionId);
|
||||
|
||||
return relation;
|
||||
|
||||
}
|
||||
|
||||
public Optional<RelationSurveyQuestion> findBySurveyAndQuestion(Survey survey, Question question) {
|
||||
return findBySurveyAndQuestion(survey, question);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,53 @@
|
||||
package com.sgs.graphql.activitySubUnit.domain;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonBackReference;
|
||||
import com.sgs.graphql.subSector.domain.SubSector;
|
||||
import com.sgs.lib.dao.domain.BaseDomain;
|
||||
|
||||
import javax.persistence.*;
|
||||
|
||||
@Entity
|
||||
@Table(name = "activity_sub_unit")
|
||||
public class ActivitySubUnit extends BaseDomain {
|
||||
private String tag;
|
||||
private String description;
|
||||
private boolean deleted;
|
||||
private SubSector subSector;
|
||||
|
||||
@Column(name = "tag", nullable = false)
|
||||
public String getTag() {
|
||||
return tag;
|
||||
}
|
||||
|
||||
public void setTag(String tag) {
|
||||
this.tag = tag;
|
||||
}
|
||||
|
||||
@Column(name = "description")
|
||||
public String getDescription() {
|
||||
return description;
|
||||
}
|
||||
|
||||
public void setDescription(String description) {
|
||||
this.description = description;
|
||||
}
|
||||
|
||||
@Column(name = "is_deleted", nullable = false)
|
||||
public boolean isDeleted() {
|
||||
return deleted;
|
||||
}
|
||||
|
||||
public void setDeleted(boolean deleted) {
|
||||
this.deleted = deleted;
|
||||
}
|
||||
|
||||
@ManyToOne(fetch = FetchType.EAGER)
|
||||
@JsonBackReference
|
||||
public SubSector getSubSector() {
|
||||
return subSector;
|
||||
}
|
||||
|
||||
public void setSubSector(SubSector subSector) {
|
||||
this.subSector = subSector;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,31 @@
|
||||
package com.sgs.graphql.activitySubUnit.dto;
|
||||
|
||||
public class ActivitySubUnitDto {
|
||||
private String tag;
|
||||
private String description;
|
||||
private boolean deleted;
|
||||
|
||||
public String getTag() {
|
||||
return tag;
|
||||
}
|
||||
|
||||
public void setTag(String tag) {
|
||||
this.tag = tag;
|
||||
}
|
||||
|
||||
public String getDescription() {
|
||||
return description;
|
||||
}
|
||||
|
||||
public void setDescription(String description) {
|
||||
this.description = description;
|
||||
}
|
||||
|
||||
public boolean isDeleted() {
|
||||
return deleted;
|
||||
}
|
||||
|
||||
public void setDeleted(boolean deleted) {
|
||||
this.deleted = deleted;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,49 @@
|
||||
package com.sgs.graphql.activitySubUnit.query;
|
||||
|
||||
import com.sgs.graphql.activitySubUnit.query.pagination.ActivitySubUnitPageable;
|
||||
import com.sgs.graphql.activitySubUnit.domain.ActivitySubUnit;
|
||||
import com.sgs.graphql.activitySubUnit.repo.criteria.ActivitySubUnitCriteria;
|
||||
import com.sgs.graphql.activitySubUnit.service.ActivitySubUnitService;
|
||||
import com.sgs.graphql.permission.domain.PermissionName;
|
||||
import com.sgs.lib.dao.query.pagination.Pagination;
|
||||
import com.sgs.lib.dao.query.sort.SortBy;
|
||||
import graphql.kickstart.tools.GraphQLQueryResolver;
|
||||
import org.apache.commons.lang3.ObjectUtils;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.data.domain.Sort;
|
||||
import org.springframework.security.access.prepost.PreAuthorize;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.UUID;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
@Component
|
||||
public class ActivitySubUnitQueryResolver implements GraphQLQueryResolver {
|
||||
|
||||
private final ActivitySubUnitService activitySubUnitService;
|
||||
|
||||
@Autowired
|
||||
public ActivitySubUnitQueryResolver(ActivitySubUnitService activitySubUnitService) {
|
||||
this.activitySubUnitService = activitySubUnitService;
|
||||
}
|
||||
|
||||
public ActivitySubUnit activitySubUnit(UUID id) {
|
||||
return activitySubUnitService.findById(id).orElse(null);
|
||||
}
|
||||
|
||||
@PreAuthorize("hasAuthority('" + PermissionName.ACTIVITY_SUB_UNITS_GET + "')")
|
||||
public List<ActivitySubUnit> activitySubUnits(ActivitySubUnitCriteria criteria, List<SortBy> sortBy) {
|
||||
return activitySubUnitService.filterWithSort(ObjectUtils.defaultIfNull(criteria, new ActivitySubUnitCriteria()),
|
||||
Sort.by(ObjectUtils.defaultIfNull(sortBy, new ArrayList<SortBy>())
|
||||
.stream()
|
||||
.map(SortBy::toOrder)
|
||||
.collect(Collectors.toList())));
|
||||
}
|
||||
|
||||
public ActivitySubUnitPageable paginateActivitySubUnits(Pagination pagination, ActivitySubUnitCriteria criteria, List<SortBy> sortBy) {
|
||||
return new ActivitySubUnitPageable(activitySubUnitService.filterWithPaginate(ObjectUtils.defaultIfNull(criteria, new ActivitySubUnitCriteria()),
|
||||
Pagination.toPageRequest(pagination, sortBy)));
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,11 @@
|
||||
package com.sgs.graphql.activitySubUnit.query.pagination;
|
||||
|
||||
import com.sgs.graphql.activitySubUnit.domain.ActivitySubUnit;
|
||||
import com.sgs.lib.dao.query.pagination.PaginationResult;
|
||||
import org.springframework.data.domain.Page;
|
||||
|
||||
public class ActivitySubUnitPageable extends PaginationResult<ActivitySubUnit> {
|
||||
public ActivitySubUnitPageable(Page<ActivitySubUnit> page) {
|
||||
super(page);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,12 @@
|
||||
package com.sgs.graphql.activitySubUnit.repo;
|
||||
|
||||
import com.sgs.graphql.activitySubUnit.domain.ActivitySubUnit;
|
||||
import com.sgs.graphql.subSector.domain.SubSector;
|
||||
import com.sgs.lib.dao.repo.BaseRepo;
|
||||
import org.springframework.stereotype.Repository;
|
||||
|
||||
@Repository
|
||||
public interface ActivitySubUnitRepo extends BaseRepo<ActivitySubUnit> {
|
||||
ActivitySubUnit findByTag(String tag);
|
||||
ActivitySubUnit findByTagAndSubSector(String tag, SubSector subSector);
|
||||
}
|
||||
@@ -0,0 +1,6 @@
|
||||
package com.sgs.graphql.activitySubUnit.repo.criteria;
|
||||
|
||||
import com.sgs.lib.dao.repo.criteria.BaseCriteria;
|
||||
|
||||
public class ActivitySubUnitCriteria extends BaseCriteria {
|
||||
}
|
||||
@@ -0,0 +1,16 @@
|
||||
package com.sgs.graphql.activitySubUnit.repo.criteria.spec;
|
||||
|
||||
import com.sgs.graphql.activitySubUnit.domain.ActivitySubUnit;
|
||||
import com.sgs.graphql.activitySubUnit.repo.criteria.ActivitySubUnitCriteria;
|
||||
import com.sgs.lib.dao.repo.criteria.spec.BaseCriteriaSpec;
|
||||
import org.springframework.data.jpa.domain.Specification;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
@Component
|
||||
public class ActivitySubUnitCriteriaSpec extends BaseCriteriaSpec<ActivitySubUnit, ActivitySubUnitCriteria> {
|
||||
|
||||
@Override
|
||||
public Specification<ActivitySubUnit> createForAll(ActivitySubUnitCriteria criteria) {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,18 @@
|
||||
package com.sgs.graphql.activitySubUnit.service;
|
||||
|
||||
import com.sgs.graphql.activitySubUnit.domain.ActivitySubUnit;
|
||||
import com.sgs.graphql.activitySubUnit.repo.ActivitySubUnitRepo;
|
||||
import com.sgs.graphql.activitySubUnit.repo.criteria.ActivitySubUnitCriteria;
|
||||
import com.sgs.graphql.activitySubUnit.repo.criteria.spec.ActivitySubUnitCriteriaSpec;
|
||||
import com.sgs.lib.dao.service.BaseService;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
@Service
|
||||
public class ActivitySubUnitService extends BaseService<ActivitySubUnit, ActivitySubUnitRepo, ActivitySubUnitCriteria, ActivitySubUnitCriteriaSpec> {
|
||||
|
||||
@Autowired
|
||||
public ActivitySubUnitService(ActivitySubUnitRepo repository, ActivitySubUnitCriteriaSpec criteriaSpec) {
|
||||
super(repository, criteriaSpec);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,78 @@
|
||||
package com.sgs.graphql.answer.domain;
|
||||
|
||||
import com.sgs.graphql.relationQuestionAnswer.domain.RelationQuestionAnswer;
|
||||
import com.sgs.lib.dao.domain.BaseDomain;
|
||||
|
||||
import javax.persistence.*;
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
@Entity
|
||||
@Table(name = "answer")
|
||||
public class Answer extends BaseDomain {
|
||||
|
||||
private String value;
|
||||
private String answer;
|
||||
private LocalDateTime createdAt;
|
||||
private boolean isDeleted;
|
||||
private boolean isDefault;
|
||||
private List<RelationQuestionAnswer> relationQuestionAnswers = new ArrayList<>();
|
||||
|
||||
@OneToMany(mappedBy = "answer", cascade = CascadeType.ALL, orphanRemoval = true)
|
||||
public List<RelationQuestionAnswer> getRelationQuestionAnswers() {
|
||||
return relationQuestionAnswers;
|
||||
}
|
||||
|
||||
public void setRelationQuestionAnswers(List<RelationQuestionAnswer> relationQuestionAnswers) {
|
||||
this.relationQuestionAnswers = relationQuestionAnswers;
|
||||
}
|
||||
|
||||
@Column(nullable = false)
|
||||
public String getValue() {
|
||||
return value;
|
||||
}
|
||||
|
||||
public void setValue(String value) {
|
||||
this.value = value;
|
||||
}
|
||||
|
||||
@Column(
|
||||
name = "answer",
|
||||
columnDefinition = "text",
|
||||
nullable = true
|
||||
)
|
||||
public String getAnswer() {
|
||||
return answer;
|
||||
}
|
||||
|
||||
public void setAnswer(String answer) {
|
||||
this.answer = answer;
|
||||
}
|
||||
|
||||
@Column(nullable = false)
|
||||
public LocalDateTime getCreatedAt() {
|
||||
return createdAt;
|
||||
}
|
||||
|
||||
public void setCreatedAt(LocalDateTime createdAt) {
|
||||
this.createdAt = createdAt;
|
||||
}
|
||||
|
||||
public boolean isDefault() {
|
||||
return isDefault;
|
||||
}
|
||||
|
||||
public void setDefault(boolean aDefault) {
|
||||
isDefault = aDefault;
|
||||
}
|
||||
|
||||
@Column(nullable = false)
|
||||
public boolean isDeleted() {
|
||||
return isDeleted;
|
||||
}
|
||||
|
||||
public void setDeleted(boolean deleted) {
|
||||
isDeleted = deleted;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,69 @@
|
||||
package com.sgs.graphql.answer.mutation;
|
||||
|
||||
import com.sgs.graphql.answer.domain.Answer;
|
||||
import com.sgs.graphql.answer.mutation.input.AnswerCreateInput;
|
||||
import com.sgs.graphql.answer.mutation.input.AnswerUpdateInput;
|
||||
import com.sgs.graphql.answer.mutation.mapper.AnswerMapper;
|
||||
import com.sgs.graphql.answer.service.AnswerService;
|
||||
import com.sgs.graphql.permission.domain.PermissionName;
|
||||
import com.sgs.graphql.systemHistory.mutation.SystemLogger;
|
||||
import graphql.kickstart.tools.GraphQLMutationResolver;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.security.access.prepost.PreAuthorize;
|
||||
import org.springframework.stereotype.Component;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
|
||||
@Validated
|
||||
@Component
|
||||
public class AnswerMutation implements GraphQLMutationResolver {
|
||||
|
||||
private final AnswerService answerService;
|
||||
private final AnswerMapper answerMapper;
|
||||
private SystemLogger systemLogger;
|
||||
|
||||
|
||||
@Autowired
|
||||
public AnswerMutation(AnswerService answerService, AnswerMapper answerMapper) {
|
||||
this.answerService = answerService;
|
||||
this.answerMapper = answerMapper;
|
||||
}
|
||||
|
||||
@PreAuthorize("hasAuthority('" + PermissionName.ANSWER_CREATE + "')")
|
||||
public Answer addAnswer(AnswerCreateInput input) {
|
||||
return answerService.save(answerMapper.toEntity(input));
|
||||
}
|
||||
|
||||
@PreAuthorize("hasAuthority('" + PermissionName.ANSWER_UPDATE + "')")
|
||||
public Answer updateAnswer(UUID id, AnswerUpdateInput input) {
|
||||
|
||||
return answerService.findById(id)
|
||||
.map(answer -> answerService.update(answerMapper.updateEntity(answer, input)))
|
||||
.orElseThrow(() -> new RuntimeException("No answer found to update."));
|
||||
|
||||
}
|
||||
|
||||
@PreAuthorize("hasAuthority('" + PermissionName.ANSWER_DELETE + "')")
|
||||
public Boolean deleteAnswer(UUID id) {
|
||||
|
||||
try {
|
||||
Answer answer = answerService.findById(id)
|
||||
.orElseThrow(() -> new RuntimeException("Answer not found ID: " + id));
|
||||
if (answer != null) {
|
||||
answer.setDeleted(true);
|
||||
}
|
||||
Answer updatedAnswer = answerService.update(answer);
|
||||
if (updatedAnswer != null) {
|
||||
return true;
|
||||
}
|
||||
} catch (Exception e) {
|
||||
System.out.println("TODO");
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
@@ -0,0 +1,30 @@
|
||||
package com.sgs.graphql.answer.mutation.input;
|
||||
|
||||
import com.sgs.lib.dao.mutation.input.BaseCreateInput;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.UUID;
|
||||
|
||||
public class AnswerCreateInput extends BaseCreateInput {
|
||||
|
||||
private String value;
|
||||
private String answer;
|
||||
|
||||
|
||||
public String getValue() {
|
||||
return value;
|
||||
}
|
||||
|
||||
public void setValue(String value) {
|
||||
this.value = value;
|
||||
}
|
||||
|
||||
public String getAnswer() {
|
||||
return answer;
|
||||
}
|
||||
|
||||
public void setAnswer(String answer) {
|
||||
this.answer = answer;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,27 @@
|
||||
package com.sgs.graphql.answer.mutation.input;
|
||||
import com.sgs.lib.dao.mutation.input.BaseUpdateInput;
|
||||
|
||||
|
||||
|
||||
public class AnswerUpdateInput extends BaseUpdateInput {
|
||||
private String value;
|
||||
private String answer;
|
||||
|
||||
public String getValue() {
|
||||
return value;
|
||||
}
|
||||
|
||||
public void setValue(String value) {
|
||||
this.value = value;
|
||||
}
|
||||
|
||||
public String getAnswer() {
|
||||
return answer;
|
||||
}
|
||||
|
||||
public void setAnswer(String answer) {
|
||||
this.answer = answer;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
@@ -0,0 +1,36 @@
|
||||
package com.sgs.graphql.answer.mutation.mapper;
|
||||
|
||||
import com.sgs.graphql.answer.domain.Answer;
|
||||
import com.sgs.graphql.answer.mutation.input.AnswerCreateInput;
|
||||
import com.sgs.graphql.answer.mutation.input.AnswerUpdateInput;
|
||||
import com.sgs.lib.dao.mutation.mapper.BaseCreateUpdateMapper;
|
||||
import org.springframework.stereotype.Component;
|
||||
import java.time.LocalDateTime;
|
||||
|
||||
@Component
|
||||
public class AnswerMapper extends BaseCreateUpdateMapper<Answer, AnswerCreateInput, AnswerUpdateInput> {
|
||||
|
||||
|
||||
|
||||
public AnswerMapper() {
|
||||
}
|
||||
|
||||
@Override
|
||||
public Answer toEntity(AnswerCreateInput input) {
|
||||
Answer entity = new Answer();
|
||||
entity.setValue(input.getValue());
|
||||
entity.setAnswer(input.getAnswer());
|
||||
entity.setCreatedAt(LocalDateTime.now());
|
||||
return entity;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public Answer updateEntity(Answer entity, AnswerUpdateInput input) {
|
||||
entity.setValue(input.getValue());
|
||||
entity.setAnswer(input.getAnswer());
|
||||
entity.setCreatedAt(LocalDateTime.now());
|
||||
return entity;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,53 @@
|
||||
package com.sgs.graphql.answer.query;
|
||||
|
||||
|
||||
import com.sgs.graphql.answer.domain.Answer;
|
||||
import com.sgs.graphql.answer.query.pagination.AnswerPageable;
|
||||
import com.sgs.graphql.answer.repo.criteria.AnswerCriteria;
|
||||
import com.sgs.graphql.answer.service.AnswerService;
|
||||
import com.sgs.graphql.permission.domain.PermissionName;
|
||||
import com.sgs.lib.dao.query.pagination.Pagination;
|
||||
import com.sgs.lib.dao.query.sort.SortBy;
|
||||
import graphql.kickstart.tools.GraphQLQueryResolver;
|
||||
import org.apache.commons.lang3.ObjectUtils;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.data.domain.Sort;
|
||||
import org.springframework.security.access.prepost.PreAuthorize;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.UUID;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
|
||||
@Component
|
||||
public class AnswerQueryResolver implements GraphQLQueryResolver {
|
||||
|
||||
private final AnswerService answerService;
|
||||
|
||||
@Autowired
|
||||
public AnswerQueryResolver(AnswerService answerService) {
|
||||
this.answerService = answerService;
|
||||
}
|
||||
|
||||
public Answer answer(UUID id) {
|
||||
return answerService.findById(id).orElse(null);
|
||||
}
|
||||
|
||||
public List<Answer> answers(AnswerCriteria criteria, List<SortBy> sortBy) {
|
||||
return answerService.filterWithSort(ObjectUtils.defaultIfNull(criteria, new AnswerCriteria()),
|
||||
Sort.by(ObjectUtils.defaultIfNull(sortBy, new ArrayList<SortBy>())
|
||||
.stream()
|
||||
.map(SortBy::toOrder)
|
||||
.collect(Collectors.toList())));
|
||||
}
|
||||
|
||||
@PreAuthorize("hasAuthority('" + PermissionName.PAGINATE_ANSWERS_GET + "')")
|
||||
public AnswerPageable paginateAnswers(Pagination pagination, AnswerCriteria criteria, List<SortBy> sortBy) {
|
||||
return new AnswerPageable(answerService.filterWithPaginate(ObjectUtils.defaultIfNull(criteria, new AnswerCriteria()),
|
||||
Pagination.toPageRequest(pagination, sortBy)));
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
@@ -0,0 +1,12 @@
|
||||
package com.sgs.graphql.answer.query.pagination;
|
||||
|
||||
|
||||
import com.sgs.graphql.answer.domain.Answer;
|
||||
import com.sgs.lib.dao.query.pagination.PaginationResult;
|
||||
import org.springframework.data.domain.Page;
|
||||
|
||||
public class AnswerPageable extends PaginationResult<Answer> {
|
||||
public AnswerPageable(Page<Answer> page) {
|
||||
super(page);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,10 @@
|
||||
package com.sgs.graphql.answer.repo;
|
||||
|
||||
import com.sgs.graphql.answer.domain.Answer;
|
||||
import com.sgs.lib.dao.repo.BaseRepo;
|
||||
import org.springframework.stereotype.Repository;
|
||||
|
||||
@Repository
|
||||
public interface AnswerRepo extends BaseRepo<Answer> {
|
||||
|
||||
}
|
||||
@@ -0,0 +1,15 @@
|
||||
package com.sgs.graphql.answer.repo.criteria;
|
||||
|
||||
|
||||
import com.sgs.lib.dao.repo.criteria.BaseCriteria;
|
||||
|
||||
public class AnswerCriteria extends BaseCriteria {
|
||||
private boolean deleted;
|
||||
|
||||
public boolean isDeleted() {
|
||||
return deleted;
|
||||
}
|
||||
public void setDeleted(boolean deleted) {
|
||||
this.deleted = deleted;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,19 @@
|
||||
package com.sgs.graphql.answer.repo.criteria.spec;
|
||||
|
||||
import com.sgs.graphql.answer.domain.Answer;
|
||||
import com.sgs.graphql.answer.repo.criteria.AnswerCriteria;
|
||||
import com.sgs.lib.dao.repo.criteria.spec.BaseCriteriaSpec;
|
||||
import org.springframework.data.jpa.domain.Specification;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
@Component
|
||||
public class AnswerCriteriaSpec extends BaseCriteriaSpec<Answer, AnswerCriteria> {
|
||||
public static Specification<Answer> deleted(boolean deleted){
|
||||
return (Specification<Answer>) (root, query, criteriaBuilder) -> criteriaBuilder.equal(root.get("deleted"), deleted);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Specification<Answer> createForAll(AnswerCriteria criteria) {
|
||||
return Specification.where(deleted(criteria.isDeleted()));
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,16 @@
|
||||
package com.sgs.graphql.answer.service;
|
||||
import com.sgs.graphql.answer.domain.Answer;
|
||||
import com.sgs.graphql.answer.repo.AnswerRepo;
|
||||
import com.sgs.graphql.answer.repo.criteria.AnswerCriteria;
|
||||
import com.sgs.graphql.answer.repo.criteria.spec.AnswerCriteriaSpec;
|
||||
import com.sgs.lib.dao.service.BaseService;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
@Service
|
||||
public class AnswerService extends BaseService<Answer, AnswerRepo, AnswerCriteria, AnswerCriteriaSpec> {
|
||||
@Autowired
|
||||
public AnswerService(AnswerRepo repository, AnswerCriteriaSpec criteriaSpec) {
|
||||
super(repository, criteriaSpec);
|
||||
}
|
||||
}
|
||||
137
sge-backend/src/main/java/com/sgs/graphql/area/domain/Area.java
Normal file
137
sge-backend/src/main/java/com/sgs/graphql/area/domain/Area.java
Normal file
@@ -0,0 +1,137 @@
|
||||
package com.sgs.graphql.area.domain;
|
||||
|
||||
import com.sgs.graphql.city.domain.City;
|
||||
import com.sgs.graphql.country.domain.Country;
|
||||
import com.sgs.graphql.district.domain.District;
|
||||
import com.sgs.graphql.neighborhood.domain.Neighborhood;
|
||||
import com.sgs.graphql.organization.domain.Organization;
|
||||
import com.sgs.graphql.dataCenter.domain.DataCenter;
|
||||
import com.sgs.lib.dao.domain.BaseDomain;
|
||||
import com.fasterxml.jackson.annotation.JsonManagedReference;
|
||||
import com.fasterxml.jackson.annotation.JsonProperty;
|
||||
import org.hibernate.annotations.LazyCollection;
|
||||
import org.hibernate.annotations.LazyCollectionOption;
|
||||
// import io.leangen.graphql.annotations.GraphQLQuery;
|
||||
|
||||
|
||||
import javax.persistence.*;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
@Entity
|
||||
@Table(name = "areas")
|
||||
public class Area extends BaseDomain {
|
||||
|
||||
private String tag;
|
||||
private List<Country> countries = new ArrayList<>();
|
||||
private List<City> cities = new ArrayList<>();
|
||||
private List<District> districts = new ArrayList<>();
|
||||
private List<Neighborhood> neighborhoods = new ArrayList<>();
|
||||
private List<Organization> organizations;
|
||||
private List<DataCenter> dataCenters;
|
||||
private boolean isDeleted;
|
||||
private boolean defaultArea;
|
||||
|
||||
public String getTag() {
|
||||
return tag;
|
||||
}
|
||||
|
||||
public void setTag(String tag) {
|
||||
this.tag = tag;
|
||||
}
|
||||
|
||||
@ManyToMany
|
||||
@LazyCollection(LazyCollectionOption.FALSE)
|
||||
public List<Country> getCountries() {
|
||||
return countries;
|
||||
}
|
||||
|
||||
public void setCountries(List<Country> countries) {
|
||||
this.countries = countries;
|
||||
}
|
||||
|
||||
@ManyToMany
|
||||
@LazyCollection(LazyCollectionOption.FALSE)
|
||||
@JoinTable(name = "area_city")
|
||||
@JsonManagedReference("area-city")
|
||||
public List<City> getCities() {
|
||||
return cities;
|
||||
}
|
||||
|
||||
public void setCities(List<City> cities) {
|
||||
this.cities = cities;
|
||||
}
|
||||
|
||||
@ManyToMany
|
||||
@LazyCollection(LazyCollectionOption.FALSE)
|
||||
@JoinTable(name = "area_district")
|
||||
@JsonManagedReference("area-district")
|
||||
public List<District> getDistricts() {
|
||||
return districts;
|
||||
}
|
||||
|
||||
public void setDistricts(List<District> districts) {
|
||||
this.districts = districts;
|
||||
}
|
||||
|
||||
@ManyToMany
|
||||
@LazyCollection(LazyCollectionOption.FALSE)
|
||||
public List<Neighborhood> getNeighborhoods() {
|
||||
return neighborhoods;
|
||||
}
|
||||
|
||||
public void setNeighborhoods(List<Neighborhood> neighborhoods) {
|
||||
this.neighborhoods = neighborhoods;
|
||||
}
|
||||
|
||||
@JsonProperty("isDeleted")
|
||||
public boolean isDeleted() {
|
||||
return isDeleted;
|
||||
}
|
||||
|
||||
public void setDeleted(boolean deleted) {
|
||||
isDeleted = deleted;
|
||||
}
|
||||
|
||||
@JsonProperty("defaultArea")
|
||||
public boolean isDefaultArea() {
|
||||
return defaultArea;
|
||||
}
|
||||
|
||||
public void setDefaultArea(boolean defaultArea) {
|
||||
this.defaultArea = defaultArea;
|
||||
}
|
||||
|
||||
@ManyToMany(fetch = FetchType.LAZY, mappedBy = "areas")
|
||||
public List<Organization> getOrganizations() {
|
||||
return organizations;
|
||||
}
|
||||
|
||||
public void setOrganizations(List<Organization> organizations) {
|
||||
this.organizations = organizations;
|
||||
}
|
||||
|
||||
@OneToMany(fetch = FetchType.LAZY, mappedBy = "area", cascade = CascadeType.ALL, orphanRemoval = true)
|
||||
@JsonManagedReference("area-datacenter")
|
||||
public List<DataCenter> getDataCenters() {
|
||||
return dataCenters;
|
||||
}
|
||||
|
||||
public void setDataCenters(List<DataCenter> dataCenters) {
|
||||
this.dataCenters = dataCenters;
|
||||
}
|
||||
|
||||
@Transient
|
||||
public List<String> getCityNames() {
|
||||
return cities == null ? new ArrayList<>() :
|
||||
cities.stream().map(City::getName).collect(Collectors.toList());
|
||||
}
|
||||
|
||||
@Transient
|
||||
public List<String> getDistrictNames() {
|
||||
return districts == null ? new ArrayList<>() :
|
||||
districts.stream().map(District::getName).collect(Collectors.toList());
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,63 @@
|
||||
package com.sgs.graphql.area.mutation;
|
||||
|
||||
import com.sgs.graphql.area.mutation.mapper.AreaMapper;
|
||||
import com.sgs.graphql.area.service.AreaService;
|
||||
import com.sgs.graphql.area.domain.Area;
|
||||
import com.sgs.graphql.area.mutation.input.AreaCreateInput;
|
||||
import com.sgs.graphql.area.mutation.input.AreaUpdateInput;
|
||||
import com.sgs.graphql.permission.domain.PermissionName;
|
||||
import graphql.kickstart.tools.GraphQLMutationResolver;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.security.access.prepost.PreAuthorize;
|
||||
import org.springframework.stereotype.Component;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
|
||||
import javax.validation.Valid;
|
||||
import java.util.UUID;
|
||||
|
||||
|
||||
@Validated
|
||||
@Component
|
||||
public class AreaMutation implements GraphQLMutationResolver {
|
||||
|
||||
private final AreaService areaService;
|
||||
private final AreaMapper areaMapper;
|
||||
|
||||
@Autowired
|
||||
public AreaMutation(AreaService areaService, AreaMapper areaMapper) {
|
||||
this.areaService = areaService;
|
||||
this.areaMapper = areaMapper;
|
||||
}
|
||||
|
||||
@PreAuthorize("hasAuthority('" + PermissionName.AREA_CREATE + "')")
|
||||
public Area createArea(AreaCreateInput input) {
|
||||
return areaService.save(areaMapper.toEntity(input));
|
||||
}
|
||||
|
||||
@PreAuthorize("hasAuthority('" + PermissionName.AREA_UPDATE + "')")
|
||||
public Area updateArea(UUID id, AreaUpdateInput input) {
|
||||
return areaService.findById(id)
|
||||
.map(area -> areaService.update(areaMapper.updateEntity(area, input)))
|
||||
.orElseThrow(RuntimeException::new);
|
||||
}
|
||||
|
||||
@PreAuthorize("hasAuthority('" + PermissionName.AREA_DELETE + "')")
|
||||
public Boolean deleteArea(UUID id) {
|
||||
|
||||
try {
|
||||
Area area = areaService.findById(id)
|
||||
.orElseThrow(() -> new RuntimeException("Bulunamayan alan (Area) ID: " + id));
|
||||
if (area != null) {
|
||||
area.setDeleted(true);
|
||||
}
|
||||
Area updatedArea = areaService.update(area);
|
||||
if (updatedArea != null) {
|
||||
return true;
|
||||
}
|
||||
} catch (Exception e) {
|
||||
System.out.println("TODO");
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,54 @@
|
||||
package com.sgs.graphql.area.mutation.input;
|
||||
|
||||
import com.sgs.lib.dao.mutation.input.BaseCreateInput;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.UUID;
|
||||
|
||||
public class AreaCreateInput extends BaseCreateInput {
|
||||
private String tag;
|
||||
private List<UUID> countries;
|
||||
private List<UUID> cities;
|
||||
private List<UUID> districts;
|
||||
private List<UUID> neighborhoods;
|
||||
|
||||
public String getTag() {
|
||||
return tag;
|
||||
}
|
||||
|
||||
public void setTag(String tag) {
|
||||
this.tag = tag;
|
||||
}
|
||||
|
||||
public List<UUID> getCountries() {
|
||||
return countries;
|
||||
}
|
||||
|
||||
public void setCountries(List<UUID> countries) {
|
||||
this.countries = countries;
|
||||
}
|
||||
|
||||
public List<UUID> getCities() {
|
||||
return cities;
|
||||
}
|
||||
|
||||
public void setCities(List<UUID> cities) {
|
||||
this.cities = cities;
|
||||
}
|
||||
|
||||
public List<UUID> getDistricts() {
|
||||
return districts;
|
||||
}
|
||||
|
||||
public void setDistricts(List<UUID> districts) {
|
||||
this.districts = districts;
|
||||
}
|
||||
|
||||
public List<UUID> getNeighborhoods() {
|
||||
return neighborhoods;
|
||||
}
|
||||
|
||||
public void setNeighborhoods(List<UUID> neighborhoods) {
|
||||
this.neighborhoods = neighborhoods;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,53 @@
|
||||
package com.sgs.graphql.area.mutation.input;
|
||||
import com.sgs.lib.dao.mutation.input.BaseUpdateInput;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.UUID;
|
||||
|
||||
public class AreaUpdateInput extends BaseUpdateInput {
|
||||
private String tag;
|
||||
private List<UUID> countries;
|
||||
private List<UUID> cities;
|
||||
private List<UUID> districts;
|
||||
private List<UUID> neighborhoods;
|
||||
|
||||
public String getTag() {
|
||||
return tag;
|
||||
}
|
||||
|
||||
public void setTag(String tag) {
|
||||
this.tag = tag;
|
||||
}
|
||||
|
||||
public List<UUID> getCountries() {
|
||||
return countries;
|
||||
}
|
||||
|
||||
public void setCountries(List<UUID> countries) {
|
||||
this.countries = countries;
|
||||
}
|
||||
|
||||
public List<UUID> getCities() {
|
||||
return cities;
|
||||
}
|
||||
|
||||
public void setCities(List<UUID> cities) {
|
||||
this.cities = cities;
|
||||
}
|
||||
|
||||
public List<UUID> getDistricts() {
|
||||
return districts;
|
||||
}
|
||||
|
||||
public void setDistricts(List<UUID> districts) {
|
||||
this.districts = districts;
|
||||
}
|
||||
|
||||
public List<UUID> getNeighborhoods() {
|
||||
return neighborhoods;
|
||||
}
|
||||
|
||||
public void setNeighborhoods(List<UUID> neighborhoods) {
|
||||
this.neighborhoods = neighborhoods;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,122 @@
|
||||
package com.sgs.graphql.area.mutation.mapper;
|
||||
|
||||
import com.sgs.graphql.area.mutation.input.AreaCreateInput;
|
||||
import com.sgs.graphql.area.domain.Area;
|
||||
import com.sgs.graphql.area.mutation.input.AreaUpdateInput;
|
||||
import com.sgs.graphql.city.domain.City;
|
||||
import com.sgs.graphql.city.service.CityService;
|
||||
import com.sgs.graphql.country.domain.Country;
|
||||
import com.sgs.graphql.country.service.CountryService;
|
||||
import com.sgs.graphql.district.domain.District;
|
||||
import com.sgs.graphql.district.service.DistrictService;
|
||||
import com.sgs.graphql.neighborhood.domain.Neighborhood;
|
||||
import com.sgs.graphql.neighborhood.service.NeighborhoodService;
|
||||
import com.sgs.lib.dao.mutation.mapper.BaseCreateUpdateMapper;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
@Component
|
||||
public class AreaMapper extends BaseCreateUpdateMapper<Area, AreaCreateInput, AreaUpdateInput> {
|
||||
|
||||
|
||||
private final CityService cityService;
|
||||
private final NeighborhoodService neighborhoodService;
|
||||
private final CountryService countryService;
|
||||
private final DistrictService districtService;
|
||||
|
||||
|
||||
public AreaMapper( CityService cityService, NeighborhoodService neighborhoodService, CountryService countryService, DistrictService districtService) {
|
||||
|
||||
this.cityService = cityService;
|
||||
this.neighborhoodService = neighborhoodService;
|
||||
this.countryService = countryService;
|
||||
this.districtService = districtService;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Area toEntity(AreaCreateInput input) {
|
||||
Area entity = new Area();
|
||||
entity.setTag(input.getTag());
|
||||
if (input.getCountries() != null) {
|
||||
List<Country> countries = new ArrayList<>();
|
||||
for (int i = 0; i < input.getCountries().size(); i++) {
|
||||
Country country = countryService.findById(input.getCountries().get(i)).orElse(null);
|
||||
countries.add(country);
|
||||
}
|
||||
entity.setCountries(countries);
|
||||
}
|
||||
if (input.getCities() != null) {
|
||||
List<City> cities = new ArrayList<>();
|
||||
for (int i = 0; i < input.getCities().size(); i++) {
|
||||
City city = cityService.findById(input.getCities().get(i)).orElse(null);
|
||||
cities.add(city);
|
||||
}
|
||||
entity.setCities(cities);
|
||||
}
|
||||
if (input.getDistricts() != null) {
|
||||
List<District> districts = new ArrayList<>();
|
||||
for (int i = 0; i < input.getDistricts().size(); i++) {
|
||||
District district = districtService.findById(input.getDistricts().get(i)).orElse(null);
|
||||
districts.add(district);
|
||||
}
|
||||
entity.setDistricts(districts);
|
||||
}
|
||||
|
||||
if (input.getNeighborhoods() != null) {
|
||||
List<Neighborhood> neighborhoods = new ArrayList<>();
|
||||
for (int i = 0; i < input.getNeighborhoods().size(); i++) {
|
||||
Neighborhood neighborhood = neighborhoodService.findById(input.getNeighborhoods().get(i)).orElse(null);
|
||||
neighborhoods.add(neighborhood);
|
||||
}
|
||||
entity.setNeighborhoods(neighborhoods);
|
||||
}
|
||||
return entity;
|
||||
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public Area updateEntity(Area entity, AreaUpdateInput input) {
|
||||
//Area entity = new Area();
|
||||
entity.setTag(input.getTag());
|
||||
if (input.getCountries() != null) {
|
||||
List<Country> countries = new ArrayList<>();
|
||||
for (int i = 0; i < input.getCountries().size(); i++) {
|
||||
Country country = countryService.findById(input.getCountries().get(i)).orElse(null);
|
||||
countries.add(country);
|
||||
}
|
||||
entity.setCountries(countries);
|
||||
}
|
||||
if (input.getCities() != null) {
|
||||
List<City> cities = new ArrayList<>();
|
||||
for (int i = 0; i < input.getCities().size(); i++) {
|
||||
City city = cityService.findById(input.getCities().get(i)).orElse(null);
|
||||
cities.add(city);
|
||||
}
|
||||
entity.setCities(cities);
|
||||
}
|
||||
if (input.getDistricts() != null) {
|
||||
List<District> districts = new ArrayList<>();
|
||||
for (int i = 0; i < input.getDistricts().size(); i++) {
|
||||
District district = districtService.findById(input.getDistricts().get(i)).orElse(null);
|
||||
districts.add(district);
|
||||
}
|
||||
entity.setDistricts(districts);
|
||||
}
|
||||
|
||||
if (input.getNeighborhoods() != null) {
|
||||
List<Neighborhood> neighborhoods = new ArrayList<>();
|
||||
for (int i = 0; i < input.getNeighborhoods().size(); i++) {
|
||||
Neighborhood neighborhood = neighborhoodService.findById(input.getNeighborhoods().get(i)).orElse(null);
|
||||
neighborhoods.add(neighborhood);
|
||||
}
|
||||
entity.setNeighborhoods(neighborhoods);
|
||||
}
|
||||
return entity;
|
||||
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
@@ -0,0 +1,53 @@
|
||||
package com.sgs.graphql.area.query;
|
||||
|
||||
import com.sgs.graphql.area.query.pagination.AreaPageable;
|
||||
import com.sgs.graphql.area.domain.Area;
|
||||
import com.sgs.graphql.area.repo.criteria.AreaCriteria;
|
||||
import com.sgs.graphql.area.service.AreaService;
|
||||
import com.sgs.graphql.city.domain.City;
|
||||
import com.sgs.graphql.district.domain.District;
|
||||
import com.sgs.graphql.permission.domain.PermissionName;
|
||||
import com.sgs.lib.dao.query.pagination.Pagination;
|
||||
import com.sgs.lib.dao.query.sort.SortBy;
|
||||
import graphql.kickstart.tools.GraphQLQueryResolver;
|
||||
import org.apache.commons.lang3.ObjectUtils;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.data.domain.Sort;
|
||||
import org.springframework.security.access.prepost.PreAuthorize;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.UUID;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
|
||||
@Component
|
||||
public class AreaQueryResolver implements GraphQLQueryResolver {
|
||||
|
||||
private final AreaService areaService;
|
||||
|
||||
@Autowired
|
||||
public AreaQueryResolver(AreaService areaService) {
|
||||
this.areaService = areaService;
|
||||
}
|
||||
|
||||
|
||||
public Area area(UUID id) {
|
||||
return areaService.findById(id).orElse(null);
|
||||
}
|
||||
|
||||
public List<Area> areas(AreaCriteria criteria, List<SortBy> sortBy) {
|
||||
return areaService.filterWithSort(ObjectUtils.defaultIfNull(criteria, new AreaCriteria()),
|
||||
Sort.by(ObjectUtils.defaultIfNull(sortBy, new ArrayList<SortBy>())
|
||||
.stream()
|
||||
.map(SortBy::toOrder)
|
||||
.collect(Collectors.toList())));
|
||||
}
|
||||
|
||||
@PreAuthorize("hasAuthority('" + PermissionName.PAGINATE_AREAS_GET + "')")
|
||||
public AreaPageable paginateAreas(Pagination pagination, AreaCriteria criteria, List<SortBy> sortBy) {
|
||||
return new AreaPageable(areaService.filterWithPaginate(ObjectUtils.defaultIfNull(criteria, new AreaCriteria()),
|
||||
Pagination.toPageRequest(pagination, sortBy)));
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,12 @@
|
||||
package com.sgs.graphql.area.query.pagination;
|
||||
|
||||
|
||||
import com.sgs.graphql.area.domain.Area;
|
||||
import com.sgs.lib.dao.query.pagination.PaginationResult;
|
||||
import org.springframework.data.domain.Page;
|
||||
|
||||
public class AreaPageable extends PaginationResult<Area> {
|
||||
public AreaPageable(Page<Area> page) {
|
||||
super(page);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,11 @@
|
||||
package com.sgs.graphql.area.repo;
|
||||
|
||||
import com.sgs.graphql.area.domain.Area;
|
||||
import com.sgs.lib.dao.repo.BaseRepo;
|
||||
import org.springframework.stereotype.Repository;
|
||||
import java.util.Optional;
|
||||
|
||||
@Repository
|
||||
public interface AreaRepo extends BaseRepo<Area> {
|
||||
Optional<Area> findByTag(String tag);
|
||||
}
|
||||
@@ -0,0 +1,38 @@
|
||||
package com.sgs.graphql.area.repo.criteria;
|
||||
|
||||
|
||||
import com.sgs.lib.dao.repo.criteria.BaseCriteria;
|
||||
import com.fasterxml.jackson.annotation.JsonProperty;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
public class AreaCriteria extends BaseCriteria {
|
||||
private String tag;
|
||||
private UUID organizations;
|
||||
private boolean deleted;
|
||||
|
||||
public String getTag() {
|
||||
return tag;
|
||||
}
|
||||
|
||||
public void setTag(String tag) {
|
||||
this.tag = tag;
|
||||
}
|
||||
|
||||
public UUID getOrganizations() {
|
||||
return organizations;
|
||||
}
|
||||
|
||||
public void setOrganizations(UUID organizations) {
|
||||
this.organizations = organizations;
|
||||
}
|
||||
|
||||
@JsonProperty("deleted")
|
||||
public boolean isDeleted() {
|
||||
return deleted;
|
||||
}
|
||||
|
||||
public void setDeleted(boolean deleted) {
|
||||
this.deleted = deleted;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,31 @@
|
||||
package com.sgs.graphql.area.repo.criteria.spec;
|
||||
|
||||
import com.sgs.graphql.area.domain.Area;
|
||||
import com.sgs.graphql.area.repo.criteria.AreaCriteria;
|
||||
|
||||
import com.sgs.graphql.organization.domain.Organization;
|
||||
import com.sgs.lib.dao.repo.criteria.spec.BaseCriteriaSpec;
|
||||
import org.springframework.data.jpa.domain.Specification;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
@Component
|
||||
public class AreaCriteriaSpec extends BaseCriteriaSpec<Area, AreaCriteria> {
|
||||
public static Specification<Area> tag(String tag){
|
||||
return (tag == null || tag.trim().length() == 0) ? null : (Specification<Area>) (root, query, criteriaBuilder) -> criteriaBuilder.like(root.get("tag"), "%" + tag + "%");
|
||||
}
|
||||
|
||||
public static Specification<Area> organizations(UUID organizations) {
|
||||
return (organizations == null) ? null : (Specification<Area>) (root, query, criteriaBuilder) -> criteriaBuilder.equal(root.join("organizations").get("id"), organizations);
|
||||
}
|
||||
|
||||
public static Specification<Area> deleted(boolean deleted) {
|
||||
return (Specification<Area>) (root, query, criteriaBuilder) -> criteriaBuilder.equal(root.get("deleted"), deleted);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Specification<Area> createForAll(AreaCriteria criteria) {
|
||||
return Specification.where(organizations(criteria.getOrganizations())).and(deleted(criteria.isDeleted()));
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,16 @@
|
||||
package com.sgs.graphql.area.service;
|
||||
import com.sgs.graphql.area.domain.Area;
|
||||
import com.sgs.graphql.area.repo.AreaRepo;
|
||||
import com.sgs.graphql.area.repo.criteria.AreaCriteria;
|
||||
import com.sgs.graphql.area.repo.criteria.spec.AreaCriteriaSpec;
|
||||
import com.sgs.lib.dao.service.BaseService;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
@Service
|
||||
public class AreaService extends BaseService<Area, AreaRepo, AreaCriteria, AreaCriteriaSpec> {
|
||||
@Autowired
|
||||
public AreaService(AreaRepo repository, AreaCriteriaSpec criteriaSpec) {
|
||||
super(repository, criteriaSpec);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,72 @@
|
||||
package com.sgs.graphql.auth.domain;
|
||||
import com.sgs.graphql.role.domain.Role;
|
||||
import com.sgs.graphql.user.domain.User;
|
||||
import com.sgs.lib.dao.domain.BaseDomain;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
public class JwtResponse extends BaseDomain {
|
||||
private String accessToken;
|
||||
private String type = "Bearer";
|
||||
private UUID uid;
|
||||
private Role role ;
|
||||
private String email;
|
||||
private String description;
|
||||
private final User user;
|
||||
|
||||
public JwtResponse(String accessToken, UUID uid, Role role, String email, User user, String description) {
|
||||
this.accessToken = accessToken;
|
||||
this.uid = uid;
|
||||
this.role = role;
|
||||
this.email = email;
|
||||
this.user = user;
|
||||
this.description = description;
|
||||
}
|
||||
|
||||
public String getDescription() {
|
||||
return description;
|
||||
}
|
||||
|
||||
public void setDescription(String description) {
|
||||
this.description = description;
|
||||
}
|
||||
|
||||
public String getAccessToken() {
|
||||
return accessToken;
|
||||
}
|
||||
|
||||
public void setAccessToken(String accessToken) {
|
||||
this.accessToken = accessToken;
|
||||
}
|
||||
|
||||
public String getTokenType() {
|
||||
return type;
|
||||
}
|
||||
|
||||
public void setTokenType(String tokenType) {
|
||||
this.type = tokenType;
|
||||
}
|
||||
|
||||
public UUID getUid() {
|
||||
return uid;
|
||||
}
|
||||
|
||||
public void setUid(UUID uid) {
|
||||
this.uid = uid;
|
||||
}
|
||||
|
||||
public String getEmail() {
|
||||
return email;
|
||||
}
|
||||
|
||||
public void setEmail(String email) {
|
||||
this.email = email;
|
||||
}
|
||||
|
||||
public User getUser() {
|
||||
return user;
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
@@ -0,0 +1,42 @@
|
||||
package com.sgs.graphql.auth.jwt;
|
||||
|
||||
import com.fasterxml.jackson.databind.ObjectMapper;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import org.springframework.http.MediaType;
|
||||
import org.springframework.security.core.AuthenticationException;
|
||||
import org.springframework.security.web.AuthenticationEntryPoint;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import javax.servlet.ServletException;
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
import java.io.IOException;
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
|
||||
@Component
|
||||
public class JwtAuthEntryPoint implements AuthenticationEntryPoint {
|
||||
private static final Logger logger = LoggerFactory.getLogger(JwtAuthEntryPoint.class);
|
||||
|
||||
@Override
|
||||
public void commence(HttpServletRequest request,
|
||||
HttpServletResponse response,
|
||||
AuthenticationException authException)
|
||||
throws IOException, ServletException {
|
||||
logger.error("Unauthorized error: {}", authException.getMessage());
|
||||
|
||||
response.setContentType(MediaType.APPLICATION_JSON_VALUE);
|
||||
response.setStatus(HttpServletResponse.SC_UNAUTHORIZED);
|
||||
|
||||
final Map<String, Object> body = new HashMap<>();
|
||||
body.put("status", HttpServletResponse.SC_UNAUTHORIZED);
|
||||
body.put("error", "Unauthorized");
|
||||
body.put("message", authException.getMessage());
|
||||
body.put("path", request.getServletPath());
|
||||
|
||||
final ObjectMapper mapper = new ObjectMapper();
|
||||
mapper.writeValue(response.getOutputStream(), body);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,66 @@
|
||||
package com.sgs.graphql.auth.jwt;
|
||||
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
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.WebAuthenticationDetailsSource;
|
||||
import org.springframework.util.StringUtils;
|
||||
import org.springframework.web.filter.OncePerRequestFilter;
|
||||
|
||||
import javax.servlet.FilterChain;
|
||||
import javax.servlet.ServletException;
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
import java.io.IOException;
|
||||
import java.util.UUID;
|
||||
|
||||
public class JwtAuthTokenFilter extends OncePerRequestFilter {
|
||||
@Autowired
|
||||
private JwtTokenProvider jwtTokenProvider;
|
||||
@Autowired
|
||||
private JwtUserDetailsService userDetailsService;
|
||||
|
||||
private static final String BEARER = "Bearer";
|
||||
|
||||
private static final Logger logger = LoggerFactory.getLogger(JwtAuthTokenFilter.class);
|
||||
|
||||
@Override
|
||||
protected void doFilterInternal(HttpServletRequest request,
|
||||
HttpServletResponse response,
|
||||
FilterChain filterChain)
|
||||
throws ServletException, IOException {
|
||||
try {
|
||||
String jwtToken = parseJwt(request);
|
||||
if (StringUtils.hasText(jwtToken)&&jwtTokenProvider.validateToken(jwtToken)){
|
||||
UUID userId = jwtTokenProvider.getUserIdFromJwt(jwtToken);
|
||||
UserDetails userDetails = jwtTokenProvider.getUserDetailsFromJwt(jwtToken);
|
||||
request.setAttribute("userId", userId);
|
||||
request.setAttribute("token",jwtToken);
|
||||
UsernamePasswordAuthenticationToken auth = new UsernamePasswordAuthenticationToken(userDetails,null,
|
||||
userDetails.getAuthorities());
|
||||
auth.setDetails(new WebAuthenticationDetailsSource().buildDetails(request));
|
||||
SecurityContextHolder.getContext().setAuthentication(auth);
|
||||
|
||||
}
|
||||
|
||||
|
||||
} catch (Exception e) {
|
||||
logger.error("Cannot set user authentication: {}", e);
|
||||
}
|
||||
filterChain.doFilter(request, response);
|
||||
|
||||
}
|
||||
|
||||
private String parseJwt(HttpServletRequest request) {
|
||||
String headerAuth = request.getHeader("Authorization");
|
||||
if (StringUtils.hasText(headerAuth) && headerAuth.startsWith("Bearer ")) {
|
||||
return headerAuth.substring("Bearer".length()+1);
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
@@ -0,0 +1,149 @@
|
||||
package com.sgs.graphql.auth.jwt;
|
||||
|
||||
import com.sgs.graphql.role.domain.Role;
|
||||
import com.sgs.graphql.user.domain.User;
|
||||
import com.sgs.graphql.user.repo.UserRepo;
|
||||
import graphql.kickstart.servlet.context.DefaultGraphQLServletContext;
|
||||
import graphql.schema.DataFetchingEnvironment;
|
||||
import io.jsonwebtoken.*;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.beans.factory.annotation.Value;
|
||||
import org.springframework.security.core.Authentication;
|
||||
import org.springframework.security.core.userdetails.UserDetails;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
import java.util.UUID;
|
||||
import java.util.function.Function;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
@Component
|
||||
public class JwtTokenProvider implements Serializable {
|
||||
private static final Logger logger = LoggerFactory.getLogger(JwtTokenProvider.class);
|
||||
private final UserRepo userRepo;
|
||||
|
||||
@Value("${security.jwt.token.secret-key}")
|
||||
private String APP_SECRET;
|
||||
@Autowired
|
||||
private JwtUserDetailsService jwtUserDetailsService;
|
||||
|
||||
public JwtTokenProvider(UserRepo userRepo) {
|
||||
this.userRepo = userRepo;
|
||||
}
|
||||
|
||||
public String generateJwtAccessToken(Authentication authentication) {
|
||||
JwtUserDetailsImpl userPrincipal = (JwtUserDetailsImpl) authentication.getPrincipal();
|
||||
User user = userRepo.findByEmail(userPrincipal.getEmail()).orElse(null);
|
||||
|
||||
return Jwts.builder()
|
||||
.setSubject(userPrincipal.getUsername())
|
||||
.setIssuedAt(new Date())
|
||||
.setExpiration(new Date(System.currentTimeMillis() + 24 * 60 * 60 * 1000)) //1 gün
|
||||
.claim("id", user.getId().toString())
|
||||
.claim("role", user.getRole().getTag())
|
||||
.claim("user", user.getFirstName())
|
||||
.signWith(SignatureAlgorithm.HS512, APP_SECRET)
|
||||
.compact();
|
||||
}
|
||||
|
||||
public String generateTokenFromUsername(String username) {
|
||||
User user = userRepo.findByEmail(username).orElseThrow(() -> new RuntimeException("User not found "));
|
||||
return Jwts.builder()
|
||||
.setSubject(username)
|
||||
.setIssuedAt(new Date())
|
||||
.setExpiration(new Date(System.currentTimeMillis() + 24 * 60 * 60 * 1000)) // 1 gün
|
||||
.claim("id", user.getId().toString())
|
||||
.claim("role", user.getRole().getTag())
|
||||
.claim("user", user.getFirstName())
|
||||
.signWith(SignatureAlgorithm.HS512, APP_SECRET)
|
||||
.compact();
|
||||
}
|
||||
|
||||
public String getUserNameFromJwt(String token) {
|
||||
return getClaimFromToken(token, Claims::getSubject);
|
||||
}
|
||||
|
||||
public Date getExpirationDateFromToken(String token) {
|
||||
return getClaimFromToken(token, Claims::getExpiration);
|
||||
}
|
||||
|
||||
public <T> T getClaimFromToken(String token, Function<Claims, T> claimsResolver) {
|
||||
final Claims claims = getAllClaimsFromToken(token);
|
||||
return claimsResolver.apply(claims);
|
||||
}
|
||||
|
||||
private Claims getAllClaimsFromToken(String token) {
|
||||
return Jwts.parser().setSigningKey(APP_SECRET).parseClaimsJws(token).getBody();
|
||||
}
|
||||
|
||||
public boolean validateToken(String token) {
|
||||
try {
|
||||
Jwts.parser().setSigningKey(APP_SECRET).setSigningKey(token);
|
||||
return !isTokenExpired(token);
|
||||
} catch (SignatureException e) {
|
||||
logger.error("Invalid JWT signature: {}", e.getMessage());
|
||||
} catch (MalformedJwtException e) {
|
||||
logger.error("Invalid JWT token: {}", e.getMessage());
|
||||
} catch (ExpiredJwtException e) {
|
||||
logger.error("JWT token is expired: {}", e.getMessage());
|
||||
} catch (UnsupportedJwtException e) {
|
||||
logger.error("JWT token is unsupported: {}", e.getMessage());
|
||||
} catch (IllegalArgumentException e) {
|
||||
logger.error("JWT claims string is empty: {}", e.getMessage());
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
private boolean isTokenExpired(String token) {
|
||||
Date expiration = Jwts.parser().setSigningKey(APP_SECRET).parseClaimsJws(token).getBody().getExpiration();
|
||||
return expiration.before(new Date());
|
||||
}
|
||||
|
||||
public UUID getUserIdFromJwt(String jwtToken) {
|
||||
Claims claim = Jwts.parser().setSigningKey(APP_SECRET).parseClaimsJws(jwtToken).getBody();
|
||||
return UUID.fromString(claim.get("id", String.class));
|
||||
|
||||
}
|
||||
|
||||
public List<Role> getRoleFromJwt(String jwtToken) {
|
||||
Claims claims = Jwts.parser().setSigningKey(APP_SECRET).parseClaimsJws(jwtToken).getBody();
|
||||
return claims.get("roles", List.class);
|
||||
|
||||
}
|
||||
|
||||
public UserDetails getUserDetailsFromJwt(String jwtToken) {
|
||||
String username = getUserNameFromJwt(jwtToken);
|
||||
UserDetails userDetails = jwtUserDetailsService.loadUserByUsername(username);
|
||||
return userDetails;
|
||||
}
|
||||
|
||||
|
||||
public static String getAttribute(DataFetchingEnvironment environment, String key) {
|
||||
if (environment == null) {
|
||||
return null;
|
||||
}
|
||||
DefaultGraphQLServletContext context = environment.getContext();
|
||||
Object attribute = context.getHttpServletRequest().getAttribute(key);
|
||||
return attribute != null ? attribute.toString() : null;
|
||||
}
|
||||
|
||||
public static String getHeader(DataFetchingEnvironment environment, String key) {
|
||||
if (environment == null) {
|
||||
return null;
|
||||
}
|
||||
DefaultGraphQLServletContext context = environment.getContext();
|
||||
return context.getHttpServletRequest().getHeader(key);
|
||||
}
|
||||
|
||||
public static String getRemoteHost(DataFetchingEnvironment environment) {
|
||||
if (environment == null) {
|
||||
return null;
|
||||
}
|
||||
DefaultGraphQLServletContext context = environment.getContext();
|
||||
return context.getHttpServletRequest().getRemoteHost();
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,104 @@
|
||||
package com.sgs.graphql.auth.jwt;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonIgnore;
|
||||
import com.sgs.graphql.user.domain.User;
|
||||
import org.springframework.security.core.GrantedAuthority;
|
||||
import org.springframework.security.core.authority.SimpleGrantedAuthority;
|
||||
import org.springframework.security.core.userdetails.UserDetails;
|
||||
|
||||
import java.util.Collection;
|
||||
import java.util.List;
|
||||
import java.util.Objects;
|
||||
import java.util.UUID;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
public class JwtUserDetailsImpl implements UserDetails {
|
||||
private static final long serialVersionUID = 1L;
|
||||
private UUID id;
|
||||
private String username;
|
||||
private String email;
|
||||
@JsonIgnore
|
||||
private String password;
|
||||
private Collection<? extends GrantedAuthority> authorities;
|
||||
|
||||
public JwtUserDetailsImpl(UUID id,
|
||||
String email,
|
||||
String password,
|
||||
Collection<? extends GrantedAuthority> authorities){
|
||||
this.id = id;
|
||||
this.username = email;
|
||||
this.email = email;
|
||||
this.password = password;
|
||||
this.authorities = authorities;
|
||||
}
|
||||
|
||||
public static JwtUserDetailsImpl build(User user) {
|
||||
List<GrantedAuthority> authorities = user.getRole().getPermissions()
|
||||
.stream()
|
||||
.map(permission -> new SimpleGrantedAuthority(permission.getAuthority()))
|
||||
.collect(Collectors.toList());
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
return new JwtUserDetailsImpl(
|
||||
user.getId(),
|
||||
user.getEmail(),
|
||||
user.getPassword(),
|
||||
authorities);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Collection<? extends GrantedAuthority> getAuthorities() {
|
||||
return authorities;
|
||||
}
|
||||
|
||||
public UUID getId() {
|
||||
return id;
|
||||
}
|
||||
|
||||
public String getEmail() {
|
||||
return email;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getPassword() {
|
||||
return password;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getUsername() {
|
||||
return username;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isAccountNonExpired() {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isAccountNonLocked() {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isCredentialsNonExpired() {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isEnabled() {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean equals(Object o) {
|
||||
if (this == o)
|
||||
return true;
|
||||
if (o == null || getClass() != o.getClass())
|
||||
return false;
|
||||
JwtUserDetailsImpl user = (JwtUserDetailsImpl) o;
|
||||
return Objects.equals(id, user.id);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,30 @@
|
||||
package com.sgs.graphql.auth.jwt;
|
||||
|
||||
import com.sgs.graphql.user.domain.User;
|
||||
import com.sgs.graphql.user.repo.UserRepo;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.security.core.userdetails.UserDetails;
|
||||
import org.springframework.security.core.userdetails.UserDetailsService;
|
||||
import org.springframework.security.core.userdetails.UsernameNotFoundException;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
@Service
|
||||
public class JwtUserDetailsService implements UserDetailsService {
|
||||
|
||||
private UserRepo userRepo;
|
||||
|
||||
@Autowired
|
||||
public JwtUserDetailsService(UserRepo userRepo) {
|
||||
this.userRepo = userRepo;
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional
|
||||
public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException {
|
||||
User user = userRepo.findByEmail(username)
|
||||
.orElseThrow(() -> new UsernameNotFoundException("User Not Found with username: " + username));
|
||||
return JwtUserDetailsImpl.build(user);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,72 @@
|
||||
package com.sgs.graphql.auth.mutation;
|
||||
|
||||
import com.sgs.exception.GraphQLCustomException;
|
||||
import com.sgs.graphql.auth.domain.JwtResponse;
|
||||
import com.sgs.graphql.auth.mutation.input.AuthLoginInput;
|
||||
import com.sgs.graphql.user.domain.User;
|
||||
import com.sgs.graphql.user.repo.UserRepo;
|
||||
import com.sgs.graphql.auth.jwt.*;
|
||||
import com.sgs.exception.CustomException;
|
||||
import com.sgs.graphql.user.service.UserService;
|
||||
import graphql.kickstart.tools.GraphQLMutationResolver;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.http.HttpStatus;
|
||||
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.Component;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
|
||||
import java.time.LocalDateTime;
|
||||
|
||||
@Component
|
||||
@Validated
|
||||
public class AuthMutation implements GraphQLMutationResolver {
|
||||
|
||||
private final AuthenticationManager authenticationManager;
|
||||
private final UserRepo userRepo;
|
||||
private final UserService userService;
|
||||
|
||||
private final JwtTokenProvider jwtTokenProvider;
|
||||
|
||||
@Autowired
|
||||
public AuthMutation(AuthenticationManager authenticationManager, UserRepo userRepo, UserService userService, JwtTokenProvider jwtTokenProvider) {
|
||||
this.authenticationManager = authenticationManager;
|
||||
this.userRepo = userRepo;
|
||||
this.userService = userService;
|
||||
this.jwtTokenProvider = jwtTokenProvider;
|
||||
}
|
||||
|
||||
public JwtResponse login(AuthLoginInput input) {
|
||||
UsernamePasswordAuthenticationToken authToken = new UsernamePasswordAuthenticationToken(input.getEmail(), input.getPassword());
|
||||
Authentication authentication = authenticationManager.authenticate(authToken);
|
||||
SecurityContextHolder.getContext().setAuthentication(authentication);
|
||||
String token = jwtTokenProvider.generateJwtAccessToken(authentication);
|
||||
User user = userRepo.findByEmail(input.getEmail())
|
||||
.orElseThrow(
|
||||
() -> new CustomException(
|
||||
String.format("User %s does not exist", input.getEmail()),
|
||||
HttpStatus.BAD_REQUEST)
|
||||
);
|
||||
if (user.isDelete()) {
|
||||
throw new GraphQLCustomException("1010", "Silinmiş kullanıcı");
|
||||
}
|
||||
|
||||
JwtUserDetailsImpl userDetails = (JwtUserDetailsImpl) authentication.getPrincipal();
|
||||
|
||||
JwtResponse jwtResponse = new JwtResponse(
|
||||
token,
|
||||
userDetails.getId(),
|
||||
user.getRole(),
|
||||
userDetails.getEmail(),
|
||||
user,
|
||||
"Logged in");
|
||||
|
||||
if (!jwtResponse.getAccessToken().isEmpty()) {
|
||||
user.setLastLoginTime(LocalDateTime.now());
|
||||
userService.update(user);
|
||||
}
|
||||
return jwtResponse;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,23 @@
|
||||
package com.sgs.graphql.auth.mutation.input;
|
||||
|
||||
public class AuthLoginInput {
|
||||
|
||||
private String email;
|
||||
private String password;
|
||||
|
||||
public String getEmail() {
|
||||
return email;
|
||||
}
|
||||
|
||||
public void setEmail(String email) {
|
||||
this.email = email;
|
||||
}
|
||||
|
||||
public String getPassword() {
|
||||
return password;
|
||||
}
|
||||
|
||||
public void setPassword(String password) {
|
||||
this.password = password;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,16 @@
|
||||
package com.sgs.graphql.auth.service;
|
||||
|
||||
import org.springframework.security.core.Authentication;
|
||||
import org.springframework.security.core.context.SecurityContextHolder;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
@Service
|
||||
public class AuthorizationService {
|
||||
|
||||
public boolean hasPermission(String permission) {
|
||||
Authentication authentication = SecurityContextHolder.getContext().getAuthentication();
|
||||
|
||||
return authentication.getAuthorities().stream()
|
||||
.anyMatch(grantedAuthority -> grantedAuthority.getAuthority().equals(permission));
|
||||
}
|
||||
}
|
||||
105
sge-backend/src/main/java/com/sgs/graphql/city/domain/City.java
Normal file
105
sge-backend/src/main/java/com/sgs/graphql/city/domain/City.java
Normal file
@@ -0,0 +1,105 @@
|
||||
package com.sgs.graphql.city.domain;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonBackReference;
|
||||
import com.fasterxml.jackson.annotation.JsonManagedReference;
|
||||
import com.sgs.graphql.area.domain.Area;
|
||||
import com.sgs.graphql.country.domain.Country;
|
||||
import com.sgs.graphql.district.domain.District;
|
||||
import com.sgs.graphql.mainDataTable.domain.MainDataTable;
|
||||
import com.sgs.lib.dao.domain.BaseDomain;
|
||||
|
||||
import javax.persistence.*;
|
||||
import java.util.*;
|
||||
|
||||
@Entity
|
||||
@Table(name = "city")
|
||||
public class City extends BaseDomain {
|
||||
|
||||
private String name;
|
||||
private Country country;
|
||||
private String coordinates;
|
||||
private boolean isDeleted = false;
|
||||
private boolean defaultCity;
|
||||
private Set<District> districts = new HashSet<>();
|
||||
private List<Area> areas = new ArrayList<>();
|
||||
private List<MainDataTable> mainDataTables = new ArrayList<>();
|
||||
|
||||
|
||||
@OneToMany(mappedBy = "city", fetch = FetchType.EAGER)
|
||||
@JsonManagedReference("city-districts")
|
||||
public Set<District> getDistricts() {
|
||||
return districts;
|
||||
}
|
||||
|
||||
public void setDistricts(Set<District> districts) {
|
||||
this.districts = districts;
|
||||
}
|
||||
|
||||
@Column(nullable = false)
|
||||
public String getName() {
|
||||
return name;
|
||||
}
|
||||
|
||||
public void setName(String name) {
|
||||
this.name = name;
|
||||
}
|
||||
|
||||
|
||||
@Column(nullable = false)
|
||||
public boolean isDeleted() {
|
||||
return isDeleted;
|
||||
}
|
||||
|
||||
public void setDeleted(boolean deleted) {
|
||||
isDeleted = deleted;
|
||||
}
|
||||
|
||||
@Column(nullable = false)
|
||||
public boolean isDefaultCity() {
|
||||
return defaultCity;
|
||||
}
|
||||
|
||||
public void setDefaultCity(boolean defaultCity) {
|
||||
this.defaultCity = defaultCity;
|
||||
}
|
||||
|
||||
@ManyToOne(fetch = FetchType.EAGER)
|
||||
@JoinColumn(nullable = false)
|
||||
public Country getCountry() {
|
||||
return country;
|
||||
}
|
||||
|
||||
public void setCountry(Country country) {
|
||||
this.country = country;
|
||||
}
|
||||
|
||||
|
||||
@Column(columnDefinition = "text")
|
||||
public String getCoordinates() {
|
||||
return coordinates;
|
||||
}
|
||||
|
||||
@Convert(converter = JsonToStringConverter.class)
|
||||
public void setCoordinates(String coordinates) {
|
||||
this.coordinates = coordinates;
|
||||
}
|
||||
|
||||
@ManyToMany(mappedBy = "cities", fetch = FetchType.LAZY)
|
||||
@JsonBackReference("area-city")
|
||||
public List<Area> getAreas() {
|
||||
return areas;
|
||||
}
|
||||
|
||||
public void setAreas(List<Area> areas) {
|
||||
this.areas = areas;
|
||||
}
|
||||
|
||||
@OneToMany(mappedBy = "city", fetch = FetchType.LAZY, cascade = CascadeType.ALL)
|
||||
public List<MainDataTable> getMainDataTables() {
|
||||
return mainDataTables;
|
||||
}
|
||||
|
||||
public void setMainDataTables(List<MainDataTable> mainDataTables) {
|
||||
this.mainDataTables = mainDataTables;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,29 @@
|
||||
package com.sgs.graphql.city.domain;
|
||||
import com.fasterxml.jackson.core.JsonProcessingException;
|
||||
import com.fasterxml.jackson.databind.ObjectMapper;
|
||||
import javax.persistence.AttributeConverter;
|
||||
import javax.persistence.Converter;
|
||||
|
||||
@Converter
|
||||
public class JsonToStringConverter implements AttributeConverter<Object, String> {
|
||||
|
||||
private final static ObjectMapper objectMapper = new ObjectMapper();
|
||||
|
||||
@Override
|
||||
public String convertToDatabaseColumn(Object attribute) {
|
||||
try {
|
||||
return objectMapper.writeValueAsString(attribute);
|
||||
} catch (JsonProcessingException e) {
|
||||
throw new RuntimeException("Error when serializing to json: " + attribute, e);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public Object convertToEntityAttribute(String dbData) {
|
||||
try {
|
||||
return objectMapper.readValue(dbData, Object.class);
|
||||
} catch (JsonProcessingException e) {
|
||||
throw new RuntimeException("Error when deserializing from json: " + dbData, e);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,26 @@
|
||||
package com.sgs.graphql.city.mutation;
|
||||
|
||||
import com.sgs.graphql.city.service.CityService;
|
||||
import graphql.kickstart.tools.GraphQLMutationResolver;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Component;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
|
||||
|
||||
@Validated
|
||||
@Component
|
||||
public class CityMutation implements GraphQLMutationResolver {
|
||||
|
||||
private final CityService cityService;
|
||||
|
||||
|
||||
@Autowired
|
||||
public CityMutation(CityService cityService) {
|
||||
this.cityService = cityService;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
@@ -0,0 +1,26 @@
|
||||
package com.sgs.graphql.city.mutation.input;
|
||||
import com.sgs.lib.dao.mutation.input.BaseCreateInput;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
public class CityCreateInput extends BaseCreateInput {
|
||||
private String name ;
|
||||
private UUID country;
|
||||
|
||||
|
||||
public String getName() {
|
||||
return name;
|
||||
}
|
||||
|
||||
public void setName(String name) {
|
||||
this.name = name;
|
||||
}
|
||||
|
||||
public UUID getCountry() {
|
||||
return country;
|
||||
}
|
||||
|
||||
public void setCountry(UUID country) {
|
||||
this.country = country;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,27 @@
|
||||
package com.sgs.graphql.city.mutation.input;
|
||||
|
||||
|
||||
import com.sgs.lib.dao.mutation.input.BaseUpdateInput;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
public class CityUpdateInput extends BaseUpdateInput {
|
||||
private String name ;
|
||||
private UUID country;
|
||||
|
||||
public String getName() {
|
||||
return name;
|
||||
}
|
||||
|
||||
public void setName(String name) {
|
||||
this.name = name;
|
||||
}
|
||||
|
||||
public UUID getCountry() {
|
||||
return country;
|
||||
}
|
||||
|
||||
public void setCountry(UUID country) {
|
||||
this.country = country;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,30 @@
|
||||
package com.sgs.graphql.city.mutation.mapper;
|
||||
|
||||
import com.sgs.graphql.city.domain.City;
|
||||
import com.sgs.graphql.city.mutation.input.CityCreateInput;
|
||||
import com.sgs.graphql.country.domain.Country;
|
||||
import com.sgs.graphql.country.service.CountryService;
|
||||
|
||||
import com.sgs.lib.dao.mutation.mapper.BaseCreateMapper;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import java.util.Optional;
|
||||
|
||||
@Component
|
||||
public class CityMapper extends BaseCreateMapper<City, CityCreateInput> {
|
||||
|
||||
private final CountryService countryService;
|
||||
|
||||
public CityMapper( CountryService countryService) {
|
||||
this.countryService = countryService;
|
||||
}
|
||||
@Override
|
||||
public City toEntity(CityCreateInput input) {
|
||||
City entity = new City();
|
||||
entity.setName(input.getName());
|
||||
Country country = countryService.findById(input.getCountry()).orElse(null);
|
||||
entity.setCountry(country);
|
||||
|
||||
return entity;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,77 @@
|
||||
package com.sgs.graphql.city.query;
|
||||
|
||||
import com.sgs.graphql.city.domain.City;
|
||||
import com.sgs.graphql.city.query.pagination.CityPageable;
|
||||
import com.sgs.graphql.city.repo.criteria.CityCriteria;
|
||||
import com.sgs.graphql.city.service.CityService;
|
||||
import com.sgs.graphql.district.domain.District;
|
||||
import com.sgs.graphql.permission.domain.PermissionName;
|
||||
import com.sgs.lib.dao.query.pagination.Pagination;
|
||||
import com.sgs.lib.dao.query.sort.SortBy;
|
||||
import graphql.kickstart.tools.GraphQLQueryResolver;
|
||||
import org.apache.commons.lang3.ObjectUtils;
|
||||
import org.hibernate.Hibernate;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.data.domain.Sort;
|
||||
import org.springframework.security.access.prepost.PreAuthorize;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import javax.transaction.Transactional;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.UUID;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
@Component
|
||||
public class CityQueryResolver implements GraphQLQueryResolver {
|
||||
|
||||
private final CityService cityService;
|
||||
|
||||
@Autowired
|
||||
public CityQueryResolver(CityService cityService) {
|
||||
this.cityService = cityService;
|
||||
}
|
||||
|
||||
@Transactional
|
||||
public City city(UUID id) {
|
||||
City city = cityService.findById(id).orElse(null);
|
||||
if (city != null && city.getMainDataTables() != null) {
|
||||
Hibernate.initialize(city.getMainDataTables());
|
||||
if (city.getDistricts() != null) {
|
||||
for (District district : city.getDistricts()) {
|
||||
Hibernate.initialize(district.getMainDataTables());
|
||||
}
|
||||
}
|
||||
}
|
||||
return city;
|
||||
}
|
||||
|
||||
@Transactional
|
||||
public List<City> cities(CityCriteria criteria, List<SortBy> sortBy) {
|
||||
List<City> cities = cityService.filterWithSort(ObjectUtils.defaultIfNull(criteria, new CityCriteria()),
|
||||
Sort.by(ObjectUtils.defaultIfNull(sortBy, new ArrayList<SortBy>())
|
||||
.stream()
|
||||
.map(SortBy::toOrder)
|
||||
.collect(Collectors.toList())));
|
||||
if (cities.size() > 0) {
|
||||
for (City city : cities) {
|
||||
Hibernate.initialize(city.getMainDataTables());
|
||||
}
|
||||
}
|
||||
return cities;
|
||||
}
|
||||
|
||||
@Transactional
|
||||
@PreAuthorize("hasAuthority('" + PermissionName.PAGINATE_CITIES_GET + "')")
|
||||
public CityPageable paginateCities(Pagination pagination, CityCriteria criteria, List<SortBy> sortBy) {
|
||||
CityPageable cityPageable = new CityPageable(cityService.filterWithPaginate(ObjectUtils.defaultIfNull(criteria, new CityCriteria()),
|
||||
Pagination.toPageRequest(pagination, sortBy)));
|
||||
|
||||
if (cityPageable.getContent().size() > 0) {
|
||||
for (City city : cityPageable.getContent()) {
|
||||
Hibernate.initialize(city.getMainDataTables());
|
||||
}
|
||||
}
|
||||
return cityPageable;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,12 @@
|
||||
package com.sgs.graphql.city.query.pagination;
|
||||
|
||||
|
||||
import com.sgs.graphql.city.domain.City;
|
||||
import com.sgs.lib.dao.query.pagination.PaginationResult;
|
||||
import org.springframework.data.domain.Page;
|
||||
|
||||
public class CityPageable extends PaginationResult<City> {
|
||||
public CityPageable(Page<City> page) {
|
||||
super(page);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,18 @@
|
||||
package com.sgs.graphql.city.repo;
|
||||
|
||||
import com.sgs.graphql.city.domain.City;
|
||||
import com.sgs.lib.dao.repo.BaseRepo;
|
||||
import org.springframework.stereotype.Repository;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Optional;
|
||||
import java.util.UUID;
|
||||
|
||||
@Repository
|
||||
public interface CityRepo extends BaseRepo<City> {
|
||||
|
||||
City findByName(String name);
|
||||
|
||||
|
||||
//City findById(City id);
|
||||
}
|
||||
@@ -0,0 +1,26 @@
|
||||
package com.sgs.graphql.city.repo.criteria;
|
||||
|
||||
|
||||
import com.sgs.lib.dao.repo.criteria.BaseCriteria;
|
||||
|
||||
public class CityCriteria extends BaseCriteria {
|
||||
private String name;
|
||||
private String year;
|
||||
|
||||
|
||||
public String getName() {
|
||||
return name;
|
||||
}
|
||||
|
||||
public void setName(String name) {
|
||||
this.name = name;
|
||||
}
|
||||
|
||||
public String getYear() {
|
||||
return year;
|
||||
}
|
||||
|
||||
public void setYear(String year) {
|
||||
this.year = year;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,26 @@
|
||||
package com.sgs.graphql.city.repo.criteria.spec;
|
||||
|
||||
import com.sgs.graphql.city.domain.City;
|
||||
import com.sgs.graphql.city.repo.criteria.CityCriteria;
|
||||
import com.sgs.lib.dao.repo.criteria.spec.BaseCriteriaSpec;
|
||||
import org.springframework.data.jpa.domain.Specification;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
@Component
|
||||
public class CityCriteriaSpec extends BaseCriteriaSpec<City, CityCriteria> {
|
||||
|
||||
|
||||
public static Specification<City> name(String name) {
|
||||
return (name == null || name.trim().length() == 0) ? null : (Specification<City>) (root, query, criteriaBuilder) -> criteriaBuilder.like(root.get("name"), "%" + name + "%");
|
||||
}
|
||||
|
||||
public static Specification<City> year(String year) {
|
||||
return (year == null || year.trim().length() == 0) ? null : (Specification<City>) (root, query, criteriaBuilder) -> criteriaBuilder.equal(root.join("mainDataTables").get("year"), year);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Specification<City> createForAll(CityCriteria criteria) {
|
||||
return Specification.where(name(criteria.getName()))
|
||||
.and(year(criteria.getYear()));
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,36 @@
|
||||
package com.sgs.graphql.city.service;
|
||||
import com.sgs.graphql.city.domain.City;
|
||||
import com.sgs.graphql.city.mutation.CityMutation;
|
||||
import com.sgs.graphql.city.repo.CityRepo;
|
||||
import com.sgs.graphql.city.repo.criteria.CityCriteria;
|
||||
import com.sgs.graphql.city.repo.criteria.spec.CityCriteriaSpec;
|
||||
|
||||
import com.sgs.lib.dao.service.BaseService;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
|
||||
|
||||
@Service
|
||||
public class CityService extends BaseService<City, CityRepo, CityCriteria, CityCriteriaSpec> {
|
||||
|
||||
|
||||
@Autowired
|
||||
public CityService(CityRepo repository, CityCriteriaSpec criteriaSpec) {
|
||||
super(repository, criteriaSpec);
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
//
|
||||
// public List<City> getCities() {
|
||||
// return cities;
|
||||
// }
|
||||
|
||||
|
||||
// cityMutation.loadCitiesFromJson();
|
||||
}
|
||||
@@ -0,0 +1,42 @@
|
||||
package com.sgs.graphql.consuptionUnit.domain;
|
||||
|
||||
import com.sgs.lib.dao.domain.BaseDomain;
|
||||
|
||||
import javax.persistence.Column;
|
||||
import javax.persistence.Entity;
|
||||
import javax.persistence.Table;
|
||||
|
||||
@Entity
|
||||
@Table(name = "consuption_unit")
|
||||
public class ConsuptionUnit extends BaseDomain {
|
||||
private String tag;
|
||||
private String description;
|
||||
private boolean deleted;
|
||||
|
||||
@Column(name = "tag", nullable = false)
|
||||
public String getTag() {
|
||||
return tag;
|
||||
}
|
||||
|
||||
public void setTag(String tag) {
|
||||
this.tag = tag;
|
||||
}
|
||||
|
||||
@Column(name = "description")
|
||||
public String getDescription() {
|
||||
return description;
|
||||
}
|
||||
|
||||
public void setDescription(String description) {
|
||||
this.description = description;
|
||||
}
|
||||
|
||||
@Column(name = "is_deleted", nullable = false)
|
||||
public boolean isDeleted() {
|
||||
return deleted;
|
||||
}
|
||||
|
||||
public void setDeleted(boolean deleted) {
|
||||
this.deleted = deleted;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,55 @@
|
||||
package com.sgs.graphql.consuptionUnit.dto;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
/**
|
||||
* DTO for ConsuptionUnit entity.
|
||||
* Represents units of consumption/measurement used in emission calculations.
|
||||
*/
|
||||
public class ConsuptionUnitDto {
|
||||
private UUID id;
|
||||
private String tag;
|
||||
private String description;
|
||||
private boolean isDeleted;
|
||||
|
||||
public ConsuptionUnitDto() {}
|
||||
|
||||
public ConsuptionUnitDto(UUID id, String tag, String description, boolean isDeleted) {
|
||||
this.id = id;
|
||||
this.tag = tag;
|
||||
this.description = description;
|
||||
this.isDeleted = isDeleted;
|
||||
}
|
||||
|
||||
public UUID getId() {
|
||||
return id;
|
||||
}
|
||||
|
||||
public void setId(UUID id) {
|
||||
this.id = id;
|
||||
}
|
||||
|
||||
public String getTag() {
|
||||
return tag;
|
||||
}
|
||||
|
||||
public void setTag(String tag) {
|
||||
this.tag = tag;
|
||||
}
|
||||
|
||||
public String getDescription() {
|
||||
return description;
|
||||
}
|
||||
|
||||
public void setDescription(String description) {
|
||||
this.description = description;
|
||||
}
|
||||
|
||||
public boolean isDeleted() {
|
||||
return isDeleted;
|
||||
}
|
||||
|
||||
public void setDeleted(boolean deleted) {
|
||||
isDeleted = deleted;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,46 @@
|
||||
package com.sgs.graphql.consuptionUnit.query;
|
||||
|
||||
import com.sgs.graphql.consuptionUnit.query.pagination.ConsuptionUnitPageable;
|
||||
import com.sgs.graphql.consuptionUnit.domain.ConsuptionUnit;
|
||||
import com.sgs.graphql.consuptionUnit.repo.criteria.ConsuptionUnitCriteria;
|
||||
import com.sgs.graphql.consuptionUnit.service.ConsuptionUnitService;
|
||||
import com.sgs.lib.dao.query.pagination.Pagination;
|
||||
import com.sgs.lib.dao.query.sort.SortBy;
|
||||
import graphql.kickstart.tools.GraphQLQueryResolver;
|
||||
import org.apache.commons.lang3.ObjectUtils;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.data.domain.Sort;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.UUID;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
@Component
|
||||
public class ConsuptionUnitQueryResolver implements GraphQLQueryResolver {
|
||||
|
||||
private final ConsuptionUnitService consuptionUnitService;
|
||||
|
||||
@Autowired
|
||||
public ConsuptionUnitQueryResolver(ConsuptionUnitService consuptionUnitService) {
|
||||
this.consuptionUnitService = consuptionUnitService;
|
||||
}
|
||||
|
||||
public ConsuptionUnit consuptionUnit(UUID id) {
|
||||
return consuptionUnitService.findById(id).orElse(null);
|
||||
}
|
||||
|
||||
public List<ConsuptionUnit> consuptionUnits(ConsuptionUnitCriteria criteria, List<SortBy> sortBy) {
|
||||
return consuptionUnitService.filterWithSort(ObjectUtils.defaultIfNull(criteria, new ConsuptionUnitCriteria()),
|
||||
Sort.by(ObjectUtils.defaultIfNull(sortBy, new ArrayList<SortBy>())
|
||||
.stream()
|
||||
.map(SortBy::toOrder)
|
||||
.collect(Collectors.toList())));
|
||||
}
|
||||
|
||||
public ConsuptionUnitPageable paginateConsuptionUnits(Pagination pagination, ConsuptionUnitCriteria criteria, List<SortBy> sortBy) {
|
||||
return new ConsuptionUnitPageable(consuptionUnitService.filterWithPaginate(ObjectUtils.defaultIfNull(criteria, new ConsuptionUnitCriteria()),
|
||||
Pagination.toPageRequest(pagination, sortBy)));
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,11 @@
|
||||
package com.sgs.graphql.consuptionUnit.query.pagination;
|
||||
|
||||
import com.sgs.graphql.consuptionUnit.domain.ConsuptionUnit;
|
||||
import com.sgs.lib.dao.query.pagination.PaginationResult;
|
||||
import org.springframework.data.domain.Page;
|
||||
|
||||
public class ConsuptionUnitPageable extends PaginationResult<ConsuptionUnit> {
|
||||
public ConsuptionUnitPageable(Page<ConsuptionUnit> page) {
|
||||
super(page);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,12 @@
|
||||
package com.sgs.graphql.consuptionUnit.repo;
|
||||
|
||||
import com.sgs.graphql.consuptionUnit.domain.ConsuptionUnit;
|
||||
import com.sgs.lib.dao.repo.BaseRepo;
|
||||
import org.springframework.stereotype.Repository;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@Repository
|
||||
public interface ConsuptionUnitRepo extends BaseRepo<ConsuptionUnit> {
|
||||
List<ConsuptionUnit> findByTag(String tag);
|
||||
}
|
||||
@@ -0,0 +1,6 @@
|
||||
package com.sgs.graphql.consuptionUnit.repo.criteria;
|
||||
|
||||
import com.sgs.lib.dao.repo.criteria.BaseCriteria;
|
||||
|
||||
public class ConsuptionUnitCriteria extends BaseCriteria {
|
||||
}
|
||||
@@ -0,0 +1,16 @@
|
||||
package com.sgs.graphql.consuptionUnit.repo.criteria.spec;
|
||||
|
||||
import com.sgs.graphql.consuptionUnit.domain.ConsuptionUnit;
|
||||
import com.sgs.graphql.consuptionUnit.repo.criteria.ConsuptionUnitCriteria;
|
||||
import com.sgs.lib.dao.repo.criteria.spec.BaseCriteriaSpec;
|
||||
import org.springframework.data.jpa.domain.Specification;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
@Component
|
||||
public class ConsuptionUnitCriteriaSpec extends BaseCriteriaSpec<ConsuptionUnit, ConsuptionUnitCriteria> {
|
||||
|
||||
@Override
|
||||
public Specification<ConsuptionUnit> createForAll(ConsuptionUnitCriteria criteria) {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,18 @@
|
||||
package com.sgs.graphql.consuptionUnit.service;
|
||||
|
||||
import com.sgs.graphql.consuptionUnit.domain.ConsuptionUnit;
|
||||
import com.sgs.graphql.consuptionUnit.repo.ConsuptionUnitRepo;
|
||||
import com.sgs.graphql.consuptionUnit.repo.criteria.ConsuptionUnitCriteria;
|
||||
import com.sgs.graphql.consuptionUnit.repo.criteria.spec.ConsuptionUnitCriteriaSpec;
|
||||
import com.sgs.lib.dao.service.BaseService;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
@Service
|
||||
public class ConsuptionUnitService extends BaseService<ConsuptionUnit, ConsuptionUnitRepo, ConsuptionUnitCriteria, ConsuptionUnitCriteriaSpec> {
|
||||
|
||||
@Autowired
|
||||
public ConsuptionUnitService(ConsuptionUnitRepo repository, ConsuptionUnitCriteriaSpec criteriaSpec) {
|
||||
super(repository, criteriaSpec);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,68 @@
|
||||
package com.sgs.graphql.country.domain;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonIgnore;
|
||||
import com.sgs.graphql.area.domain.Area;
|
||||
import com.sgs.lib.dao.domain.BaseDomain;
|
||||
|
||||
import javax.persistence.*;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
|
||||
@Entity
|
||||
@Table(name = "country")
|
||||
public class Country extends BaseDomain {
|
||||
|
||||
private String countryCode;
|
||||
private String name;
|
||||
private boolean isDeleted = false;
|
||||
private boolean defaultCountry;
|
||||
private List<Area> areas = new ArrayList<>();
|
||||
|
||||
@Column(name = "country_code", nullable = false)
|
||||
@JsonIgnore
|
||||
public String getCountryCode() {
|
||||
return countryCode;
|
||||
}
|
||||
|
||||
public void setCountryCode(String countryCode) {
|
||||
this.countryCode = countryCode;
|
||||
}
|
||||
|
||||
@Column(nullable = false)
|
||||
public String getName() {
|
||||
return name;
|
||||
}
|
||||
|
||||
public void setName(String name) {
|
||||
this.name = name;
|
||||
}
|
||||
|
||||
|
||||
@Column(nullable = false)
|
||||
public boolean isDeleted() {
|
||||
return isDeleted;
|
||||
}
|
||||
|
||||
public void setDeleted(boolean deleted) {
|
||||
this.isDeleted = deleted;
|
||||
}
|
||||
|
||||
@Column(nullable = false)
|
||||
public boolean isDefaultCountry() {
|
||||
return defaultCountry;
|
||||
}
|
||||
|
||||
public void setDefaultCountry(boolean defaultCountry) {
|
||||
this.defaultCountry = defaultCountry;
|
||||
}
|
||||
|
||||
@ManyToMany(mappedBy = "countries", fetch = FetchType.LAZY)
|
||||
public List<Area> getAreas() {
|
||||
return areas;
|
||||
}
|
||||
|
||||
public void setAreas(List<Area> areas) {
|
||||
this.areas = areas;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,25 @@
|
||||
package com.sgs.graphql.country.mutation;
|
||||
|
||||
import com.sgs.graphql.country.mutation.mapper.CountryMapper;
|
||||
import com.sgs.graphql.country.service.CountryService;
|
||||
import graphql.kickstart.tools.GraphQLMutationResolver;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Component;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
|
||||
|
||||
@Validated
|
||||
@Component
|
||||
public class CountryMutation implements GraphQLMutationResolver {
|
||||
private final CountryService countryService ;
|
||||
private final CountryMapper countryMapper;
|
||||
|
||||
@Autowired
|
||||
public CountryMutation(CountryService countryService, CountryMapper countryMapper) {
|
||||
this.countryService = countryService;
|
||||
this.countryMapper = countryMapper;
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
@@ -0,0 +1,29 @@
|
||||
package com.sgs.graphql.country.mutation.input;
|
||||
|
||||
import com.sgs.lib.dao.mutation.input.BaseCreateInput;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.UUID;
|
||||
|
||||
|
||||
public class CountryCreateInput extends BaseCreateInput {
|
||||
private String name;
|
||||
// private List<UUID> areas;
|
||||
|
||||
|
||||
public String getName() {
|
||||
return name;
|
||||
}
|
||||
|
||||
public void setName(String name) {
|
||||
this.name = name;
|
||||
}
|
||||
|
||||
// public List<UUID> getAreas() {
|
||||
// return areas;
|
||||
// }
|
||||
//
|
||||
// public void setAreas(List<UUID> areas) {
|
||||
// this.areas = areas;
|
||||
// }
|
||||
}
|
||||
@@ -0,0 +1,29 @@
|
||||
package com.sgs.graphql.country.mutation.mapper;
|
||||
import com.sgs.graphql.area.service.AreaService;
|
||||
import com.sgs.graphql.country.domain.Country;
|
||||
import com.sgs.graphql.country.mutation.input.CountryCreateInput;
|
||||
import com.sgs.lib.dao.mutation.mapper.BaseCreateMapper;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
|
||||
@Component
|
||||
public class CountryMapper extends BaseCreateMapper<Country, CountryCreateInput> {
|
||||
|
||||
private final AreaService areaService;
|
||||
|
||||
public CountryMapper(AreaService areaService) {
|
||||
this.areaService =areaService;
|
||||
}
|
||||
@Override
|
||||
public Country toEntity(CountryCreateInput input) {
|
||||
Country entity = new Country();
|
||||
entity.setName(input.getName());
|
||||
|
||||
// Area areas = areaService.findById(input.getAreas().get(0)).orElse(null);
|
||||
// entity.setAreas(input.getAreas());
|
||||
|
||||
return entity;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -0,0 +1,51 @@
|
||||
package com.sgs.graphql.country.query;
|
||||
|
||||
import com.sgs.graphql.country.query.pagination.CountryPageable;
|
||||
import com.sgs.graphql.country.service.CountryService;
|
||||
import com.sgs.graphql.country.domain.Country;
|
||||
import com.sgs.graphql.country.repo.criteria.CountryCriteria;
|
||||
import com.sgs.graphql.permission.domain.PermissionName;
|
||||
import com.sgs.lib.dao.query.pagination.Pagination;
|
||||
import com.sgs.lib.dao.query.sort.SortBy;
|
||||
import graphql.kickstart.tools.GraphQLQueryResolver;
|
||||
import org.apache.commons.lang3.ObjectUtils;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.data.domain.Sort;
|
||||
import org.springframework.security.access.prepost.PreAuthorize;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.UUID;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
@Component
|
||||
public class CountryQueryResolver implements GraphQLQueryResolver {
|
||||
|
||||
private final CountryService countryService;
|
||||
|
||||
@Autowired
|
||||
public CountryQueryResolver( CountryService countryService) {
|
||||
this.countryService = countryService;
|
||||
}
|
||||
|
||||
public Country country(UUID id){
|
||||
return countryService.findById(id).orElse(null);
|
||||
}
|
||||
|
||||
@PreAuthorize("hasAuthority('"+ PermissionName.PAGINATE_COUNTRIES_GET +"')")
|
||||
public List<Country> countries(CountryCriteria criteria, List<SortBy> sortBy){
|
||||
return countryService.filterWithSort(ObjectUtils.defaultIfNull(criteria,new CountryCriteria()),
|
||||
Sort.by(ObjectUtils.defaultIfNull(sortBy,new ArrayList<SortBy>())
|
||||
.stream()
|
||||
.map(SortBy::toOrder)
|
||||
.collect(Collectors.toList())));
|
||||
}
|
||||
@PreAuthorize("hasAuthority('"+ PermissionName.PAGINATE_COUNTRIES_GET +"')")
|
||||
public CountryPageable paginateCountries(Pagination pagination, CountryCriteria criteria, List<SortBy> sortBy){
|
||||
return new CountryPageable(countryService.filterWithPaginate(ObjectUtils.defaultIfNull(criteria,new CountryCriteria()),
|
||||
Pagination.toPageRequest(pagination,sortBy)));
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,11 @@
|
||||
package com.sgs.graphql.country.query.pagination;
|
||||
|
||||
import com.sgs.graphql.country.domain.Country;
|
||||
import com.sgs.lib.dao.query.pagination.PaginationResult;
|
||||
import org.springframework.data.domain.Page;
|
||||
|
||||
public class CountryPageable extends PaginationResult<Country> {
|
||||
public CountryPageable(Page<Country> page) {
|
||||
super(page);
|
||||
}
|
||||
}
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user