diff --git a/Dockerfile b/Dockerfile index c887095..52e6175 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,11 +1,28 @@ -FROM eclipse-temurin:19-jdk-jammy - -WORKDIR /app - -COPY .mvn/ .mvn -COPY mvnw pom.xml ./ -RUN ./mvnw dependency:resolve - -COPY src ./src - -CMD ["./mvnw", "spring-boot:run"] \ No newline at end of file +# FROM eclipse-temurin:19-jdk-jammy +# +# WORKDIR /app +# +# COPY .mvn/ .mvn +# COPY mvnw pom.xml ./ +# RUN ./mvnw dependency:resolve +# +# COPY src ./src +# +# CMD ["./mvnw", "spring-boot:run"] +# +# Build +# +FROM maven:3.9.0-eclipse-temurin-19-focal AS build +COPY src /home/app/src +COPY pom.xml /home/app +RUN mvn -f /home/app/pom.xml clean package -DskipTests +# +# Package stage +# +FROM openjdk:19-jdk-alpine +WORKDIR /usr/local/lib +RUN mkdir git +RUN mkdir json +COPY src/main/resources/json /usr/local/lib/json +COPY --from=build /home/app/target/assistDbBackend-0.0.1-SNAPSHOT.jar /usr/local/lib/assistDbBackend.jar +CMD ["java","-jar", "-Dapplication.config.path=classpath:", "/usr/local/lib/assistDbBackend.jar"] \ No newline at end of file diff --git a/pom.xml b/pom.xml index 6640418..cd4a7fe 100644 --- a/pom.xml +++ b/pom.xml @@ -16,6 +16,7 @@ 19 + jar org.springframework.boot diff --git a/src/main/java/com/apside/assist/db/backend/AssistDBBackendApplication.java b/src/main/java/com/apside/assist/db/backend/AssistDBBackendApplication.java index ba602ef..42956cb 100644 --- a/src/main/java/com/apside/assist/db/backend/AssistDBBackendApplication.java +++ b/src/main/java/com/apside/assist/db/backend/AssistDBBackendApplication.java @@ -3,38 +3,13 @@ package com.apside.assist.db.backend; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.autoconfigure.security.servlet.SecurityAutoConfiguration; -import org.springframework.context.annotation.Bean; -import org.springframework.web.cors.CorsConfiguration; -import org.springframework.web.cors.UrlBasedCorsConfigurationSource; -import org.springframework.web.filter.CorsFilter; - -import java.util.Arrays; @SpringBootApplication(exclude = SecurityAutoConfiguration.class) public class AssistDBBackendApplication { - private static final String ACCESS_CONTROL = "Access-Control-Allow-Origin"; - public static void main(String[] args){ SpringApplication.run(AssistDBBackendApplication.class, args); } - - @Bean - public CorsFilter corsFilter() { - CorsConfiguration corsConfiguration = new CorsConfiguration(); - corsConfiguration.setAllowCredentials(true); - corsConfiguration.setAllowedOrigins(Arrays.asList("http://178.18.0.4:9002", "http://localhost:9002")); - corsConfiguration.setAllowedHeaders(Arrays.asList("Origin", ACCESS_CONTROL, "Content-Type", - "Accept", "Authorization", "Origin, Accept", "X-Requested-With", - "Access-Control-Request-Method", "Access-Control-Request-Headers")); - corsConfiguration.setExposedHeaders(Arrays.asList("Origin", "Content-Type", "Accept", "Authorization", - ACCESS_CONTROL, ACCESS_CONTROL, "Access-Control-Allow-Credentials")); - corsConfiguration.setAllowedMethods(Arrays.asList("GET", "POST", "PUT", "DELETE", "OPTIONS")); - UrlBasedCorsConfigurationSource urlBasedCorsConfigurationSource = new UrlBasedCorsConfigurationSource(); - urlBasedCorsConfigurationSource.registerCorsConfiguration("/**", corsConfiguration); - return new CorsFilter(urlBasedCorsConfigurationSource); - } - } diff --git a/src/main/java/com/apside/assist/db/backend/controller/InfoColumnController.java b/src/main/java/com/apside/assist/db/backend/controller/InfoColumnController.java index 88f47c6..72e18ab 100644 --- a/src/main/java/com/apside/assist/db/backend/controller/InfoColumnController.java +++ b/src/main/java/com/apside/assist/db/backend/controller/InfoColumnController.java @@ -3,7 +3,6 @@ package com.apside.assist.db.backend.controller; import com.apside.assist.db.backend.model.InfoColumn; import com.apside.assist.db.backend.service.InfoColumnService; import lombok.extern.slf4j.Slf4j; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.*; @@ -17,8 +16,12 @@ import java.util.Optional; @RequestMapping("/api") @Slf4j public class InfoColumnController { - @Autowired - private InfoColumnService infoColumnService; + public static final String ERROR_COLUMNS = "Error occurred while fetching columns"; + private final InfoColumnService infoColumnService; + + public InfoColumnController(InfoColumnService infoColumnService) { + this.infoColumnService = infoColumnService; + } /** * Read - Get one column @@ -29,11 +32,7 @@ public class InfoColumnController { public ResponseEntity getColumn(@PathVariable("id") final Long id) { log.debug("Start GetColumn - Get Request - with id: " + id); Optional infoColumn = infoColumnService.getColumn(id); - if(infoColumn.isPresent()) { - return ResponseEntity.ok(infoColumn.get()); - } else { - return ResponseEntity.status(HttpStatus.NOT_FOUND).build(); - } + return infoColumn.map(ResponseEntity::ok).orElseGet(() -> ResponseEntity.status(HttpStatus.NOT_FOUND).build()); } /** @@ -47,7 +46,7 @@ public class InfoColumnController { Iterable columns = infoColumnService.getAllColumns(); return ResponseEntity.ok(columns); } catch (Exception e){ - log.error("Error occurred while fetching columns", e); + log.error(ERROR_COLUMNS, e); return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).build(); } } @@ -63,7 +62,7 @@ public class InfoColumnController { Iterable columnsSelected = infoColumnService.getSelectedColumns(table, schema); return ResponseEntity.ok(columnsSelected); } catch (Exception e){ - log.error("Error occurred while fetching columns", e); + log.error(ERROR_COLUMNS, e); return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).build(); } } @@ -75,7 +74,7 @@ public class InfoColumnController { Iterable columnsForJoin = infoColumnService.getColumnsForJoin(firstTable, secondTable, firstSchema, secondSchema); return ResponseEntity.ok(columnsForJoin); } catch (Exception e){ - log.error("Error occurred while fetching columns", e); + log.error(ERROR_COLUMNS, e); return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).build(); } } @@ -89,7 +88,7 @@ public class InfoColumnController { Iterable columnsForJoin = infoColumnService.getColumnsForJoinTwo(tablesList, schemasList); return ResponseEntity.ok(columnsForJoin); } catch (Exception e){ - log.error("Error occurred while fetching columns", e); + log.error(ERROR_COLUMNS, e); return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).build(); } } diff --git a/src/main/java/com/apside/assist/db/backend/controller/InfoTableController.java b/src/main/java/com/apside/assist/db/backend/controller/InfoTableController.java index 8f474cc..bf002f0 100644 --- a/src/main/java/com/apside/assist/db/backend/controller/InfoTableController.java +++ b/src/main/java/com/apside/assist/db/backend/controller/InfoTableController.java @@ -3,7 +3,6 @@ package com.apside.assist.db.backend.controller; import com.apside.assist.db.backend.model.InfoTable; import com.apside.assist.db.backend.service.InfoTableService; import lombok.extern.slf4j.Slf4j; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.*; @@ -14,9 +13,13 @@ import java.util.Optional; @RequestMapping("/api") @Slf4j public class InfoTableController { - @Autowired - private InfoTableService infoTableService; + public static final String ERROR_DELETING_TABLES = "Error occurred while deleting tables"; + private final InfoTableService infoTableService; + + public InfoTableController(InfoTableService infoTableService) { + this.infoTableService = infoTableService; + } /** * Read - Get one table @@ -28,11 +31,7 @@ public class InfoTableController { log.debug("Start getTable - Get Request - with id: " + id); Optional infoTable = infoTableService.getTable(id); - if (infoTable.isPresent()) { - return ResponseEntity.ok(infoTable.get()); - } else { - return ResponseEntity.notFound().build(); - } + return infoTable.map(ResponseEntity::ok).orElseGet(() -> ResponseEntity.notFound().build()); } /** @@ -100,7 +99,7 @@ public class InfoTableController { infoTableService.deleteAllTable(); return ResponseEntity.ok().build(); } catch (Exception e) { - log.error("Error occurred while deleting tables", e); + log.error(ERROR_DELETING_TABLES, e); return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).build(); } } @@ -112,7 +111,7 @@ public class InfoTableController { Iterable tables = infoTableService.getTablesWithFilter(filter); return ResponseEntity.ok(tables); } catch (Exception e) { - log.error("Error occurred while deleting tables", e); + log.error(ERROR_DELETING_TABLES, e); return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).build(); } } @@ -124,7 +123,7 @@ public class InfoTableController { Iterable tables = infoTableService.getTablesWithFilterAndSchema(filter, schema); return ResponseEntity.ok(tables); } catch (Exception e) { - log.error("Error occurred while deleting tables", e); + log.error(ERROR_DELETING_TABLES, e); return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).build(); } } diff --git a/src/main/java/com/apside/assist/db/backend/controller/LinkInfoController.java b/src/main/java/com/apside/assist/db/backend/controller/LinkInfoController.java index 570f88f..d30ea87 100644 --- a/src/main/java/com/apside/assist/db/backend/controller/LinkInfoController.java +++ b/src/main/java/com/apside/assist/db/backend/controller/LinkInfoController.java @@ -3,7 +3,6 @@ package com.apside.assist.db.backend.controller; import com.apside.assist.db.backend.model.LinkInfo; import com.apside.assist.db.backend.service.LinkInfoService; import lombok.extern.slf4j.Slf4j; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.*; @@ -15,9 +14,11 @@ import java.util.Optional; @Slf4j public class LinkInfoController { - @Autowired - private LinkInfoService linkInfoService; + private final LinkInfoService linkInfoService; + public LinkInfoController(LinkInfoService linkInfoService) { + this.linkInfoService = linkInfoService; + } /** * Read - Get one Link @@ -28,11 +29,7 @@ public class LinkInfoController { public ResponseEntity getLinkInfo(@PathVariable("id") final Long id) { log.debug("Start getLinkInfo - Get Request - with id: " + id); Optional linkInfo = linkInfoService.getLinkInfo(id); - if (linkInfo.isPresent()) { - return ResponseEntity.ok(linkInfo.get()); - } else { - return ResponseEntity.notFound().build(); - } + return linkInfo.map(ResponseEntity::ok).orElseGet(() -> ResponseEntity.notFound().build()); } /** diff --git a/src/main/java/com/apside/assist/db/backend/controller/ResetDataController.java b/src/main/java/com/apside/assist/db/backend/controller/ResetDataController.java index 105bf46..b0cf3d1 100644 --- a/src/main/java/com/apside/assist/db/backend/controller/ResetDataController.java +++ b/src/main/java/com/apside/assist/db/backend/controller/ResetDataController.java @@ -1,10 +1,7 @@ package com.apside.assist.db.backend.controller; -import java.io.IOException; import com.apside.assist.db.backend.service.ResetDataService; -import com.fasterxml.jackson.core.JsonProcessingException; import lombok.extern.slf4j.Slf4j; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.*; @@ -13,8 +10,12 @@ import org.springframework.web.bind.annotation.*; @RequestMapping("/api") @Slf4j public class ResetDataController { - @Autowired - private ResetDataService resetDataService; + + private final ResetDataService resetDataService; + + public ResetDataController(ResetDataService resetDataService) { + this.resetDataService = resetDataService; + } @PostMapping("/reset") public ResponseEntity resetData() { diff --git a/src/main/java/com/apside/assist/db/backend/controller/ScriptController.java b/src/main/java/com/apside/assist/db/backend/controller/ScriptController.java index 9c2af19..9533654 100644 --- a/src/main/java/com/apside/assist/db/backend/controller/ScriptController.java +++ b/src/main/java/com/apside/assist/db/backend/controller/ScriptController.java @@ -1,25 +1,25 @@ package com.apside.assist.db.backend.controller; import com.apside.assist.db.backend.model.LinkScriptTag; -import com.apside.assist.db.backend.model.Script;; +import com.apside.assist.db.backend.model.Script; import com.apside.assist.db.backend.service.ScriptsService; import lombok.extern.slf4j.Slf4j; -import org.eclipse.jgit.api.errors.GitAPIException; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.*; -import java.io.IOException; -import java.net.URISyntaxException; import java.util.List; @RestController @RequestMapping("/api") @Slf4j public class ScriptController { - @Autowired - ScriptsService scriptsService; + + private final ScriptsService scriptsService; + + public ScriptController(ScriptsService scriptsService) { + this.scriptsService = scriptsService; + } @GetMapping("/scripts") public ResponseEntity> getAllScripts() { diff --git a/src/main/java/com/apside/assist/db/backend/controller/TagsController.java b/src/main/java/com/apside/assist/db/backend/controller/TagsController.java index a733abb..73dc362 100644 --- a/src/main/java/com/apside/assist/db/backend/controller/TagsController.java +++ b/src/main/java/com/apside/assist/db/backend/controller/TagsController.java @@ -3,14 +3,10 @@ package com.apside.assist.db.backend.controller; import com.apside.assist.db.backend.model.Tag; import com.apside.assist.db.backend.service.TagsService; import lombok.extern.slf4j.Slf4j; -import org.eclipse.jgit.api.errors.GitAPIException; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.*; -import java.io.IOException; -import java.net.URISyntaxException; import java.util.List; @RestController @@ -18,8 +14,11 @@ import java.util.List; @Slf4j public class TagsController { - @Autowired - private TagsService tagsService; + private final TagsService tagsService; + + public TagsController(TagsService tagsService) { + this.tagsService = tagsService; + } @GetMapping("/tags/all") public ResponseEntity> getTags() { diff --git a/src/main/java/com/apside/assist/db/backend/service/implementation/GitServiceImpl.java b/src/main/java/com/apside/assist/db/backend/service/implementation/GitServiceImpl.java index 18c9b55..5d48afd 100644 --- a/src/main/java/com/apside/assist/db/backend/service/implementation/GitServiceImpl.java +++ b/src/main/java/com/apside/assist/db/backend/service/implementation/GitServiceImpl.java @@ -1,41 +1,56 @@ package com.apside.assist.db.backend.service.implementation; import com.apside.assist.db.backend.service.GitService; -import lombok.Data; import lombok.extern.slf4j.Slf4j; import org.eclipse.jgit.api.Git; import org.eclipse.jgit.api.RemoteAddCommand; import org.eclipse.jgit.api.errors.GitAPIException; import org.eclipse.jgit.transport.URIish; import org.eclipse.jgit.transport.UsernamePasswordCredentialsProvider; +import org.springframework.beans.factory.InitializingBean; import org.springframework.beans.factory.annotation.Value; +import org.springframework.core.io.PathResource; +import org.springframework.core.io.Resource; import org.springframework.stereotype.Service; import java.io.File; import java.io.IOException; import java.net.URISyntaxException; +import java.util.Objects; @Service @Slf4j -public class GitServiceImpl implements GitService { +public class GitServiceImpl implements GitService, InitializingBean { - private final String tempDirectoryPath; - - public GitServiceImpl(){ - tempDirectoryPath = new File(System.getProperty("user.dir")).getParent() + "\\AssistDB_AdditionalFiles"; - } - @Value("${USERNAME_GIT}") + private String tempDirectoryPath; + @Value("${assistDb.get.username}") private String userGit; - @Value("${ACCESS_TOKEN_GIT}") + @Value("${assistDb.get.password}") private String accesToken; - @Value("${URI_GIT}") + @Value("${assistDb.get.uri}") private String uriGit; private static final String NAME_URI = "origin"; private static final String COMMIT_MESSAGE = "commited"; private static final String BRANCH_NAME = "main"; + @Override + public void afterPropertiesSet() throws Exception { + log.info("Initialisation GIT"); + Resource resource = new PathResource("git"); + tempDirectoryPath = resource.getURI().getPath(); + if (Objects.requireNonNull(resource.getFile().list()).length == 0) { + log.info("Récupération GIT"); + Git.cloneRepository() + .setURI(uriGit) + .setDirectory(resource.getFile()) + .call(); + } else { + log.info("Fichiers GIT déjà existants"); + } + } + @Override public void pushToGit() throws IOException, GitAPIException, URISyntaxException { log.debug("Starting pushToGit method."); @@ -66,13 +81,13 @@ public class GitServiceImpl implements GitService { git.pull().setCredentialsProvider(createCredential()).setRemote(NAME_URI).setRemoteBranchName(BRANCH_NAME).call(); log.info("Pull from Git successful."); } catch (IOException|GitAPIException exception){ - log.error("Error push from git", exception); + log.error("Error pull from git", exception); throw exception; } } - public UsernamePasswordCredentialsProvider createCredential() { + private UsernamePasswordCredentialsProvider createCredential() { return new UsernamePasswordCredentialsProvider(userGit, accesToken); } } diff --git a/src/main/java/com/apside/assist/db/backend/service/implementation/InfoColumnServiceImpl.java b/src/main/java/com/apside/assist/db/backend/service/implementation/InfoColumnServiceImpl.java index b9963c1..dc9c4d3 100644 --- a/src/main/java/com/apside/assist/db/backend/service/implementation/InfoColumnServiceImpl.java +++ b/src/main/java/com/apside/assist/db/backend/service/implementation/InfoColumnServiceImpl.java @@ -1,22 +1,23 @@ package com.apside.assist.db.backend.service.implementation; -import com.apside.assist.db.backend.repository.InfoColumnRepository; import com.apside.assist.db.backend.model.InfoColumn; +import com.apside.assist.db.backend.repository.InfoColumnRepository; import com.apside.assist.db.backend.service.InfoColumnService; -import lombok.Data; import lombok.extern.slf4j.Slf4j; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.util.List; import java.util.Optional; -@Data @Service @Slf4j public class InfoColumnServiceImpl implements InfoColumnService { - @Autowired - private InfoColumnRepository infoColumnRepository; + + private final InfoColumnRepository infoColumnRepository; + + public InfoColumnServiceImpl(InfoColumnRepository infoColumnRepository) { + this.infoColumnRepository = infoColumnRepository; + } @Override public Optional getColumn(final Long id) { diff --git a/src/main/java/com/apside/assist/db/backend/service/implementation/InfoTableServiceImpl.java b/src/main/java/com/apside/assist/db/backend/service/implementation/InfoTableServiceImpl.java index 68ae169..1c3abfd 100644 --- a/src/main/java/com/apside/assist/db/backend/service/implementation/InfoTableServiceImpl.java +++ b/src/main/java/com/apside/assist/db/backend/service/implementation/InfoTableServiceImpl.java @@ -1,22 +1,22 @@ package com.apside.assist.db.backend.service.implementation; -import com.apside.assist.db.backend.model.InfoColumn; import com.apside.assist.db.backend.repository.InfoTableRepository; import com.apside.assist.db.backend.model.InfoTable; import com.apside.assist.db.backend.service.InfoTableService; -import lombok.Data; import lombok.extern.slf4j.Slf4j; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.util.Optional; -@Data @Service @Slf4j public class InfoTableServiceImpl implements InfoTableService { - @Autowired - private InfoTableRepository infoTableRepository; + + private final InfoTableRepository infoTableRepository; + + public InfoTableServiceImpl(InfoTableRepository infoTableRepository) { + this.infoTableRepository = infoTableRepository; + } @Override public Optional getTable(final Long id) { diff --git a/src/main/java/com/apside/assist/db/backend/service/implementation/LinkInfoServiceImpl.java b/src/main/java/com/apside/assist/db/backend/service/implementation/LinkInfoServiceImpl.java index 326609b..aa63acd 100644 --- a/src/main/java/com/apside/assist/db/backend/service/implementation/LinkInfoServiceImpl.java +++ b/src/main/java/com/apside/assist/db/backend/service/implementation/LinkInfoServiceImpl.java @@ -3,19 +3,20 @@ package com.apside.assist.db.backend.service.implementation; import com.apside.assist.db.backend.model.LinkInfo; import com.apside.assist.db.backend.repository.LinkInfoRepository; import com.apside.assist.db.backend.service.LinkInfoService; -import lombok.Data; import lombok.extern.slf4j.Slf4j; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.util.Optional; -@Data @Service @Slf4j public class LinkInfoServiceImpl implements LinkInfoService { - @Autowired - private LinkInfoRepository linkInfoRepository; + + private final LinkInfoRepository linkInfoRepository; + + public LinkInfoServiceImpl(LinkInfoRepository linkInfoRepository) { + this.linkInfoRepository = linkInfoRepository; + } @Override public Optional getLinkInfo(final Long id) { diff --git a/src/main/java/com/apside/assist/db/backend/service/implementation/ResetDataServiceImpl.java b/src/main/java/com/apside/assist/db/backend/service/implementation/ResetDataServiceImpl.java index b029b47..f097dbd 100644 --- a/src/main/java/com/apside/assist/db/backend/service/implementation/ResetDataServiceImpl.java +++ b/src/main/java/com/apside/assist/db/backend/service/implementation/ResetDataServiceImpl.java @@ -1,8 +1,8 @@ package com.apside.assist.db.backend.service.implementation; -import com.apside.assist.db.backend.model.LinkInfo; import com.apside.assist.db.backend.model.InfoColumn; import com.apside.assist.db.backend.model.InfoTable; +import com.apside.assist.db.backend.model.LinkInfo; import com.apside.assist.db.backend.model.json.Column; import com.apside.assist.db.backend.model.json.DataEnum; import com.apside.assist.db.backend.model.json.Schema; @@ -15,46 +15,38 @@ import com.fasterxml.jackson.databind.ObjectMapper; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.InitializingBean; import org.springframework.beans.factory.annotation.Value; +import org.springframework.core.io.PathResource; +import org.springframework.core.io.Resource; import org.springframework.stereotype.Service; -import org.springframework.beans.factory.annotation.Autowired; import java.nio.file.Files; -import java.nio.file.Path; import java.nio.file.Paths; import java.util.ArrayList; import java.util.List; -import java.util.stream.Collectors; +import java.util.Objects; @Service @Slf4j public class ResetDataServiceImpl implements ResetDataService, InitializingBean { - @Autowired - private InfoTableService infoTableService; - @Autowired - private InfoColumnService infoColumnService; - @Autowired - private LinkInfoService linkInfoService; + private final InfoTableService infoTableService; + private final InfoColumnService infoColumnService; + private final LinkInfoService linkInfoService; - @Value("${PATH_FOR_DATA}") - private String pathForData; + @Value("${assistDb.db.json.file}") + private String fileName; private String result; - private Path path; - private static final String TABLE_STRING = "table"; - private static final String SCHEMA_STRING = "schema"; - private static final String DATA_STRING = "data"; - private static final String COLUMN_STRING = "columns"; - private static final String TABLE_TEXT_STRING = "table_text"; - private static final String NAME_STRING = "name"; - private static final String DATA_TYPE_STRING = "data_type"; - private static final String LENGTH_STRING = "length"; - private static final String COLUMN_TEXT_STRING = "column_text"; + public ResetDataServiceImpl(InfoTableService infoTableService, InfoColumnService infoColumnService, LinkInfoService linkInfoService) { + this.infoTableService = infoTableService; + this.infoColumnService = infoColumnService; + this.linkInfoService = linkInfoService; + } @Override public void afterPropertiesSet() throws Exception { - path = Paths.get(pathForData); - result = new String(Files.readAllBytes(path)); + Resource resource = new PathResource("json/" + fileName); + result = new String(Files.readAllBytes(Paths.get(resource.getURI()))); } @Override @@ -83,7 +75,7 @@ public class ResetDataServiceImpl implements ResetDataService, InitializingBean } } } - List filteredListOfColumns = listOfColumns.stream().distinct().collect(Collectors.toList()); + List filteredListOfColumns = listOfColumns.stream().distinct().toList(); infoTableService.addMultipleTables(listOfTables); infoColumnService.addMultipleColumns(filteredListOfColumns); log.info("Insert all data into DB - success"); @@ -103,8 +95,8 @@ public class ResetDataServiceImpl implements ResetDataService, InitializingBean descCol = ""; } InfoColumn findCol = infoColumnService.getSpecCol(col.getName(), col.getData_type(), col.getLength(), descCol); - int idCol = Math.toIntExact(findCol.getId()); - if (findCol != null){ + if (Objects.nonNull(findCol)) { + int idCol = Math.toIntExact(findCol.getId()); listOfLink.add(new LinkInfo(dat.getTable(), schema.getSchema(), idCol)); } } diff --git a/src/main/java/com/apside/assist/db/backend/service/implementation/ScriptsServiceImpl.java b/src/main/java/com/apside/assist/db/backend/service/implementation/ScriptsServiceImpl.java index 0a1dcce..8ad4e0f 100644 --- a/src/main/java/com/apside/assist/db/backend/service/implementation/ScriptsServiceImpl.java +++ b/src/main/java/com/apside/assist/db/backend/service/implementation/ScriptsServiceImpl.java @@ -4,14 +4,14 @@ import com.apside.assist.db.backend.model.LinkScriptTag; import com.apside.assist.db.backend.model.Script; import com.apside.assist.db.backend.service.GitService; import com.apside.assist.db.backend.service.ScriptsService; -import lombok.Data; import lombok.extern.slf4j.Slf4j; import org.eclipse.jgit.api.errors.GitAPIException; import org.json.JSONArray; import org.json.JSONObject; import org.springframework.beans.factory.InitializingBean; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; +import org.springframework.core.io.PathResource; +import org.springframework.core.io.Resource; import org.springframework.stereotype.Service; import java.io.File; @@ -21,27 +21,28 @@ import java.net.URISyntaxException; import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.Paths; -import java.util.*; +import java.util.ArrayList; +import java.util.List; +import java.util.Objects; @Service @Slf4j public class ScriptsServiceImpl implements ScriptsService, InitializingBean { - @Autowired - private GitService gitService; - private String linkScriptTagPath; + + private final GitService gitService; private Path pathOfLink; - private String allScriptsContent; + private JSONObject dataGlobalScripts; private JSONArray dataLinkScriptsTags; private String tempDirectoryPath; private File scriptDirectory; - @Value("${PATH_FOR_SCRIPT_JSON}") - private String PATH_FOR_SCRIPT_JSON; + @Value("${assistDb.db.json.script}") + private String fileName; + + @Value("${assistDb.db.json.directory}") + private String directory; - @Value("${PATH_TO_SCRIPT_DIR}") - private String PATH_TO_SCRIPT_DIR; - private static final String USER_DIR_STRING = "user.dir"; private static final String FILE_NAME_STRING = "filename"; private static final String DESCRIPTION_STRING = "description"; private static final String TAG_NAME_STRING = "tagname"; @@ -49,17 +50,22 @@ public class ScriptsServiceImpl implements ScriptsService, InitializingBean { private static final String TAGS_STRING = "tags"; private static final String DATA_STRING = "data"; + public ScriptsServiceImpl(GitService gitService) { + this.gitService = gitService; + } + @Override public void afterPropertiesSet() throws Exception { - linkScriptTagPath = new File(System.getProperty(USER_DIR_STRING)).getParent() + PATH_FOR_SCRIPT_JSON; - pathOfLink = Paths.get(linkScriptTagPath); - tempDirectoryPath = new File(System.getProperty(USER_DIR_STRING)).getParent() + PATH_TO_SCRIPT_DIR; - scriptDirectory = new File(tempDirectoryPath); + Resource resource = new PathResource("git/" + fileName); + pathOfLink = Paths.get(resource.getURI()); + resource = new PathResource("git/" + directory); + tempDirectoryPath = resource.getURI().getPath(); + scriptDirectory = resource.getFile(); } @Override public void initialize() throws IOException { - allScriptsContent = new String((Files.readAllBytes(pathOfLink))); + String allScriptsContent = new String((Files.readAllBytes(pathOfLink))); dataGlobalScripts = new JSONObject(allScriptsContent); dataLinkScriptsTags = dataGlobalScripts.getJSONArray(DATA_STRING); } @@ -71,14 +77,16 @@ public class ScriptsServiceImpl implements ScriptsService, InitializingBean { List