ADD logging & ADD map of jobs and Uuids

This commit is contained in:
2025-05-08 18:57:36 +02:00
parent da5d2ef853
commit 920bcc32b1
4 changed files with 47 additions and 22 deletions

View File

@@ -3,12 +3,15 @@ package com.ddf.vodsystem.entities;
import lombok.Data; import lombok.Data;
import java.io.File; import java.io.File;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@Data @Data
public class Job implements Runnable { public class Job implements Runnable {
private static final Logger logger = LoggerFactory.getLogger(Job.class);
private String uuid; private String uuid;
private File file; private File file;
private boolean started;
private float progress;
// configs // configs
private float startPoint; private float startPoint;
@@ -16,18 +19,22 @@ public class Job implements Runnable {
private float fps; private float fps;
private int width; private int width;
private int height; private int height;
private float fileSize;
// job status
private JobStatus status = JobStatus.PENDING;
public Job(String uuid, File file) { public Job(String uuid, File file) {
this.uuid = uuid; this.uuid = uuid;
this.file = file; this.file = file;
this.started = false;
} }
@Override @Override
public void run() { public void run() {
this.started = true; logger.info("Job started");
this.progress = 0; this.status = JobStatus.RUNNING;
this.status = JobStatus.FINISHED;
System.out.println("<UNK>");
} }
} }

View File

@@ -0,0 +1,8 @@
package com.ddf.vodsystem.entities;
public enum JobStatus {
NOT_READY,
PENDING,
RUNNING,
FINISHED
}

View File

@@ -1,38 +1,49 @@
package com.ddf.vodsystem.services; package com.ddf.vodsystem.services;
import com.ddf.vodsystem.entities.Job; import com.ddf.vodsystem.entities.Job;
import com.ddf.vodsystem.entities.JobStatus;
import jakarta.annotation.PostConstruct; import jakarta.annotation.PostConstruct;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.util.HashMap;
import java.util.LinkedList; import java.util.LinkedList;
@Service @Service
public class JobService { public class JobService {
private LinkedList<Job> jobs = new LinkedList<>(); private static final Logger logger = LoggerFactory.getLogger(JobService.class);
private final HashMap<String, Job> jobs = new HashMap<>();
private final LinkedList<Job> jobQueue = new LinkedList<>();
public void addJob(Job job) { public void add(Job job) {
jobs.add(job); logger.info("Added job: {}", job.getUuid());
jobs.put(job.getUuid(), job);
} }
public Job getNextJob() { public Job get(String uuid) {
return jobs.remove(); return jobs.get(uuid);
} }
public Job getJob(String uuid){ public void jobReady(String uuid) {
for (Job job : jobs) { Job job = jobs.get(uuid);
if(job.getUuid().equals(uuid)){
return job; if (job == null) {
throw new RuntimeException("Job not found");
} }
}
throw new RuntimeException("UUID not found"); logger.info("Job ready: {}", job.getUuid());
job.setStatus(JobStatus.PENDING);
jobQueue.add(job);
} }
@PostConstruct @PostConstruct
public void startProcessingLoop() { public void startProcessingLoop() {
Thread thread = new Thread(() -> { Thread thread = new Thread(() -> {
while (true) { while (true) {
if (!jobs.isEmpty()) { if (!jobQueue.isEmpty()) {
Runnable task = getNextJob(); Runnable task = jobQueue.poll();
task.run(); // Execute the task task.run(); // Execute the task
} }

View File

@@ -17,8 +17,7 @@ import java.util.UUID;
@Service @Service
public class UploadService { public class UploadService {
private static final String UPLOAD_DIR = "videos/"; private static final String UPLOAD_DIR = "videos/";
private final JobService jobService;
private JobService jobService;
public UploadService(JobService jobService) { public UploadService(JobService jobService) {
this.jobService = jobService; this.jobService = jobService;
@@ -32,7 +31,7 @@ public class UploadService {
// add job // add job
Job job = new Job(uuid, uploadDir); Job job = new Job(uuid, uploadDir);
jobService.addJob(job); jobService.add(job);
return uuid; return uuid;
} }