Updated impoprt order

This commit is contained in:
itdominator 2024-07-27 01:06:37 -05:00
parent 8487384eda
commit b56f4df98a
17 changed files with 134 additions and 76 deletions

78
.factorypath Normal file
View File

@ -0,0 +1,78 @@
<factorypath>
<factorypathentry kind="VARJAR" id="M2_REPO/org/springframework/boot/spring-boot-starter-web/3.1.3/spring-boot-starter-web-3.1.3.jar" enabled="true" runInBatchMode="false"/>
<factorypathentry kind="VARJAR" id="M2_REPO/org/springframework/boot/spring-boot-starter/3.1.3/spring-boot-starter-3.1.3.jar" enabled="true" runInBatchMode="false"/>
<factorypathentry kind="VARJAR" id="M2_REPO/org/springframework/boot/spring-boot/3.1.3/spring-boot-3.1.3.jar" enabled="true" runInBatchMode="false"/>
<factorypathentry kind="VARJAR" id="M2_REPO/org/springframework/boot/spring-boot-autoconfigure/3.1.3/spring-boot-autoconfigure-3.1.3.jar" enabled="true" runInBatchMode="false"/>
<factorypathentry kind="VARJAR" id="M2_REPO/org/springframework/boot/spring-boot-starter-logging/3.1.3/spring-boot-starter-logging-3.1.3.jar" enabled="true" runInBatchMode="false"/>
<factorypathentry kind="VARJAR" id="M2_REPO/ch/qos/logback/logback-classic/1.4.11/logback-classic-1.4.11.jar" enabled="true" runInBatchMode="false"/>
<factorypathentry kind="VARJAR" id="M2_REPO/ch/qos/logback/logback-core/1.4.11/logback-core-1.4.11.jar" enabled="true" runInBatchMode="false"/>
<factorypathentry kind="VARJAR" id="M2_REPO/org/apache/logging/log4j/log4j-to-slf4j/2.20.0/log4j-to-slf4j-2.20.0.jar" enabled="true" runInBatchMode="false"/>
<factorypathentry kind="VARJAR" id="M2_REPO/org/apache/logging/log4j/log4j-api/2.20.0/log4j-api-2.20.0.jar" enabled="true" runInBatchMode="false"/>
<factorypathentry kind="VARJAR" id="M2_REPO/org/slf4j/jul-to-slf4j/2.0.7/jul-to-slf4j-2.0.7.jar" enabled="true" runInBatchMode="false"/>
<factorypathentry kind="VARJAR" id="M2_REPO/org/yaml/snakeyaml/1.33/snakeyaml-1.33.jar" enabled="true" runInBatchMode="false"/>
<factorypathentry kind="VARJAR" id="M2_REPO/org/springframework/boot/spring-boot-starter-json/3.1.3/spring-boot-starter-json-3.1.3.jar" enabled="true" runInBatchMode="false"/>
<factorypathentry kind="VARJAR" id="M2_REPO/com/fasterxml/jackson/core/jackson-databind/2.15.2/jackson-databind-2.15.2.jar" enabled="true" runInBatchMode="false"/>
<factorypathentry kind="VARJAR" id="M2_REPO/com/fasterxml/jackson/core/jackson-annotations/2.15.2/jackson-annotations-2.15.2.jar" enabled="true" runInBatchMode="false"/>
<factorypathentry kind="VARJAR" id="M2_REPO/com/fasterxml/jackson/core/jackson-core/2.15.2/jackson-core-2.15.2.jar" enabled="true" runInBatchMode="false"/>
<factorypathentry kind="VARJAR" id="M2_REPO/com/fasterxml/jackson/datatype/jackson-datatype-jdk8/2.15.2/jackson-datatype-jdk8-2.15.2.jar" enabled="true" runInBatchMode="false"/>
<factorypathentry kind="VARJAR" id="M2_REPO/com/fasterxml/jackson/datatype/jackson-datatype-jsr310/2.15.2/jackson-datatype-jsr310-2.15.2.jar" enabled="true" runInBatchMode="false"/>
<factorypathentry kind="VARJAR" id="M2_REPO/com/fasterxml/jackson/module/jackson-module-parameter-names/2.15.2/jackson-module-parameter-names-2.15.2.jar" enabled="true" runInBatchMode="false"/>
<factorypathentry kind="VARJAR" id="M2_REPO/org/springframework/boot/spring-boot-starter-tomcat/3.1.3/spring-boot-starter-tomcat-3.1.3.jar" enabled="true" runInBatchMode="false"/>
<factorypathentry kind="VARJAR" id="M2_REPO/org/apache/tomcat/embed/tomcat-embed-websocket/10.1.12/tomcat-embed-websocket-10.1.12.jar" enabled="true" runInBatchMode="false"/>
<factorypathentry kind="VARJAR" id="M2_REPO/org/springframework/spring-web/6.0.11/spring-web-6.0.11.jar" enabled="true" runInBatchMode="false"/>
<factorypathentry kind="VARJAR" id="M2_REPO/org/springframework/spring-webmvc/6.0.11/spring-webmvc-6.0.11.jar" enabled="true" runInBatchMode="false"/>
<factorypathentry kind="VARJAR" id="M2_REPO/org/springframework/boot/spring-boot-starter-security/3.1.3/spring-boot-starter-security-3.1.3.jar" enabled="true" runInBatchMode="false"/>
<factorypathentry kind="VARJAR" id="M2_REPO/org/springframework/spring-aop/6.0.11/spring-aop-6.0.11.jar" enabled="true" runInBatchMode="false"/>
<factorypathentry kind="VARJAR" id="M2_REPO/org/springframework/security/spring-security-config/6.1.3/spring-security-config-6.1.3.jar" enabled="true" runInBatchMode="false"/>
<factorypathentry kind="VARJAR" id="M2_REPO/org/springframework/security/spring-security-web/6.1.3/spring-security-web-6.1.3.jar" enabled="true" runInBatchMode="false"/>
<factorypathentry kind="VARJAR" id="M2_REPO/org/springframework/boot/spring-boot-starter-data-jpa/3.1.3/spring-boot-starter-data-jpa-3.1.3.jar" enabled="true" runInBatchMode="false"/>
<factorypathentry kind="VARJAR" id="M2_REPO/org/springframework/boot/spring-boot-starter-aop/3.1.3/spring-boot-starter-aop-3.1.3.jar" enabled="true" runInBatchMode="false"/>
<factorypathentry kind="VARJAR" id="M2_REPO/org/aspectj/aspectjweaver/1.9.20/aspectjweaver-1.9.20.jar" enabled="true" runInBatchMode="false"/>
<factorypathentry kind="VARJAR" id="M2_REPO/org/springframework/boot/spring-boot-starter-jdbc/3.1.3/spring-boot-starter-jdbc-3.1.3.jar" enabled="true" runInBatchMode="false"/>
<factorypathentry kind="VARJAR" id="M2_REPO/com/zaxxer/HikariCP/5.0.1/HikariCP-5.0.1.jar" enabled="true" runInBatchMode="false"/>
<factorypathentry kind="VARJAR" id="M2_REPO/org/hibernate/orm/hibernate-core/6.3.1.Final/hibernate-core-6.3.1.Final.jar" enabled="true" runInBatchMode="false"/>
<factorypathentry kind="VARJAR" id="M2_REPO/jakarta/transaction/jakarta.transaction-api/2.0.1/jakarta.transaction-api-2.0.1.jar" enabled="true" runInBatchMode="false"/>
<factorypathentry kind="VARJAR" id="M2_REPO/org/hibernate/common/hibernate-commons-annotations/6.0.6.Final/hibernate-commons-annotations-6.0.6.Final.jar" enabled="true" runInBatchMode="false"/>
<factorypathentry kind="VARJAR" id="M2_REPO/io/smallrye/jandex/3.1.2/jandex-3.1.2.jar" enabled="true" runInBatchMode="false"/>
<factorypathentry kind="VARJAR" id="M2_REPO/com/fasterxml/classmate/1.5.1/classmate-1.5.1.jar" enabled="true" runInBatchMode="false"/>
<factorypathentry kind="VARJAR" id="M2_REPO/net/bytebuddy/byte-buddy/1.14.6/byte-buddy-1.14.6.jar" enabled="true" runInBatchMode="false"/>
<factorypathentry kind="VARJAR" id="M2_REPO/org/glassfish/jaxb/jaxb-runtime/4.0.3/jaxb-runtime-4.0.3.jar" enabled="true" runInBatchMode="false"/>
<factorypathentry kind="VARJAR" id="M2_REPO/org/glassfish/jaxb/jaxb-core/4.0.3/jaxb-core-4.0.3.jar" enabled="true" runInBatchMode="false"/>
<factorypathentry kind="VARJAR" id="M2_REPO/org/eclipse/angus/angus-activation/2.0.1/angus-activation-2.0.1.jar" enabled="true" runInBatchMode="false"/>
<factorypathentry kind="VARJAR" id="M2_REPO/org/glassfish/jaxb/txw2/4.0.3/txw2-4.0.3.jar" enabled="true" runInBatchMode="false"/>
<factorypathentry kind="VARJAR" id="M2_REPO/com/sun/istack/istack-commons-runtime/4.1.2/istack-commons-runtime-4.1.2.jar" enabled="true" runInBatchMode="false"/>
<factorypathentry kind="VARJAR" id="M2_REPO/jakarta/inject/jakarta.inject-api/2.0.1/jakarta.inject-api-2.0.1.jar" enabled="true" runInBatchMode="false"/>
<factorypathentry kind="VARJAR" id="M2_REPO/org/springframework/spring-aspects/6.0.11/spring-aspects-6.0.11.jar" enabled="true" runInBatchMode="false"/>
<factorypathentry kind="VARJAR" id="M2_REPO/org/springframework/spring-jdbc/6.0.11/spring-jdbc-6.0.11.jar" enabled="true" runInBatchMode="false"/>
<factorypathentry kind="VARJAR" id="M2_REPO/org/springframework/spring-core/6.0.11/spring-core-6.0.11.jar" enabled="true" runInBatchMode="false"/>
<factorypathentry kind="VARJAR" id="M2_REPO/org/springframework/spring-jcl/6.0.11/spring-jcl-6.0.11.jar" enabled="true" runInBatchMode="false"/>
<factorypathentry kind="VARJAR" id="M2_REPO/org/springframework/spring-tx/6.0.11/spring-tx-6.0.11.jar" enabled="true" runInBatchMode="false"/>
<factorypathentry kind="VARJAR" id="M2_REPO/org/springframework/spring-beans/6.0.11/spring-beans-6.0.11.jar" enabled="true" runInBatchMode="false"/>
<factorypathentry kind="VARJAR" id="M2_REPO/org/springframework/data/spring-data-jpa/3.1.3/spring-data-jpa-3.1.3.jar" enabled="true" runInBatchMode="false"/>
<factorypathentry kind="VARJAR" id="M2_REPO/org/springframework/data/spring-data-commons/3.1.3/spring-data-commons-3.1.3.jar" enabled="true" runInBatchMode="false"/>
<factorypathentry kind="VARJAR" id="M2_REPO/org/springframework/spring-orm/6.0.11/spring-orm-6.0.11.jar" enabled="true" runInBatchMode="false"/>
<factorypathentry kind="VARJAR" id="M2_REPO/org/springframework/spring-context/6.0.11/spring-context-6.0.11.jar" enabled="true" runInBatchMode="false"/>
<factorypathentry kind="VARJAR" id="M2_REPO/org/antlr/antlr4-runtime/4.10.1/antlr4-runtime-4.10.1.jar" enabled="true" runInBatchMode="false"/>
<factorypathentry kind="VARJAR" id="M2_REPO/jakarta/annotation/jakarta.annotation-api/2.1.1/jakarta.annotation-api-2.1.1.jar" enabled="true" runInBatchMode="false"/>
<factorypathentry kind="VARJAR" id="M2_REPO/org/slf4j/slf4j-api/2.0.7/slf4j-api-2.0.7.jar" enabled="true" runInBatchMode="false"/>
<factorypathentry kind="VARJAR" id="M2_REPO/org/springframework/security/spring-security-core/6.1.3/spring-security-core-6.1.3.jar" enabled="true" runInBatchMode="false"/>
<factorypathentry kind="VARJAR" id="M2_REPO/org/springframework/security/spring-security-crypto/6.1.3/spring-security-crypto-6.1.3.jar" enabled="true" runInBatchMode="false"/>
<factorypathentry kind="VARJAR" id="M2_REPO/org/springframework/spring-expression/6.0.11/spring-expression-6.0.11.jar" enabled="true" runInBatchMode="false"/>
<factorypathentry kind="VARJAR" id="M2_REPO/io/micrometer/micrometer-observation/1.11.3/micrometer-observation-1.11.3.jar" enabled="true" runInBatchMode="false"/>
<factorypathentry kind="VARJAR" id="M2_REPO/io/micrometer/micrometer-commons/1.11.3/micrometer-commons-1.11.3.jar" enabled="true" runInBatchMode="false"/>
<factorypathentry kind="VARJAR" id="M2_REPO/org/apache/tomcat/embed/tomcat-embed-jasper/10.1.12/tomcat-embed-jasper-10.1.12.jar" enabled="true" runInBatchMode="false"/>
<factorypathentry kind="VARJAR" id="M2_REPO/org/apache/tomcat/embed/tomcat-embed-core/10.1.12/tomcat-embed-core-10.1.12.jar" enabled="true" runInBatchMode="false"/>
<factorypathentry kind="VARJAR" id="M2_REPO/org/apache/tomcat/tomcat-annotations-api/10.1.12/tomcat-annotations-api-10.1.12.jar" enabled="true" runInBatchMode="false"/>
<factorypathentry kind="VARJAR" id="M2_REPO/org/apache/tomcat/embed/tomcat-embed-el/10.1.12/tomcat-embed-el-10.1.12.jar" enabled="true" runInBatchMode="false"/>
<factorypathentry kind="VARJAR" id="M2_REPO/org/eclipse/jdt/ecj/3.33.0/ecj-3.33.0.jar" enabled="true" runInBatchMode="false"/>
<factorypathentry kind="VARJAR" id="M2_REPO/com/h2database/h2/2.1.214/h2-2.1.214.jar" enabled="true" runInBatchMode="false"/>
<factorypathentry kind="VARJAR" id="M2_REPO/org/hibernate/orm/hibernate-community-dialects/6.1.6.Final/hibernate-community-dialects-6.1.6.Final.jar" enabled="true" runInBatchMode="false"/>
<factorypathentry kind="VARJAR" id="M2_REPO/org/jboss/logging/jboss-logging/3.5.3.Final/jboss-logging-3.5.3.Final.jar" enabled="true" runInBatchMode="false"/>
<factorypathentry kind="VARJAR" id="M2_REPO/org/xerial/sqlite-jdbc/3.30.1/sqlite-jdbc-3.30.1.jar" enabled="true" runInBatchMode="false"/>
<factorypathentry kind="VARJAR" id="M2_REPO/org/projectlombok/lombok/1.18.28/lombok-1.18.28.jar" enabled="true" runInBatchMode="false"/>
<factorypathentry kind="VARJAR" id="M2_REPO/jakarta/persistence/jakarta.persistence-api/3.1.0/jakarta.persistence-api-3.1.0.jar" enabled="true" runInBatchMode="false"/>
<factorypathentry kind="VARJAR" id="M2_REPO/jakarta/validation/jakarta.validation-api/3.0.2/jakarta.validation-api-3.0.2.jar" enabled="true" runInBatchMode="false"/>
<factorypathentry kind="VARJAR" id="M2_REPO/commons-codec/commons-codec/1.11/commons-codec-1.11.jar" enabled="true" runInBatchMode="false"/>
<factorypathentry kind="VARJAR" id="M2_REPO/jakarta/xml/bind/jakarta.xml.bind-api/4.0.0/jakarta.xml.bind-api-4.0.0.jar" enabled="true" runInBatchMode="false"/>
<factorypathentry kind="VARJAR" id="M2_REPO/jakarta/activation/jakarta.activation-api/2.1.2/jakarta.activation-api-2.1.2.jar" enabled="true" runInBatchMode="false"/>
</factorypath>

View File

@ -0,0 +1,5 @@
eclipse.preferences.version=1
encoding//src/main/java=UTF-8
encoding//src/main/resources=UTF-8
encoding//src/test/java=UTF-8
encoding/<project>=UTF-8

View File

@ -0,0 +1,4 @@
eclipse.preferences.version=1
org.eclipse.jdt.apt.aptEnabled=true
org.eclipse.jdt.apt.genSrcDir=target/generated-sources/annotations
org.eclipse.jdt.apt.genTestSrcDir=target/generated-test-sources/test-annotations

View File

@ -0,0 +1,10 @@
eclipse.preferences.version=1
org.eclipse.jdt.core.compiler.codegen.methodParameters=generate
org.eclipse.jdt.core.compiler.codegen.targetPlatform=17
org.eclipse.jdt.core.compiler.compliance=17
org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled
org.eclipse.jdt.core.compiler.problem.forbiddenReference=warning
org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=ignore
org.eclipse.jdt.core.compiler.processAnnotations=enabled
org.eclipse.jdt.core.compiler.release=enabled
org.eclipse.jdt.core.compiler.source=17

View File

@ -0,0 +1,4 @@
activeProfiles=
eclipse.preferences.version=1
resolveWorkspaceProjects=true
version=1

View File

@ -1,11 +1,10 @@
package com.itdominator.api; package com.itdominator.api;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Primary; import org.springframework.context.annotation.Primary;
import org.springframework.core.env.Environment; import org.springframework.core.env.Environment;
import org.springframework.context.annotation.Configuration;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.datasource.DriverManagerDataSource; import org.springframework.jdbc.datasource.DriverManagerDataSource;
@Configuration @Configuration
@ -20,8 +19,8 @@ public class DataSourceConfig {
final DriverManagerDataSource dataSource = new DriverManagerDataSource(); final DriverManagerDataSource dataSource = new DriverManagerDataSource();
dataSource.setDriverClassName(env.getProperty("driverClassName")); dataSource.setDriverClassName(env.getProperty("driverClassName"));
dataSource.setUrl(env.getProperty("url")); dataSource.setUrl(env.getProperty("url"));
// dataSource.setUsername(env.getProperty("user")); // dataSource.setUsername(env.getProperty("user"));
// dataSource.setPassword(env.getProperty("password")); // dataSource.setPassword(env.getProperty("password"));
return dataSource; return dataSource;
} }
} }

View File

@ -1,36 +1,34 @@
package com.itdominator.api.controller; package com.itdominator.api.controller;
import java.lang.String;
import org.springframework.stereotype.Controller; import org.springframework.stereotype.Controller;
import org.springframework.ui.Model; import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import com.itdominator.api.dto.ScanQuery; import com.itdominator.api.dto.ScanQuery;
import com.itdominator.api.dto.User; import com.itdominator.api.dto.User;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
@Controller @Controller
@Slf4j @Slf4j
public class BaseController { public class BaseController {
@GetMapping({"/", "home"}) @GetMapping({ "/", "home" })
public String index() { public String index() {
return "index"; return "index";
} }
@GetMapping("/register") @PostMapping("/register")
public String register(Model model) { public String register(Model model) {
model.addAttribute("user", new User()); model.addAttribute("user", new User());
return "register"; return "register";
} }
@PostMapping("/submit-for-scan")
@GetMapping("/submit-for-scan")
public String submitForScan(Model model) { public String submitForScan(Model model) {
model.addAttribute("scan_query", new ScanQuery()); model.addAttribute("scan_query", new ScanQuery());

View File

@ -1,14 +1,11 @@
package com.itdominator.api.controller; package com.itdominator.api.controller;
import java.io.IOException; import java.io.IOException;
import java.nio.file.Files; import java.nio.file.Files;
import java.nio.file.Path;
import java.util.HashSet; import java.util.HashSet;
import java.util.List;
import java.util.Set;
import org.apache.commons.codec.digest.DigestUtils; import org.apache.commons.codec.digest.DigestUtils;
import org.hibernate.mapping.List;
import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.security.config.annotation.method.configuration.EnableMethodSecurity; import org.springframework.security.config.annotation.method.configuration.EnableMethodSecurity;
import org.springframework.validation.annotation.Validated; import org.springframework.validation.annotation.Validated;
@ -30,12 +27,9 @@ import jakarta.validation.Valid;
import jakarta.validation.constraints.Max; import jakarta.validation.constraints.Max;
import jakarta.validation.constraints.Min; import jakarta.validation.constraints.Min;
import jakarta.validation.constraints.Pattern; import jakarta.validation.constraints.Pattern;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
@RestController @RestController
@EnableMethodSecurity(securedEnabled = true, prePostEnabled = true) @EnableMethodSecurity(securedEnabled = true, prePostEnabled = true)
@RequiredArgsConstructor @RequiredArgsConstructor
@ -46,31 +40,24 @@ public class ThumbnailerApiController {
private final ThumbnailerService thumbnailerService; private final ThumbnailerService thumbnailerService;
private final Thumbnailer thumbnailer; private final Thumbnailer thumbnailer;
@PreAuthorize("hasRole('User')") @PreAuthorize("hasRole('User')")
@PostMapping("/get-thumbnail/id/{id}") @PostMapping("/get-thumbnail/id/{id}")
public ThumbnailDto getThumbnailById( public ThumbnailDto getThumbnailById(
@PathVariable @PathVariable @Min(value = 0L, message = "Can't be negative number...") @Max(value = 99999999L, message = "ID too large...") final int id) {
@Min(value = 0L, message = "Can't be negative number...")
@Max(value = 99999999L, message = "ID too large...") final int id
) {
return thumbnailerService.getThumbnailById(id); return thumbnailerService.getThumbnailById(id);
} }
@PreAuthorize("hasRole('User')") @PreAuthorize("hasRole('User')")
@PostMapping("/get-thumbnail/hash/{fileHash}") @PostMapping("/get-thumbnail/hash/{fileHash}")
public ThumbnailDto getThumbnailByHash( public ThumbnailDto getThumbnailByHash(
@Pattern(regexp = "[a-zA-Z0-9]{32}*$") @PathVariable("fileHash") final String fileHash @Pattern(regexp = "[a-zA-Z0-9]{32}*$") @PathVariable("fileHash") final String fileHash) {
) {
return thumbnailerService.getThumbnailByHash(fileHash); return thumbnailerService.getThumbnailByHash(fileHash);
} }
@PreAuthorize("hasRole('User')") @PreAuthorize("hasRole('User')")
@PostMapping("/get-thumbnail") @PostMapping("/get-thumbnail")
public ThumbnailDto getThumbnailByIdOrHashQuery( public ThumbnailDto getThumbnailByIdOrHashQuery(
@Valid @RequestBody ThumbnailSearchCriteria criteria @Valid @RequestBody ThumbnailSearchCriteria criteria) {
) {
return thumbnailerService.getThumbnailByIdOrHashQuery(criteria); return thumbnailerService.getThumbnailByIdOrHashQuery(criteria);
} }
@ -84,9 +71,8 @@ public class ThumbnailerApiController {
@PreAuthorize("hasRole('User')") @PreAuthorize("hasRole('User')")
@PostMapping("/scan-target") @PostMapping("/scan-target")
public Set<String> scanTarget( public Set<String> scanTarget(
@ModelAttribute("scan_query") ScanQuery query @ModelAttribute("scan_query") ScanQuery query) throws IOException {
) throws IOException { Set<Path> paths = thumbnailer.collectVideoFilePaths(query.getPath());
Set<Path> paths = thumbnailer.collectVideoFilePaths(query.getPath());
Set<String> files = new HashSet<>(); Set<String> files = new HashSet<>();
thumbnailer.generateThumbnails(paths); thumbnailer.generateThumbnails(paths);
@ -95,11 +81,10 @@ public class ThumbnailerApiController {
String fileHash = DigestUtils.sha256Hex(fileName); String fileHash = DigestUtils.sha256Hex(fileName);
// files.add( path.getFileName().toString() ); // files.add( path.getFileName().toString() );
files.add( path.toString() ); files.add(path.toString());
thumbnailerService.saveThumbnail( thumbnailerService.saveThumbnail(
new Thumbnails(fileName, fileHash, Files.readAllBytes( Path.of("/tmp/" + fileHash + ".jpg") ) ) new Thumbnails(fileName, fileHash, Files.readAllBytes(Path.of("/tmp/" + fileHash + ".jpg"))));
);
} }
return files; return files;

View File

@ -1,10 +1,8 @@
package com.itdominator.api.dto; package com.itdominator.api.dto;
import lombok.Data; import lombok.Data;
@Data @Data
public class ScanQuery { public class ScanQuery {
private String path; private String path;
} }

View File

@ -1,12 +1,10 @@
package com.itdominator.api.dto; package com.itdominator.api.dto;
import java.io.Serializable; import java.io.Serializable;
import lombok.Data; import lombok.Data;
import lombok.EqualsAndHashCode; import lombok.EqualsAndHashCode;
@Data @Data
@EqualsAndHashCode(onlyExplicitlyIncluded = true) @EqualsAndHashCode(onlyExplicitlyIncluded = true)
public class ThumbnailDto implements Serializable { public class ThumbnailDto implements Serializable {

View File

@ -1,6 +1,5 @@
package com.itdominator.api.dto; package com.itdominator.api.dto;
import java.io.Serializable; import java.io.Serializable;
import org.springframework.validation.annotation.Validated; import org.springframework.validation.annotation.Validated;
@ -8,10 +7,8 @@ import org.springframework.validation.annotation.Validated;
import jakarta.validation.constraints.Max; import jakarta.validation.constraints.Max;
import jakarta.validation.constraints.Min; import jakarta.validation.constraints.Min;
import jakarta.validation.constraints.Pattern; import jakarta.validation.constraints.Pattern;
import lombok.Data; import lombok.Data;
@Data @Data
@Validated @Validated
public class ThumbnailSearchCriteria implements Serializable { public class ThumbnailSearchCriteria implements Serializable {

View File

@ -1,11 +1,9 @@
package com.itdominator.api.dto; package com.itdominator.api.dto;
import lombok.Data; import lombok.Data;
@Data @Data
public class User { public class User {
private String email; private String email;
private String password; private String password;
} }

View File

@ -1,6 +1,5 @@
package com.itdominator.api.entities; package com.itdominator.api.entities;
import java.io.Serializable; import java.io.Serializable;
import jakarta.persistence.Column; import jakarta.persistence.Column;
@ -10,11 +9,9 @@ import jakarta.persistence.GenerationType;
import jakarta.persistence.Id; import jakarta.persistence.Id;
import jakarta.persistence.Table; import jakarta.persistence.Table;
import jakarta.validation.constraints.Pattern; import jakarta.validation.constraints.Pattern;
import lombok.Data; import lombok.Data;
import lombok.EqualsAndHashCode; import lombok.EqualsAndHashCode;
@Entity @Entity
@Table @Table
@Data @Data
@ -42,7 +39,7 @@ public class Thumbnails implements Serializable {
public Thumbnails(String fileName, String fileHash, byte[] image) { public Thumbnails(String fileName, String fileHash, byte[] image) {
this.fileName = fileName; this.fileName = fileName;
this.fileHash = fileHash; this.fileHash = fileHash;
this.image = image; this.image = image;
} }
} }

View File

@ -1,12 +1,10 @@
package com.itdominator.api.entities; package com.itdominator.api.entities;
import java.io.Serializable; import java.io.Serializable;
import lombok.Data; import lombok.Data;
import lombok.NoArgsConstructor; import lombok.NoArgsConstructor;
@Data @Data
@NoArgsConstructor @NoArgsConstructor
public class ThumbnailsId implements Serializable { public class ThumbnailsId implements Serializable {

View File

@ -1,8 +1,6 @@
package com.itdominator.api.repositories; package com.itdominator.api.repositories;
import org.hibernate.mapping.List;
import java.util.List;
import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Query; import org.springframework.data.jpa.repository.Query;
import org.springframework.stereotype.Repository; import org.springframework.stereotype.Repository;
@ -11,8 +9,6 @@ import com.itdominator.api.dto.ThumbnailDto;
import com.itdominator.api.entities.Thumbnails; import com.itdominator.api.entities.Thumbnails;
import com.itdominator.api.entities.ThumbnailsId; import com.itdominator.api.entities.ThumbnailsId;
@Repository @Repository
public interface ThumbnailRepository extends JpaRepository<Thumbnails, ThumbnailsId> { public interface ThumbnailRepository extends JpaRepository<Thumbnails, ThumbnailsId> {

View File

@ -1,8 +1,6 @@
package com.itdominator.api.services; package com.itdominator.api.services;
import org.hibernate.mapping.List;
import java.util.List;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.validation.annotation.Validated; import org.springframework.validation.annotation.Validated;
@ -14,8 +12,6 @@ import com.itdominator.api.repositories.ThumbnailRepository;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
@RequiredArgsConstructor @RequiredArgsConstructor
@Service @Service
@Validated @Validated
@ -24,12 +20,10 @@ public class ThumbnailerService {
private final ThumbnailRepository thumbnailRepository; private final ThumbnailRepository thumbnailRepository;
public ThumbnailDto getThumbnailById(final int id) { public ThumbnailDto getThumbnailById(final int id) {
return thumbnailRepository.findThumbnailById(id); return thumbnailRepository.findThumbnailById(id);
} }
public ThumbnailDto getThumbnailByHash(final String fileHash) { public ThumbnailDto getThumbnailByHash(final String fileHash) {
return thumbnailRepository.findThumbnailByHash(fileHash); return thumbnailRepository.findThumbnailByHash(fileHash);
} }

View File

@ -3,10 +3,8 @@ package com.itdominator.api.util;
import java.io.IOException; import java.io.IOException;
import java.nio.file.DirectoryStream; import java.nio.file.DirectoryStream;
import java.nio.file.Files; import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths; import java.nio.file.Paths;
import java.util.HashSet; import java.util.HashSet;
import java.util.Set;
import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeUnit;
import org.apache.commons.codec.digest.DigestUtils; import org.apache.commons.codec.digest.DigestUtils;
@ -15,8 +13,6 @@ import org.springframework.stereotype.Component;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
@Component @Component
@RequiredArgsConstructor @RequiredArgsConstructor
public class Thumbnailer { public class Thumbnailer {
@ -27,12 +23,12 @@ public class Thumbnailer {
public Set<Path> collectVideoFilePaths(final String dir) throws IOException { public Set<Path> collectVideoFilePaths(final String dir) throws IOException {
Set<Path> paths = new HashSet<>(); Set<Path> paths = new HashSet<>();
DirectoryStream<Path> stream = Files.newDirectoryStream( Paths.get(dir) ); DirectoryStream<Path> stream = Files.newDirectoryStream(Paths.get(dir));
for (Path path : stream) { for (Path path : stream) {
if ( !Files.isDirectory(path) ) { if (!Files.isDirectory(path)) {
String target = path.getFileName().toString(); String target = path.getFileName().toString();
for (String filterItem : videoFilter) { for (String filterItem : videoFilter) {
if ( target.endsWith(filterItem) ) { if (target.endsWith(filterItem)) {
paths.add(path); paths.add(path);
} }
} }
@ -46,13 +42,16 @@ public class Thumbnailer {
for (Path path : paths) { for (Path path : paths) {
String fileName = path.getFileName().toString(); String fileName = path.getFileName().toString();
String fileHash = DigestUtils.sha256Hex(fileName); String fileHash = DigestUtils.sha256Hex(fileName);
generateThumbnail(path.toString(), "/tmp/" + fileHash + ".jpg","65%"); generateThumbnail(path.toString(), "/tmp/" + fileHash + ".jpg", "65%");
} }
} }
// proc = subprocess.Popen([self.FFMPG_THUMBNLR, "-t", scrub_percent, "-s", "300", "-c", "jpg", "-i", full_path, "-o", hash_img_path]) // proc = subprocess.Popen([self.FFMPG_THUMBNLR, "-t", scrub_percent, "-s",
private void generateThumbnail(final String full_path, final String hash_img_path, final String scrub_percent) throws IOException { // "300", "-c", "jpg", "-i", full_path, "-o", hash_img_path])
ProcessBuilder pb = new ProcessBuilder("ffmpegthumbnailer", "-t", scrub_percent, "-s", "300", "-c", "jpg", "-i", full_path, "-o", hash_img_path); private void generateThumbnail(final String full_path, final String hash_img_path, final String scrub_percent)
throws IOException {
ProcessBuilder pb = new ProcessBuilder("ffmpegthumbnailer", "-t", scrub_percent, "-s", "300", "-c", "jpg", "-i",
full_path, "-o", hash_img_path);
Process p = pb.start(); Process p = pb.start();
while (p.isAlive()) { while (p.isAlive()) {
try { try {