Package org.wso2.carbon.bpel.ui.bpel2svg.impl

Source Code of org.wso2.carbon.bpel.ui.bpel2svg.impl.ActivityImpl

// This code is taken from WSO2 Carbon and is licensed by WSO2, Inc.
// under the Apache License version 2.0 http://www.apache.org/licenses/LICENSE-2.0.html
package org.wso2.carbon.bpel.ui.bpel2svg.impl;

import java.util.*;

import org.w3c.dom.svg.SVGDocument;
import org.w3c.dom.Element;
import org.w3c.dom.Text;
import org.w3c.dom.DOMImplementation;
import org.apache.batik.svggen.SVGGraphics2D;
import org.apache.batik.dom.svg.SVGDOMImplementation;
import org.apache.axiom.om.OMElement;
import org.apache.axiom.om.OMAttribute;
import org.wso2.carbon.bpel.ui.bpel2svg.BPEL2SVGIcons;
import org.wso2.carbon.bpel.ui.bpel2svg.Link;
import org.wso2.carbon.bpel.ui.bpel2svg.ActivityInterface;
import org.wso2.carbon.bpel.ui.bpel2svg.BPELAttributeValuePair;

public abstract class ActivityImpl implements org.wso2.carbon.bpel.ui.bpel2svg.ActivityInterface {
    // Local Variables
    protected org.wso2.carbon.bpel.ui.bpel2svg.LayoutManager layoutManager =
            org.wso2.carbon.bpel.ui.bpel2svg.BPEL2SVGFactory.getInstance().getLayoutManager();
    protected String name = null;
    protected String displayName = null;
    protected List<org.wso2.carbon.bpel.ui.bpel2svg.ActivityInterface> subActivities =
            new ArrayList<org.wso2.carbon.bpel.ui.bpel2svg.ActivityInterface>();
    protected List<org.wso2.carbon.bpel.ui.bpel2svg.BPELAttributeValuePair> attributes =
            new ArrayList<org.wso2.carbon.bpel.ui.bpel2svg.BPELAttributeValuePair>();
   
    protected int startLineNumber=-1;
   
    protected ActivityState state=ActivityState.Ready;
   
    public List<BPELAttributeValuePair> getAttributes() {
        return attributes;
    }

    public Map<String, Link> links;
    protected Set<org.wso2.carbon.bpel.ui.bpel2svg.ActivityInterface> sources;
    protected Set<org.wso2.carbon.bpel.ui.bpel2svg.ActivityInterface> targets;

    public int getCorrectionY() {
        return correctionY;
    }

    public void setCorrectionY(int correctionY) {
        this.correctionY += correctionY;
    }

    protected int correctionY = 0;

    public ActivityInterface getParent() {
        return parent;
    }

    public void setParent(ActivityInterface parent) {
        this.parent = parent;
    }

    protected ActivityInterface parent = null;

    // Start Icon
    protected String startIconPath = null;
    protected int startIconHeight = layoutManager.getStartIconDim();
    protected int startIconWidth = layoutManager.getStartIconDim();
    protected int startIconXLeft = 0;
    protected int startIconYTop = 0;
    protected int startIconTextXLeft = 0;
    protected int startIconTextYTop = 0;
    // End Icon
    protected String endIconPath = null;
    protected int endIconHeight = layoutManager.getEndIconDim();
    protected int endIconWidth = layoutManager.getEndIconDim();
    protected int endIconXLeft = 0;
    protected int endIconYTop = 0;
    protected int endIconTextXLeft = 0;
    protected int endIconTextYTop = 0;
    // Layout
    protected boolean verticalChildLayout = true;
    // SVG Specific
    protected org.wso2.carbon.bpel.ui.bpel2svg.SVGDimension dimensions = null;
    protected boolean exitIcon = false;


    //SVG Batik Specific - I modify
    protected /*static*/ SVGGraphics2D generator = null;

    protected /*static*/ DOMImplementation dom = SVGDOMImplementation.getDOMImplementation();
    protected /*static*/ String svgNS = SVGDOMImplementation.SVG_NAMESPACE_URI;
    protected /*static*/ SVGDocument doc = (SVGDocument) dom.createDocument(svgNS, "svg", null);
    protected /*static*/ Element root = doc.getDocumentElement();


    // Box
    public final static int BOX_MARGIN = 10;
    protected int boxXLeft = 0;
    protected int boxYTop = 0;
    protected int boxHeight = 0;
    protected int boxWidth = 0;
    protected String boxStyle = "fill-opacity:0.04;fill-rule:evenodd;stroke:#0000FF;stroke-width:1.99999988;" +
            "stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;" +
            "bbbbbbbstroke-opacity:1;fill:url(#orange_red);stroke-opacity:0.2";
    protected String failureBoxStyle = "fill-opacity:0.04;fill-rule:evenodd;stroke:#FF0000;stroke-width:2.99999988;" +
        "stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;" +
        "bbbbbbbstroke-opacity:1;fill:url(#orange_red);stroke-opacity:0.8";

    // Constructor
    public ActivityImpl() {
        super();
    }

    public ActivityImpl(String token) {
        int nameIndex = token.indexOf("name");
        if (nameIndex >= 0) {
            int firstQuoteIndex = token.indexOf("\"", nameIndex + 1);
            if (firstQuoteIndex >= 0) {
                int lastQuoteIndex = token.indexOf("\"", firstQuoteIndex + 1);
                if (lastQuoteIndex > firstQuoteIndex) {
                    setName(token.substring(firstQuoteIndex + 1, lastQuoteIndex));
                    setDisplayName(getName());
                }
            }
        }
    }

    public ActivityImpl(OMElement omElement) {
        Iterator tmpIterator = omElement.getAllAttributes();

        while (tmpIterator.hasNext()) {
            OMAttribute omAttribute = (OMAttribute) tmpIterator.next();
            String tmpAttribute = new String(omAttribute.getLocalName());
            String tmpValue = new String(omAttribute.getAttributeValue());

            if (tmpAttribute != null && tmpValue != null) {
                attributes.add(new org.wso2.carbon.bpel.ui.bpel2svg.BPELAttributeValuePair(tmpAttribute, tmpValue));

                if (tmpAttribute.equals(new String("name"))) {
                    setName(tmpValue);
                    setDisplayName(getName());
                }
            }
        }
       
        // Record source line number
        startLineNumber = omElement.getLineNumber();
    }

    // Properties
    public String getDisplayName() {
        return displayName;
    }
   
    /**
     * The starting line number associated with the activity.
     *
     * @return The start line number
     */
    public int getStartLineNumber() {
      return(startLineNumber);
    }
   
    /**
     * The end line number associated with the activity.
     *
     * @return The end line number, or -1 if could not be determined
     */
    public int getEndLineNumber() {
      int ret=-1;
     
      ActivityInterface parent=getParent();
     
      if (parent != null) {
        int index=parent.getSubActivities().indexOf(this);
       
        if (index != -1) {
          if (index < (parent.getSubActivities().size()-1)) {
            ActivityInterface other=parent.getSubActivities().get(index+1);
           
            ret = other.getStartLineNumber()-1;
          } else {
            ret = parent.getEndLineNumber();
          }
        }
      }
     
      return(ret);
    }

    /**
     * This method returns the activity located at the specified
     * line number.
     *
     * @param lineNumber The line number
     * @return The activity, or null if not found
     */
    public ActivityInterface getActivityAtLineNumber(int lineNumber) {
      ActivityInterface ret=null;
     
      int endline=getEndLineNumber();
     
      if (getStartLineNumber() <= lineNumber && (endline == -1 || endline >= lineNumber)) {
       
        java.util.Iterator<ActivityInterface> iter=subActivities.iterator();
       
        while (ret == null && iter.hasNext()) {
          ret = iter.next().getActivityAtLineNumber(lineNumber);
        }
       
        if (ret == null) {
          ret = this;
        }
      }
     
      return(ret);
    }
   
    public ActivityState getState() {
      return(this.state);
    }
   
    public void setState(ActivityState state) {
      this.state = state;
    }

    public void setDisplayName(String displayName) {
        this.displayName = displayName;
    }

    public String getId() {
        throw new UnsupportedOperationException("Not supported yet.");
    }

    public String getLayerId() {
        return getLayerId(getId());
    }

    public String getLayerId(String id) {
        return id; //+"-Layer";
    }

    public boolean isAddOpacity() {
        throw new UnsupportedOperationException("Not supported yet.");
    }

    public boolean isAddCompositeActivityOpacity() {
        return layoutManager.isAddCompositeActivityOpacity();
    }

    public boolean isAddIconOpacity() {
        return layoutManager.isAddIconOpacity();
    }

    public boolean isAddSimpleActivityOpacity() {
        return layoutManager.isAddSimpleActivityOpacity();
    }

    public double getOpacity() {
        throw new UnsupportedOperationException("Not supported yet.");
    }

    public double getSimpleActivityOpacity() {
        return layoutManager.getSimpleActivityOpacity(getState());
    }

    public double getCompositeOpacity() {
        return layoutManager.getCompositeActivityOpacity();
    }

    public double getIconOpacity(ActivityState state) {
        return layoutManager.getIconOpacity(state);
    }

    public String getBoxId() {
        return getId(); // + "-Box";
    }

    public String getStartImageId() {
        return getId(); // + "-StartImage";
    }

    public String getEndImageId() {
        return getId(); // + "-EndImage";
    }

    public String getArrowId(String startId, String endId) {
        return startId + "-" + endId + "-Arrow";
    }

    public String getStartImageTextId() {
        return getStartImageId(); // + "-Text";
    }

    public String getEndImageTextId() {
        return getEndImageId(); // + "-Text";
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getStartIconHeight() {
        return startIconHeight;
    }

    public String getStartIconPath() {
        return startIconPath;
    }

    public void setStartIconPath(String iconPath) {
        this.startIconPath = iconPath;
    }

    public String getEndIconPath() {
        return endIconPath;
    }

    public int getStartIconWidth() {
        return startIconWidth;
    }

    public int getEndIconHeight() {
        return endIconHeight;
    }

    public int getEndIconWidth() {
        return endIconWidth;
    }

    public void setStartIconHeight(int iconHeight) {
        this.startIconHeight = iconHeight;
    }

    public void setStartIconWidth(int iconWidth) {
        this.startIconWidth = iconWidth;
    }

    public int getStartIconXLeft() {
        return startIconXLeft;
    }

    public void setStartIconXLeft(int xLeft) {
        this.startIconXLeft = xLeft;
    }

    public int getStartIconYTop() {
        return startIconYTop + correctionY;
    }

    public void setStartIconYTop(int yTop) {
        this.startIconYTop = yTop;
    }

    public int getStartIconTextXLeft() {
        return startIconTextXLeft;
    }

    public void setStartIconTextXLeft(int startIconTextXLeft) {
        this.startIconTextXLeft = startIconTextXLeft;
    }

    public int getStartIconTextYTop() {
        return startIconTextYTop + correctionY;
    }

    public void setStartIconTextYTop(int startIconTextYTop) {
        this.startIconTextYTop = startIconTextYTop;
    }

    public int getEndIconXLeft() {
        return endIconXLeft;
    }

    public void setEndIconXLeft(int xLeftEnd) {
        this.endIconXLeft = xLeftEnd;
    }

    public int getEndIconYTop() {
        return endIconYTop + correctionY;
    }

    public void setEndIconYTop(int yTopEnd) {
        this.endIconYTop = yTopEnd;
    }

    public int getEndIconTextXLeft() {
        return endIconTextXLeft;
    }

    public void setEndIconTextXLeft(int endIconTextXLeft) {
        this.endIconTextXLeft = endIconTextXLeft;
    }

    public int getEndIconTextYTop() {
        return endIconTextYTop;
    }

    public void setEndIconTextYTop(int endIconTextYTop) {
        this.endIconTextYTop = endIconTextYTop;
    }

    public int getXSpacing() {
        return layoutManager.getXSpacing();
    }

    public int getYSpacing() {
        return layoutManager.getYSpacing();
    }

    public int getBoxHeight() {
        return boxHeight;
    }

    public void setBoxHeight(int boxHeight) {
        this.boxHeight = boxHeight;
    }

    public String getBoxStyle() {
      if (getState() == ActivityState.Failed) {
        return(failureBoxStyle);
      }
        return boxStyle;
    }

    public void setBoxStyle(String boxStyle) {
        this.boxStyle = boxStyle;
    }

    public int getBoxWidth() {
        return boxWidth;
    }

    public void setBoxWidth(int boxWidth) {
        this.boxWidth = boxWidth;
    }

    public int getBoxXLeft() {
        return boxXLeft;
    }

    public void setBoxXLeft(int boxXLeft) {
        this.boxXLeft = boxXLeft;
    }

    public int getBoxYTop() {
        return boxYTop;
    }

    public void setBoxYTop(int boxYTop) {
        this.boxYTop = boxYTop;
    }

    public boolean isExitIcon() {
        return exitIcon;
    }

    public void setExitIcon(boolean exitIcon) {
        this.exitIcon = exitIcon;
    }

    public void setEndIconHeight(int iconHeightEnd) {
        this.endIconHeight = iconHeightEnd;
    }

    public void setEndIconWidth(int iconWidthEnd) {
        this.endIconWidth = iconWidthEnd;
    }

    public boolean isIncludeAssigns() {
        return layoutManager.isIncludeAssigns();
    }

    public List<org.wso2.carbon.bpel.ui.bpel2svg.ActivityInterface> getSubActivities() {
        return subActivities;
    }

    public boolean isVerticalChildLayout() {
        return verticalChildLayout;
    }

    public void setVerticalChildLayout(boolean verticalChildLayout) {
        this.verticalChildLayout = verticalChildLayout;
    }

    public boolean isHorizontalChildLayout() {
        return !isVerticalChildLayout();
    }

    public Element getSVGString(SVGDocument doc) {
        throw new UnsupportedOperationException("Not supported yet.");
    }

  public Element getSubActivitiesSVGString(SVGDocument doc) {
        Iterator<org.wso2.carbon.bpel.ui.bpel2svg.ActivityInterface> itr = subActivities.iterator();
        org.wso2.carbon.bpel.ui.bpel2svg.ActivityInterface activity = null;
        Element subElement = doc.createElementNS("http://www.w3.org/2000/svg", "g");
        while (itr.hasNext()) {
            activity = itr.next();
            subElement.appendChild(activity.getSVGString(doc));   //attention check this probably should be changed
            name = activity.getId();
        }
        return subElement;
    }

    protected Element getImageDefinition(SVGDocument doc, String imgPath, int imgXLeft, int imgYTop,
                                         int imgWidth, int imgHeight, String id) {
        Element group = null;
        group = doc.createElementNS("http://www.w3.org/2000/svg", "g");
        group.setAttributeNS(null, "id", getLayerId());

        if (getStartIconPath() != null) {         // TODO looks like redundent, imgPath in method arguments
            //if (isAddIconOpacity() && !isAddSimpleActivityOpacity()) {
                group.setAttributeNS(null, "style", "opacity:" + getIconOpacity(getState()));
            //}
            Element image = doc.createElementNS("http://www.w3.org/2000/svg", "image");
            image.setAttributeNS(null, "xlink:href", imgPath);
            //image.setAttributeNS(null, "transform", BPEL2SVGIcons.TRANSFORMATION_MATRIX);
            image.setAttributeNS(null, "x", String.valueOf(imgXLeft));
            image.setAttributeNS(null, "y", String.valueOf(imgYTop));
            image.setAttributeNS(null, "width", String.valueOf(imgWidth));
            image.setAttributeNS(null, "height", String.valueOf(imgHeight));
            image.setAttributeNS(null, "id", id);
            image.setAttributeNS("xlink", "title", getActivityInfoString());

            //if (isAddIconOpacity() && !isAddSimpleActivityOpacity()) {
                group.appendChild(image);
                return group;
            //} else {
             //   return image;
            //}
        }
        return group;
    }

    protected Element getImageDefinition(SVGDocument doc) {
        return getImageDefinition(doc, getStartIconPath(), getStartIconXLeft(), getStartIconYTop(),
                getStartIconWidth(), getStartIconHeight(), getStartImageId());
    }

    protected Element getEndImageDefinition(SVGDocument doc) {
        return getImageDefinition(doc, getEndIconPath(), getEndIconXLeft(), getEndIconYTop(), getEndIconWidth(),
                getEndIconHeight(), getEndImageId());
    }

    protected Element getImageText(SVGDocument doc, int imgXLeft, int imgYTop, int imgWidth, int imgHeight,
                                   String imgName, String imgDisplayName) {
        int txtXLeft = imgXLeft;
        int txtYTop = imgYTop; // + imgHeight + BPEL2SVGFactory.TEXT_ADJUST;

        Element a = doc.createElementNS("http://www.w3.org/2000/svg", "a");
        if (imgDisplayName != null) {
            a.setAttributeNS(null, "id", imgName);

            Element text1 = doc.createElementNS("http://www.w3.org/2000/svg", "text");
            text1.setAttributeNS(null, "x", String.valueOf(txtXLeft));
            text1.setAttributeNS(null, "y", String.valueOf(txtYTop));
            text1.setAttributeNS(null, "id", imgName + ".Text");
            text1.setAttributeNS(null, "xml:space", "preserve");
            text1.setAttributeNS(null, "style", "font-size:12px;font-style:normal;font-variant:normal;font-weight:" +
                    "normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:" +
                    "start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;" +
                    "stroke-linejoin:miter;stroke-opacity:1;font-family:Arial Narrow;" +
                    "-inkscape-font-specification:Arial Narrow");

            Element tspan = doc.createElementNS("http://www.w3.org/2000/svg", "tspan");
            tspan.setAttributeNS(null, "x", String.valueOf(txtXLeft));
            tspan.setAttributeNS(null, "y", String.valueOf(txtYTop));
            tspan.setAttributeNS(null, "id", "tspan-" + imgName);

            Text text2 = doc.createTextNode(imgDisplayName);
            tspan.appendChild(text2);

            text1.appendChild(tspan);
            a.appendChild(text1);
        }
        return a;
    }

    protected Element getStartImageText(SVGDocument doc) {
        return getImageText(doc, getStartIconTextXLeft(), getStartIconTextYTop(), getStartIconWidth(),
                getStartIconHeight(), getStartImageTextId(), getDisplayName());
    }

    protected void getEndImageText(SVGDocument doc) {
        getImageText(doc, getEndIconTextXLeft(), getEndIconTextYTop(), getStartIconWidth(), getStartIconHeight(),
                getEndImageTextId(), getDisplayName());
    }

    protected boolean isLargeArrow() {
        return largeArrow;
    }

    protected void setLargeArrow(boolean largeArrow) {
        this.largeArrow = largeArrow;
    }

    private boolean largeArrow = false;

    private String getArrowStyle(ActivityInterface start, ActivityInterface end) {
     
      String op="1";
      if ((start != null && start.getState() == ActivityState.Ready) || (end != null && end.getState() == ActivityState.Ready)) {
        op="0.3";
      }
     
        String largeArrowStr = "fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.0;stroke-linecap:" +
                "butt;stroke-linejoin:round;marker-end:url(#Arrow1Lend);stroke-miterlimit:4;stroke-dasharray:" +
                "none;stroke-opacity:"+op;
        String mediumArrowStr = "fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.0;stroke-linecap:" +
                "butt;stroke-linejoin:round;marker-end:url(#Arrow1Mend);stroke-miterlimit:4;stroke-dasharray:" +
                "none;stroke-opacity:"+op;

        if (largeArrow) {
            return largeArrowStr;
        } else {
            return mediumArrowStr;
        }
    }

    protected String getLinkArrowStyle() {
        String largeArrowStr = "fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.0;stroke-linecap:" +
                "butt;stroke-linejoin:round;marker-end:url(#LinkArrow);stroke-miterlimit:4;stroke-dasharray:" +
                "none;stroke-opacity:1;opacity: 0.25;"; // + getIconOpacity();
        String mediumArrowStr = "fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.0;stroke-linecap:" +
                "butt;stroke-linejoin:round;marker-end:url(#LinkArrow);stroke-miterlimit:4;stroke-dasharray:" +
                "none;stroke-opacity:1;opacity: 0.25;"; // + getIconOpacity();

        if (largeArrow) {
            return largeArrowStr;
        } else {
            return mediumArrowStr;
        }
    }

    protected Element getArrowDefinition(SVGDocument doc, int startX, int startY, int endX, int endY,
            String id, ActivityInterface start, ActivityInterface end) {         //here we have to find whether
        Element path = doc.createElementNS("http://www.w3.org/2000/svg", "path");

        if (startX == endX || startY == endY) {
                path.setAttributeNS(null, "d", "M " + startX + "," + startY + " L " + endX + "," + endY);
        }
        else {
            if(layoutManager.isVerticalLayout()){
                path.setAttributeNS(null, "d", "M " + startX + "," + startY + " L " + startX + "," +
                        ((startY + 2 * endY) / 3) + " L " + endX + "," + ((startY + 2 * endY) / 3) + " L " + endX +
                        "," + endY);                            //use constants for these propotions
            }else{
                path.setAttributeNS(null, "d", "M " + startX + "," + startY + " L " + ((startX + 1* endX) / 2) +
                        "," + startY + " L " + ((startX + 1* endX) / 2) + "," + endY + " L " + endX + "," + endY);                              //use constants for these propotions
            }
        }
        path.setAttributeNS(null, "id", id);
        path.setAttributeNS(null, "style", getArrowStyle(start, end));

        return path;
    }

    protected Element getArrowDefinition(SVGDocument doc, int startX, int startY, int midX, int midY, int endX,
                                         int endY, String id, ActivityInterface start, ActivityInterface end) {
        Element path = doc.createElementNS("http://www.w3.org/2000/svg", "path");
        path.setAttributeNS(null, "d", "M " + startX + "," + startY + " L " + midX + "," + midY + "L " + endX +
                "," + endY);
        path.setAttributeNS(null, "id", id);
        path.setAttributeNS(null, "style", getArrowStyle(start, end));

        return path;
    }
   
    protected Element getBoxDefinition(SVGDocument doc) {
        return getBoxDefinition(doc, getDimensions().getXLeft() + BOX_MARGIN, getDimensions().getYTop() + BOX_MARGIN,
                getDimensions().getWidth() - (BOX_MARGIN * 2), getDimensions().getHeight() - (BOX_MARGIN * 2), getBoxId());
    }

    protected Element getBoxDefinition(SVGDocument doc, int boxXLeft, int boxYTop, int boxWidth, int boxHeight, String id) {
        Element group = null;
        group = doc.createElementNS("http://www.w3.org/2000/svg", "g");
        group.setAttributeNS(null, "id", "Layer-" + id);

        if (layoutManager.isShowSequenceBoxes()) {

            Element rect = doc.createElementNS("http://www.w3.org/2000/svg", "rect");
            rect.setAttributeNS(null, "width", String.valueOf(boxWidth));
            rect.setAttributeNS(null, "height", String.valueOf(boxHeight));
            rect.setAttributeNS(null, "x", String.valueOf(boxXLeft));
            rect.setAttributeNS(null, "y", String.valueOf(boxYTop));
            rect.setAttributeNS(null, "id", "Rect" + id);
            rect.setAttributeNS(null, "rx", "10");
            rect.setAttributeNS(null, "ry", "10");
            rect.setAttributeNS(null, "style", getBoxStyle());

            group.appendChild(rect);
        }
        return group;
    }

    public org.wso2.carbon.bpel.ui.bpel2svg.SVGDimension getDimensions() {
//        return dimensions;
        throw new UnsupportedOperationException("Not supported yet.");
    }

    public void switchDimensionsToHorizontal() {
        int width = 0;
        int height = 0;

        org.wso2.carbon.bpel.ui.bpel2svg.ActivityInterface activity = null;
        Iterator<org.wso2.carbon.bpel.ui.bpel2svg.ActivityInterface> itr = getSubActivities().iterator();
        while (itr.hasNext()) {
            activity = itr.next();
            activity.switchDimensionsToHorizontal();
        }

        width = getDimensions().getWidth();
        height = getDimensions().getHeight();
        // Switch
        getDimensions().setHeight(width);
        getDimensions().setWidth(height);
    }

    public void layout(int startXLeft, int startYTop) {
        throw new UnsupportedOperationException("Not supported yet.");
    }

    public String getEndTag() {
        throw new UnsupportedOperationException("Not supported yet.");
    }

    @Override
    public String toString() {
        return getId();
    }

    public org.wso2.carbon.bpel.ui.bpel2svg.SVGCoordinates getEntryArrowCoords() {
        throw new UnsupportedOperationException("Not supported yet.");
    }

    public org.wso2.carbon.bpel.ui.bpel2svg.SVGCoordinates getExitArrowCoords() {
        throw new UnsupportedOperationException("Not supported yet.");
    }

    public void passContent() {
        root = doc.getDocumentElement();
        generator.getRoot(root);
    }

    // Methods

    public Set<org.wso2.carbon.bpel.ui.bpel2svg.ActivityInterface> getLinkRoots () {
        sources.removeAll(targets);
        return sources;
    }

    public org.wso2.carbon.bpel.ui.bpel2svg.ActivityInterface processSubActivities(OMElement omElement) {
        org.wso2.carbon.bpel.ui.bpel2svg.ActivityInterface endActivity = null;
        if (omElement != null) {
            org.wso2.carbon.bpel.ui.bpel2svg.ActivityInterface activity = null;
            Iterator iterator = omElement.getChildElements();
            while (iterator.hasNext()) {
                OMElement tmpElement = (OMElement) iterator.next();

                if (tmpElement.getLocalName().equals(org.wso2.carbon.bpel.ui.bpel2svg.BPEL2SVGFactory.ASSIGN_START_TAG) && isIncludeAssigns()) {
                    activity = new AssignImpl(tmpElement, this);
                } else if (tmpElement.getLocalName().equals(org.wso2.carbon.bpel.ui.bpel2svg.BPEL2SVGFactory.CATCHALL_START_TAG)) {
                    activity = new CatchAllImpl(tmpElement, this);
                } else if (tmpElement.getLocalName().equals(org.wso2.carbon.bpel.ui.bpel2svg.BPEL2SVGFactory.CATCH_START_TAG)) {
                    activity = new CatchImpl(tmpElement, this);
                } else if (tmpElement.getLocalName().equals(org.wso2.carbon.bpel.ui.bpel2svg.BPEL2SVGFactory.COMPENSATESCOPE_START_TAG)) {
                    activity = new CompensateScopeImpl(tmpElement, this);
                } else if (tmpElement.getLocalName().equals(org.wso2.carbon.bpel.ui.bpel2svg.BPEL2SVGFactory.COMPENSATE_START_TAG)) {
                    activity = new CompensateImpl(tmpElement, this);
                } else if (tmpElement.getLocalName().equals(org.wso2.carbon.bpel.ui.bpel2svg.BPEL2SVGFactory.COMPENSATIONHANDLER_START_TAG)) {
                    activity = new CompensationHandlerImpl(tmpElement, this);
                } else if (tmpElement.getLocalName().equals(org.wso2.carbon.bpel.ui.bpel2svg.BPEL2SVGFactory.ELSEIF_START_TAG)) {
                    activity = new ElseIfImpl(tmpElement, this);
                } else if (tmpElement.getLocalName().equals(org.wso2.carbon.bpel.ui.bpel2svg.BPEL2SVGFactory.ELSE_START_TAG)) {
                    activity = new ElseImpl(tmpElement, this);
                } else if (tmpElement.getLocalName().equals(org.wso2.carbon.bpel.ui.bpel2svg.BPEL2SVGFactory.EVENTHANDLER_START_TAG)) {
                    activity = new EventHandlerImpl(tmpElement, this);
                } else if (tmpElement.getLocalName().equals(org.wso2.carbon.bpel.ui.bpel2svg.BPEL2SVGFactory.EXIT_START_TAG)) {
                    activity = new ExitImpl(tmpElement, this);
                } else if (tmpElement.getLocalName().equals(org.wso2.carbon.bpel.ui.bpel2svg.BPEL2SVGFactory.FAULTHANDLER_START_TAG)) {
                    activity = new FaultHandlerImpl(tmpElement, this);
                } else if (tmpElement.getLocalName().equals(org.wso2.carbon.bpel.ui.bpel2svg.BPEL2SVGFactory.FLOW_START_TAG)) {
                    activity = new FlowImpl(tmpElement, this);
                } else if (tmpElement.getLocalName().equals(org.wso2.carbon.bpel.ui.bpel2svg.BPEL2SVGFactory.FOREACH_START_TAG)) {
                    activity = new ForEachImpl(tmpElement, this);
                } else if (tmpElement.getLocalName().equals(org.wso2.carbon.bpel.ui.bpel2svg.BPEL2SVGFactory.IF_START_TAG)) {
                    activity = new IfImpl(tmpElement, this);
                } else if (tmpElement.getLocalName().equals(org.wso2.carbon.bpel.ui.bpel2svg.BPEL2SVGFactory.INVOKE_START_TAG)) {
                    activity = new InvokeImpl(tmpElement, this);
                } else if (tmpElement.getLocalName().equals(org.wso2.carbon.bpel.ui.bpel2svg.BPEL2SVGFactory.ONALARM_START_TAG)) {
                    activity = new OnAlarmImpl(tmpElement, this);
                } else if (tmpElement.getLocalName().equals(org.wso2.carbon.bpel.ui.bpel2svg.BPEL2SVGFactory.ONEVENT_START_TAG)) {
                    activity = new OnEventImpl(tmpElement, this);
                } else if (tmpElement.getLocalName().equals(org.wso2.carbon.bpel.ui.bpel2svg.BPEL2SVGFactory.ONMESSAGE_START_TAG)) {
                    activity = new OnMessageImpl(tmpElement, this);
                } else if (tmpElement.getLocalName().equals(org.wso2.carbon.bpel.ui.bpel2svg.BPEL2SVGFactory.PICK_START_TAG)) {
                    activity = new PickImpl(tmpElement, this);
                } else if (tmpElement.getLocalName().equals(org.wso2.carbon.bpel.ui.bpel2svg.BPEL2SVGFactory.PROCESS_START_TAG)) {
                    activity = new ProcessImpl(tmpElement, this);
                } else if (tmpElement.getLocalName().equals(org.wso2.carbon.bpel.ui.bpel2svg.BPEL2SVGFactory.RECEIVE_START_TAG)) {
                    activity = new ReceiveImpl(tmpElement, this);
                } else if (tmpElement.getLocalName().equals(org.wso2.carbon.bpel.ui.bpel2svg.BPEL2SVGFactory.REPEATUNTIL_START_TAG)) {
                    activity = new RepeatUntilImpl(tmpElement, this);
                } else if (tmpElement.getLocalName().equals(org.wso2.carbon.bpel.ui.bpel2svg.BPEL2SVGFactory.REPLY_START_TAG)) {
                    activity = new ReplyImpl(tmpElement, this);
                } else if (tmpElement.getLocalName().equals(org.wso2.carbon.bpel.ui.bpel2svg.BPEL2SVGFactory.RETHROW_START_TAG)) {
                    activity = new ReThrowImpl(tmpElement, this);
                } else if (tmpElement.getLocalName().equals(org.wso2.carbon.bpel.ui.bpel2svg.BPEL2SVGFactory.SCOPE_START_TAG)) {
                    activity = new ScopeImpl(tmpElement, this);
                } else if (tmpElement.getLocalName().equals(org.wso2.carbon.bpel.ui.bpel2svg.BPEL2SVGFactory.SEQUENCE_START_TAG)) {
                    activity = new SequenceImpl(tmpElement, this);
/*                   
                } else if (tmpElement.getLocalName().equals(org.wso2.carbon.bpel.ui.bpel2svg.BPEL2SVGFactory.SOURCE_START_TAG)) {
                    activity = new SourceImpl(tmpElement, this);//source;
                    if (activity.getAttributes().get(0).getAttribute().equals("linkName")) {
                        if (links.containsKey(activity.getAttributes().get(0).getValue())) {    //if a entry for the particular link name already exists
                            links.get(activity.getAttributes().get(0).getValue()).setSource(this.parent);
                        }
                        else {
                            Link link = new Link();
                            link.setSource(this.parent);
                            links.put(activity.getAttributes().get(0).getValue(), link);
                        }
                        sources.add(this.parent);
                    }
                } else if (tmpElement.getLocalName().equals(org.wso2.carbon.bpel.ui.bpel2svg.BPEL2SVGFactory.SOURCES_START_TAG)) {
                    activity = new SourcesImpl(tmpElement, this);
                } else if (tmpElement.getLocalName().equals(org.wso2.carbon.bpel.ui.bpel2svg.BPEL2SVGFactory.TARGET_START_TAG)) {
                    activity = new TargetImpl(tmpElement, this);//target;
                    if (activity.getAttributes().get(0).getAttribute().equals("linkName")) {
                        if (links.containsKey(activity.getAttributes().get(0).getValue())) {
                            links.get(activity.getAttributes().get(0).getValue()).setTarget(this.parent);
                        }
                        else {
                            Link link = new Link();
                            link.setTarget(this.parent);
                            links.put(activity.getAttributes().get(0).getValue(), link);
                        }
                        targets.add(this.parent);
                    }
                } else if (tmpElement.getLocalName().equals(org.wso2.carbon.bpel.ui.bpel2svg.BPEL2SVGFactory.TARGETS_START_TAG)) {
                    activity = new TargetsImpl(tmpElement, this);
*/
                } else if (tmpElement.getLocalName().equals(org.wso2.carbon.bpel.ui.bpel2svg.BPEL2SVGFactory.TERMINATIONHANDLER_START_TAG)) {
                    activity = new TerminationHandlerImpl(tmpElement, this);
                } else if (tmpElement.getLocalName().equals(org.wso2.carbon.bpel.ui.bpel2svg.BPEL2SVGFactory.THROW_START_TAG)) {
                    activity = new ThrowImpl(tmpElement, this);
                } else if (tmpElement.getLocalName().equals(org.wso2.carbon.bpel.ui.bpel2svg.BPEL2SVGFactory.WAIT_START_TAG)) {
                    activity = new WaitImpl(tmpElement, this);
                } else if (tmpElement.getLocalName().equals(org.wso2.carbon.bpel.ui.bpel2svg.BPEL2SVGFactory.WHILE_START_TAG)) {
                    activity = new WhileImpl(tmpElement, this);
                } else if (tmpElement.getLocalName().equals(getEndTag())) {
                    break;
                } else {
                    continue;
                }

                activity.setLinkProperties(links, sources, targets);
                subActivities.add(activity);

                if (tmpElement.getChildElements().hasNext()) {
                    org.wso2.carbon.bpel.ui.bpel2svg.ActivityInterface replyActivity = activity.processSubActivities(tmpElement);
                    if (replyActivity != null) {
                        subActivities.add(replyActivity);
                    }
                }
                if (tmpElement.getLocalName().equals(org.wso2.carbon.bpel.ui.bpel2svg.BPEL2SVGFactory.PROCESS_START_TAG)) {
                    break;
                }
            }
        }
        return endActivity;
    }

    public Element getRoot() {
        return root;
    }

    public String getActivityInfoString() {
        String infoString = null;
        for(org.wso2.carbon.bpel.ui.bpel2svg.BPELAttributeValuePair x : attributes){
            String attrib = x.getAttribute();
            String val = x.getValue();
            if(infoString == null) infoString = "<" + attrib + "="  + val + "> ";
            else infoString += "<" + attrib + "="  + val + "> ";
        }

        if(infoString != null) return infoString;
        else return "No Attributes defined";
    }

    public Map<String, Link> getLinks() {
        return links;
    }

    public void setLinkProperties(Map<String, Link> links, Set<ActivityInterface> sources, Set<ActivityInterface> targets) {
        this.links = links;
        this.sources = sources;
        this.targets = targets;
    }
}
TOP

Related Classes of org.wso2.carbon.bpel.ui.bpel2svg.impl.ActivityImpl

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.