Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
  package com.xmlcalabash.core;
  
  
  import java.util.Stack;
  import java.util.Vector;
  import java.util.List;
  import java.net.URI;
 
Created by IntelliJ IDEA. User: ndw Date: Oct 20, 2009 Time: 9:25:07 AM To change this template use File | Settings | File Templates.
 
 public class XProcData {
     private Stack<StackFramestack = null;
     private XProcRuntime runtime = null;
 
     public XProcData(XProcRuntime runtime) {
         this. = runtime;
          = new Stack<StackFrame> ();
     }
 
     public void openFrame(XStep step) {
         int pos = 1;
         int size = 1;
 
         if (.size() > 0) {
             pos = .peek().;
             size = .peek().;
         }
 
         StackFrame frame = new StackFrame();
         frame.iterPos = pos;
         frame.iterSize = size;
 
         .push(frame);
         .peek(). = step;
     }
 
     public void closeFrame() {
         .pop();
     }
 
     public int getDepth() {
         return .size();
     }
     
     public XStep getStep() {
         if (.size() == 0) {
             return null;
         } else {
             return .peek().;
         }
     }
 
     public void setIterationPosition(int pos) {
         .peek(). = pos;
     }
 
     public int getIterationPosition() {
         return .peek().;
     }
 
     public void setIterationSize(int size) {
         .peek(). = size;
     }
 
     public int getIterationSize() {
         return .peek().;
     }
 
     private boolean tryGroup(XStep step) {
         if (..equals(step.getType())) {
             XdmNode node = step.getNode();
             return ..equals(node.getParent().getNodeName());
         }
         return false;
     }
 
     public boolean catchError(XdmNode error) {
         // Errors accumulate on the nearest p:try/p:group ancestor because that's where we
         // can read them. Note, however, that errors raised in a p:catch are NOT
         // part of the parent p:try but rather the grandparent.
         int pos = .size() - 1;
         if (.size() > 0 && ..equals(.peek()..getType())) {
             pos = pos - 2;
         }
         while (pos >= 0 && !tryGroup(.get(pos).)) {
             pos = pos - 1;
         }
         if (pos >= 0) {
            .get(pos)..add(error);
            return true;
        } else {
            return false;
        }
    }
    public List<XdmNodeerrors() {
        // Errors accumulate on the nearest p:try/p:group ancestor
        int pos = .size() - 1;
        while (pos >= 0 && !tryGroup(.get(pos).)) {
            pos = pos - 1;
        }
        if (pos >= 0) {
            return .get(pos).;
        } else {
            return new Stack<XdmNode> ();
        }
    }
    
    private class StackFrame {
        public XStep step = null;
        public int iterPos = 1;
        public int iterSize = 1;
        public Vector<XdmNodeerrors = new Vector<XdmNode> ();
        public StackFrame() {
            // nop;
        }
    }
New to GrepCode? Check out our FAQ X