All Downloads are FREE. Search and download functionalities are using the official Maven repository.

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> 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