commit 4e7daea415e0393ce030901611d247c2f6a16898 Author: chahine Date: Thu Aug 15 17:21:55 2024 +0000 Initial commit diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..9c9bc9f --- /dev/null +++ b/.gitignore @@ -0,0 +1,16 @@ +# Ignore Gradle build output directory +build +bin +.gradle/ +src/auto/ +.settings/ +.classpath +.project +src/main/resources/static +gradlew +gradlew.bat +.idea/ +gradle/wrapper/gradle-wrapper.jar +gradle/wrapper/gradle-wrapper.properties +dependencies.gradle +/idcore.tar diff --git a/build.gradle b/build.gradle new file mode 100644 index 0000000..c47bf80 --- /dev/null +++ b/build.gradle @@ -0,0 +1,57 @@ +plugins { + id 'java' + id 'org.springframework.boot' version '3.1.1' + id 'edu.sc.seis.launch4j' version '2.5.1' + id 'com.github.johnrengelman.shadow' version '7.0.0' + id 'io.spring.dependency-management' version '1.0.7.RELEASE' +} + +launch4j { + headerType='console' + outfile = 'scanuploader.exe' + mainClassName = 'systems.archide.scanuploader.Cli' + chdir = '' + bundledJrePath = '%JAVA_HOME%' + jarTask = project.tasks.shadowJar +} + + +repositories { + mavenCentral() + jcenter() +} + +sourceSets.main.java.srcDirs += 'src/auto/java' +sourceSets.main.resources.srcDirs += 'src/auto/resources' + +dependencies { + implementation group: 'com.machinezoo.sourceafis', name: 'sourceafis', version: '3.11.0' + + implementation 'org.xerial:sqlite-jdbc:3.41.2.1' + + implementation 'com.cedarsoftware:json-io:4.13.0' + implementation "org.springframework:spring-web:6.0.10" + implementation "org.springframework.boot:spring-boot-starter-web:3.1.1" + implementation "org.postgresql:postgresql:42.2.16" + implementation 'org.apache.commons:commons-lang3:3.12.0' + + implementation 'com.google.guava:guava:28.2-jre' + + implementation 'com.zaxxer:HikariCP:3.4.5' + compileOnly 'jakarta.servlet:jakarta.servlet-api:6.0.0' + implementation 'javax.annotation:javax.annotation-api:1.3.2' + + implementation 'com.fasterxml.jackson.datatype:jackson-datatype-jsr310:2.7.3' + +} +dependencyManagement { + imports { + mavenBom "io.grpc:grpc-bom:1.48.0" + } +} +shadowJar { + manifest { + attributes 'Main-Class': 'systems.archide.scanuploader.Cli' + } + mergeServiceFiles() +} \ No newline at end of file diff --git a/settings.gradle b/settings.gradle new file mode 100644 index 0000000..06d4017 --- /dev/null +++ b/settings.gradle @@ -0,0 +1,9 @@ +pluginManagement { + repositories { + gradlePluginPortal() + if (settings.hasProperty("repo")) + maven { + url repo + } + } +} \ No newline at end of file diff --git a/src/main/java/systems/archide/scanuploader/Cli.java b/src/main/java/systems/archide/scanuploader/Cli.java new file mode 100644 index 0000000..296c907 --- /dev/null +++ b/src/main/java/systems/archide/scanuploader/Cli.java @@ -0,0 +1,39 @@ +package systems.archide.scanuploader; + +import java.io.FileInputStream; +import java.io.IOException; +import java.util.Properties; + +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.scheduling.annotation.EnableScheduling; + +@EnableScheduling +@SpringBootApplication(scanBasePackages = { "systems.archide.core", "com.cocentris.spring.rest.security", + "com.cocentris.orm", "systems.archide.scanuploader" }) +public class Cli { + + public static String scanPath; + + public static void main(String[] args) { + Properties prop = new Properties(); + FileInputStream input = null; + try { + input = new FileInputStream("config.ini"); + prop.load(input); + scanPath = prop.getProperty("scan.path"); + } catch (IOException ex) { + ex.printStackTrace(); + } finally { + if (input != null) { + try { + input.close(); + } catch (IOException e) { + e.printStackTrace(); + } + } + } + SpringApplication.run(Cli.class, args); + } + +} diff --git a/src/main/java/systems/archide/scanuploader/SyncFile.java b/src/main/java/systems/archide/scanuploader/SyncFile.java new file mode 100644 index 0000000..25041d6 --- /dev/null +++ b/src/main/java/systems/archide/scanuploader/SyncFile.java @@ -0,0 +1,51 @@ +package systems.archide.scanuploader; + +import java.io.File; +import java.io.IOException; +import java.sql.SQLException; +import java.util.List; + +import org.apache.commons.io.FileUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.scheduling.annotation.Scheduled; +import org.springframework.stereotype.Component; + +import systems.archide.core.pojo.DigitalizationCreateRequest; +import systems.archide.core.pojo.FileQueue; +import systems.archide.core.repository.FileQueueRepository; +import systems.archide.core.rest.client.ApplyRestClient; + +@Component +public class SyncFile { + + @Autowired + FileQueueRepository fileQueueRepository; + + + + @Scheduled(fixedDelay = 50000) + public void syncDigitalizationFiles() throws IOException, SQLException { + + File source = new File(Cli.scanPath); + for (File sourceEntry : source.listFiles()) { + List digitalizationQueues = fileQueueRepository + .findByFilename(sourceEntry.getName()); + if (digitalizationQueues.isEmpty()) { + DigitalizationCreateRequest digitalizationCreateRequest = new DigitalizationCreateRequest(); + digitalizationCreateRequest.setFileName(sourceEntry.getName()); + byte[] content = FileUtils.readFileToByteArray(sourceEntry); + digitalizationCreateRequest.setContent(content); + Long id = ApplyRestClient.createDigitalizationMtlb(null, digitalizationCreateRequest); + if (id != null) { + FileQueue localeFileQueue = new FileQueue(); + localeFileQueue.setFilename(sourceEntry.getName()); + fileQueueRepository.insert(localeFileQueue); + } + else + throw new RuntimeException("Digitalization Mtlb creation failed !"); + } + } + + } + +} diff --git a/src/main/resources/digitalize.properties b/src/main/resources/digitalize.properties new file mode 100644 index 0000000..b893d52 --- /dev/null +++ b/src/main/resources/digitalize.properties @@ -0,0 +1 @@ +db.url=jdbc:sqlite:C:/ScanUploader/db/default.db \ No newline at end of file diff --git a/src/templates/EnvironmentInfo.java b/src/templates/EnvironmentInfo.java new file mode 100644 index 0000000..236cdd9 --- /dev/null +++ b/src/templates/EnvironmentInfo.java @@ -0,0 +1,15 @@ +package systems.archide.scanuploader; + +public class EnvironmentInfo { + + public static String serverProtocol = "{{#idha security_pki_type '!=' 'none'}}https{{else}}http{{/idha}}"; + + public static String serverDomain = "{{archide_core_hostname}}"; + + static String url = serverProtocol + "://" + serverDomain + "/api"; + + public static String getUrl() { + return url; + } + +}