
org.squirrelframework.foundation.fsm.impl.ActionsImpl Maven / Gradle / Ivy
package org.squirrelframework.foundation.fsm.impl;
import com.google.common.collect.Lists;
import org.squirrelframework.foundation.fsm.Action;
import org.squirrelframework.foundation.fsm.Actions;
import org.squirrelframework.foundation.fsm.StateMachine;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
public class ActionsImpl, S, E, C> implements Actions {
private final List> actions = Lists.newArrayList();
private List> sortedActions;
@Override
public void add(Action newAction) {
if(newAction!=null && !actions.contains(newAction)) {
actions.add(newAction);
}
}
@Override
public void addAll(List extends Action> newActions) {
if(newActions!=null && !newActions.isEmpty()) {
for(Action action : newActions) {
if(action!=null) add(action);
}
}
}
@Override
public List> getAll() {
return getSortedAction();
}
private List> getSortedAction() {
if(actions.isEmpty())
return Collections.emptyList();
if(sortedActions==null) {
sortedActions = Lists.newArrayList(actions);
Collections.sort(sortedActions, new Comparator>() {
@Override
public int compare(Action o1, Action o2) {
return o2.weight() - o1.weight();
}
});
sortedActions = Collections.unmodifiableList(sortedActions);
}
return sortedActions;
}
@Override
public void clear() {
actions.clear();
sortedActions=null;
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy