refactor: add lombok to jobs module

This commit is contained in:
Hemant Gupta
2022-10-12 12:23:29 +02:00
committed by Arnold Gálovics
parent 592ed92e87
commit bc289bcb4d
13 changed files with 106 additions and 228 deletions
@@ -78,7 +78,7 @@ public class SchedulerApiResource {
this.context.authenticatedUser().validateHasReadPermission(SchedulerJobApiConstants.SCHEDULER_RESOURCE_NAME); this.context.authenticatedUser().validateHasReadPermission(SchedulerJobApiConstants.SCHEDULER_RESOURCE_NAME);
final boolean isSchedulerRunning = this.jobRegisterService.isSchedulerRunning(); final boolean isSchedulerRunning = this.jobRegisterService.isSchedulerRunning();
final ApiRequestJsonSerializationSettings settings = this.apiRequestParameterHelper.process(uriInfo.getQueryParameters()); final ApiRequestJsonSerializationSettings settings = this.apiRequestParameterHelper.process(uriInfo.getQueryParameters());
final SchedulerDetailData schedulerDetailData = new SchedulerDetailData(isSchedulerRunning); final SchedulerDetailData schedulerDetailData = new SchedulerDetailData().setActive(isSchedulerRunning);
return this.toApiJsonSerializer.serialize(settings, schedulerDetailData, return this.toApiJsonSerializer.serialize(settings, schedulerDetailData,
SchedulerJobApiConstants.SCHEDULER_DETAIL_RESPONSE_DATA_PARAMETERS); SchedulerJobApiConstants.SCHEDULER_DETAIL_RESPONSE_DATA_PARAMETERS);
} }
@@ -19,43 +19,35 @@
package org.apache.fineract.infrastructure.jobs.data; package org.apache.fineract.infrastructure.jobs.data;
import java.util.Date; import java.util.Date;
import lombok.Getter; import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.Accessors;
@Data
@NoArgsConstructor
@Accessors(chain = true)
public class JobDetailData { public class JobDetailData {
@SuppressWarnings("unused") @SuppressWarnings("unused")
private final Long jobId; private Long jobId;
@SuppressWarnings("unused") @SuppressWarnings("unused")
private final String displayName; private String displayName;
@SuppressWarnings("unused") @SuppressWarnings("unused")
private final Date nextRunTime; private Date nextRunTime;
@SuppressWarnings("unused") @SuppressWarnings("unused")
private final String initializingError; private String initializingError;
@Getter private String cronExpression;
private final String cronExpression;
@SuppressWarnings("unused") @SuppressWarnings("unused")
private final boolean active; private boolean active;
@SuppressWarnings("unused") @SuppressWarnings("unused")
private final boolean currentlyRunning; private boolean currentlyRunning;
@SuppressWarnings("unused") @SuppressWarnings("unused")
private final JobDetailHistoryData lastRunHistory; private JobDetailHistoryData lastRunHistory;
public JobDetailData(final Long jobId, final String displayName, final Date nextRunTime, final String initializingError,
final String cronExpression, final boolean active, final boolean currentlyRunning, final JobDetailHistoryData lastRunHistory) {
this.jobId = jobId;
this.displayName = displayName;
this.nextRunTime = nextRunTime;
this.initializingError = initializingError;
this.cronExpression = cronExpression;
this.active = active;
this.lastRunHistory = lastRunHistory;
this.currentlyRunning = currentlyRunning;
}
} }
@@ -19,38 +19,33 @@
package org.apache.fineract.infrastructure.jobs.data; package org.apache.fineract.infrastructure.jobs.data;
import java.util.Date; import java.util.Date;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.Accessors;
@Data
@NoArgsConstructor
@Accessors(chain = true)
public class JobDetailHistoryData { public class JobDetailHistoryData {
@SuppressWarnings("unused") @SuppressWarnings("unused")
private final Long version; private Long version;
@SuppressWarnings("unused") @SuppressWarnings("unused")
private final Date jobRunStartTime; private Date jobRunStartTime;
@SuppressWarnings("unused") @SuppressWarnings("unused")
private final Date jobRunEndTime; private Date jobRunEndTime;
@SuppressWarnings("unused") @SuppressWarnings("unused")
private final String status; private String status;
@SuppressWarnings("unused") @SuppressWarnings("unused")
private final String jobRunErrorMessage; private String jobRunErrorMessage;
@SuppressWarnings("unused") @SuppressWarnings("unused")
private final String triggerType; private String triggerType;
@SuppressWarnings("unused") @SuppressWarnings("unused")
private final String jobRunErrorLog; private String jobRunErrorLog;
public JobDetailHistoryData(final Long version, final Date jobRunStartTime, final Date jobRunEndTime, final String status,
final String jobRunErrorMessage, final String triggerType, final String jobRunErrorLog) {
this.version = version;
this.jobRunStartTime = jobRunStartTime;
this.jobRunEndTime = jobRunEndTime;
this.status = status;
this.jobRunErrorMessage = jobRunErrorMessage;
this.triggerType = triggerType;
this.jobRunErrorLog = jobRunErrorLog;
}
} }
@@ -18,12 +18,15 @@
*/ */
package org.apache.fineract.infrastructure.jobs.data; package org.apache.fineract.infrastructure.jobs.data;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.Accessors;
@Data
@NoArgsConstructor
@Accessors(chain = true)
public class SchedulerDetailData { public class SchedulerDetailData {
@SuppressWarnings("unused") @SuppressWarnings("unused")
private final boolean active; private boolean active;
public SchedulerDetailData(final boolean active) {
this.active = active;
}
} }
@@ -22,10 +22,18 @@ import java.util.Objects;
import javax.persistence.Column; import javax.persistence.Column;
import javax.persistence.Entity; import javax.persistence.Entity;
import javax.persistence.Table; import javax.persistence.Table;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import lombok.experimental.Accessors;
import org.apache.fineract.infrastructure.core.domain.AbstractPersistableCustom; import org.apache.fineract.infrastructure.core.domain.AbstractPersistableCustom;
@Entity @Entity
@Table(name = "job_parameters") @Table(name = "job_parameters")
@Getter
@Setter
@NoArgsConstructor
@Accessors(chain = true)
public class JobParameter extends AbstractPersistableCustom { public class JobParameter extends AbstractPersistableCustom {
@Column(name = "job_id", nullable = false) @Column(name = "job_id", nullable = false)
@@ -37,40 +45,8 @@ public class JobParameter extends AbstractPersistableCustom {
@Column(name = "parameter_value", nullable = true) @Column(name = "parameter_value", nullable = true)
private String parameterValue; private String parameterValue;
public JobParameter() {}
public JobParameter(final Long jobId, final String parameterName, final String parameterValue) {
this.jobId = jobId;
this.parameterName = parameterName;
this.parameterValue = parameterValue;
}
public static JobParameter getInstance(final Long jobId, final String parameterName, final String parameterValue) { public static JobParameter getInstance(final Long jobId, final String parameterName, final String parameterValue) {
return new JobParameter(jobId, parameterName, parameterValue); return new JobParameter().setJobId(jobId).setParameterName(parameterName).setParameterValue(parameterValue);
}
public Long getJobId() {
return jobId;
}
public void setJobId(final Long jobId) {
this.jobId = jobId;
}
public String getParameterName() {
return parameterName;
}
public void setParameterName(final String parameterName) {
this.parameterName = parameterName;
}
public String getParameterValue() {
return parameterValue;
}
public void setParameterValue(final String parameterValue) {
this.parameterValue = parameterValue;
} }
@Override @Override
@@ -26,6 +26,10 @@ import javax.persistence.Entity;
import javax.persistence.Table; import javax.persistence.Table;
import javax.persistence.Temporal; import javax.persistence.Temporal;
import javax.persistence.TemporalType; import javax.persistence.TemporalType;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import lombok.experimental.Accessors;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.apache.fineract.infrastructure.core.api.JsonCommand; import org.apache.fineract.infrastructure.core.api.JsonCommand;
import org.apache.fineract.infrastructure.core.domain.AbstractPersistableCustom; import org.apache.fineract.infrastructure.core.domain.AbstractPersistableCustom;
@@ -33,6 +37,10 @@ import org.apache.fineract.infrastructure.jobs.api.SchedulerJobApiConstants;
@Entity @Entity
@Table(name = "job") @Table(name = "job")
@Getter
@Setter
@NoArgsConstructor
@Accessors(chain = true)
public class ScheduledJobDetail extends AbstractPersistableCustom { public class ScheduledJobDetail extends AbstractPersistableCustom {
@Column(name = "name") @Column(name = "name")
@@ -89,82 +97,6 @@ public class ScheduledJobDetail extends AbstractPersistableCustom {
@Column(name = "is_misfired") @Column(name = "is_misfired")
private boolean triggerMisfired; private boolean triggerMisfired;
protected ScheduledJobDetail() {
}
public String getJobName() {
return this.jobName;
}
public String getCronExpression() {
return this.cronExpression;
}
public Short getTaskPriority() {
return this.taskPriority;
}
public String getGroupName() {
return this.groupName;
}
public String getJobKey() {
return this.jobKey;
}
public Short getSchedulerGroup() {
return this.schedulerGroup;
}
public boolean isActiveSchedular() {
return this.activeSchedular;
}
public void updateCronExpression(final String cronExpression) {
this.cronExpression = cronExpression;
}
public void updatePreviousRunStartTime(final Date previousRunStartTime) {
this.previousRunStartTime = previousRunStartTime;
}
public Date getNextRunTime() {
return this.nextRunTime;
}
public void updateNextRunTime(final Date nextRunTime) {
this.nextRunTime = nextRunTime;
}
public void updateJobKey(final String jobKey) {
this.jobKey = jobKey;
}
public boolean getIsMismatchedJob() {
return this.isMismatchedJob;
}
public void setIsMismatchedJob(final boolean isMismatchedJob) {
this.isMismatchedJob = isMismatchedJob;
}
public void updateErrorLog(final String errorLog) {
this.errorLog = errorLog;
}
public boolean isCurrentlyRunning() {
return this.currentlyRunning;
}
public void updateCurrentlyRunningStatus(final boolean currentlyRunning) {
this.currentlyRunning = currentlyRunning;
}
public Integer getNodeId() {
return this.nodeId;
}
public Map<String, Object> update(final JsonCommand command) { public Map<String, Object> update(final JsonCommand command) {
final Map<String, Object> actualChanges = new LinkedHashMap<>(9); final Map<String, Object> actualChanges = new LinkedHashMap<>(9);
@@ -188,12 +120,4 @@ public class ScheduledJobDetail extends AbstractPersistableCustom {
return actualChanges; return actualChanges;
} }
public boolean isTriggerMisfired() {
return this.triggerMisfired;
}
public void updateTriggerMisfired(final boolean triggerMisfired) {
this.triggerMisfired = triggerMisfired;
}
} }
@@ -26,10 +26,18 @@ import javax.persistence.ManyToOne;
import javax.persistence.Table; import javax.persistence.Table;
import javax.persistence.Temporal; import javax.persistence.Temporal;
import javax.persistence.TemporalType; import javax.persistence.TemporalType;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import lombok.experimental.Accessors;
import org.apache.fineract.infrastructure.core.domain.AbstractPersistableCustom; import org.apache.fineract.infrastructure.core.domain.AbstractPersistableCustom;
@Entity @Entity
@Table(name = "job_run_history") @Table(name = "job_run_history")
@Getter
@Setter
@NoArgsConstructor
@Accessors(chain = true)
public class ScheduledJobRunHistory extends AbstractPersistableCustom { public class ScheduledJobRunHistory extends AbstractPersistableCustom {
@ManyToOne @ManyToOne
@@ -59,10 +67,6 @@ public class ScheduledJobRunHistory extends AbstractPersistableCustom {
@Column(name = "error_log") @Column(name = "error_log")
private String errorLog; private String errorLog;
public ScheduledJobRunHistory() {
}
public ScheduledJobRunHistory(final ScheduledJobDetail scheduledJobDetail, final Long version, final Date startTime, final Date endTime, public ScheduledJobRunHistory(final ScheduledJobDetail scheduledJobDetail, final Long version, final Date startTime, final Date endTime,
final String status, final String errorMessage, final String triggerType, final String errorLog) { final String status, final String errorMessage, final String triggerType, final String errorLog) {
this.scheduledJobDetail = scheduledJobDetail; this.scheduledJobDetail = scheduledJobDetail;
@@ -21,10 +21,18 @@ package org.apache.fineract.infrastructure.jobs.domain;
import javax.persistence.Column; import javax.persistence.Column;
import javax.persistence.Entity; import javax.persistence.Entity;
import javax.persistence.Table; import javax.persistence.Table;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import lombok.experimental.Accessors;
import org.apache.fineract.infrastructure.core.domain.AbstractPersistableCustom; import org.apache.fineract.infrastructure.core.domain.AbstractPersistableCustom;
@Entity @Entity
@Table(name = "scheduler_detail") @Table(name = "scheduler_detail")
@Getter
@Setter
@NoArgsConstructor
@Accessors(chain = true)
public class SchedulerDetail extends AbstractPersistableCustom { public class SchedulerDetail extends AbstractPersistableCustom {
@Column(name = "execute_misfired_jobs") @Column(name = "execute_misfired_jobs")
@@ -35,32 +43,4 @@ public class SchedulerDetail extends AbstractPersistableCustom {
@Column(name = "reset_scheduler_on_bootup") @Column(name = "reset_scheduler_on_bootup")
private boolean resetSchedulerOnBootup; private boolean resetSchedulerOnBootup;
protected SchedulerDetail() {
}
public boolean isExecuteInstructionForMisfiredJobs() {
return this.executeInstructionForMisfiredJobs;
}
public void updateExecuteInstructionForMisfiredJobs(final boolean executeInstructionForMisfiredJobs) {
this.executeInstructionForMisfiredJobs = executeInstructionForMisfiredJobs;
}
public boolean isSuspended() {
return this.suspended;
}
public void updateSuspendedState(final boolean suspended) {
this.suspended = suspended;
}
public boolean isResetSchedulerOnBootup() {
return this.resetSchedulerOnBootup;
}
public void updateResetSchedulerOnBootup(final boolean resetSchedulerOnBootup) {
this.resetSchedulerOnBootup = resetSchedulerOnBootup;
}
} }
@@ -128,7 +128,7 @@ public class JobRegisterServiceImpl implements JobRegisterService, ApplicationLi
this.schedularWritePlatformService.saveOrUpdate(scheduledJobDetail); this.schedularWritePlatformService.saveOrUpdate(scheduledJobDetail);
} catch (final Throwable throwable) { } catch (final Throwable throwable) {
final String stackTrace = getStackTraceAsString(throwable); final String stackTrace = getStackTraceAsString(throwable);
scheduledJobDetail.updateErrorLog(stackTrace); scheduledJobDetail.setErrorLog(stackTrace);
this.schedularWritePlatformService.saveOrUpdate(scheduledJobDetail); this.schedularWritePlatformService.saveOrUpdate(scheduledJobDetail);
} }
} }
@@ -137,7 +137,7 @@ public class JobRegisterServiceImpl implements JobRegisterService, ApplicationLi
public void pauseScheduler() { public void pauseScheduler() {
final SchedulerDetail schedulerDetail = this.schedularWritePlatformService.retriveSchedulerDetail(); final SchedulerDetail schedulerDetail = this.schedularWritePlatformService.retriveSchedulerDetail();
if (!schedulerDetail.isSuspended()) { if (!schedulerDetail.isSuspended()) {
schedulerDetail.updateSuspendedState(true); schedulerDetail.setSuspended(true);
this.schedularWritePlatformService.updateSchedulerDetail(schedulerDetail); this.schedularWritePlatformService.updateSchedulerDetail(schedulerDetail);
} }
} }
@@ -146,16 +146,16 @@ public class JobRegisterServiceImpl implements JobRegisterService, ApplicationLi
public void startScheduler() { public void startScheduler() {
final SchedulerDetail schedulerDetail = this.schedularWritePlatformService.retriveSchedulerDetail(); final SchedulerDetail schedulerDetail = this.schedularWritePlatformService.retriveSchedulerDetail();
if (schedulerDetail.isSuspended()) { if (schedulerDetail.isSuspended()) {
schedulerDetail.updateSuspendedState(false); schedulerDetail.setSuspended(false);
this.schedularWritePlatformService.updateSchedulerDetail(schedulerDetail); this.schedularWritePlatformService.updateSchedulerDetail(schedulerDetail);
if (schedulerDetail.isExecuteInstructionForMisfiredJobs()) { if (schedulerDetail.isExecuteInstructionForMisfiredJobs()) {
final List<ScheduledJobDetail> scheduledJobDetails = this.schedularWritePlatformService final List<ScheduledJobDetail> scheduledJobDetails = this.schedularWritePlatformService
.retrieveAllJobs(fineractProperties.getNodeId()); .retrieveAllJobs(fineractProperties.getNodeId());
for (final ScheduledJobDetail jobDetail : scheduledJobDetails) { for (final ScheduledJobDetail jobDetail : scheduledJobDetails) {
if (jobDetail.isTriggerMisfired() || jobDetail.getIsMismatchedJob()) { if (jobDetail.isTriggerMisfired() || jobDetail.isMismatchedJob()) {
if (jobDetail.isActiveSchedular()) { if (jobDetail.isActiveSchedular()) {
executeJob(jobDetail, SchedulerServiceConstants.TRIGGER_TYPE_CRON); executeJob(jobDetail, SchedulerServiceConstants.TRIGGER_TYPE_CRON);
jobDetail.setIsMismatchedJob(false); jobDetail.setMismatchedJob(false);
} }
final String schedulerName = getSchedulerName(jobDetail); final String schedulerName = getSchedulerName(jobDetail);
final Scheduler scheduler = this.schedulers.get(schedulerName); final Scheduler scheduler = this.schedulers.get(schedulerName);
@@ -166,14 +166,14 @@ public class JobRegisterServiceImpl implements JobRegisterService, ApplicationLi
final List<? extends Trigger> triggers = scheduler.getTriggersOfJob(jobKey); final List<? extends Trigger> triggers = scheduler.getTriggersOfJob(jobKey);
for (final Trigger trigger : triggers) { for (final Trigger trigger : triggers) {
if (trigger.getNextFireTime() != null && trigger.getNextFireTime().after(jobDetail.getNextRunTime())) { if (trigger.getNextFireTime() != null && trigger.getNextFireTime().after(jobDetail.getNextRunTime())) {
jobDetail.updateNextRunTime(trigger.getNextFireTime()); jobDetail.setNextRunTime(trigger.getNextFireTime());
} }
} }
} catch (final SchedulerException e) { } catch (final SchedulerException e) {
log.error("Error occured.", e); log.error("Error occured.", e);
} }
} }
jobDetail.updateTriggerMisfired(false); jobDetail.setTriggerMisfired(false);
this.schedularWritePlatformService.saveOrUpdate(jobDetail); this.schedularWritePlatformService.saveOrUpdate(jobDetail);
} }
} }
@@ -188,7 +188,7 @@ public class JobRegisterServiceImpl implements JobRegisterService, ApplicationLi
if (nodeIdStored.equals(fineractProperties.getNodeId()) || nodeIdStored.equals("0")) { if (nodeIdStored.equals(fineractProperties.getNodeId()) || nodeIdStored.equals("0")) {
rescheduleJob(scheduledJobDetail); rescheduleJob(scheduledJobDetail);
} else { } else {
scheduledJobDetail.setIsMismatchedJob(true); scheduledJobDetail.setMismatchedJob(true);
this.schedularWritePlatformService.saveOrUpdate(scheduledJobDetail); this.schedularWritePlatformService.saveOrUpdate(scheduledJobDetail);
throw new JobNodeIdMismatchingException(nodeIdStored, fineractProperties.getNodeId()); throw new JobNodeIdMismatchingException(nodeIdStored, fineractProperties.getNodeId());
} }
@@ -204,10 +204,10 @@ public class JobRegisterServiceImpl implements JobRegisterService, ApplicationLi
if (nodeIdStored.equals(fineractProperties.getNodeId()) || nodeIdStored.equals("0")) { if (nodeIdStored.equals(fineractProperties.getNodeId()) || nodeIdStored.equals("0")) {
executeJob(scheduledJobDetail, null); executeJob(scheduledJobDetail, null);
scheduledJobDetail.setIsMismatchedJob(false); scheduledJobDetail.setMismatchedJob(false);
this.schedularWritePlatformService.saveOrUpdate(scheduledJobDetail); this.schedularWritePlatformService.saveOrUpdate(scheduledJobDetail);
} else { } else {
scheduledJobDetail.setIsMismatchedJob(true); scheduledJobDetail.setMismatchedJob(true);
this.schedularWritePlatformService.saveOrUpdate(scheduledJobDetail); this.schedularWritePlatformService.saveOrUpdate(scheduledJobDetail);
throw new JobNodeIdMismatchingException(nodeIdStored, fineractProperties.getNodeId()); throw new JobNodeIdMismatchingException(nodeIdStored, fineractProperties.getNodeId());
} }
@@ -232,25 +232,25 @@ public class JobRegisterServiceImpl implements JobRegisterService, ApplicationLi
public void scheduleJob(final ScheduledJobDetail scheduledJobDetails) { public void scheduleJob(final ScheduledJobDetail scheduledJobDetails) {
try { try {
final JobDetail jobDetail = createJobDetail(scheduledJobDetails); final JobDetail jobDetail = createJobDetail(scheduledJobDetails);
scheduledJobDetails.updateJobKey(getJobKeyAsString(jobDetail.getKey())); scheduledJobDetails.setJobKey(getJobKeyAsString(jobDetail.getKey()));
if (!scheduledJobDetails.isActiveSchedular()) { if (!scheduledJobDetails.isActiveSchedular()) {
scheduledJobDetails.updateNextRunTime(null); scheduledJobDetails.setNextRunTime(null);
scheduledJobDetails.updateCurrentlyRunningStatus(false); scheduledJobDetails.setCurrentlyRunning(false);
return; return;
} }
final Trigger trigger = createTrigger(scheduledJobDetails, jobDetail); final Trigger trigger = createTrigger(scheduledJobDetails, jobDetail);
final Scheduler scheduler = getScheduler(scheduledJobDetails); final Scheduler scheduler = getScheduler(scheduledJobDetails);
scheduler.scheduleJob(jobDetail, trigger); scheduler.scheduleJob(jobDetail, trigger);
scheduledJobDetails.updateNextRunTime(trigger.getNextFireTime()); scheduledJobDetails.setNextRunTime(trigger.getNextFireTime());
scheduledJobDetails.updateErrorLog(null); scheduledJobDetails.setErrorLog(null);
} catch (final Throwable throwable) { } catch (final Throwable throwable) {
scheduledJobDetails.updateNextRunTime(null); scheduledJobDetails.setNextRunTime(null);
final String stackTrace = getStackTraceAsString(throwable); final String stackTrace = getStackTraceAsString(throwable);
scheduledJobDetails.updateErrorLog(stackTrace); scheduledJobDetails.setErrorLog(stackTrace);
log.error("Could not schedule job: {}", scheduledJobDetails.getJobName(), throwable); log.error("Could not schedule job: {}", scheduledJobDetails.getJobName(), throwable);
} }
scheduledJobDetails.updateCurrentlyRunningStatus(false); scheduledJobDetails.setCurrentlyRunning(false);
} }
@Override @Override
@@ -62,12 +62,12 @@ public class JobSchedulerServiceImpl implements ApplicationListener<ContextRefre
.retrieveAllJobs(fineractProperties.getNodeId()); .retrieveAllJobs(fineractProperties.getNodeId());
for (final ScheduledJobDetail jobDetails : scheduledJobDetails) { for (final ScheduledJobDetail jobDetails : scheduledJobDetails) {
jobRegisterService.scheduleJob(jobDetails); jobRegisterService.scheduleJob(jobDetails);
jobDetails.updateTriggerMisfired(false); jobDetails.setTriggerMisfired(false);
schedularWritePlatformService.saveOrUpdate(jobDetails); schedularWritePlatformService.saveOrUpdate(jobDetails);
} }
final SchedulerDetail schedulerDetail = schedularWritePlatformService.retriveSchedulerDetail(); final SchedulerDetail schedulerDetail = schedularWritePlatformService.retriveSchedulerDetail();
if (schedulerDetail.isResetSchedulerOnBootup()) { if (schedulerDetail.isResetSchedulerOnBootup()) {
schedulerDetail.updateSuspendedState(false); schedulerDetail.setSuspended(false);
schedularWritePlatformService.updateSchedulerDetail(schedulerDetail); schedularWritePlatformService.updateSchedulerDetail(schedulerDetail);
} }
} }
@@ -142,10 +142,10 @@ public class SchedularWritePlatformServiceJpaRepositoryImpl implements Schedular
} }
final SchedulerDetail schedulerDetail = retriveSchedulerDetail(); final SchedulerDetail schedulerDetail = retriveSchedulerDetail();
if (triggerType.equals(SchedulerServiceConstants.TRIGGER_TYPE_CRON) && schedulerDetail.isSuspended()) { if (triggerType.equals(SchedulerServiceConstants.TRIGGER_TYPE_CRON) && schedulerDetail.isSuspended()) {
scheduledJobDetail.updateTriggerMisfired(true); scheduledJobDetail.setTriggerMisfired(true);
isStopExecution = true; isStopExecution = true;
} else if (!isStopExecution) { } else if (!isStopExecution) {
scheduledJobDetail.updateCurrentlyRunningStatus(true); scheduledJobDetail.setCurrentlyRunning(true);
} }
this.scheduledJobDetailsRepository.save(scheduledJobDetail); this.scheduledJobDetailsRepository.save(scheduledJobDetail);
return isStopExecution; return isStopExecution;
@@ -107,14 +107,15 @@ public class SchedulerJobListener implements JobListener {
} }
if (SchedulerServiceConstants.TRIGGER_TYPE_CRON.equals(triggerType) && trigger.getNextFireTime() != null if (SchedulerServiceConstants.TRIGGER_TYPE_CRON.equals(triggerType) && trigger.getNextFireTime() != null
&& trigger.getNextFireTime().after(scheduledJobDetails.getNextRunTime())) { && trigger.getNextFireTime().after(scheduledJobDetails.getNextRunTime())) {
scheduledJobDetails.updateNextRunTime(trigger.getNextFireTime()); scheduledJobDetails.setNextRunTime(trigger.getNextFireTime());
} }
scheduledJobDetails.updatePreviousRunStartTime(context.getFireTime()); scheduledJobDetails.setPreviousRunStartTime(context.getFireTime());
scheduledJobDetails.updateCurrentlyRunningStatus(false); scheduledJobDetails.setCurrentlyRunning(false);
final ScheduledJobRunHistory runHistory = new ScheduledJobRunHistory(scheduledJobDetails, version, context.getFireTime(), final ScheduledJobRunHistory runHistory = new ScheduledJobRunHistory().setScheduledJobDetail(scheduledJobDetails)
new Date(), status, errorMessage, triggerType, errorLog); .setVersion(version).setStartTime(context.getFireTime()).setEndTime(new Date()).setStatus(status)
.setErrorMessage(errorMessage).setTriggerType(triggerType).setErrorLog(errorLog);
// scheduledJobDetails.addRunHistory(runHistory); // scheduledJobDetails.addRunHistory(runHistory);
this.schedularService.saveOrUpdate(scheduledJobDetails, runHistory); this.schedularService.saveOrUpdate(scheduledJobDetails, runHistory);
@@ -185,11 +185,13 @@ public class SchedulerJobRunnerReadServiceImpl implements SchedulerJobRunnerRead
JobDetailHistoryData lastRunHistory = null; JobDetailHistoryData lastRunHistory = null;
if (version > 0) { if (version > 0) {
lastRunHistory = new JobDetailHistoryData(version, jobRunStartTime, jobRunEndTime, status, jobRunErrorMessage, triggerType, lastRunHistory = new JobDetailHistoryData().setVersion(version).setJobRunStartTime(jobRunStartTime)
jobRunErrorLog); .setJobRunEndTime(jobRunEndTime).setStatus(status).setJobRunErrorMessage(jobRunErrorMessage)
.setTriggerType(triggerType).setJobRunErrorLog(jobRunErrorLog);
} }
final JobDetailData jobDetail = new JobDetailData(id, displayName, nextRunTime, initializingError, cronExpression, active, final JobDetailData jobDetail = new JobDetailData().setJobId(id).setDisplayName(displayName).setNextRunTime(nextRunTime)
currentlyRunning, lastRunHistory); .setInitializingError(initializingError).setCronExpression(cronExpression).setActive(active)
.setCurrentlyRunning(currentlyRunning).setLastRunHistory(lastRunHistory);
return jobDetail; return jobDetail;
} }
@@ -220,8 +222,9 @@ public class SchedulerJobRunnerReadServiceImpl implements SchedulerJobRunnerRead
final String jobRunErrorMessage = rs.getString("jobRunErrorMessage"); final String jobRunErrorMessage = rs.getString("jobRunErrorMessage");
final String triggerType = rs.getString("triggerType"); final String triggerType = rs.getString("triggerType");
final String jobRunErrorLog = rs.getString("jobRunErrorLog"); final String jobRunErrorLog = rs.getString("jobRunErrorLog");
final JobDetailHistoryData jobDetailHistory = new JobDetailHistoryData(version, jobRunStartTime, jobRunEndTime, status, final JobDetailHistoryData jobDetailHistory = new JobDetailHistoryData().setVersion(version).setJobRunStartTime(jobRunStartTime)
jobRunErrorMessage, triggerType, jobRunErrorLog); .setJobRunEndTime(jobRunEndTime).setStatus(status).setJobRunErrorMessage(jobRunErrorMessage).setTriggerType(triggerType)
.setJobRunErrorLog(jobRunErrorLog);
return jobDetailHistory; return jobDetailHistory;
} }