package eu.dnetlib.repo.manager.service; import eu.dnetlib.api.functionality.ValidatorService; import eu.dnetlib.api.functionality.ValidatorServiceException; import eu.dnetlib.domain.functionality.validator.StoredJob; import eu.dnetlib.repo.manager.shared.Constants; import eu.dnetlib.repo.manager.shared.JobsOfUser; import gr.uoa.di.driver.util.ServiceLocator; import org.apache.log4j.Logger; import org.json.JSONException; import org.springframework.stereotype.Service; import javax.annotation.Resource; @Service("monitorService") public class MonitorServiceImpl implements MonitorService { @Resource(name = "validatorServiceLocator") private ServiceLocator validatorServiceLocator; private ValidatorService getValidationService() { return this.validatorServiceLocator.getService(); } public ServiceLocator getValidatorServiceLocator() { return validatorServiceLocator; } public void setValidatorServiceLocator(ServiceLocator validatorServiceLocator) { this.validatorServiceLocator = validatorServiceLocator; } private static final Logger LOGGER = Logger .getLogger(MonitorServiceImpl.class); @Override public JobsOfUser getJobsOfUser(String user, String jobType, String offset, String limit, String dateFrom, String dateTo, String validationStatus, String includeJobsTotal) throws JSONException, ValidatorServiceException { LOGGER.debug("Getting jobs of user : " + user); LOGGER.debug(user + "/" + jobType + "/" + offset + "/" + dateFrom + "/" + dateTo + "/" + validationStatus + "/" + includeJobsTotal); JobsOfUser retJobs = new JobsOfUser(); retJobs.setJobs(getValidationService().getStoredJobsNew(user, jobType, Integer.parseInt(offset), Integer.parseInt(limit), dateFrom, dateTo, validationStatus)); if (Boolean.parseBoolean(includeJobsTotal)) { retJobs.setTotalJobs(this.getJobsTotalNumberOfUser(user, jobType, null)); retJobs.setTotalJobsSuccessful(this.getJobsTotalNumberOfUser(user, jobType, Constants.VALIDATION_JOB_STATUS_SUCCESSFUL)); retJobs.setTotalJobsFailed(this.getJobsTotalNumberOfUser(user, jobType, Constants.VALIDATION_JOB_STATUS_FAILED)); retJobs.setTotalJobsOngoing(this.getJobsTotalNumberOfUser(user, jobType,Constants.VALIDATION_JOB_STATUS_ONGOING)); } //TODO fix status with new validator version if(retJobs.getJobs() != null){ for(StoredJob job :retJobs.getJobs()){ if (job.getContentJobStatus().equals("ongoing") || job.getUsageJobStatus().equals("ongoing")) { job.setValidationStatus("ongoing"); } else if ((job.getValidationType().equals("CU") && job.getContentJobStatus().equals("finished") && job.getUsageJobStatus().equals("finished") && job.getContentJobScore() > 50 && job.getUsageJobScore() > 50) || (job.getValidationType().equals("C") && job.getContentJobStatus().equals("finished") && job.getUsageJobStatus().equals("none") && job.getContentJobScore() > 50) || (job.getValidationType().equals("U") && job.getContentJobStatus().equals("none") && job.getUsageJobStatus().equals("finished") && job.getUsageJobScore() > 50)) { job.setValidationStatus("successful"); } else if ((job.getValidationType().equals("CU") && job.getContentJobStatus().equals("finished") && job.getUsageJobStatus().equals("finished") && (job.getContentJobScore() <= 50 || job.getUsageJobScore() <= 50)) || (job.getValidationType().equals("C") && job.getContentJobStatus().equals("finished") && job.getUsageJobStatus().equals("none") && job.getContentJobScore() <= 50) || (job.getValidationType().equals("U") && job.getContentJobStatus().equals("none") && job.getUsageJobStatus().equals("finished") && job.getUsageJobScore() <= 50) ) { job.setValidationStatus("failed"); } } } return retJobs; } private int getJobsTotalNumberOfUser(String user, String jobType, String validationStatus) throws ValidatorServiceException { return getValidationService().getStoredJobsTotalNumberNew(user, jobType, validationStatus); } @Override public int getJobsOfUserPerValidationStatus(String user, String jobType, String validationStatus) throws JSONException { LOGGER.debug("Getting job with validation status : " + validationStatus); try { return getValidationService().getStoredJobsTotalNumberNew(user, jobType, validationStatus); } catch (ValidatorServiceException e) { e.printStackTrace(); } return 0; } @Override public StoredJob getJobSummary(String jobId, String groupBy) throws JSONException { LOGGER.debug("Getting job summary with id : " + jobId); try { return getValidationService().getStoredJob(Integer.parseInt(jobId), groupBy); } catch (ValidatorServiceException e) { e.printStackTrace(); } return null; } }