JobType.java

package org.entando.kubernetes.model.job;

import static org.entando.kubernetes.model.job.JobStatus.INSTALL_COMPLETED;
import static org.entando.kubernetes.model.job.JobStatus.INSTALL_CREATED;
import static org.entando.kubernetes.model.job.JobStatus.INSTALL_ERROR;
import static org.entando.kubernetes.model.job.JobStatus.INSTALL_IN_PROGRESS;
import static org.entando.kubernetes.model.job.JobStatus.INSTALL_ROLLBACK;
import static org.entando.kubernetes.model.job.JobStatus.UNINSTALL_COMPLETED;
import static org.entando.kubernetes.model.job.JobStatus.UNINSTALL_CREATED;
import static org.entando.kubernetes.model.job.JobStatus.UNINSTALL_ERROR;
import static org.entando.kubernetes.model.job.JobStatus.UNINSTALL_IN_PROGRESS;

import java.util.EnumSet;
import java.util.Set;

public enum JobType {

    INSTALL(INSTALL_CREATED, INSTALL_IN_PROGRESS, INSTALL_ERROR, INSTALL_COMPLETED, INSTALL_ROLLBACK),
    UNINSTALL(UNINSTALL_IN_PROGRESS, UNINSTALL_ERROR, UNINSTALL_COMPLETED),
    UNFINISHED(INSTALL_CREATED, INSTALL_IN_PROGRESS, UNINSTALL_CREATED, UNINSTALL_IN_PROGRESS),
    FINISHED(INSTALL_ERROR, INSTALL_COMPLETED, UNINSTALL_ERROR, UNINSTALL_COMPLETED, INSTALL_ROLLBACK),
    SUCCESSFUL(INSTALL_COMPLETED, UNINSTALL_COMPLETED),
    ERROR(INSTALL_ERROR, UNINSTALL_ERROR);

    private Set<JobStatus> statusSet;

    JobType(JobStatus status, JobStatus... others) {
        this.statusSet = EnumSet.of(status, others);
    }

    public boolean matches(JobStatus status) {
        return this.statusSet.contains(status);
    }

    public Set<JobStatus> getStatuses() {
        return this.statusSet;
    }

}