MaintenanceTaskInfoImpl.java 4.97 KB
/*
 * Decompiled with CFR 0_118.
 * 
 * Could not load the following classes:
 *  org.apache.sling.commons.osgi.PropertiesUtil
 *  org.apache.sling.event.jobs.Job
 *  org.apache.sling.event.jobs.Job$JobState
 *  org.apache.sling.event.jobs.JobManager
 *  org.apache.sling.event.jobs.JobManager$QueryType
 *  org.osgi.framework.ServiceReference
 */
package com.adobe.granite.maintenance.impl;

import com.adobe.granite.maintenance.MaintenanceTaskInfo;
import java.util.Calendar;
import java.util.Collection;
import java.util.Iterator;
import java.util.Map;
import org.apache.sling.commons.osgi.PropertiesUtil;
import org.apache.sling.event.jobs.Job;
import org.apache.sling.event.jobs.JobManager;
import org.osgi.framework.ServiceReference;

public class MaintenanceTaskInfoImpl
implements MaintenanceTaskInfo {
    public static final String PROPERTY_TASK_TOPICS = "job.topics";
    private final String name;
    private final String title;
    private final boolean stoppable;
    private final boolean conservative;
    private final boolean supportsThrottling;
    private final boolean mandatory;
    private final ServiceReference reference;
    private final MaintenanceTaskInfo.TaskSchedule schedule;
    private final JobManager jobManager;

    public MaintenanceTaskInfoImpl(JobManager jobManager, ServiceReference ref) {
        this.jobManager = jobManager;
        this.reference = ref;
        this.name = PropertiesUtil.toString((Object)this.reference.getProperty("granite.maintenance.name"), (String)null);
        this.title = PropertiesUtil.toString((Object)this.reference.getProperty("granite.maintenance.title"), (String)null);
        this.stoppable = PropertiesUtil.toBoolean((Object)this.reference.getProperty("granite.maintenance.isStoppable"), (boolean)false);
        this.conservative = PropertiesUtil.toBoolean((Object)this.reference.getProperty("granite.maintenance.isConservative"), (boolean)true);
        this.supportsThrottling = PropertiesUtil.toBoolean((Object)this.reference.getProperty("granite.maintenance.supportsThrottling"), (boolean)false);
        this.mandatory = PropertiesUtil.toBoolean((Object)this.reference.getProperty("granite.maintenance.mandatory"), (boolean)false);
        String scheduleInfo = PropertiesUtil.toString((Object)this.reference.getProperty("granite.maintenance.schedule"), (String)null);
        this.schedule = scheduleInfo != null ? MaintenanceTaskInfo.TaskSchedule.valueOf(scheduleInfo.toUpperCase()) : null;
    }

    @Override
    public String getName() {
        return this.name;
    }

    @Override
    public boolean isStoppable() {
        return this.stoppable;
    }

    @Override
    public boolean isConservative() {
        return this.conservative;
    }

    @Override
    public boolean supportsThrottling() {
        return this.supportsThrottling;
    }

    @Override
    public boolean isMandatory() {
        return this.mandatory;
    }

    @Override
    public String getDescription() {
        return (String)this.reference.getProperty("service.description");
    }

    @Override
    public String getTitle() {
        return this.title;
    }

    @Override
    public boolean isRunning() {
        Collection jobs = this.jobManager.findJobs(JobManager.QueryType.ACTIVE, this.getTaskTopic(), 1, (Map[])null);
        return !jobs.isEmpty();
    }

    @Override
    public Calendar getLastRunTime() {
        Collection jobs = this.jobManager.findJobs(JobManager.QueryType.HISTORY, this.getTaskTopic(), 1, (Map[])null);
        if (!jobs.isEmpty()) {
            return ((Job)jobs.iterator().next()).getFinishedDate();
        }
        return null;
    }

    @Override
    public MaintenanceTaskInfo.TaskState getLastRunState() {
        Collection jobs = this.jobManager.findJobs(JobManager.QueryType.HISTORY, this.getTaskTopic(), 1, (Map[])null);
        if (!jobs.isEmpty()) {
            Job job = (Job)jobs.iterator().next();
            if (job.getJobState() == Job.JobState.SUCCEEDED) {
                return MaintenanceTaskInfo.TaskState.SUCCEEDED;
            }
            if (job.getJobState() == Job.JobState.STOPPED) {
                return MaintenanceTaskInfo.TaskState.STOPPED;
            }
            return MaintenanceTaskInfo.TaskState.FAILED;
        }
        return MaintenanceTaskInfo.TaskState.UNKNOWN;
    }

    @Override
    public MaintenanceTaskInfo.TaskSchedule getSchedule() {
        return MaintenanceTaskInfo.TaskSchedule.DAILY;
    }

    @Override
    public MaintenanceTaskInfo.TaskSchedule getSuggestedSchedule() {
        return this.schedule;
    }

    @Override
    public String getTaskTopic() {
        return (String)this.reference.getProperty("job.topics");
    }

    public ServiceReference getServiceReference() {
        return this.reference;
    }

    @Override
    public String getConfigurationPid() {
        Object prop;
        String pid = null;
        if (this.reference != null && (prop = this.reference.getProperty("service.pid")) != null) {
            pid = prop.toString();
        }
        return pid;
    }
}