52 lines
1.7 KiB
Java
52 lines
1.7 KiB
Java
package eu.dnetlib.manager.wf;
|
|
|
|
import java.time.Instant;
|
|
import java.time.LocalDateTime;
|
|
import java.util.List;
|
|
import java.util.Optional;
|
|
import java.util.TimeZone;
|
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
import org.springframework.data.domain.PageRequest;
|
|
import org.springframework.data.domain.Sort;
|
|
import org.springframework.stereotype.Service;
|
|
|
|
import eu.dnetlib.manager.wf.model.WfProcessExecution;
|
|
import eu.dnetlib.manager.wf.repository.WfProcessExecutionRepository;
|
|
|
|
@Service
|
|
public class WorkflowLogger {
|
|
|
|
@Autowired
|
|
private WfProcessExecutionRepository wfProcessExecutionRepository;
|
|
|
|
public List<WfProcessExecution> history(final int total, final Long from, final Long to) {
|
|
if (from == null && to == null) {
|
|
return wfProcessExecutionRepository.findAll(PageRequest.of(0, total, Sort.by("endDate").descending())).toList();
|
|
} else {
|
|
|
|
final LocalDateTime fromTime = from != null ? LocalDateTime.ofInstant(Instant.ofEpochMilli(from), TimeZone
|
|
.getDefault()
|
|
.toZoneId()) : LocalDateTime.MIN;
|
|
final LocalDateTime toTime = to != null ? LocalDateTime.ofInstant(Instant.ofEpochMilli(to), TimeZone
|
|
.getDefault()
|
|
.toZoneId()) : LocalDateTime.MAX;
|
|
|
|
return wfProcessExecutionRepository.findByEndDateBetweenOrderByEndDateDesc(fromTime, toTime);
|
|
}
|
|
}
|
|
|
|
public WfProcessExecution getProcessExecution(final String processId) {
|
|
return wfProcessExecutionRepository.findById(processId).get();
|
|
}
|
|
|
|
public void saveProcessExecution(final WfProcessExecution proc) {
|
|
wfProcessExecutionRepository.save(proc);
|
|
}
|
|
|
|
public Optional<WfProcessExecution> getLastExecutionForInstance(final String id) {
|
|
return wfProcessExecutionRepository.findOneByWfInstanceIdOrderByEndDateAsc(id);
|
|
}
|
|
|
|
}
|