package com.thinkbiganalytics.scheduler.support;
/*-
* #%L
* thinkbig-scheduler-core
* %%
* Copyright (C) 2017 ThinkBig Analytics
* %%
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
* #L%
*/
import com.thinkbiganalytics.scheduler.TriggerInfo;
import java.util.Collection;
/**
* Check for status information for triggers
*/
public class ScheduledJobState {
/**
* Check to see if a list of triggers have at least 1 triggerInfo that is running
*
* @param triggerInfos a collection of trigger info
* @return {@code true} if the list of triggerInfos have at least 1 that is running, {@code false} if none of the triggerInfos are running
*/
public static boolean isRunning(Collection<TriggerInfo> triggerInfos) {
boolean running = false;
if (triggerInfos != null) {
for (TriggerInfo triggerInfo : triggerInfos) {
running = triggerInfo.getState().equals(TriggerInfo.TriggerState.BLOCKED) || triggerInfo.isSimpleTrigger();
if (running) {
break;
}
}
}
return running;
}
/**
* Check to see if a list of triggers have at least 1 triggerInfo that is paused
*
* @param triggerInfos a collection of trigger info
* @return {@code true} if the list of triggerInfos have at least 1 that is paused, {@code false} if none of the triggerInfos are paused
*/
public static boolean isPaused(Collection<TriggerInfo> triggerInfos) {
boolean paused = false;
if (triggerInfos != null) {
for (TriggerInfo triggerInfo : triggerInfos) {
paused = triggerInfo.getState().equals(TriggerInfo.TriggerState.PAUSED);
if (paused) {
break;
}
}
}
return paused;
}
/**
* Check to see if a list of triggers have at least 1 triggerInfo that is scheduled
*
* @param triggerInfos a collection of trigger info
* @return {@code true} if the list of triggerInfos have at least 1 that is scheduled, {@code false} if none of the triggerInfos are scheduled
*/
public static boolean isScheduled(Collection<TriggerInfo> triggerInfos) {
boolean scheduled = false;
if (triggerInfos != null) {
for (TriggerInfo triggerInfo : triggerInfos) {
if (triggerInfo.isScheduled()) {
scheduled = true;
break;
}
}
}
return scheduled;
}
}