Package hu.sztaki.ilab.longneck.process

Source Code of hu.sztaki.ilab.longneck.process.ProcessUtils

package hu.sztaki.ilab.longneck.process;

import hu.sztaki.ilab.longneck.process.block.*;
import hu.sztaki.ilab.longneck.process.constraint.AndOperator;
import hu.sztaki.ilab.longneck.process.constraint.CompoundConstraint;
import hu.sztaki.ilab.longneck.process.constraint.Constraint;
import java.util.ArrayList;
import java.util.List;

/**
*
* @author Molnár Péter <molnarp@sztaki.mta.hu>
*/
public class ProcessUtils {
   
    public static void postProcess(Sequence topLevelSequence, PostProcessor postProcessor) {
        for (Block b : getBlockList(topLevelSequence)) {
            postProcessor.processBlock(b);
           
            if (b instanceof Check) {
                postProcess(new AndOperator(((Check) b).getConstraints()), postProcessor);
            }
            else if (b instanceof If) {
                postProcess(((If) b).getCondition(), postProcessor);
            }
        }
    }
   
    public static void postProcess(CompoundConstraint topLevelConstraint, PostProcessor postProcessor) {
        for (Constraint c : getConstraintList(topLevelConstraint)) {
            postProcessor.processConstraint(c);
        }
    }
   
    public static List<Block> getBlockList(CompoundBlock topLevelSequence) {
        List<CompoundBlock> compoundBlocks = new ArrayList<CompoundBlock>();
        List<Block> blockList = new ArrayList<Block>();
       
        compoundBlocks.add(topLevelSequence);
        for (int i = 0; i < compoundBlocks.size(); ++i) {
            CompoundBlock compoundBlock = compoundBlocks.get(i);

            for (Block block : compoundBlock.getBlocks()) {
                blockList.add(block);
               
                if (block instanceof CompoundBlock) {
                    compoundBlocks.add((CompoundBlock) block);
                }
            }
        }
       
        return blockList;
    }
   
    public static List<Constraint> getConstraintList(CompoundConstraint topLevelConstraint) {
        List<CompoundConstraint> compoundConstraints = new ArrayList<CompoundConstraint>();
        List<Constraint> constraintList = new ArrayList<Constraint>();
       
        compoundConstraints.add(topLevelConstraint);
        for (int i = 0; i < compoundConstraints.size(); ++i) {
            CompoundConstraint compoundConstraint = compoundConstraints.get(i);

            for (Constraint constraint : compoundConstraint.getConstraints()) {
                constraintList.add(constraint);
               
                if (constraint instanceof CompoundConstraint) {
                    compoundConstraints.add((CompoundConstraint) constraint);
                }
            }
        }
       
        return constraintList;
    }

    public static List<Constraint> getConstraintList(List<Constraint> constraints) {
        CompoundConstraint topLevelConstraint = new AndOperator();
        topLevelConstraint.setConstraints(constraints);
       
        return getConstraintList(topLevelConstraint);
    }
   
}
TOP

Related Classes of hu.sztaki.ilab.longneck.process.ProcessUtils

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.