cfg_reachability.java :  » UML » model-analysis-framework » de » uniAugsburg » MAF » dfa » jwt » analysis » cfg » rules » Java Open Source

Java Open Source » UML » model analysis framework 
model analysis framework » de » uniAugsburg » MAF » dfa » jwt » analysis » cfg » rules » cfg_reachability.java
package de.uniAugsburg.MAF.dfa.jwt.analysis.cfg.rules;

import org.eclipse.emf.common.util.EList;
import org.eclipse.emf.ecore.EObject;

import de.uniAugsburg.MAF.core.exceptions.EvaluatorException;
import de.uniAugsburg.MAF.core.exceptions.InstantiatorException;
import de.uniAugsburg.MAF.core.exceptions.InvokerException;
import de.uniAugsburg.MAF.core.exceptions.VisualizerException;
import de.uniAugsburg.MAF.core.instantiation.IAttributeAccessor;
import de.uniAugsburg.MAF.core.invoker.java.IJavaRules;
import de.uniAugsburg.MAF.dfa.jwt.metamodel.JWTConstants;
import de.uniAugsburg.MAF.models.attrmm.attributes.AttrDefinition;


public class cfg_reachability implements IJavaRules
{

  public Object activitynode_isreachable(IAttributeAccessor accessor,
      AttrDefinition attrDefinition, EObject localObject) throws InstantiatorException,
      VisualizerException, InvokerException, EvaluatorException
  {
    // SAN -> trigger calculation of contained nodes
    if (localObject.eClass().getName().equals(JWTConstants.EC_SAN))
      activity_isreachable(accessor, attrDefinition, localObject);

    EList<EObject> incoming_edges = accessor.getEReferenceValues(localObject, "in");
    for (EObject incoming_edge : incoming_edges)
    {
      EObject predecessor_node = accessor.getEReferenceValue(incoming_edge, "source");

      boolean predReachable = (Boolean) accessor.getAttributeValueForObject(predecessor_node,
          "isReachable");

      if (predReachable)
        return true;
    }

    return false;
  }


  public Object activity_isreachable(IAttributeAccessor accessor, AttrDefinition attrDefinition,
      EObject localObject) throws InstantiatorException, VisualizerException,
      InvokerException, EvaluatorException
  {
    EList<EObject> nodes = accessor.getEReferenceValues(localObject, "nodes");
    accessor.getAttributeValuesForObjects(nodes, "isReachable");

    return true;
  }


  public Object activitynode_islive(IAttributeAccessor accessor, AttrDefinition attrDefinition,
      EObject localObject) throws InstantiatorException, VisualizerException,
      InvokerException, EvaluatorException
  {
    EList<EObject> outgoing_edges = accessor.getEReferenceValues(localObject, "out");
    for (EObject outgoing_edge : outgoing_edges)
    {
      EObject successor_node = accessor.getEReferenceValue(outgoing_edge, "target");

      boolean succLive = (Boolean) accessor.getAttributeValueForObject(successor_node,
          "isLive");

      if (succLive)
        return true;
    }

    return false;
  }


  public Object activity_islive(IAttributeAccessor accessor, AttrDefinition attrDefinition,
      EObject localObject) throws InstantiatorException, VisualizerException,
      InvokerException, EvaluatorException
  {
    EList<EObject> nodes = accessor.getEReferenceValues(localObject, "nodes");
    accessor.getAttributeValuesForObjects(nodes, "isLive");

    return true;
  }

}
java2s.com  | Contact Us | Privacy Policy
Copyright 2009 - 12 Demo Source and Support. All rights reserved.
All other trademarks are property of their respective owners.