Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
87 changes: 87 additions & 0 deletions descriptors/ModuleDescriptor-template.json
Original file line number Diff line number Diff line change
Expand Up @@ -227,6 +227,56 @@
"users.item.post",
"users.item.put"
]
},
{
"methods": [
"GET"
],
"pathPattern": "/data-export-spring/job-deletion-intervals",
"permissionsRequired": [
"data-export.job-deletion-intervals.collection.get"
],
"modulePermissions": []
},
{
"methods": [
"GET"
],
"pathPattern": "/data-export-spring/job-deletion-intervals/{exportType}",
"permissionsRequired": [
"data-export.job-deletion-intervals.item.get"
],
"modulePermissions": []
},
{
"methods": [
"POST"
],
"pathPattern": "/data-export-spring/job-deletion-intervals",
"permissionsRequired": [
"data-export.job-deletion-intervals.item.post"
],
"modulePermissions": []
},
{
"methods": [
"PUT"
],
"pathPattern": "/data-export-spring/job-deletion-intervals/{exportType}",
"permissionsRequired": [
"data-export.job-deletion-intervals.item.put"
],
"modulePermissions": []
},
{
"methods": [
"DELETE"
],
"pathPattern": "/data-export-spring/job-deletion-intervals/{exportType}",
"permissionsRequired": [
"data-export.job-deletion-intervals.item.delete"
],
"modulePermissions": []
}
]
},
Expand Down Expand Up @@ -377,6 +427,43 @@
"orders-storage.purchase-orders.collection.get",
"orders-storage.pieces.collection.get"
]
},
{
"permissionName": "data-export.job-deletion-intervals.collection.get",
"displayName": "Get job deletion intervals",
"description": "Get job deletion intervals"
},
{
"permissionName": "data-export.job-deletion-intervals.item.get",
"displayName": "Get job deletion interval",
"description": "Get job deletion interval by export type"
},
{
"permissionName": "data-export.job-deletion-intervals.item.post",
"displayName": "Create/update job deletion interval",
"description": "Create/update job deletion interval"
},
{
"permissionName": "data-export.job-deletion-intervals.item.put",
"displayName": "Update job deletion interval",
"description": "Update job deletion interval"
},
{
"permissionName": "data-export.job-deletion-intervals.item.delete",
"displayName": "Delete job deletion interval",
"description": "Delete job deletion interval"
},
{
"permissionName": "data-export.job-deletion-intervals.all",
"displayName": "Job deletion intervals - all permissions",
"description": "All permissions for job deletion intervals",
"subPermissions": [
"data-export.job-deletion-intervals.collection.get",
"data-export.job-deletion-intervals.item.get",
"data-export.job-deletion-intervals.item.post",
"data-export.job-deletion-intervals.item.put",
"data-export.job-deletion-intervals.item.delete"
]
}
],
"metadata": {
Expand Down
34 changes: 32 additions & 2 deletions pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -31,8 +31,8 @@
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>

<jobs.yaml.file>${project.basedir}/src/main/resources/swagger.api/jobs.yaml</jobs.yaml.file>
<export-configs.yaml.file>${project.basedir}/src/main/resources/swagger.api/export-configs.yaml
</export-configs.yaml.file>
<export-configs.yaml.file>${project.basedir}/src/main/resources/swagger.api/export-configs.yaml</export-configs.yaml.file>
<job-deletion-intervals.yaml.file>${project.basedir}/src/main/resources/swagger.api/job-deletion-intervals.yaml</job-deletion-intervals.yaml.file>

<folio-spring-base.version>9.0.0</folio-spring-base.version>
<folio-service-tools.version>4.1.1</folio-service-tools.version>
Expand Down Expand Up @@ -397,6 +397,36 @@
</configOptions>
</configuration>
</execution>
<execution>
<id>job-deletion-intervals</id>
<goals>
<goal>generate</goal>
</goals>
<configuration>
<inputSpec>${job-deletion-intervals.yaml.file}</inputSpec>
<output>${project.build.directory}/generated-sources</output>
<generatorName>spring</generatorName>
<modelPackage>${project.groupId}.des.domain.dto.delete_interval</modelPackage>
<apiPackage>${project.groupId}.des.rest.resource</apiPackage>
<generateApis>true</generateApis>
<generateApiTests>true</generateApiTests>
<generateApiDocumentation>true</generateApiDocumentation>
<generateModels>true</generateModels>
<generateModelTests>false</generateModelTests>
<generateSupportingFiles>true</generateSupportingFiles>
<supportingFilesToGenerate>ApiUtil.java</supportingFilesToGenerate>
<generateModelDocumentation>true</generateModelDocumentation>
<importMappings>
<importMapping>ExportType=org.folio.des.domain.dto.ExportType</importMapping>
</importMappings>
<configOptions>
<java8>true</java8>
<dateLibrary>java8-localdatetime</dateLibrary>
<interfaceOnly>true</interfaceOnly>
<useSpringBoot3>true</useSpringBoot3>
</configOptions>
</configuration>
</execution>
</executions>
</plugin>

Expand Down
38 changes: 38 additions & 0 deletions src/main/java/org/folio/de/entity/JobDeletionIntervalEntity.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
package org.folio.de.entity;

import jakarta.persistence.Column;
import jakarta.persistence.Entity;
import jakarta.persistence.EnumType;
import jakarta.persistence.Enumerated;
import jakarta.persistence.Id;
import jakarta.persistence.Table;
import lombok.Data;
import org.folio.des.domain.dto.ExportType;

import java.time.LocalDateTime;
import java.util.UUID;

@Entity
@Table(name = "job_deletion_interval")
@Data
public class JobDeletionIntervalEntity {
@Id
@Enumerated(EnumType.STRING)
@Column(name = "export_type")
private ExportType exportType;

@Column(name = "retention_days", nullable = false)
private Integer retentionDays;

@Column(name = "created_date", nullable = false)
private LocalDateTime createdDate;

@Column(name = "created_by", nullable = false)
private UUID createdBy;

@Column(name = "updated_date")
private LocalDateTime updatedDate;

@Column(name = "updated_by")
private UUID updatedBy;
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
package org.folio.des.controller;

import lombok.RequiredArgsConstructor;
import org.folio.des.domain.dto.ExportType;
import org.folio.des.domain.dto.delete_interval.JobDeletionInterval;
import org.folio.des.domain.dto.delete_interval.JobDeletionIntervalCollection;
import org.folio.des.rest.resource.JobDeletionIntervalsApi;
import org.folio.des.service.JobDeletionIntervalService;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
@RequestMapping("/data-export-spring")
@RequiredArgsConstructor
public class JobDeletionIntervalController implements JobDeletionIntervalsApi {
private final JobDeletionIntervalService service;

@Override
public ResponseEntity<JobDeletionIntervalCollection> getAllJobDeletionIntervals() {
var intervals = service.getAll();
return ResponseEntity.ok(intervals);
}

@Override
public ResponseEntity<JobDeletionInterval> getJobDeletionIntervalByExportType(ExportType exportType) {
return ResponseEntity.ok(service.get(exportType));
}

@Override
public ResponseEntity<JobDeletionInterval> createJobDeletionInterval(JobDeletionInterval interval) {
return ResponseEntity
.status(HttpStatus.CREATED)
.body(service.create(interval));
}

@Override
public ResponseEntity<JobDeletionInterval> updateJobDeletionInterval(ExportType exportType, JobDeletionInterval interval) {
interval.setExportType(exportType);
return ResponseEntity.ok(service.update(interval));
}

@Override
public ResponseEntity<Void> deleteJobDeletionInterval(ExportType exportType) {
service.delete(exportType);
return ResponseEntity.noContent().build();
}
}
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package org.folio.des.repository;

import org.folio.de.entity.Job;
import org.folio.des.domain.dto.ExportType;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Query;

Expand All @@ -13,6 +14,6 @@ public interface JobDataExportRepository extends JpaRepository<Job, UUID> {
@Query(value = "SELECT nextval('job-number')", nativeQuery = true)
Integer getNextJobNumber();

List<Job> findByUpdatedDateBefore(Date updatedDate);
List<Job> findByTypeAndUpdatedDateBefore(ExportType type, Date updatedDate);

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
package org.folio.des.repository;

import org.folio.de.entity.JobDeletionIntervalEntity;
import org.folio.des.domain.dto.ExportType;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;

@Repository
public interface JobDeletionIntervalRepository extends JpaRepository<JobDeletionIntervalEntity, ExportType> {
}
6 changes: 1 addition & 5 deletions src/main/java/org/folio/des/service/FolioTenantService.java
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,6 @@
import org.folio.des.scheduling.quartz.ScheduledJobsRemover;
import org.folio.des.service.bursarlegacy.BursarExportLegacyJobService;
import org.folio.des.service.bursarlegacy.BursarMigrationService;
import org.folio.des.service.config.BulkEditConfigService;
import org.folio.des.service.config.impl.BursarFeesFinesExportConfigService;
import org.folio.spring.FolioExecutionContext;
import org.folio.spring.liquibase.FolioSpringLiquibase;
Expand All @@ -26,7 +25,6 @@
public class FolioTenantService extends TenantService {

private final KafkaService kafka;
private final BulkEditConfigService bulkEditConfigService;
private final EdifactScheduledJobInitializer edifactScheduledJobInitializer;
private final ScheduledJobsRemover scheduledJobsRemover;
private final BursarScheduledJobInitializer bursarScheduledJobInitializer;
Expand All @@ -38,15 +36,14 @@ public class FolioTenantService extends TenantService {
private final BursarFeesFinesExportConfigService bursarFeesFinesExportConfigService;

public FolioTenantService(JdbcTemplate jdbcTemplate, FolioExecutionContext context, FolioSpringLiquibase folioSpringLiquibase,
PrepareSystemUserService prepareSystemUserService, KafkaService kafka, BulkEditConfigService bulkEditConfigService,
PrepareSystemUserService prepareSystemUserService, KafkaService kafka,
EdifactScheduledJobInitializer edifactScheduledJobInitializer, ScheduledJobsRemover scheduledJobsRemover,
BursarScheduledJobInitializer bursarScheduledJobInitializer, OldJobDeleteScheduler oldJobDeleteScheduler,
BursarExportLegacyJobService bursarExportLegacyJobService, JobService jobService,
BursarMigrationService bursarMigrationService, BursarFeesFinesExportConfigService bursarFeesFinesExportConfigService) {
super(jdbcTemplate, context, folioSpringLiquibase);
this.prepareSystemUserService = prepareSystemUserService;
this.kafka = kafka;
this.bulkEditConfigService = bulkEditConfigService;
this.edifactScheduledJobInitializer = edifactScheduledJobInitializer;
this.scheduledJobsRemover = scheduledJobsRemover;
this.bursarScheduledJobInitializer = bursarScheduledJobInitializer;
Expand All @@ -64,7 +61,6 @@ protected void afterTenantUpdate(TenantAttributes tenantAttributes) {
bursarMigrationService.updateLegacyBursarIfNeeded(tenantAttributes, bursarFeesFinesExportConfigService,
bursarExportLegacyJobService, jobService);
bursarScheduledJobInitializer.initAllScheduledJob(tenantAttributes);
bulkEditConfigService.checkBulkEditConfiguration();
edifactScheduledJobInitializer.initAllScheduledJob(tenantAttributes);
oldJobDeleteScheduler.scheduleOldJobDeletion(context.getTenantId());
kafka.createKafkaTopics();
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
package org.folio.des.service;

import org.folio.des.domain.dto.ExportType;
import org.folio.des.domain.dto.delete_interval.JobDeletionInterval;
import org.folio.des.domain.dto.delete_interval.JobDeletionIntervalCollection;

public interface JobDeletionIntervalService {
/**
* Get all job deletion intervals.
*
* @return collection of job deletion intervals
*/
JobDeletionIntervalCollection getAll();

/**
* Get interval by export type.
*
* @param exportType the export type to retrieve
* @return the found job deletion interval
*/
JobDeletionInterval get(ExportType exportType);

/**
* Create a new job deletion interval.
*
* @param interval the interval to create
* @return the created interval
*/
JobDeletionInterval create(JobDeletionInterval interval);

/**
* Update an existing job deletion interval.
*
* @param interval the interval to update
* @return the updated interval
*/
JobDeletionInterval update(JobDeletionInterval interval);

/**
* Delete a job deletion interval.
*
* @param exportType the export type to delete
*/
void delete(ExportType exportType);
}
Loading