Commit 6b522d72319849e6ba144f77ed18ce044551d0d3

Authored by Herik dos Santos Lorenção
1 parent 40b2761e
Exists in master

Adicionando estrutura inicial no backend

Showing 67 changed files with 2610 additions and 35 deletions   Show diff stats
codigos/backend/.gitignore
1   -# Created by https://www.gitignore.io/api/java,netbeans
2   -# Edit at https://www.gitignore.io/?templates=java,netbeans
3   -
4   -### Java ###
5   -# Compiled class file
6   -*.class
7   -
8   -# Log file
9   -*.log
10   -
11   -# BlueJ files
12   -*.ctxt
13   -
14   -# Mobile Tools for Java (J2ME)
15   -.mtj.tmp/
16   -
17   -# Package Files #
18   -*.jar
19   -*.war
20   -*.nar
21   -*.ear
22   -*.zip
23   -*.tar.gz
24   -*.rar
25   -
26   -# virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml
27   -hs_err_pid*
  1 +HELP.md
  2 +target/
  3 +!.mvn/wrapper/maven-wrapper.jar
  4 +!**/src/main/**
  5 +!**/src/test/**
  6 +
  7 +### STS ###
  8 +.apt_generated
  9 +.classpath
  10 +.factorypath
  11 +.project
  12 +.settings
  13 +.springBeans
  14 +.sts4-cache
  15 +
  16 +### IntelliJ IDEA ###
  17 +.idea
  18 +*.iws
  19 +*.iml
  20 +*.ipr
28 21  
29 22 ### NetBeans ###
30   -**/nbproject/private/
31   -**/nbproject/Makefile-*.mk
32   -**/nbproject/Package-*.bash
  23 +/nbproject/private/
  24 +/nbbuild/
  25 +/dist/
  26 +/nbdist/
  27 +/.nb-gradle/
33 28 build/
34   -nbbuild/
35   -dist/
36   -nbdist/
37   -.nb-gradle/
38 29  
39   -# End of https://www.gitignore.io/api/java,netbeans
  30 +### VS Code ###
  31 +.vscode/
... ...
codigos/backend/.mvn/wrapper/MavenWrapperDownloader.java 0 → 100644
... ... @@ -0,0 +1,117 @@
  1 +/*
  2 + * Copyright 2007-present the original author or authors.
  3 + *
  4 + * Licensed under the Apache License, Version 2.0 (the "License");
  5 + * you may not use this file except in compliance with the License.
  6 + * You may obtain a copy of the License at
  7 + *
  8 + * https://www.apache.org/licenses/LICENSE-2.0
  9 + *
  10 + * Unless required by applicable law or agreed to in writing, software
  11 + * distributed under the License is distributed on an "AS IS" BASIS,
  12 + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  13 + * See the License for the specific language governing permissions and
  14 + * limitations under the License.
  15 + */
  16 +import java.net.*;
  17 +import java.io.*;
  18 +import java.nio.channels.*;
  19 +import java.util.Properties;
  20 +
  21 +public class MavenWrapperDownloader {
  22 +
  23 + private static final String WRAPPER_VERSION = "0.5.6";
  24 + /**
  25 + * Default URL to download the maven-wrapper.jar from, if no 'downloadUrl' is provided.
  26 + */
  27 + private static final String DEFAULT_DOWNLOAD_URL = "https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/"
  28 + + WRAPPER_VERSION + "/maven-wrapper-" + WRAPPER_VERSION + ".jar";
  29 +
  30 + /**
  31 + * Path to the maven-wrapper.properties file, which might contain a downloadUrl property to
  32 + * use instead of the default one.
  33 + */
  34 + private static final String MAVEN_WRAPPER_PROPERTIES_PATH =
  35 + ".mvn/wrapper/maven-wrapper.properties";
  36 +
  37 + /**
  38 + * Path where the maven-wrapper.jar will be saved to.
  39 + */
  40 + private static final String MAVEN_WRAPPER_JAR_PATH =
  41 + ".mvn/wrapper/maven-wrapper.jar";
  42 +
  43 + /**
  44 + * Name of the property which should be used to override the default download url for the wrapper.
  45 + */
  46 + private static final String PROPERTY_NAME_WRAPPER_URL = "wrapperUrl";
  47 +
  48 + public static void main(String args[]) {
  49 + System.out.println("- Downloader started");
  50 + File baseDirectory = new File(args[0]);
  51 + System.out.println("- Using base directory: " + baseDirectory.getAbsolutePath());
  52 +
  53 + // If the maven-wrapper.properties exists, read it and check if it contains a custom
  54 + // wrapperUrl parameter.
  55 + File mavenWrapperPropertyFile = new File(baseDirectory, MAVEN_WRAPPER_PROPERTIES_PATH);
  56 + String url = DEFAULT_DOWNLOAD_URL;
  57 + if(mavenWrapperPropertyFile.exists()) {
  58 + FileInputStream mavenWrapperPropertyFileInputStream = null;
  59 + try {
  60 + mavenWrapperPropertyFileInputStream = new FileInputStream(mavenWrapperPropertyFile);
  61 + Properties mavenWrapperProperties = new Properties();
  62 + mavenWrapperProperties.load(mavenWrapperPropertyFileInputStream);
  63 + url = mavenWrapperProperties.getProperty(PROPERTY_NAME_WRAPPER_URL, url);
  64 + } catch (IOException e) {
  65 + System.out.println("- ERROR loading '" + MAVEN_WRAPPER_PROPERTIES_PATH + "'");
  66 + } finally {
  67 + try {
  68 + if(mavenWrapperPropertyFileInputStream != null) {
  69 + mavenWrapperPropertyFileInputStream.close();
  70 + }
  71 + } catch (IOException e) {
  72 + // Ignore ...
  73 + }
  74 + }
  75 + }
  76 + System.out.println("- Downloading from: " + url);
  77 +
  78 + File outputFile = new File(baseDirectory.getAbsolutePath(), MAVEN_WRAPPER_JAR_PATH);
  79 + if(!outputFile.getParentFile().exists()) {
  80 + if(!outputFile.getParentFile().mkdirs()) {
  81 + System.out.println(
  82 + "- ERROR creating output directory '" + outputFile.getParentFile().getAbsolutePath() + "'");
  83 + }
  84 + }
  85 + System.out.println("- Downloading to: " + outputFile.getAbsolutePath());
  86 + try {
  87 + downloadFileFromURL(url, outputFile);
  88 + System.out.println("Done");
  89 + System.exit(0);
  90 + } catch (Throwable e) {
  91 + System.out.println("- Error downloading");
  92 + e.printStackTrace();
  93 + System.exit(1);
  94 + }
  95 + }
  96 +
  97 + private static void downloadFileFromURL(String urlString, File destination) throws Exception {
  98 + if (System.getenv("MVNW_USERNAME") != null && System.getenv("MVNW_PASSWORD") != null) {
  99 + String username = System.getenv("MVNW_USERNAME");
  100 + char[] password = System.getenv("MVNW_PASSWORD").toCharArray();
  101 + Authenticator.setDefault(new Authenticator() {
  102 + @Override
  103 + protected PasswordAuthentication getPasswordAuthentication() {
  104 + return new PasswordAuthentication(username, password);
  105 + }
  106 + });
  107 + }
  108 + URL website = new URL(urlString);
  109 + ReadableByteChannel rbc;
  110 + rbc = Channels.newChannel(website.openStream());
  111 + FileOutputStream fos = new FileOutputStream(destination);
  112 + fos.getChannel().transferFrom(rbc, 0, Long.MAX_VALUE);
  113 + fos.close();
  114 + rbc.close();
  115 + }
  116 +
  117 +}
... ...
codigos/backend/.mvn/wrapper/maven-wrapper.jar 0 → 100644
No preview for this file type
codigos/backend/.mvn/wrapper/maven-wrapper.properties 0 → 100644
... ... @@ -0,0 +1,2 @@
  1 +distributionUrl=https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/3.6.3/apache-maven-3.6.3-bin.zip
  2 +wrapperUrl=https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/0.5.6/maven-wrapper-0.5.6.jar
... ...
codigos/backend/mvnw 0 → 100755
... ... @@ -0,0 +1,310 @@
  1 +#!/bin/sh
  2 +# ----------------------------------------------------------------------------
  3 +# Licensed to the Apache Software Foundation (ASF) under one
  4 +# or more contributor license agreements. See the NOTICE file
  5 +# distributed with this work for additional information
  6 +# regarding copyright ownership. The ASF licenses this file
  7 +# to you under the Apache License, Version 2.0 (the
  8 +# "License"); you may not use this file except in compliance
  9 +# with the License. You may obtain a copy of the License at
  10 +#
  11 +# https://www.apache.org/licenses/LICENSE-2.0
  12 +#
  13 +# Unless required by applicable law or agreed to in writing,
  14 +# software distributed under the License is distributed on an
  15 +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
  16 +# KIND, either express or implied. See the License for the
  17 +# specific language governing permissions and limitations
  18 +# under the License.
  19 +# ----------------------------------------------------------------------------
  20 +
  21 +# ----------------------------------------------------------------------------
  22 +# Maven Start Up Batch script
  23 +#
  24 +# Required ENV vars:
  25 +# ------------------
  26 +# JAVA_HOME - location of a JDK home dir
  27 +#
  28 +# Optional ENV vars
  29 +# -----------------
  30 +# M2_HOME - location of maven2's installed home dir
  31 +# MAVEN_OPTS - parameters passed to the Java VM when running Maven
  32 +# e.g. to debug Maven itself, use
  33 +# set MAVEN_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000
  34 +# MAVEN_SKIP_RC - flag to disable loading of mavenrc files
  35 +# ----------------------------------------------------------------------------
  36 +
  37 +if [ -z "$MAVEN_SKIP_RC" ] ; then
  38 +
  39 + if [ -f /etc/mavenrc ] ; then
  40 + . /etc/mavenrc
  41 + fi
  42 +
  43 + if [ -f "$HOME/.mavenrc" ] ; then
  44 + . "$HOME/.mavenrc"
  45 + fi
  46 +
  47 +fi
  48 +
  49 +# OS specific support. $var _must_ be set to either true or false.
  50 +cygwin=false;
  51 +darwin=false;
  52 +mingw=false
  53 +case "`uname`" in
  54 + CYGWIN*) cygwin=true ;;
  55 + MINGW*) mingw=true;;
  56 + Darwin*) darwin=true
  57 + # Use /usr/libexec/java_home if available, otherwise fall back to /Library/Java/Home
  58 + # See https://developer.apple.com/library/mac/qa/qa1170/_index.html
  59 + if [ -z "$JAVA_HOME" ]; then
  60 + if [ -x "/usr/libexec/java_home" ]; then
  61 + export JAVA_HOME="`/usr/libexec/java_home`"
  62 + else
  63 + export JAVA_HOME="/Library/Java/Home"
  64 + fi
  65 + fi
  66 + ;;
  67 +esac
  68 +
  69 +if [ -z "$JAVA_HOME" ] ; then
  70 + if [ -r /etc/gentoo-release ] ; then
  71 + JAVA_HOME=`java-config --jre-home`
  72 + fi
  73 +fi
  74 +
  75 +if [ -z "$M2_HOME" ] ; then
  76 + ## resolve links - $0 may be a link to maven's home
  77 + PRG="$0"
  78 +
  79 + # need this for relative symlinks
  80 + while [ -h "$PRG" ] ; do
  81 + ls=`ls -ld "$PRG"`
  82 + link=`expr "$ls" : '.*-> \(.*\)$'`
  83 + if expr "$link" : '/.*' > /dev/null; then
  84 + PRG="$link"
  85 + else
  86 + PRG="`dirname "$PRG"`/$link"
  87 + fi
  88 + done
  89 +
  90 + saveddir=`pwd`
  91 +
  92 + M2_HOME=`dirname "$PRG"`/..
  93 +
  94 + # make it fully qualified
  95 + M2_HOME=`cd "$M2_HOME" && pwd`
  96 +
  97 + cd "$saveddir"
  98 + # echo Using m2 at $M2_HOME
  99 +fi
  100 +
  101 +# For Cygwin, ensure paths are in UNIX format before anything is touched
  102 +if $cygwin ; then
  103 + [ -n "$M2_HOME" ] &&
  104 + M2_HOME=`cygpath --unix "$M2_HOME"`
  105 + [ -n "$JAVA_HOME" ] &&
  106 + JAVA_HOME=`cygpath --unix "$JAVA_HOME"`
  107 + [ -n "$CLASSPATH" ] &&
  108 + CLASSPATH=`cygpath --path --unix "$CLASSPATH"`
  109 +fi
  110 +
  111 +# For Mingw, ensure paths are in UNIX format before anything is touched
  112 +if $mingw ; then
  113 + [ -n "$M2_HOME" ] &&
  114 + M2_HOME="`(cd "$M2_HOME"; pwd)`"
  115 + [ -n "$JAVA_HOME" ] &&
  116 + JAVA_HOME="`(cd "$JAVA_HOME"; pwd)`"
  117 +fi
  118 +
  119 +if [ -z "$JAVA_HOME" ]; then
  120 + javaExecutable="`which javac`"
  121 + if [ -n "$javaExecutable" ] && ! [ "`expr \"$javaExecutable\" : '\([^ ]*\)'`" = "no" ]; then
  122 + # readlink(1) is not available as standard on Solaris 10.
  123 + readLink=`which readlink`
  124 + if [ ! `expr "$readLink" : '\([^ ]*\)'` = "no" ]; then
  125 + if $darwin ; then
  126 + javaHome="`dirname \"$javaExecutable\"`"
  127 + javaExecutable="`cd \"$javaHome\" && pwd -P`/javac"
  128 + else
  129 + javaExecutable="`readlink -f \"$javaExecutable\"`"
  130 + fi
  131 + javaHome="`dirname \"$javaExecutable\"`"
  132 + javaHome=`expr "$javaHome" : '\(.*\)/bin'`
  133 + JAVA_HOME="$javaHome"
  134 + export JAVA_HOME
  135 + fi
  136 + fi
  137 +fi
  138 +
  139 +if [ -z "$JAVACMD" ] ; then
  140 + if [ -n "$JAVA_HOME" ] ; then
  141 + if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
  142 + # IBM's JDK on AIX uses strange locations for the executables
  143 + JAVACMD="$JAVA_HOME/jre/sh/java"
  144 + else
  145 + JAVACMD="$JAVA_HOME/bin/java"
  146 + fi
  147 + else
  148 + JAVACMD="`which java`"
  149 + fi
  150 +fi
  151 +
  152 +if [ ! -x "$JAVACMD" ] ; then
  153 + echo "Error: JAVA_HOME is not defined correctly." >&2
  154 + echo " We cannot execute $JAVACMD" >&2
  155 + exit 1
  156 +fi
  157 +
  158 +if [ -z "$JAVA_HOME" ] ; then
  159 + echo "Warning: JAVA_HOME environment variable is not set."
  160 +fi
  161 +
  162 +CLASSWORLDS_LAUNCHER=org.codehaus.plexus.classworlds.launcher.Launcher
  163 +
  164 +# traverses directory structure from process work directory to filesystem root
  165 +# first directory with .mvn subdirectory is considered project base directory
  166 +find_maven_basedir() {
  167 +
  168 + if [ -z "$1" ]
  169 + then
  170 + echo "Path not specified to find_maven_basedir"
  171 + return 1
  172 + fi
  173 +
  174 + basedir="$1"
  175 + wdir="$1"
  176 + while [ "$wdir" != '/' ] ; do
  177 + if [ -d "$wdir"/.mvn ] ; then
  178 + basedir=$wdir
  179 + break
  180 + fi
  181 + # workaround for JBEAP-8937 (on Solaris 10/Sparc)
  182 + if [ -d "${wdir}" ]; then
  183 + wdir=`cd "$wdir/.."; pwd`
  184 + fi
  185 + # end of workaround
  186 + done
  187 + echo "${basedir}"
  188 +}
  189 +
  190 +# concatenates all lines of a file
  191 +concat_lines() {
  192 + if [ -f "$1" ]; then
  193 + echo "$(tr -s '\n' ' ' < "$1")"
  194 + fi
  195 +}
  196 +
  197 +BASE_DIR=`find_maven_basedir "$(pwd)"`
  198 +if [ -z "$BASE_DIR" ]; then
  199 + exit 1;
  200 +fi
  201 +
  202 +##########################################################################################
  203 +# Extension to allow automatically downloading the maven-wrapper.jar from Maven-central
  204 +# This allows using the maven wrapper in projects that prohibit checking in binary data.
  205 +##########################################################################################
  206 +if [ -r "$BASE_DIR/.mvn/wrapper/maven-wrapper.jar" ]; then
  207 + if [ "$MVNW_VERBOSE" = true ]; then
  208 + echo "Found .mvn/wrapper/maven-wrapper.jar"
  209 + fi
  210 +else
  211 + if [ "$MVNW_VERBOSE" = true ]; then
  212 + echo "Couldn't find .mvn/wrapper/maven-wrapper.jar, downloading it ..."
  213 + fi
  214 + if [ -n "$MVNW_REPOURL" ]; then
  215 + jarUrl="$MVNW_REPOURL/io/takari/maven-wrapper/0.5.6/maven-wrapper-0.5.6.jar"
  216 + else
  217 + jarUrl="https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/0.5.6/maven-wrapper-0.5.6.jar"
  218 + fi
  219 + while IFS="=" read key value; do
  220 + case "$key" in (wrapperUrl) jarUrl="$value"; break ;;
  221 + esac
  222 + done < "$BASE_DIR/.mvn/wrapper/maven-wrapper.properties"
  223 + if [ "$MVNW_VERBOSE" = true ]; then
  224 + echo "Downloading from: $jarUrl"
  225 + fi
  226 + wrapperJarPath="$BASE_DIR/.mvn/wrapper/maven-wrapper.jar"
  227 + if $cygwin; then
  228 + wrapperJarPath=`cygpath --path --windows "$wrapperJarPath"`
  229 + fi
  230 +
  231 + if command -v wget > /dev/null; then
  232 + if [ "$MVNW_VERBOSE" = true ]; then
  233 + echo "Found wget ... using wget"
  234 + fi
  235 + if [ -z "$MVNW_USERNAME" ] || [ -z "$MVNW_PASSWORD" ]; then
  236 + wget "$jarUrl" -O "$wrapperJarPath"
  237 + else
  238 + wget --http-user=$MVNW_USERNAME --http-password=$MVNW_PASSWORD "$jarUrl" -O "$wrapperJarPath"
  239 + fi
  240 + elif command -v curl > /dev/null; then
  241 + if [ "$MVNW_VERBOSE" = true ]; then
  242 + echo "Found curl ... using curl"
  243 + fi
  244 + if [ -z "$MVNW_USERNAME" ] || [ -z "$MVNW_PASSWORD" ]; then
  245 + curl -o "$wrapperJarPath" "$jarUrl" -f
  246 + else
  247 + curl --user $MVNW_USERNAME:$MVNW_PASSWORD -o "$wrapperJarPath" "$jarUrl" -f
  248 + fi
  249 +
  250 + else
  251 + if [ "$MVNW_VERBOSE" = true ]; then
  252 + echo "Falling back to using Java to download"
  253 + fi
  254 + javaClass="$BASE_DIR/.mvn/wrapper/MavenWrapperDownloader.java"
  255 + # For Cygwin, switch paths to Windows format before running javac
  256 + if $cygwin; then
  257 + javaClass=`cygpath --path --windows "$javaClass"`
  258 + fi
  259 + if [ -e "$javaClass" ]; then
  260 + if [ ! -e "$BASE_DIR/.mvn/wrapper/MavenWrapperDownloader.class" ]; then
  261 + if [ "$MVNW_VERBOSE" = true ]; then
  262 + echo " - Compiling MavenWrapperDownloader.java ..."
  263 + fi
  264 + # Compiling the Java class
  265 + ("$JAVA_HOME/bin/javac" "$javaClass")
  266 + fi
  267 + if [ -e "$BASE_DIR/.mvn/wrapper/MavenWrapperDownloader.class" ]; then
  268 + # Running the downloader
  269 + if [ "$MVNW_VERBOSE" = true ]; then
  270 + echo " - Running MavenWrapperDownloader.java ..."
  271 + fi
  272 + ("$JAVA_HOME/bin/java" -cp .mvn/wrapper MavenWrapperDownloader "$MAVEN_PROJECTBASEDIR")
  273 + fi
  274 + fi
  275 + fi
  276 +fi
  277 +##########################################################################################
  278 +# End of extension
  279 +##########################################################################################
  280 +
  281 +export MAVEN_PROJECTBASEDIR=${MAVEN_BASEDIR:-"$BASE_DIR"}
  282 +if [ "$MVNW_VERBOSE" = true ]; then
  283 + echo $MAVEN_PROJECTBASEDIR
  284 +fi
  285 +MAVEN_OPTS="$(concat_lines "$MAVEN_PROJECTBASEDIR/.mvn/jvm.config") $MAVEN_OPTS"
  286 +
  287 +# For Cygwin, switch paths to Windows format before running java
  288 +if $cygwin; then
  289 + [ -n "$M2_HOME" ] &&
  290 + M2_HOME=`cygpath --path --windows "$M2_HOME"`
  291 + [ -n "$JAVA_HOME" ] &&
  292 + JAVA_HOME=`cygpath --path --windows "$JAVA_HOME"`
  293 + [ -n "$CLASSPATH" ] &&
  294 + CLASSPATH=`cygpath --path --windows "$CLASSPATH"`
  295 + [ -n "$MAVEN_PROJECTBASEDIR" ] &&
  296 + MAVEN_PROJECTBASEDIR=`cygpath --path --windows "$MAVEN_PROJECTBASEDIR"`
  297 +fi
  298 +
  299 +# Provide a "standardized" way to retrieve the CLI args that will
  300 +# work with both Windows and non-Windows executions.
  301 +MAVEN_CMD_LINE_ARGS="$MAVEN_CONFIG $@"
  302 +export MAVEN_CMD_LINE_ARGS
  303 +
  304 +WRAPPER_LAUNCHER=org.apache.maven.wrapper.MavenWrapperMain
  305 +
  306 +exec "$JAVACMD" \
  307 + $MAVEN_OPTS \
  308 + -classpath "$MAVEN_PROJECTBASEDIR/.mvn/wrapper/maven-wrapper.jar" \
  309 + "-Dmaven.home=${M2_HOME}" "-Dmaven.multiModuleProjectDirectory=${MAVEN_PROJECTBASEDIR}" \
  310 + ${WRAPPER_LAUNCHER} $MAVEN_CONFIG "$@"
... ...
codigos/backend/mvnw.cmd 0 → 100644
... ... @@ -0,0 +1,182 @@
  1 +@REM ----------------------------------------------------------------------------
  2 +@REM Licensed to the Apache Software Foundation (ASF) under one
  3 +@REM or more contributor license agreements. See the NOTICE file
  4 +@REM distributed with this work for additional information
  5 +@REM regarding copyright ownership. The ASF licenses this file
  6 +@REM to you under the Apache License, Version 2.0 (the
  7 +@REM "License"); you may not use this file except in compliance
  8 +@REM with the License. You may obtain a copy of the License at
  9 +@REM
  10 +@REM https://www.apache.org/licenses/LICENSE-2.0
  11 +@REM
  12 +@REM Unless required by applicable law or agreed to in writing,
  13 +@REM software distributed under the License is distributed on an
  14 +@REM "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
  15 +@REM KIND, either express or implied. See the License for the
  16 +@REM specific language governing permissions and limitations
  17 +@REM under the License.
  18 +@REM ----------------------------------------------------------------------------
  19 +
  20 +@REM ----------------------------------------------------------------------------
  21 +@REM Maven Start Up Batch script
  22 +@REM
  23 +@REM Required ENV vars:
  24 +@REM JAVA_HOME - location of a JDK home dir
  25 +@REM
  26 +@REM Optional ENV vars
  27 +@REM M2_HOME - location of maven2's installed home dir
  28 +@REM MAVEN_BATCH_ECHO - set to 'on' to enable the echoing of the batch commands
  29 +@REM MAVEN_BATCH_PAUSE - set to 'on' to wait for a keystroke before ending
  30 +@REM MAVEN_OPTS - parameters passed to the Java VM when running Maven
  31 +@REM e.g. to debug Maven itself, use
  32 +@REM set MAVEN_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000
  33 +@REM MAVEN_SKIP_RC - flag to disable loading of mavenrc files
  34 +@REM ----------------------------------------------------------------------------
  35 +
  36 +@REM Begin all REM lines with '@' in case MAVEN_BATCH_ECHO is 'on'
  37 +@echo off
  38 +@REM set title of command window
  39 +title %0
  40 +@REM enable echoing by setting MAVEN_BATCH_ECHO to 'on'
  41 +@if "%MAVEN_BATCH_ECHO%" == "on" echo %MAVEN_BATCH_ECHO%
  42 +
  43 +@REM set %HOME% to equivalent of $HOME
  44 +if "%HOME%" == "" (set "HOME=%HOMEDRIVE%%HOMEPATH%")
  45 +
  46 +@REM Execute a user defined script before this one
  47 +if not "%MAVEN_SKIP_RC%" == "" goto skipRcPre
  48 +@REM check for pre script, once with legacy .bat ending and once with .cmd ending
  49 +if exist "%HOME%\mavenrc_pre.bat" call "%HOME%\mavenrc_pre.bat"
  50 +if exist "%HOME%\mavenrc_pre.cmd" call "%HOME%\mavenrc_pre.cmd"
  51 +:skipRcPre
  52 +
  53 +@setlocal
  54 +
  55 +set ERROR_CODE=0
  56 +
  57 +@REM To isolate internal variables from possible post scripts, we use another setlocal
  58 +@setlocal
  59 +
  60 +@REM ==== START VALIDATION ====
  61 +if not "%JAVA_HOME%" == "" goto OkJHome
  62 +
  63 +echo.
  64 +echo Error: JAVA_HOME not found in your environment. >&2
  65 +echo Please set the JAVA_HOME variable in your environment to match the >&2
  66 +echo location of your Java installation. >&2
  67 +echo.
  68 +goto error
  69 +
  70 +:OkJHome
  71 +if exist "%JAVA_HOME%\bin\java.exe" goto init
  72 +
  73 +echo.
  74 +echo Error: JAVA_HOME is set to an invalid directory. >&2
  75 +echo JAVA_HOME = "%JAVA_HOME%" >&2
  76 +echo Please set the JAVA_HOME variable in your environment to match the >&2
  77 +echo location of your Java installation. >&2
  78 +echo.
  79 +goto error
  80 +
  81 +@REM ==== END VALIDATION ====
  82 +
  83 +:init
  84 +
  85 +@REM Find the project base dir, i.e. the directory that contains the folder ".mvn".
  86 +@REM Fallback to current working directory if not found.
  87 +
  88 +set MAVEN_PROJECTBASEDIR=%MAVEN_BASEDIR%
  89 +IF NOT "%MAVEN_PROJECTBASEDIR%"=="" goto endDetectBaseDir
  90 +
  91 +set EXEC_DIR=%CD%
  92 +set WDIR=%EXEC_DIR%
  93 +:findBaseDir
  94 +IF EXIST "%WDIR%"\.mvn goto baseDirFound
  95 +cd ..
  96 +IF "%WDIR%"=="%CD%" goto baseDirNotFound
  97 +set WDIR=%CD%
  98 +goto findBaseDir
  99 +
  100 +:baseDirFound
  101 +set MAVEN_PROJECTBASEDIR=%WDIR%
  102 +cd "%EXEC_DIR%"
  103 +goto endDetectBaseDir
  104 +
  105 +:baseDirNotFound
  106 +set MAVEN_PROJECTBASEDIR=%EXEC_DIR%
  107 +cd "%EXEC_DIR%"
  108 +
  109 +:endDetectBaseDir
  110 +
  111 +IF NOT EXIST "%MAVEN_PROJECTBASEDIR%\.mvn\jvm.config" goto endReadAdditionalConfig
  112 +
  113 +@setlocal EnableExtensions EnableDelayedExpansion
  114 +for /F "usebackq delims=" %%a in ("%MAVEN_PROJECTBASEDIR%\.mvn\jvm.config") do set JVM_CONFIG_MAVEN_PROPS=!JVM_CONFIG_MAVEN_PROPS! %%a
  115 +@endlocal & set JVM_CONFIG_MAVEN_PROPS=%JVM_CONFIG_MAVEN_PROPS%
  116 +
  117 +:endReadAdditionalConfig
  118 +
  119 +SET MAVEN_JAVA_EXE="%JAVA_HOME%\bin\java.exe"
  120 +set WRAPPER_JAR="%MAVEN_PROJECTBASEDIR%\.mvn\wrapper\maven-wrapper.jar"
  121 +set WRAPPER_LAUNCHER=org.apache.maven.wrapper.MavenWrapperMain
  122 +
  123 +set DOWNLOAD_URL="https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/0.5.6/maven-wrapper-0.5.6.jar"
  124 +
  125 +FOR /F "tokens=1,2 delims==" %%A IN ("%MAVEN_PROJECTBASEDIR%\.mvn\wrapper\maven-wrapper.properties") DO (
  126 + IF "%%A"=="wrapperUrl" SET DOWNLOAD_URL=%%B
  127 +)
  128 +
  129 +@REM Extension to allow automatically downloading the maven-wrapper.jar from Maven-central
  130 +@REM This allows using the maven wrapper in projects that prohibit checking in binary data.
  131 +if exist %WRAPPER_JAR% (
  132 + if "%MVNW_VERBOSE%" == "true" (
  133 + echo Found %WRAPPER_JAR%
  134 + )
  135 +) else (
  136 + if not "%MVNW_REPOURL%" == "" (
  137 + SET DOWNLOAD_URL="%MVNW_REPOURL%/io/takari/maven-wrapper/0.5.6/maven-wrapper-0.5.6.jar"
  138 + )
  139 + if "%MVNW_VERBOSE%" == "true" (
  140 + echo Couldn't find %WRAPPER_JAR%, downloading it ...
  141 + echo Downloading from: %DOWNLOAD_URL%
  142 + )
  143 +
  144 + powershell -Command "&{"^
  145 + "$webclient = new-object System.Net.WebClient;"^
  146 + "if (-not ([string]::IsNullOrEmpty('%MVNW_USERNAME%') -and [string]::IsNullOrEmpty('%MVNW_PASSWORD%'))) {"^
  147 + "$webclient.Credentials = new-object System.Net.NetworkCredential('%MVNW_USERNAME%', '%MVNW_PASSWORD%');"^
  148 + "}"^
  149 + "[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12; $webclient.DownloadFile('%DOWNLOAD_URL%', '%WRAPPER_JAR%')"^
  150 + "}"
  151 + if "%MVNW_VERBOSE%" == "true" (
  152 + echo Finished downloading %WRAPPER_JAR%
  153 + )
  154 +)
  155 +@REM End of extension
  156 +
  157 +@REM Provide a "standardized" way to retrieve the CLI args that will
  158 +@REM work with both Windows and non-Windows executions.
  159 +set MAVEN_CMD_LINE_ARGS=%*
  160 +
  161 +%MAVEN_JAVA_EXE% %JVM_CONFIG_MAVEN_PROPS% %MAVEN_OPTS% %MAVEN_DEBUG_OPTS% -classpath %WRAPPER_JAR% "-Dmaven.multiModuleProjectDirectory=%MAVEN_PROJECTBASEDIR%" %WRAPPER_LAUNCHER% %MAVEN_CONFIG% %*
  162 +if ERRORLEVEL 1 goto error
  163 +goto end
  164 +
  165 +:error
  166 +set ERROR_CODE=1
  167 +
  168 +:end
  169 +@endlocal & set ERROR_CODE=%ERROR_CODE%
  170 +
  171 +if not "%MAVEN_SKIP_RC%" == "" goto skipRcPost
  172 +@REM check for post script, once with legacy .bat ending and once with .cmd ending
  173 +if exist "%HOME%\mavenrc_post.bat" call "%HOME%\mavenrc_post.bat"
  174 +if exist "%HOME%\mavenrc_post.cmd" call "%HOME%\mavenrc_post.cmd"
  175 +:skipRcPost
  176 +
  177 +@REM pause the script if MAVEN_BATCH_PAUSE is set to 'on'
  178 +if "%MAVEN_BATCH_PAUSE%" == "on" pause
  179 +
  180 +if "%MAVEN_TERMINATE_CMD%" == "on" exit %ERROR_CODE%
  181 +
  182 +exit /B %ERROR_CODE%
... ...
codigos/backend/pom.xml 0 → 100644
... ... @@ -0,0 +1,79 @@
  1 +<?xml version="1.0" encoding="UTF-8"?>
  2 +<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  3 + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
  4 + <modelVersion>4.0.0</modelVersion>
  5 + <parent>
  6 + <groupId>org.springframework.boot</groupId>
  7 + <artifactId>spring-boot-starter-parent</artifactId>
  8 + <version>2.3.1.RELEASE</version>
  9 + <relativePath/> <!-- lookup parent from repository -->
  10 + </parent>
  11 + <groupId>edu.ifes.ci.si.les.srh</groupId>
  12 + <artifactId>srh</artifactId>
  13 + <version>0.0.1-SNAPSHOT</version>
  14 + <name>srh</name>
  15 + <description>A Hybrid Recommendation System build with RESTful API</description>
  16 +
  17 + <properties>
  18 + <java.version>14</java.version>
  19 + </properties>
  20 +
  21 + <dependencies>
  22 + <dependency>
  23 + <groupId>org.springframework.boot</groupId>
  24 + <artifactId>spring-boot-starter-web</artifactId>
  25 + </dependency>
  26 +
  27 + <dependency>
  28 + <groupId>org.springframework.boot</groupId>
  29 + <artifactId>spring-boot-starter-data-jpa</artifactId>
  30 + </dependency>
  31 +
  32 + <dependency>
  33 + <groupId>org.springframework.boot</groupId>
  34 + <artifactId>spring-boot-devtools</artifactId>
  35 + <scope>runtime</scope>
  36 + <optional>true</optional>
  37 + </dependency>
  38 + <dependency>
  39 + <groupId>javax.validation</groupId>
  40 + <artifactId>validation-api</artifactId>
  41 + </dependency>
  42 + <dependency>
  43 + <groupId>com.h2database</groupId>
  44 + <artifactId>h2</artifactId>
  45 + <scope>runtime</scope>
  46 + </dependency>
  47 + <dependency>
  48 + <groupId>org.projectlombok</groupId>
  49 + <artifactId>lombok</artifactId>
  50 + <optional>true</optional>
  51 + </dependency>
  52 + <dependency>
  53 + <groupId>org.springframework.boot</groupId>
  54 + <artifactId>spring-boot-starter-test</artifactId>
  55 + <scope>test</scope>
  56 + <exclusions>
  57 + <exclusion>
  58 + <groupId>org.junit.vintage</groupId>
  59 + <artifactId>junit-vintage-engine</artifactId>
  60 + </exclusion>
  61 + </exclusions>
  62 + </dependency>
  63 + <dependency>
  64 + <groupId>org.hibernate.validator</groupId>
  65 + <artifactId>hibernate-validator</artifactId>
  66 + <version>6.0.18.Final</version>
  67 + </dependency>
  68 + </dependencies>
  69 +
  70 + <build>
  71 + <plugins>
  72 + <plugin>
  73 + <groupId>org.springframework.boot</groupId>
  74 + <artifactId>spring-boot-maven-plugin</artifactId>
  75 + </plugin>
  76 + </plugins>
  77 + </build>
  78 +
  79 +</project>
... ...
codigos/backend/src/main/java/edu/ifes/ci/si/les/srh/srh/SrhApplication.java 0 → 100644
... ... @@ -0,0 +1,13 @@
  1 +package edu.ifes.ci.si.les.srh.srh;
  2 +
  3 +import org.springframework.boot.SpringApplication;
  4 +import org.springframework.boot.autoconfigure.SpringBootApplication;
  5 +
  6 +@SpringBootApplication
  7 +public class SrhApplication {
  8 +
  9 + public static void main(String[] args) {
  10 + SpringApplication.run(SrhApplication.class, args);
  11 + }
  12 +
  13 +}
... ...
codigos/backend/src/main/java/edu/ifes/ci/si/les/srh/srh/builder/AdminBuilder.java 0 → 100644
... ... @@ -0,0 +1,63 @@
  1 +package edu.ifes.ci.si.les.srh.srh.builder;
  2 +
  3 +import edu.ifes.ci.si.les.srh.srh.model.Admin;
  4 +import edu.ifes.ci.si.les.srh.srh.model.Project;
  5 +
  6 +import java.util.List;
  7 +
  8 +public final class AdminBuilder {
  9 + protected String login;
  10 + protected String password;
  11 + private List<Project> projects;
  12 + private Integer id;
  13 + private String name;
  14 + private String email;
  15 +
  16 + private AdminBuilder() {
  17 + }
  18 +
  19 + public static AdminBuilder anAdmin() {
  20 + return new AdminBuilder();
  21 + }
  22 +
  23 + public AdminBuilder withProjects(List<Project> projects) {
  24 + this.projects = projects;
  25 + return this;
  26 + }
  27 +
  28 + public AdminBuilder withId(Integer id) {
  29 + this.id = id;
  30 + return this;
  31 + }
  32 +
  33 + public AdminBuilder withLogin(String login) {
  34 + this.login = login;
  35 + return this;
  36 + }
  37 +
  38 + public AdminBuilder withName(String name) {
  39 + this.name = name;
  40 + return this;
  41 + }
  42 +
  43 + public AdminBuilder withEmail(String email) {
  44 + this.email = email;
  45 + return this;
  46 + }
  47 +
  48 + public AdminBuilder withPassword(String password) {
  49 + this.password = password;
  50 + return this;
  51 + }
  52 +
  53 + public Admin build() {
  54 + Admin admin = new Admin();
  55 + admin.setProjects(projects);
  56 + admin.setId(id);
  57 + admin.setLogin(login);
  58 + admin.setName(name);
  59 + admin.setEmail(email);
  60 + admin.setPassword(password);
  61 + return admin;
  62 + }
  63 +}
... ...
codigos/backend/src/main/java/edu/ifes/ci/si/les/srh/srh/builder/ApiUserBuilder.java 0 → 100644
... ... @@ -0,0 +1,63 @@
  1 +package edu.ifes.ci.si.les.srh.srh.builder;
  2 +
  3 +import edu.ifes.ci.si.les.srh.srh.model.ApiUser;
  4 +import edu.ifes.ci.si.les.srh.srh.model.Profile;
  5 +
  6 +import java.util.List;
  7 +
  8 +public final class ApiUserBuilder {
  9 + protected String login;
  10 + protected String password;
  11 + private List<Profile> profiles;
  12 + private Integer id;
  13 + private String name;
  14 + private String email;
  15 +
  16 + private ApiUserBuilder() {
  17 + }
  18 +
  19 + public static ApiUserBuilder anApiUser() {
  20 + return new ApiUserBuilder();
  21 + }
  22 +
  23 + public ApiUserBuilder withProfiles(List<Profile> profiles) {
  24 + this.profiles = profiles;
  25 + return this;
  26 + }
  27 +
  28 + public ApiUserBuilder withId(Integer id) {
  29 + this.id = id;
  30 + return this;
  31 + }
  32 +
  33 + public ApiUserBuilder withLogin(String login) {
  34 + this.login = login;
  35 + return this;
  36 + }
  37 +
  38 + public ApiUserBuilder withName(String name) {
  39 + this.name = name;
  40 + return this;
  41 + }
  42 +
  43 + public ApiUserBuilder withEmail(String email) {
  44 + this.email = email;
  45 + return this;
  46 + }
  47 +
  48 + public ApiUserBuilder withPassword(String password) {
  49 + this.password = password;
  50 + return this;
  51 + }
  52 +
  53 + public ApiUser build() {
  54 + ApiUser apiUser = new ApiUser();
  55 + apiUser.setProfiles(profiles);
  56 + apiUser.setId(id);
  57 + apiUser.setLogin(login);
  58 + apiUser.setName(name);
  59 + apiUser.setEmail(email);
  60 + apiUser.setPassword(password);
  61 + return apiUser;
  62 + }
  63 +}
... ...
codigos/backend/src/main/java/edu/ifes/ci/si/les/srh/srh/builder/EvaluatorBuilder.java 0 → 100644
... ... @@ -0,0 +1,79 @@
  1 +package edu.ifes.ci.si.les.srh.srh.builder;
  2 +
  3 +import edu.ifes.ci.si.les.srh.srh.model.Evaluator;
  4 +import edu.ifes.ci.si.les.srh.srh.model.ItemRating;
  5 +import edu.ifes.ci.si.les.srh.srh.model.Project;
  6 +import edu.ifes.ci.si.les.srh.srh.model.RecommendationRating;
  7 +
  8 +import java.util.List;
  9 +
  10 +public final class EvaluatorBuilder {
  11 + protected String login;
  12 + protected String password;
  13 + private List<Project> projects;
  14 + private List<ItemRating> itemRatings;
  15 + private List<RecommendationRating> recommendationRatings;
  16 + private Integer id;
  17 + private String name;
  18 + private String email;
  19 +
  20 + private EvaluatorBuilder() {
  21 + }
  22 +
  23 + public static EvaluatorBuilder anEvaluator() {
  24 + return new EvaluatorBuilder();
  25 + }
  26 +
  27 + public EvaluatorBuilder withProjects(List<Project> projects) {
  28 + this.projects = projects;
  29 + return this;
  30 + }
  31 +
  32 + public EvaluatorBuilder withItemRatings(List<ItemRating> itemRatings) {
  33 + this.itemRatings = itemRatings;
  34 + return this;
  35 + }
  36 +
  37 + public EvaluatorBuilder withRecommendationRatings(List<RecommendationRating> recommendationRatings) {
  38 + this.recommendationRatings = recommendationRatings;
  39 + return this;
  40 + }
  41 +
  42 + public EvaluatorBuilder withId(Integer id) {
  43 + this.id = id;
  44 + return this;
  45 + }
  46 +
  47 + public EvaluatorBuilder withLogin(String login) {
  48 + this.login = login;
  49 + return this;
  50 + }
  51 +
  52 + public EvaluatorBuilder withName(String name) {
  53 + this.name = name;
  54 + return this;
  55 + }
  56 +
  57 + public EvaluatorBuilder withEmail(String email) {
  58 + this.email = email;
  59 + return this;
  60 + }
  61 +
  62 + public EvaluatorBuilder withPassword(String password) {
  63 + this.password = password;
  64 + return this;
  65 + }
  66 +
  67 + public Evaluator build() {
  68 + Evaluator evaluator = new Evaluator();
  69 + evaluator.setProjects(projects);
  70 + evaluator.setItemRatings(itemRatings);
  71 + evaluator.setRecommendationRatings(recommendationRatings);
  72 + evaluator.setId(id);
  73 + evaluator.setLogin(login);
  74 + evaluator.setName(name);
  75 + evaluator.setEmail(email);
  76 + evaluator.setPassword(password);
  77 + return evaluator;
  78 + }
  79 +}
... ...
codigos/backend/src/main/java/edu/ifes/ci/si/les/srh/srh/builder/ItemBuilder.java 0 → 100644
... ... @@ -0,0 +1,84 @@
  1 +package edu.ifes.ci.si.les.srh.srh.builder;
  2 +
  3 +import edu.ifes.ci.si.les.srh.srh.model.*;
  4 +
  5 +import java.util.HashMap;
  6 +import java.util.List;
  7 +
  8 +public final class ItemBuilder {
  9 + private Integer id;
  10 + private String name;
  11 + private String description;
  12 + private HashMap<String, String> attributes;
  13 + private List<ItemRating> itemRatings;
  14 + private List<Recommendation> recommendations;
  15 + private Project project;
  16 + private TypeItem typeItem;
  17 + private List<Tag> tags;
  18 +
  19 + private ItemBuilder() {
  20 + }
  21 +
  22 + public static ItemBuilder anItem() {
  23 + return new ItemBuilder();
  24 + }
  25 +
  26 + public ItemBuilder withId(Integer id) {
  27 + this.id = id;
  28 + return this;
  29 + }
  30 +
  31 + public ItemBuilder withName(String name) {
  32 + this.name = name;
  33 + return this;
  34 + }
  35 +
  36 + public ItemBuilder withDescription(String description) {
  37 + this.description = description;
  38 + return this;
  39 + }
  40 +
  41 + public ItemBuilder withAttributes(HashMap<String, String> attributes) {
  42 + this.attributes = attributes;
  43 + return this;
  44 + }
  45 +
  46 + public ItemBuilder withItemRatings(List<ItemRating> itemRatings) {
  47 + this.itemRatings = itemRatings;
  48 + return this;
  49 + }
  50 +
  51 + public ItemBuilder withRecommendations(List<Recommendation> recommendations) {
  52 + this.recommendations = recommendations;
  53 + return this;
  54 + }
  55 +
  56 + public ItemBuilder withProject(Project project) {
  57 + this.project = project;
  58 + return this;
  59 + }
  60 +
  61 + public ItemBuilder withTypeItem(TypeItem typeItem) {
  62 + this.typeItem = typeItem;
  63 + return this;
  64 + }
  65 +
  66 + public ItemBuilder withTags(List<Tag> tags) {
  67 + this.tags = tags;
  68 + return this;
  69 + }
  70 +
  71 + public Item build() {
  72 + Item item = new Item();
  73 + item.setId(id);
  74 + item.setName(name);
  75 + item.setDescription(description);
  76 + item.setAttributes(attributes);
  77 + item.setItemRatings(itemRatings);
  78 + item.setRecommendations(recommendations);
  79 + item.setProject(project);
  80 + item.setTypeItem(typeItem);
  81 + item.setTags(tags);
  82 + return item;
  83 + }
  84 +}
... ...
codigos/backend/src/main/java/edu/ifes/ci/si/les/srh/srh/builder/ItemRatingBuilder.java 0 → 100644
... ... @@ -0,0 +1,57 @@
  1 +package edu.ifes.ci.si.les.srh.srh.builder;
  2 +
  3 +import edu.ifes.ci.si.les.srh.srh.model.Evaluator;
  4 +import edu.ifes.ci.si.les.srh.srh.model.Item;
  5 +import edu.ifes.ci.si.les.srh.srh.model.ItemRating;
  6 +
  7 +import java.time.LocalDateTime;
  8 +
  9 +public final class ItemRatingBuilder {
  10 + private Evaluator user;
  11 + private Item item;
  12 + private Integer id;
  13 + private Double score;
  14 + private LocalDateTime date;
  15 +
  16 + private ItemRatingBuilder() {
  17 + }
  18 +
  19 + public static ItemRatingBuilder anItemRating() {
  20 + return new ItemRatingBuilder();
  21 + }
  22 +
  23 + public ItemRatingBuilder withUser(Evaluator user) {
  24 + this.user = user;
  25 + return this;
  26 + }
  27 +
  28 + public ItemRatingBuilder withItem(Item item) {
  29 + this.item = item;
  30 + return this;
  31 + }
  32 +
  33 + public ItemRatingBuilder withId(Integer id) {
  34 + this.id = id;
  35 + return this;
  36 + }
  37 +
  38 + public ItemRatingBuilder withScore(Double score) {
  39 + this.score = score;
  40 + return this;
  41 + }
  42 +
  43 + public ItemRatingBuilder withDate(LocalDateTime date) {
  44 + this.date = date;
  45 + return this;
  46 + }
  47 +
  48 + public ItemRating build() {
  49 + ItemRating itemRating = new ItemRating();
  50 + itemRating.setUser(user);
  51 + itemRating.setItem(item);
  52 + itemRating.setId(id);
  53 + itemRating.setScore(score);
  54 + itemRating.setDate(date);
  55 + return itemRating;
  56 + }
  57 +}
... ...
codigos/backend/src/main/java/edu/ifes/ci/si/les/srh/srh/builder/ItemTagBuilder.java 0 → 100644
... ... @@ -0,0 +1,31 @@
  1 +package edu.ifes.ci.si.les.srh.srh.builder;
  2 +
  3 +import edu.ifes.ci.si.les.srh.srh.model.Item;
  4 +import edu.ifes.ci.si.les.srh.srh.model.ItemTag;
  5 +import edu.ifes.ci.si.les.srh.srh.model.Tag;
  6 +
  7 +public final class ItemTagBuilder {
  8 + private Item item;
  9 + private Tag tag;
  10 +
  11 + private ItemTagBuilder() {
  12 + }
  13 +
  14 + public static ItemTagBuilder anItemTag() {
  15 + return new ItemTagBuilder();
  16 + }
  17 +
  18 + public ItemTagBuilder withItem(Item item) {
  19 + this.item = item;
  20 + return this;
  21 + }
  22 +
  23 + public ItemTagBuilder withTag(Tag tag) {
  24 + this.tag = tag;
  25 + return this;
  26 + }
  27 +
  28 + public ItemTag build() {
  29 + return new ItemTag(item, tag);
  30 + }
  31 +}
... ...
codigos/backend/src/main/java/edu/ifes/ci/si/les/srh/srh/builder/ProfileBuilder.java 0 → 100644
... ... @@ -0,0 +1,42 @@
  1 +package edu.ifes.ci.si.les.srh.srh.builder;
  2 +
  3 +import edu.ifes.ci.si.les.srh.srh.model.ApiUser;
  4 +import edu.ifes.ci.si.les.srh.srh.model.Profile;
  5 +
  6 +import java.util.List;
  7 +
  8 +public final class ProfileBuilder {
  9 + private Integer id;
  10 + private String name;
  11 + private List<ApiUser> apiUsers;
  12 +
  13 + private ProfileBuilder() {
  14 + }
  15 +
  16 + public static ProfileBuilder aProfile() {
  17 + return new ProfileBuilder();
  18 + }
  19 +
  20 + public ProfileBuilder withId(Integer id) {
  21 + this.id = id;
  22 + return this;
  23 + }
  24 +
  25 + public ProfileBuilder withName(String name) {
  26 + this.name = name;
  27 + return this;
  28 + }
  29 +
  30 + public ProfileBuilder withApiUsers(List<ApiUser> apiUsers) {
  31 + this.apiUsers = apiUsers;
  32 + return this;
  33 + }
  34 +
  35 + public Profile build() {
  36 + Profile profile = new Profile();
  37 + profile.setId(id);
  38 + profile.setName(name);
  39 + profile.setApiUsers(apiUsers);
  40 + return profile;
  41 + }
  42 +}
... ...
codigos/backend/src/main/java/edu/ifes/ci/si/les/srh/srh/builder/ProjectBuilder.java 0 → 100644
... ... @@ -0,0 +1,84 @@
  1 +package edu.ifes.ci.si.les.srh.srh.builder;
  2 +
  3 +import edu.ifes.ci.si.les.srh.srh.model.*;
  4 +
  5 +import java.time.LocalDate;
  6 +import java.util.List;
  7 +
  8 +public final class ProjectBuilder {
  9 + private Integer id;
  10 + private String name;
  11 + private String description;
  12 + private LocalDate date;
  13 + private Boolean visible;
  14 + private Situations situation;
  15 + private Admin admin;
  16 + private List<Evaluator> evaluators;
  17 + private List<Item> itens;
  18 +
  19 + private ProjectBuilder() {
  20 + }
  21 +
  22 + public static ProjectBuilder aProject() {
  23 + return new ProjectBuilder();
  24 + }
  25 +
  26 + public ProjectBuilder withId(Integer id) {
  27 + this.id = id;
  28 + return this;
  29 + }
  30 +
  31 + public ProjectBuilder withName(String name) {
  32 + this.name = name;
  33 + return this;
  34 + }
  35 +
  36 + public ProjectBuilder withDescription(String description) {
  37 + this.description = description;
  38 + return this;
  39 + }
  40 +
  41 + public ProjectBuilder withDate(LocalDate date) {
  42 + this.date = date;
  43 + return this;
  44 + }
  45 +
  46 + public ProjectBuilder withVisible(Boolean visible) {
  47 + this.visible = visible;
  48 + return this;
  49 + }
  50 +
  51 + public ProjectBuilder withSituation(Situations situation) {
  52 + this.situation = situation;
  53 + return this;
  54 + }
  55 +
  56 + public ProjectBuilder withAdmin(Admin admin) {
  57 + this.admin = admin;
  58 + return this;
  59 + }
  60 +
  61 + public ProjectBuilder withEvaluators(List<Evaluator> evaluators) {
  62 + this.evaluators = evaluators;
  63 + return this;
  64 + }
  65 +
  66 + public ProjectBuilder withItens(List<Item> itens) {
  67 + this.itens = itens;
  68 + return this;
  69 + }
  70 +
  71 + public Project build() {
  72 + Project project = new Project();
  73 + project.setId(id);
  74 + project.setName(name);
  75 + project.setDescription(description);
  76 + project.setDate(date);
  77 + project.setVisible(visible);
  78 + project.setSituation(situation);
  79 + project.setAdmin(admin);
  80 + project.setEvaluators(evaluators);
  81 + project.setItens(itens);
  82 + return project;
  83 + }
  84 +}
... ...
codigos/backend/src/main/java/edu/ifes/ci/si/les/srh/srh/builder/RecommendationBuilder.java 0 → 100644
... ... @@ -0,0 +1,77 @@
  1 +package edu.ifes.ci.si.les.srh.srh.builder;
  2 +
  3 +import edu.ifes.ci.si.les.srh.srh.model.*;
  4 +
  5 +import java.time.LocalDateTime;
  6 +import java.util.List;
  7 +
  8 +public final class RecommendationBuilder {
  9 + private Integer id;
  10 + private Double weight;
  11 + private LocalDateTime date;
  12 + private Integer runtimeInSeconds;
  13 + private TypeRecommendation typeRecommendation;
  14 + private Evaluator evaluator;
  15 + private Item item;
  16 + private List<RecommendationRating> recommendationRatings;
  17 +
  18 + private RecommendationBuilder() {
  19 + }
  20 +
  21 + public static RecommendationBuilder aRecommendation() {
  22 + return new RecommendationBuilder();
  23 + }
  24 +
  25 + public RecommendationBuilder withId(Integer id) {
  26 + this.id = id;
  27 + return this;
  28 + }
  29 +
  30 + public RecommendationBuilder withWeight(Double weight) {
  31 + this.weight = weight;
  32 + return this;
  33 + }
  34 +
  35 + public RecommendationBuilder withDate(LocalDateTime date) {
  36 + this.date = date;
  37 + return this;
  38 + }
  39 +
  40 + public RecommendationBuilder withRuntimeInSeconds(Integer runtimeInSeconds) {
  41 + this.runtimeInSeconds = runtimeInSeconds;
  42 + return this;
  43 + }
  44 +
  45 + public RecommendationBuilder withTypeRecommendation(TypeRecommendation typeRecommendation) {
  46 + this.typeRecommendation = typeRecommendation;
  47 + return this;
  48 + }
  49 +
  50 + public RecommendationBuilder withEvaluator(Evaluator evaluator) {
  51 + this.evaluator = evaluator;
  52 + return this;
  53 + }
  54 +
  55 + public RecommendationBuilder withItem(Item item) {
  56 + this.item = item;
  57 + return this;
  58 + }
  59 +
  60 + public RecommendationBuilder withRecommendationRatings(List<RecommendationRating> recommendationRatings) {
  61 + this.recommendationRatings = recommendationRatings;
  62 + return this;
  63 + }
  64 +
  65 + public Recommendation build() {
  66 + Recommendation recommendation = new Recommendation();
  67 + recommendation.setId(id);
  68 + recommendation.setWeight(weight);
  69 + recommendation.setDate(date);
  70 + recommendation.setRuntimeInSeconds(runtimeInSeconds);
  71 + recommendation.setTypeRecommendation(typeRecommendation);
  72 + recommendation.setEvaluator(evaluator);
  73 + recommendation.setItem(item);
  74 + recommendation.setRecommendationRatings(recommendationRatings);
  75 + return recommendation;
  76 + }
  77 +}
... ...
codigos/backend/src/main/java/edu/ifes/ci/si/les/srh/srh/builder/RecommendationRatingBuilder.java 0 → 100644
... ... @@ -0,0 +1,57 @@
  1 +package edu.ifes.ci.si.les.srh.srh.builder;
  2 +
  3 +import edu.ifes.ci.si.les.srh.srh.model.Evaluator;
  4 +import edu.ifes.ci.si.les.srh.srh.model.Recommendation;
  5 +import edu.ifes.ci.si.les.srh.srh.model.RecommendationRating;
  6 +
  7 +import java.time.LocalDateTime;
  8 +
  9 +public final class RecommendationRatingBuilder {
  10 + private Recommendation recommendation;
  11 + private Evaluator evaluator;
  12 + private Integer id;
  13 + private Double score;
  14 + private LocalDateTime date;
  15 +
  16 + private RecommendationRatingBuilder() {
  17 + }
  18 +
  19 + public static RecommendationRatingBuilder aRecommendationRating() {
  20 + return new RecommendationRatingBuilder();
  21 + }
  22 +
  23 + public RecommendationRatingBuilder withRecommendation(Recommendation recommendation) {
  24 + this.recommendation = recommendation;
  25 + return this;
  26 + }
  27 +
  28 + public RecommendationRatingBuilder withEvaluator(Evaluator evaluator) {
  29 + this.evaluator = evaluator;
  30 + return this;
  31 + }
  32 +
  33 + public RecommendationRatingBuilder withId(Integer id) {
  34 + this.id = id;
  35 + return this;
  36 + }
  37 +
  38 + public RecommendationRatingBuilder withScore(Double score) {
  39 + this.score = score;
  40 + return this;
  41 + }
  42 +
  43 + public RecommendationRatingBuilder withDate(LocalDateTime date) {
  44 + this.date = date;
  45 + return this;
  46 + }
  47 +
  48 + public RecommendationRating build() {
  49 + RecommendationRating recommendationRating = new RecommendationRating();
  50 + recommendationRating.setRecommendation(recommendation);
  51 + recommendationRating.setEvaluator(evaluator);
  52 + recommendationRating.setId(id);
  53 + recommendationRating.setScore(score);
  54 + recommendationRating.setDate(date);
  55 + return recommendationRating;
  56 + }
  57 +}
... ...
codigos/backend/src/main/java/edu/ifes/ci/si/les/srh/srh/builder/TagBuilder.java 0 → 100644
... ... @@ -0,0 +1,42 @@
  1 +package edu.ifes.ci.si.les.srh.srh.builder;
  2 +
  3 +import edu.ifes.ci.si.les.srh.srh.model.Item;
  4 +import edu.ifes.ci.si.les.srh.srh.model.Tag;
  5 +
  6 +import java.util.List;
  7 +
  8 +public final class TagBuilder {
  9 + private Integer id;
  10 + private String name;
  11 + private List<Item> itens;
  12 +
  13 + private TagBuilder() {
  14 + }
  15 +
  16 + public static TagBuilder aTag() {
  17 + return new TagBuilder();
  18 + }
  19 +
  20 + public TagBuilder withId(Integer id) {
  21 + this.id = id;
  22 + return this;
  23 + }
  24 +
  25 + public TagBuilder withName(String name) {
  26 + this.name = name;
  27 + return this;
  28 + }
  29 +
  30 + public TagBuilder withItens(List<Item> itens) {
  31 + this.itens = itens;
  32 + return this;
  33 + }
  34 +
  35 + public Tag build() {
  36 + Tag tag = new Tag();
  37 + tag.setId(id);
  38 + tag.setName(name);
  39 + tag.setItens(itens);
  40 + return tag;
  41 + }
  42 +}
... ...
codigos/backend/src/main/java/edu/ifes/ci/si/les/srh/srh/builder/TypeItemBuilder.java 0 → 100644
... ... @@ -0,0 +1,49 @@
  1 +package edu.ifes.ci.si.les.srh.srh.builder;
  2 +
  3 +import edu.ifes.ci.si.les.srh.srh.model.Item;
  4 +import edu.ifes.ci.si.les.srh.srh.model.TypeItem;
  5 +
  6 +import java.util.List;
  7 +
  8 +public final class TypeItemBuilder {
  9 + private Integer id;
  10 + private String name;
  11 + private List<String> requiredAttributes;
  12 + private List<Item> itens;
  13 +
  14 + private TypeItemBuilder() {
  15 + }
  16 +
  17 + public static TypeItemBuilder aTypeItem() {
  18 + return new TypeItemBuilder();
  19 + }
  20 +
  21 + public TypeItemBuilder withId(Integer id) {
  22 + this.id = id;
  23 + return this;
  24 + }
  25 +
  26 + public TypeItemBuilder withName(String name) {
  27 + this.name = name;
  28 + return this;
  29 + }
  30 +
  31 + public TypeItemBuilder withRequiredAttributes(List<String> requiredAttributes) {
  32 + this.requiredAttributes = requiredAttributes;
  33 + return this;
  34 + }
  35 +
  36 + public TypeItemBuilder withItens(List<Item> itens) {
  37 + this.itens = itens;
  38 + return this;
  39 + }
  40 +
  41 + public TypeItem build() {
  42 + TypeItem typeItem = new TypeItem();
  43 + typeItem.setId(id);
  44 + typeItem.setName(name);
  45 + typeItem.setRequiredAttributes(requiredAttributes);
  46 + typeItem.setItens(itens);
  47 + return typeItem;
  48 + }
  49 +}
... ...
codigos/backend/src/main/java/edu/ifes/ci/si/les/srh/srh/dto/error/DefaultErrorDto.java 0 → 100644
... ... @@ -0,0 +1,11 @@
  1 +package edu.ifes.ci.si.les.srh.srh.dto.error;
  2 +
  3 +import lombok.AllArgsConstructor;
  4 +import lombok.Getter;
  5 +
  6 +@Getter
  7 +@AllArgsConstructor
  8 +public class DefaultErrorDto {
  9 + private final String error;
  10 + private final String cause;
  11 +}
... ...
codigos/backend/src/main/java/edu/ifes/ci/si/les/srh/srh/dto/error/FormErrorDto.java 0 → 100644
... ... @@ -0,0 +1,11 @@
  1 +package edu.ifes.ci.si.les.srh.srh.dto.error;
  2 +
  3 +import lombok.AllArgsConstructor;
  4 +import lombok.Getter;
  5 +
  6 +@Getter
  7 +@AllArgsConstructor
  8 +public class FormErrorDto {
  9 + private final String error;
  10 + private final String field;
  11 +}
... ...
codigos/backend/src/main/java/edu/ifes/ci/si/les/srh/srh/dto/resource/AdminDto.java 0 → 100644
... ... @@ -0,0 +1,19 @@
  1 +package edu.ifes.ci.si.les.srh.srh.dto.resource;
  2 +
  3 +import edu.ifes.ci.si.les.srh.srh.model.Admin;
  4 +import lombok.Getter;
  5 +
  6 +@Getter
  7 +public class AdminDto {
  8 + private final Integer id;
  9 + private final String name;
  10 + private final String login;
  11 + private final String email;
  12 +
  13 + public AdminDto(Admin admin) {
  14 + this.id = admin.getId();
  15 + this.name = admin.getName();
  16 + this.login = admin.getLogin();
  17 + this.email = admin.getEmail();
  18 + }
  19 +}
... ...
codigos/backend/src/main/java/edu/ifes/ci/si/les/srh/srh/dto/resource/AdminForm.java 0 → 100644
... ... @@ -0,0 +1,44 @@
  1 +package edu.ifes.ci.si.les.srh.srh.dto.resource;
  2 +
  3 +import edu.ifes.ci.si.les.srh.srh.builder.AdminBuilder;
  4 +import edu.ifes.ci.si.les.srh.srh.model.Admin;
  5 +import lombok.AllArgsConstructor;
  6 +import lombok.Getter;
  7 +import lombok.NoArgsConstructor;
  8 +import org.hibernate.validator.constraints.Length;
  9 +
  10 +import javax.validation.constraints.Email;
  11 +import javax.validation.constraints.NotEmpty;
  12 +import javax.validation.constraints.NotNull;
  13 +
  14 +@Getter
  15 +@AllArgsConstructor
  16 +@NoArgsConstructor
  17 +public class AdminForm {
  18 + @NotNull
  19 + @NotEmpty
  20 + private String name;
  21 +
  22 + @NotNull
  23 + @NotEmpty
  24 + private String login;
  25 +
  26 + @NotNull
  27 + @NotEmpty
  28 + @Length(min = 6)
  29 + private String password;
  30 +
  31 + @NotNull
  32 + @NotEmpty
  33 + @Email
  34 + private String email;
  35 +
  36 + public Admin build() {
  37 + return AdminBuilder.anAdmin()
  38 + .withName(name)
  39 + .withLogin(login)
  40 + .withEmail(email)
  41 + .withPassword(password)
  42 + .build();
  43 + }
  44 +}
... ...
codigos/backend/src/main/java/edu/ifes/ci/si/les/srh/srh/dto/resource/ApiUserForm.java 0 → 100644
... ... @@ -0,0 +1,45 @@
  1 +package edu.ifes.ci.si.les.srh.srh.dto.resource;
  2 +
  3 +import edu.ifes.ci.si.les.srh.srh.builder.ApiUserBuilder;
  4 +import edu.ifes.ci.si.les.srh.srh.model.ApiUser;
  5 +import lombok.AllArgsConstructor;
  6 +import lombok.Getter;
  7 +import lombok.NoArgsConstructor;
  8 +import org.hibernate.validator.constraints.Length;
  9 +
  10 +import javax.validation.constraints.Email;
  11 +import javax.validation.constraints.NotEmpty;
  12 +import javax.validation.constraints.NotNull;
  13 +
  14 +@Getter
  15 +@AllArgsConstructor
  16 +@NoArgsConstructor
  17 +public class ApiUserForm {
  18 + @NotEmpty
  19 + @NotNull
  20 + @Length(min = 3)
  21 + private String name;
  22 +
  23 + @NotEmpty
  24 + @NotNull
  25 + @Length(min = 3)
  26 + private String login;
  27 +
  28 + @NotEmpty
  29 + @NotNull
  30 + @Length(min = 6)
  31 + private String password;
  32 +
  33 + @NotNull
  34 + @NotEmpty
  35 + @Email
  36 + private String email;
  37 +
  38 + public ApiUser build() {
  39 + return ApiUserBuilder.anApiUser()
  40 + .withLogin(login)
  41 + .withName(name)
  42 + .withPassword(password)
  43 + .build();
  44 + }
  45 +}
... ...
codigos/backend/src/main/java/edu/ifes/ci/si/les/srh/srh/dto/resource/ApiUsersDto.java 0 → 100644
... ... @@ -0,0 +1,19 @@
  1 +package edu.ifes.ci.si.les.srh.srh.dto.resource;
  2 +
  3 +import edu.ifes.ci.si.les.srh.srh.model.ApiUser;
  4 +import lombok.Getter;
  5 +
  6 +@Getter
  7 +public class ApiUsersDto {
  8 + private final Integer id;
  9 + private final String name;
  10 + private final String login;
  11 + private final boolean isAdmin;
  12 +
  13 + public ApiUsersDto(ApiUser apiUser) {
  14 + this.id = apiUser.getId();
  15 + this.name = apiUser.getName();
  16 + this.login = apiUser.getLogin();
  17 + this.isAdmin = apiUser.isAdmin();
  18 + }
  19 +}
... ...
codigos/backend/src/main/java/edu/ifes/ci/si/les/srh/srh/dto/resource/EvaluatorDto.java 0 → 100644
... ... @@ -0,0 +1,19 @@
  1 +package edu.ifes.ci.si.les.srh.srh.dto.resource;
  2 +
  3 +import edu.ifes.ci.si.les.srh.srh.model.Evaluator;
  4 +import lombok.Getter;
  5 +
  6 +@Getter
  7 +public class EvaluatorDto {
  8 + private final Integer id;
  9 + private final String name;
  10 + private final String login;
  11 + private final String email;
  12 +
  13 + public EvaluatorDto(Evaluator evaluator) {
  14 + this.id = evaluator.getId();
  15 + this.name = evaluator.getName();
  16 + this.login = evaluator.getLogin();
  17 + this.email = evaluator.getEmail();
  18 + }
  19 +}
... ...
codigos/backend/src/main/java/edu/ifes/ci/si/les/srh/srh/dto/resource/EvaluatorForm.java 0 → 100644
... ... @@ -0,0 +1,44 @@
  1 +package edu.ifes.ci.si.les.srh.srh.dto.resource;
  2 +
  3 +import edu.ifes.ci.si.les.srh.srh.builder.EvaluatorBuilder;
  4 +import edu.ifes.ci.si.les.srh.srh.model.Evaluator;
  5 +import lombok.AllArgsConstructor;
  6 +import lombok.Getter;
  7 +import lombok.NoArgsConstructor;
  8 +import org.hibernate.validator.constraints.Length;
  9 +
  10 +import javax.validation.constraints.Email;
  11 +import javax.validation.constraints.NotEmpty;
  12 +import javax.validation.constraints.NotNull;
  13 +
  14 +@Getter
  15 +@AllArgsConstructor
  16 +@NoArgsConstructor
  17 +public class EvaluatorForm {
  18 + @NotNull
  19 + @NotEmpty
  20 + private String name;
  21 +
  22 + @NotNull
  23 + @NotEmpty
  24 + private String login;
  25 +
  26 + @NotNull
  27 + @NotEmpty
  28 + @Length(min = 6)
  29 + private String password;
  30 +
  31 + @NotNull
  32 + @NotEmpty
  33 + @Email
  34 + private String email;
  35 +
  36 + public Evaluator build() {
  37 + return EvaluatorBuilder.anEvaluator()
  38 + .withName(name)
  39 + .withLogin(login)
  40 + .withPassword(password)
  41 + .withEmail(email)
  42 + .build();
  43 + }
  44 +}
... ...
codigos/backend/src/main/java/edu/ifes/ci/si/les/srh/srh/dto/resource/ItemDto.java 0 → 100644
... ... @@ -0,0 +1,20 @@
  1 +package edu.ifes.ci.si.les.srh.srh.dto.resource;
  2 +
  3 +import edu.ifes.ci.si.les.srh.srh.model.Item;
  4 +import lombok.Getter;
  5 +import java.util.HashMap;
  6 +
  7 +@Getter
  8 +public class ItemDto {
  9 + private final Integer id;
  10 + private final String name;
  11 + private final String description;
  12 + private final HashMap<String, String> attributes;
  13 +
  14 + public ItemDto(Item item) {
  15 + this.id = item.getId();
  16 + this.name = item.getName();
  17 + this.description = item.getDescription();
  18 + this.attributes = item.getAttributes();
  19 + }
  20 +}
... ...
codigos/backend/src/main/java/edu/ifes/ci/si/les/srh/srh/dto/resource/ItemForm.java 0 → 100644
... ... @@ -0,0 +1,37 @@
  1 +package edu.ifes.ci.si.les.srh.srh.dto.resource;
  2 +
  3 +import edu.ifes.ci.si.les.srh.srh.builder.ItemBuilder;
  4 +import edu.ifes.ci.si.les.srh.srh.model.Item;
  5 +import lombok.AllArgsConstructor;
  6 +import lombok.Getter;
  7 +import lombok.NoArgsConstructor;
  8 +import org.hibernate.validator.constraints.Length;
  9 +
  10 +import javax.validation.constraints.NotEmpty;
  11 +import javax.validation.constraints.NotNull;
  12 +
  13 +@Getter
  14 +@AllArgsConstructor
  15 +@NoArgsConstructor
  16 +public class ItemForm {
  17 + @NotNull
  18 + @NotEmpty
  19 + @Length(min = 3)
  20 + private String name;
  21 +
  22 + @NotNull
  23 + @NotEmpty
  24 + @Length(min = 3)
  25 + private String description;
  26 +
  27 + @NotNull
  28 + @NotEmpty
  29 + private String attributes;
  30 +
  31 + public Item build() {
  32 + return ItemBuilder.anItem()
  33 + .withName(name)
  34 + .withDescription(description)
  35 + .build();
  36 + }
  37 +}
... ...
codigos/backend/src/main/java/edu/ifes/ci/si/les/srh/srh/dto/resource/ItemRatingDto.java 0 → 100644
... ... @@ -0,0 +1,19 @@
  1 +package edu.ifes.ci.si.les.srh.srh.dto.resource;
  2 +
  3 +import edu.ifes.ci.si.les.srh.srh.model.ItemRating;
  4 +import lombok.Getter;
  5 +
  6 +import java.time.LocalDateTime;
  7 +
  8 +@Getter
  9 +public class ItemRatingDto {
  10 + private final Integer id;
  11 + private final Double score;
  12 + private final LocalDateTime date;
  13 +
  14 + public ItemRatingDto(ItemRating itemRating) {
  15 + this.id = itemRating.getId();
  16 + this.score = itemRating.getScore();
  17 + this.date = itemRating.getDate();
  18 + }
  19 +}
... ...
codigos/backend/src/main/java/edu/ifes/ci/si/les/srh/srh/dto/resource/ItemRatingForm.java 0 → 100644
... ... @@ -0,0 +1,43 @@
  1 +package edu.ifes.ci.si.les.srh.srh.dto.resource;
  2 +
  3 +import edu.ifes.ci.si.les.srh.srh.builder.EvaluatorBuilder;
  4 +import edu.ifes.ci.si.les.srh.srh.builder.ItemBuilder;
  5 +import edu.ifes.ci.si.les.srh.srh.builder.ItemRatingBuilder;
  6 +import edu.ifes.ci.si.les.srh.srh.model.Evaluator;
  7 +import edu.ifes.ci.si.les.srh.srh.model.Item;
  8 +import edu.ifes.ci.si.les.srh.srh.model.ItemRating;
  9 +import lombok.AllArgsConstructor;
  10 +import lombok.Getter;
  11 +import lombok.NoArgsConstructor;
  12 +
  13 +import javax.validation.constraints.NotNull;
  14 +import java.time.LocalDateTime;
  15 +
  16 +@Getter
  17 +@AllArgsConstructor
  18 +@NoArgsConstructor
  19 +public class ItemRatingForm {
  20 + @NotNull
  21 + private Double score;
  22 + @NotNull
  23 + private Integer evaluatorId;
  24 + @NotNull
  25 + private Integer itemId;
  26 +
  27 + public ItemRating build() {
  28 + Evaluator evaluator = EvaluatorBuilder.anEvaluator()
  29 + .withId(evaluatorId)
  30 + .build();
  31 +
  32 + Item item = ItemBuilder.anItem()
  33 + .withId(itemId)
  34 + .build();
  35 +
  36 + return ItemRatingBuilder.anItemRating()
  37 + .withScore(score)
  38 + .withItem(item)
  39 + .withUser(evaluator)
  40 + .withDate(LocalDateTime.now())
  41 + .build();
  42 + }
  43 +}
... ...
codigos/backend/src/main/java/edu/ifes/ci/si/les/srh/srh/dto/resource/ItemTagDto.java 0 → 100644
... ... @@ -0,0 +1,15 @@
  1 +package edu.ifes.ci.si.les.srh.srh.dto.resource;
  2 +
  3 +import edu.ifes.ci.si.les.srh.srh.model.ItemTag;
  4 +import lombok.Getter;
  5 +
  6 +@Getter
  7 +public class ItemTagDto {
  8 + private final Integer itemId;
  9 + private final Integer tagId;
  10 +
  11 + public ItemTagDto(ItemTag itemTag) {
  12 + this.itemId = itemTag.getItem().getId();
  13 + this.tagId = itemTag.getTag().getId();
  14 + }
  15 +}
... ...
codigos/backend/src/main/java/edu/ifes/ci/si/les/srh/srh/dto/resource/ItemTagForm.java 0 → 100644
... ... @@ -0,0 +1,17 @@
  1 +package edu.ifes.ci.si.les.srh.srh.dto.resource;
  2 +
  3 +import lombok.AllArgsConstructor;
  4 +import lombok.Getter;
  5 +import lombok.NoArgsConstructor;
  6 +
  7 +import javax.validation.constraints.NotNull;
  8 +
  9 +@Getter
  10 +@AllArgsConstructor
  11 +@NoArgsConstructor
  12 +public class ItemTagForm {
  13 + @NotNull
  14 + private Integer itemId;
  15 + @NotNull
  16 + private Integer tagId;
  17 +}
... ...
codigos/backend/src/main/java/edu/ifes/ci/si/les/srh/srh/dto/resource/ProjectDto.java 0 → 100644
... ... @@ -0,0 +1,26 @@
  1 +package edu.ifes.ci.si.les.srh.srh.dto.resource;
  2 +
  3 +import edu.ifes.ci.si.les.srh.srh.model.Project;
  4 +import edu.ifes.ci.si.les.srh.srh.model.Situations;
  5 +import lombok.Getter;
  6 +
  7 +import java.time.LocalDate;
  8 +
  9 +@Getter
  10 +public class ProjectDto {
  11 + private final Integer id;
  12 + private final String name;
  13 + private final String description;
  14 + private Situations situation;
  15 + private final LocalDate date;
  16 + private final Boolean visible;
  17 +
  18 + public ProjectDto(Project project) {
  19 + this.id = project.getId();
  20 + this.name = project.getName();
  21 + this.description = project.getDescription();
  22 + this.date = project.getDate();
  23 + this.situation = project.getSituation();
  24 + this.visible = project.getVisible();
  25 + }
  26 +}
... ...
codigos/backend/src/main/java/edu/ifes/ci/si/les/srh/srh/dto/resource/ProjectEvaluatorDto.java 0 → 100644
... ... @@ -0,0 +1,15 @@
  1 +package edu.ifes.ci.si.les.srh.srh.dto.resource;
  2 +
  3 +import edu.ifes.ci.si.les.srh.srh.model.ProjectEvaluator;
  4 +import lombok.Getter;
  5 +
  6 +@Getter
  7 +public class ProjectEvaluatorDto {
  8 + private final Integer projectId;
  9 + private final Integer recommenderId;
  10 +
  11 + public ProjectEvaluatorDto(ProjectEvaluator projectEvaluator) {
  12 + this.projectId = projectEvaluator.getProject().getId();
  13 + this.recommenderId = projectEvaluator.getEvaluator().getId();
  14 + }
  15 +}
... ...
codigos/backend/src/main/java/edu/ifes/ci/si/les/srh/srh/dto/resource/ProjectEvaluatorForm.java 0 → 100644
... ... @@ -0,0 +1,17 @@
  1 +package edu.ifes.ci.si.les.srh.srh.dto.resource;
  2 +
  3 +import lombok.AllArgsConstructor;
  4 +import lombok.Getter;
  5 +import lombok.NoArgsConstructor;
  6 +
  7 +import javax.validation.constraints.NotNull;
  8 +
  9 +@Getter
  10 +@AllArgsConstructor
  11 +@NoArgsConstructor
  12 +public class ProjectEvaluatorForm {
  13 + @NotNull
  14 + private Integer projectId;
  15 + @NotNull
  16 + private Integer recommenderId;
  17 +}
... ...
codigos/backend/src/main/java/edu/ifes/ci/si/les/srh/srh/dto/resource/ProjectForm.java 0 → 100644
... ... @@ -0,0 +1,56 @@
  1 +package edu.ifes.ci.si.les.srh.srh.dto.resource;
  2 +
  3 +import edu.ifes.ci.si.les.srh.srh.builder.AdminBuilder;
  4 +import edu.ifes.ci.si.les.srh.srh.builder.ProjectBuilder;
  5 +import edu.ifes.ci.si.les.srh.srh.model.Admin;
  6 +import edu.ifes.ci.si.les.srh.srh.model.Project;
  7 +import edu.ifes.ci.si.les.srh.srh.model.Situations;
  8 +import lombok.AllArgsConstructor;
  9 +import lombok.Getter;
  10 +import lombok.NoArgsConstructor;
  11 +import org.hibernate.validator.constraints.Length;
  12 +
  13 +import javax.validation.constraints.NotEmpty;
  14 +import javax.validation.constraints.NotNull;
  15 +import java.time.LocalDate;
  16 +
  17 +@Getter
  18 +@AllArgsConstructor
  19 +@NoArgsConstructor
  20 +public class ProjectForm {
  21 +
  22 + @NotEmpty
  23 + @NotNull
  24 + @Length(min = 3)
  25 + private String name;
  26 +
  27 + @NotEmpty
  28 + @NotNull
  29 + @Length(min = 3)
  30 + private String description;
  31 +
  32 + @NotNull
  33 + private Integer adminId;
  34 +
  35 + @NotNull
  36 + @NotEmpty
  37 + private String situation;
  38 +
  39 + @NotNull
  40 + private Boolean visible;
  41 +
  42 + public Project build() {
  43 + Admin admin = AdminBuilder.anAdmin()
  44 + .withId(adminId)
  45 + .build();
  46 +
  47 + return ProjectBuilder.aProject()
  48 + .withName(name)
  49 + .withDescription(description)
  50 + .withAdmin(admin)
  51 + .withSituation(Situations.valueOf(situation))
  52 + .withDate(LocalDate.now())
  53 + .withVisible(visible)
  54 + .build();
  55 + }
  56 +}
... ...
codigos/backend/src/main/java/edu/ifes/ci/si/les/srh/srh/dto/resource/RecommendationDto.java 0 → 100644
... ... @@ -0,0 +1,24 @@
  1 +package edu.ifes.ci.si.les.srh.srh.dto.resource;
  2 +
  3 +import edu.ifes.ci.si.les.srh.srh.model.Recommendation;
  4 +import edu.ifes.ci.si.les.srh.srh.model.TypeRecommendation;
  5 +import lombok.Getter;
  6 +
  7 +import java.time.LocalDateTime;
  8 +
  9 +@Getter
  10 +public class RecommendationDto {
  11 + private final Integer id;
  12 + private final Double weight;
  13 + private final LocalDateTime date;
  14 + private final Integer runtimeInSeconds;
  15 + private final TypeRecommendation typeRecommendation;
  16 +
  17 + public RecommendationDto(Recommendation recommendation) {
  18 + this.id = recommendation.getId();
  19 + this.weight = recommendation.getWeight();
  20 + this.date = recommendation.getDate();
  21 + this.runtimeInSeconds = recommendation.getRuntimeInSeconds();
  22 + this.typeRecommendation = recommendation.getTypeRecommendation();
  23 + }
  24 +}
... ...
codigos/backend/src/main/java/edu/ifes/ci/si/les/srh/srh/dto/resource/RecommendationRatingDto.java 0 → 100644
... ... @@ -0,0 +1,20 @@
  1 +package edu.ifes.ci.si.les.srh.srh.dto.resource;
  2 +
  3 +
  4 +import edu.ifes.ci.si.les.srh.srh.model.RecommendationRating;
  5 +import lombok.Getter;
  6 +
  7 +import java.time.LocalDateTime;
  8 +
  9 +@Getter
  10 +public class RecommendationRatingDto {
  11 + private final Integer id;
  12 + private final Double score;
  13 + private final LocalDateTime date;
  14 +
  15 + public RecommendationRatingDto(RecommendationRating recommendationRating) {
  16 + this.id = recommendationRating.getId();
  17 + this.score = recommendationRating.getScore();
  18 + this.date = recommendationRating.getDate();
  19 + }
  20 +}
... ...
codigos/backend/src/main/java/edu/ifes/ci/si/les/srh/srh/dto/resource/RecommendationRatingForm.java 0 → 100644
... ... @@ -0,0 +1,35 @@
  1 +package edu.ifes.ci.si.les.srh.srh.dto.resource;
  2 +
  3 +import edu.ifes.ci.si.les.srh.srh.builder.EvaluatorBuilder;
  4 +import edu.ifes.ci.si.les.srh.srh.builder.RecommendationBuilder;
  5 +import edu.ifes.ci.si.les.srh.srh.builder.RecommendationRatingBuilder;
  6 +import edu.ifes.ci.si.les.srh.srh.model.Evaluator;
  7 +import edu.ifes.ci.si.les.srh.srh.model.Recommendation;
  8 +import edu.ifes.ci.si.les.srh.srh.model.RecommendationRating;
  9 +
  10 +import javax.validation.constraints.NotNull;
  11 +
  12 +public class RecommendationRatingForm {
  13 + @NotNull
  14 + private Double score;
  15 + @NotNull
  16 + private Integer evaluatorId;
  17 + @NotNull
  18 + private Integer recommendationId;
  19 +
  20 + public RecommendationRating build() {
  21 + Evaluator evaluator = EvaluatorBuilder.anEvaluator()
  22 + .withId(evaluatorId)
  23 + .build();
  24 +
  25 + Recommendation recommendation = RecommendationBuilder.aRecommendation()
  26 + .withId(recommendationId)
  27 + .build();
  28 +
  29 + return RecommendationRatingBuilder.aRecommendationRating()
  30 + .withScore(score)
  31 + .withEvaluator(evaluator)
  32 + .withRecommendation(recommendation)
  33 + .build();
  34 + }
  35 +}
... ...
codigos/backend/src/main/java/edu/ifes/ci/si/les/srh/srh/dto/resource/TagDto.java 0 → 100644
... ... @@ -0,0 +1,15 @@
  1 +package edu.ifes.ci.si.les.srh.srh.dto.resource;
  2 +
  3 +import edu.ifes.ci.si.les.srh.srh.model.Tag;
  4 +import lombok.Getter;
  5 +
  6 +@Getter
  7 +public class TagDto {
  8 + private final Integer id;
  9 + private final String name;
  10 +
  11 + public TagDto(Tag tag) {
  12 + this.id = tag.getId();
  13 + this.name = tag.getName();
  14 + }
  15 +}
... ...
codigos/backend/src/main/java/edu/ifes/ci/si/les/srh/srh/dto/resource/TagForm.java 0 → 100644
... ... @@ -0,0 +1,25 @@
  1 +package edu.ifes.ci.si.les.srh.srh.dto.resource;
  2 +
  3 +import edu.ifes.ci.si.les.srh.srh.builder.TagBuilder;
  4 +import edu.ifes.ci.si.les.srh.srh.model.Tag;
  5 +import lombok.AllArgsConstructor;
  6 +import lombok.Getter;
  7 +import lombok.NoArgsConstructor;
  8 +
  9 +import javax.validation.constraints.NotEmpty;
  10 +import javax.validation.constraints.NotNull;
  11 +
  12 +@Getter
  13 +@AllArgsConstructor
  14 +@NoArgsConstructor
  15 +public class TagForm {
  16 + @NotEmpty
  17 + @NotNull
  18 + private String name;
  19 +
  20 + public Tag build() {
  21 + return TagBuilder.aTag()
  22 + .withName(name)
  23 + .build();
  24 + }
  25 +}
... ...
codigos/backend/src/main/java/edu/ifes/ci/si/les/srh/srh/error/exception/DuplicateValueException.java 0 → 100644
... ... @@ -0,0 +1,7 @@
  1 +package edu.ifes.ci.si.les.srh.srh.error.exception;
  2 +
  3 +public class DuplicateValueException extends Exception {
  4 + public DuplicateValueException(String message) {
  5 + super(message);
  6 + }
  7 +}
... ...
codigos/backend/src/main/java/edu/ifes/ci/si/les/srh/srh/error/exception/RelationshipNotFoundException.java 0 → 100644
... ... @@ -0,0 +1,7 @@
  1 +package edu.ifes.ci.si.les.srh.srh.error.exception;
  2 +
  3 +public class RelationshipNotFoundException extends Exception{
  4 + public RelationshipNotFoundException(String message) {
  5 + super(message);
  6 + }
  7 +}
... ...
codigos/backend/src/main/java/edu/ifes/ci/si/les/srh/srh/error/handler/DuplicateValueHandler.java 0 → 100644
... ... @@ -0,0 +1,20 @@
  1 +package edu.ifes.ci.si.les.srh.srh.error.handler;
  2 +
  3 +import edu.ifes.ci.si.les.srh.srh.dto.error.DefaultErrorDto;
  4 +import edu.ifes.ci.si.les.srh.srh.error.exception.DuplicateValueException;
  5 +import org.springframework.http.HttpStatus;
  6 +import org.springframework.web.bind.annotation.ExceptionHandler;
  7 +import org.springframework.web.bind.annotation.ResponseStatus;
  8 +import org.springframework.web.bind.annotation.RestControllerAdvice;
  9 +
  10 +@RestControllerAdvice
  11 +public class DuplicateValueHandler {
  12 + @ResponseStatus(code = HttpStatus.INTERNAL_SERVER_ERROR)
  13 + @ExceptionHandler(DuplicateValueException.class)
  14 + public DefaultErrorDto handle(Exception exception) {
  15 + return new DefaultErrorDto(
  16 + "O vínculo entre os recursos não existe",
  17 + exception.getMessage()
  18 + );
  19 + }
  20 +}
... ...
codigos/backend/src/main/java/edu/ifes/ci/si/les/srh/srh/error/handler/FormHandler.java 0 → 100644
... ... @@ -0,0 +1,37 @@
  1 +package edu.ifes.ci.si.les.srh.srh.error.handler;
  2 +
  3 +import edu.ifes.ci.si.les.srh.srh.dto.error.FormErrorDto;
  4 +import org.springframework.beans.factory.annotation.Autowired;
  5 +import org.springframework.context.MessageSource;
  6 +import org.springframework.context.i18n.LocaleContextHolder;
  7 +import org.springframework.http.HttpStatus;
  8 +import org.springframework.validation.FieldError;
  9 +import org.springframework.web.bind.MethodArgumentNotValidException;
  10 +import org.springframework.web.bind.annotation.ExceptionHandler;
  11 +import org.springframework.web.bind.annotation.ResponseStatus;
  12 +import org.springframework.web.bind.annotation.RestControllerAdvice;
  13 +
  14 +import java.util.ArrayList;
  15 +import java.util.List;
  16 +
  17 +@RestControllerAdvice
  18 +public class FormHandler {
  19 + @Autowired
  20 + private MessageSource messageSource;
  21 +
  22 + @ResponseStatus(code = HttpStatus.BAD_REQUEST)
  23 + @ExceptionHandler(MethodArgumentNotValidException.class)
  24 + public List<FormErrorDto> handle(MethodArgumentNotValidException exception) {
  25 + List<FormErrorDto> dtos = new ArrayList<>();
  26 +
  27 + List<FieldError> fieldErrors = exception.getBindingResult().getFieldErrors();
  28 +
  29 + fieldErrors.forEach(e -> {
  30 + String message = messageSource.getMessage(e, LocaleContextHolder.getLocale());
  31 + FormErrorDto formError = new FormErrorDto(e.getField(), message);
  32 + dtos.add(formError);
  33 + });
  34 +
  35 + return dtos;
  36 + }
  37 +}
... ...
codigos/backend/src/main/java/edu/ifes/ci/si/les/srh/srh/error/handler/RelationshipNotFoundHandler.java 0 → 100644
... ... @@ -0,0 +1,20 @@
  1 +package edu.ifes.ci.si.les.srh.srh.error.handler;
  2 +
  3 +import edu.ifes.ci.si.les.srh.srh.dto.error.DefaultErrorDto;
  4 +import edu.ifes.ci.si.les.srh.srh.error.exception.RelationshipNotFoundException;
  5 +import org.springframework.http.HttpStatus;
  6 +import org.springframework.web.bind.annotation.ExceptionHandler;
  7 +import org.springframework.web.bind.annotation.ResponseStatus;
  8 +import org.springframework.web.bind.annotation.RestControllerAdvice;
  9 +
  10 +@RestControllerAdvice
  11 +public class RelationshipNotFoundHandler {
  12 + @ResponseStatus(code = HttpStatus.INTERNAL_SERVER_ERROR)
  13 + @ExceptionHandler(RelationshipNotFoundException.class)
  14 + public DefaultErrorDto handle(Exception exception) {
  15 + return new DefaultErrorDto(
  16 + "O relacionamento não existe",
  17 + exception.getMessage()
  18 + );
  19 + }
  20 +}
... ...
codigos/backend/src/main/java/edu/ifes/ci/si/les/srh/srh/model/Admin.java 0 → 100644
... ... @@ -0,0 +1,16 @@
  1 +package edu.ifes.ci.si.les.srh.srh.model;
  2 +
  3 +import lombok.Data;
  4 +import lombok.EqualsAndHashCode;
  5 +
  6 +import javax.persistence.Entity;
  7 +import javax.persistence.OneToMany;
  8 +import java.util.List;
  9 +
  10 +@Entity
  11 +@Data
  12 +@EqualsAndHashCode(callSuper = true)
  13 +public class Admin extends User {
  14 + @OneToMany(mappedBy = "admin")
  15 + private List<Project> projects;
  16 +}
... ...
codigos/backend/src/main/java/edu/ifes/ci/si/les/srh/srh/model/ApiUser.java 0 → 100644
... ... @@ -0,0 +1,18 @@
  1 +package edu.ifes.ci.si.les.srh.srh.model;
  2 +
  3 +import lombok.Data;
  4 +import lombok.EqualsAndHashCode;
  5 +
  6 +import javax.persistence.Entity;
  7 +import javax.persistence.FetchType;
  8 +import javax.persistence.ManyToMany;
  9 +import java.util.List;
  10 +
  11 +@Entity
  12 +@Data
  13 +@EqualsAndHashCode(callSuper = true)
  14 +public class ApiUser extends User {
  15 + @ManyToMany(fetch = FetchType.EAGER)
  16 + private List<Profile> profiles;
  17 + private boolean isAdmin;
  18 +}
... ...
codigos/backend/src/main/java/edu/ifes/ci/si/les/srh/srh/model/Evaluator.java 0 → 100644
... ... @@ -0,0 +1,23 @@
  1 +package edu.ifes.ci.si.les.srh.srh.model;
  2 +
  3 +import lombok.Data;
  4 +import lombok.EqualsAndHashCode;
  5 +
  6 +import javax.persistence.Entity;
  7 +import javax.persistence.ManyToMany;
  8 +import javax.persistence.OneToMany;
  9 +import java.util.List;
  10 +
  11 +@Entity
  12 +@Data
  13 +@EqualsAndHashCode(callSuper = true)
  14 +public class Evaluator extends User {
  15 + @ManyToMany
  16 + private List<Project> projects;
  17 +
  18 + @OneToMany(mappedBy = "user")
  19 + private List<ItemRating> itemRatings;
  20 +
  21 + @OneToMany(mappedBy = "evaluator")
  22 + private List<RecommendationRating> recommendationRatings;
  23 +}
... ...
codigos/backend/src/main/java/edu/ifes/ci/si/les/srh/srh/model/Item.java 0 → 100644
... ... @@ -0,0 +1,34 @@
  1 +package edu.ifes.ci.si.les.srh.srh.model;
  2 +
  3 +import lombok.Data;
  4 +
  5 +import javax.persistence.*;
  6 +import java.util.HashMap;
  7 +import java.util.List;
  8 +
  9 +@Entity
  10 +@Data
  11 +public class Item {
  12 + @Id
  13 + @GeneratedValue(strategy = GenerationType.IDENTITY)
  14 + private Integer id;
  15 +
  16 + private String name;
  17 + private String description;
  18 + private HashMap<String, String> attributes;
  19 +
  20 + @OneToMany(mappedBy = "item")
  21 + private List<ItemRating> itemRatings;
  22 +
  23 + @OneToMany(mappedBy = "item")
  24 + private List<Recommendation> recommendations;
  25 +
  26 + @ManyToOne
  27 + private Project project;
  28 +
  29 + @ManyToOne
  30 + private TypeItem typeItem;
  31 +
  32 + @ManyToMany(mappedBy = "itens")
  33 + private List<Tag> tags;
  34 +}
... ...
codigos/backend/src/main/java/edu/ifes/ci/si/les/srh/srh/model/ItemRating.java 0 → 100644
... ... @@ -0,0 +1,18 @@
  1 +package edu.ifes.ci.si.les.srh.srh.model;
  2 +
  3 +import lombok.Data;
  4 +import lombok.EqualsAndHashCode;
  5 +
  6 +import javax.persistence.Entity;
  7 +import javax.persistence.ManyToOne;
  8 +
  9 +@Entity
  10 +@Data
  11 +@EqualsAndHashCode(callSuper = true)
  12 +public class ItemRating extends Rating {
  13 + @ManyToOne
  14 + private Evaluator user;
  15 +
  16 + @ManyToOne
  17 + private Item item;
  18 +}
... ...
codigos/backend/src/main/java/edu/ifes/ci/si/les/srh/srh/model/ItemTag.java 0 → 100644
... ... @@ -0,0 +1,76 @@
  1 +package edu.ifes.ci.si.les.srh.srh.model;
  2 +
  3 +import edu.ifes.ci.si.les.srh.srh.error.exception.DuplicateValueException;
  4 +import edu.ifes.ci.si.les.srh.srh.error.exception.RelationshipNotFoundException;
  5 +import lombok.AllArgsConstructor;
  6 +import lombok.Data;
  7 +import lombok.SneakyThrows;
  8 +
  9 +import java.util.List;
  10 +
  11 +@Data
  12 +@AllArgsConstructor
  13 +public class ItemTag {
  14 + private Item item;
  15 + private Tag tag;
  16 +
  17 + @SneakyThrows
  18 + public void addEntities() {
  19 + addItemInTag();
  20 + addTagInItem();
  21 + }
  22 +
  23 + @SneakyThrows
  24 + public void removeEntities() {
  25 + removeItemInTag();
  26 + removeTagInItem();
  27 + }
  28 +
  29 + @SneakyThrows
  30 + private void addItemInTag() {
  31 + List<Item> itensInTag = getItensListInTag();
  32 +
  33 + if (itensInTag.contains(item))
  34 + throw new DuplicateValueException("O item já possui vínculo com a tag");
  35 +
  36 + itensInTag.add(item);
  37 + }
  38 +
  39 + @SneakyThrows
  40 + private void addTagInItem() {
  41 + List<Tag> tagsInItem = getTagListInItem();
  42 +
  43 + if (tagsInItem.contains(tag))
  44 + throw new DuplicateValueException("A tag já possui vínculo com o item");
  45 +
  46 + tagsInItem.add(tag);
  47 + }
  48 +
  49 + @SneakyThrows
  50 + private void removeItemInTag() {
  51 + List<Item> itensInTag = getItensListInTag();
  52 +
  53 + if (!itensInTag.contains(item))
  54 + throw new RelationshipNotFoundException("Não existe vínculo entre o Item e a Tag");
  55 +
  56 + itensInTag.remove(item);
  57 + }
  58 +
  59 + @SneakyThrows
  60 + private void removeTagInItem() {
  61 + List<Tag> tagsInItem = getTagListInItem();
  62 +
  63 + if (!tagsInItem.contains(tag))
  64 + throw new RelationshipNotFoundException("Não existe vínculo entre a Tag e o Item");
  65 +
  66 + tagsInItem.remove(tag);
  67 + }
  68 +
  69 + private List<Item> getItensListInTag() {
  70 + return tag.getItens();
  71 + }
  72 +
  73 + private List<Tag> getTagListInItem() {
  74 + return item.getTags();
  75 + }
  76 +}
... ...
codigos/backend/src/main/java/edu/ifes/ci/si/les/srh/srh/model/Profile.java 0 → 100644
... ... @@ -0,0 +1,19 @@
  1 +package edu.ifes.ci.si.les.srh.srh.model;
  2 +
  3 +import lombok.Data;
  4 +
  5 +import javax.persistence.*;
  6 +import java.util.List;
  7 +
  8 +@Entity
  9 +@Data
  10 +public class Profile {
  11 + @Id
  12 + @GeneratedValue(strategy = GenerationType.IDENTITY)
  13 + private Integer id;
  14 +
  15 + private String name;
  16 +
  17 + @ManyToMany
  18 + private List<ApiUser> apiUsers;
  19 +}
... ...
codigos/backend/src/main/java/edu/ifes/ci/si/les/srh/srh/model/Project.java 0 → 100644
... ... @@ -0,0 +1,32 @@
  1 +package edu.ifes.ci.si.les.srh.srh.model;
  2 +
  3 +import lombok.Data;
  4 +
  5 +import javax.persistence.*;
  6 +import java.time.LocalDate;
  7 +import java.util.List;
  8 +
  9 +@Entity
  10 +@Data
  11 +public class Project {
  12 + @Id
  13 + @GeneratedValue(strategy = GenerationType.IDENTITY)
  14 + private Integer id;
  15 +
  16 + private String name;
  17 + private String description;
  18 + private LocalDate date;
  19 + private Boolean visible;
  20 +
  21 + @Enumerated(EnumType.STRING)
  22 + private Situations situation;
  23 +
  24 + @ManyToOne
  25 + private Admin admin;
  26 +
  27 + @ManyToMany(mappedBy = "projects")
  28 + private List<Evaluator> evaluators;
  29 +
  30 + @OneToMany(mappedBy = "project")
  31 + private List<Item> itens;
  32 +}
... ...
codigos/backend/src/main/java/edu/ifes/ci/si/les/srh/srh/model/ProjectEvaluator.java 0 → 100644
... ... @@ -0,0 +1,76 @@
  1 +package edu.ifes.ci.si.les.srh.srh.model;
  2 +
  3 +import edu.ifes.ci.si.les.srh.srh.error.exception.DuplicateValueException;
  4 +import edu.ifes.ci.si.les.srh.srh.error.exception.RelationshipNotFoundException;
  5 +import lombok.AllArgsConstructor;
  6 +import lombok.Data;
  7 +import lombok.SneakyThrows;
  8 +
  9 +import java.util.List;
  10 +
  11 +@Data
  12 +@AllArgsConstructor
  13 +public class ProjectEvaluator {
  14 + private Project project;
  15 + private Evaluator evaluator;
  16 +
  17 + @SneakyThrows
  18 + public void addEntities() {
  19 + addProjectInRecommender();
  20 + addRecommenderInProject();
  21 + }
  22 +
  23 + @SneakyThrows
  24 + public void removeEntities() {
  25 + removeProjectInRecommender();
  26 + removeRecommenderInProject();
  27 + }
  28 +
  29 + @SneakyThrows
  30 + private void addRecommenderInProject() {
  31 + List<Evaluator> recommendersInProject = getRecommenderListInProject();
  32 +
  33 + if (recommendersInProject.contains(evaluator))
  34 + throw new DuplicateValueException("Recommender link already exists");
  35 +
  36 + recommendersInProject.add(evaluator);
  37 + }
  38 +
  39 + @SneakyThrows
  40 + private void addProjectInRecommender() {
  41 + List<Project> projectsInRecommender = getProjectListInRecommender();
  42 +
  43 + if (projectsInRecommender.contains(project))
  44 + throw new DuplicateValueException("Project link already exists");
  45 +
  46 + projectsInRecommender.add(project);
  47 + }
  48 +
  49 + @SneakyThrows
  50 + private void removeRecommenderInProject() {
  51 + List<Evaluator> recommendersInProject = getRecommenderListInProject();
  52 +
  53 + if (!recommendersInProject.contains(evaluator))
  54 + throw new RelationshipNotFoundException("Project not exist in Recommender");
  55 +
  56 + recommendersInProject.remove(evaluator);
  57 + }
  58 +
  59 + @SneakyThrows
  60 + private void removeProjectInRecommender() {
  61 + List<Project> projectsInRecommender = getProjectListInRecommender();
  62 +
  63 + if (!projectsInRecommender.contains(project))
  64 + throw new RelationshipNotFoundException("Recommender not exist in Project");
  65 +
  66 + projectsInRecommender.remove(project);
  67 + }
  68 +
  69 + private List<Evaluator> getRecommenderListInProject() {
  70 + return project.getEvaluators();
  71 + }
  72 +
  73 + private List<Project> getProjectListInRecommender() {
  74 + return evaluator.getProjects();
  75 + }
  76 +}
... ...
codigos/backend/src/main/java/edu/ifes/ci/si/les/srh/srh/model/Rating.java 0 → 100644
... ... @@ -0,0 +1,20 @@
  1 +package edu.ifes.ci.si.les.srh.srh.model;
  2 +
  3 +import lombok.Data;
  4 +
  5 +import javax.persistence.GeneratedValue;
  6 +import javax.persistence.GenerationType;
  7 +import javax.persistence.Id;
  8 +import javax.persistence.MappedSuperclass;
  9 +import java.time.LocalDateTime;
  10 +
  11 +@MappedSuperclass
  12 +@Data
  13 +public abstract class Rating {
  14 + @Id
  15 + @GeneratedValue(strategy = GenerationType.IDENTITY)
  16 + private Integer id;
  17 +
  18 + private Double score;
  19 + private LocalDateTime date;
  20 +}
... ...
codigos/backend/src/main/java/edu/ifes/ci/si/les/srh/srh/model/Recommendation.java 0 → 100644
... ... @@ -0,0 +1,31 @@
  1 +package edu.ifes.ci.si.les.srh.srh.model;
  2 +
  3 +import lombok.Data;
  4 +
  5 +import javax.persistence.*;
  6 +import java.time.LocalDateTime;
  7 +import java.util.List;
  8 +
  9 +@Entity
  10 +@Data
  11 +public class Recommendation {
  12 + @Id
  13 + @GeneratedValue(strategy = GenerationType.IDENTITY)
  14 + private Integer id;
  15 +
  16 + private Double weight;
  17 + private LocalDateTime date;
  18 + private Integer runtimeInSeconds;
  19 +
  20 + @Enumerated(EnumType.STRING)
  21 + private TypeRecommendation typeRecommendation;
  22 +
  23 + @ManyToOne
  24 + private Evaluator evaluator;
  25 +
  26 + @ManyToOne
  27 + private Item item;
  28 +
  29 + @OneToMany(mappedBy = "recommendation")
  30 + private List<RecommendationRating> recommendationRatings;
  31 +}
... ...
codigos/backend/src/main/java/edu/ifes/ci/si/les/srh/srh/model/RecommendationRating.java 0 → 100644
... ... @@ -0,0 +1,18 @@
  1 +package edu.ifes.ci.si.les.srh.srh.model;
  2 +
  3 +import lombok.Data;
  4 +import lombok.EqualsAndHashCode;
  5 +
  6 +import javax.persistence.Entity;
  7 +import javax.persistence.ManyToOne;
  8 +
  9 +@Entity
  10 +@Data
  11 +@EqualsAndHashCode(callSuper = true)
  12 +public class RecommendationRating extends Rating {
  13 + @ManyToOne
  14 + private Recommendation recommendation;
  15 +
  16 + @ManyToOne
  17 + private Evaluator evaluator;
  18 +}
... ...
codigos/backend/src/main/java/edu/ifes/ci/si/les/srh/srh/model/Situations.java 0 → 100644
... ... @@ -0,0 +1,5 @@
  1 +package edu.ifes.ci.si.les.srh.srh.model;
  2 +
  3 +public enum Situations {
  4 + OPEN, CLOSED
  5 +}
... ...
codigos/backend/src/main/java/edu/ifes/ci/si/les/srh/srh/model/Tag.java 0 → 100644
... ... @@ -0,0 +1,20 @@
  1 +package edu.ifes.ci.si.les.srh.srh.model;
  2 +
  3 +import lombok.Data;
  4 +
  5 +import javax.persistence.*;
  6 +import java.util.List;
  7 +
  8 +@Entity
  9 +@Data
  10 +public class Tag {
  11 + @Id
  12 + @GeneratedValue(strategy = GenerationType.IDENTITY)
  13 + private Integer id;
  14 +
  15 + @Column(unique = true)
  16 + private String name;
  17 +
  18 + @ManyToMany
  19 + private List<Item> itens;
  20 +}
... ...
codigos/backend/src/main/java/edu/ifes/ci/si/les/srh/srh/model/TypeItem.java 0 → 100644
... ... @@ -0,0 +1,20 @@
  1 +package edu.ifes.ci.si.les.srh.srh.model;
  2 +
  3 +import lombok.Data;
  4 +
  5 +import javax.persistence.*;
  6 +import java.util.List;
  7 +
  8 +@Entity
  9 +@Data
  10 +public class TypeItem {
  11 + @Id
  12 + @GeneratedValue(strategy = GenerationType.IDENTITY)
  13 + private Integer id;
  14 +
  15 + private String name;
  16 + private List<String> requiredAttributes;
  17 +
  18 + @OneToMany(mappedBy = "typeItem")
  19 + private List<Item> itens;
  20 +}
... ...
codigos/backend/src/main/java/edu/ifes/ci/si/les/srh/srh/model/TypeRecommendation.java 0 → 100644
... ... @@ -0,0 +1,5 @@
  1 +package edu.ifes.ci.si.les.srh.srh.model;
  2 +
  3 +public enum TypeRecommendation {
  4 + COLLABORATIVE, CONTENT, HYBRID
  5 +}
... ...
codigos/backend/src/main/java/edu/ifes/ci/si/les/srh/srh/model/User.java 0 → 100644
... ... @@ -0,0 +1,20 @@
  1 +package edu.ifes.ci.si.les.srh.srh.model;
  2 +
  3 +import lombok.Data;
  4 +
  5 +import javax.persistence.*;
  6 +
  7 +@MappedSuperclass
  8 +@Data
  9 +public abstract class User {
  10 + @Id
  11 + @GeneratedValue(strategy = GenerationType.IDENTITY)
  12 + private Integer id;
  13 +
  14 + @Column(unique = true)
  15 + protected String login;
  16 +
  17 + private String name;
  18 + private String email;
  19 + protected String password;
  20 +}
... ...
codigos/backend/src/main/resources/application.properties 0 → 100644
No preview for this file type
codigos/backend/src/test/java/edu/ifes/ci/si/les/srh/srh/SrhApplicationTests.java 0 → 100644
... ... @@ -0,0 +1,13 @@
  1 +package edu.ifes.ci.si.les.srh.srh;
  2 +
  3 +import org.junit.jupiter.api.Test;
  4 +import org.springframework.boot.test.context.SpringBootTest;
  5 +
  6 +@SpringBootTest
  7 +class SrhApplicationTests {
  8 +
  9 + @Test
  10 + void contextLoads() {
  11 + }
  12 +
  13 +}
... ...