コード例 #1
0
  @Override
  public void endElement(String uri, String localName, String qName) throws SAXException {
    // Do nothing when we've finished reading an XML tag element
    //		if(qName.equalsIgnoreCase("href")) {
    //			//Save Href link, and replace "&" with "&"
    //			//href = temp.replace("&", "&");
    //			href = temp;
    //		}

    // When we reache the end of the 'cpt' element, we have all the information for one node
    if (qName.equalsIgnoreCase("cpt")) {
      // Create a node based on the currently saved information
      System.out.println("----------------------");
      System.out.println(nodeName + " node is being created...");
      // nextInt is normally exclusive of the top value,
      // so add 1 to make it inclusive
      int randomX = rand.nextInt(max - min + 1) + min;
      int randomY = rand.nextInt(max - min + 1) + min;

      // Create new node with parsed information (label, x, y)
      BayesNode newNode = new BayesNode(nodeName, randomX, randomY);
      LinkXY link = null;

      // Convert probabilities to Matrix
      System.out.println("Node probabilities: " + probabilities.toString().trim());
      String parsedProb[] = probabilities.toString().trim().split(" ");
      double numProb[] = new double[parsedProb.length];
      // System.out.println("Parsed probs:");
      for (int i = 0; i < parsedProb.length; i++) {
        // System.out.println(Double.valueOf(parsedProb[i]));
        numProb[i] = Double.valueOf(parsedProb[i]);
      }

      Matrix matrix = new Matrix(numProb, rowCount);
      newNode.setMatrix(matrix);

      // System.out.println("Row Names (total of " + rowCount + "):");
      //            Iterator iterator = rowNames.iterator();
      //            while(iterator.hasNext())
      //			System.out.println(iterator.next().toString());

      newNode.setRowNames((ArrayList) rowNames.clone());

      // Gets parents of this new node
      if (parents.length() != 0) {
        System.out.println("Parents = " + parents.toString().trim());
        String parsedParents[] = parents.toString().trim().split(" ");
        for (int i = 0; i < parsedParents.length; i++) {
          if (!parsedParents[i].trim().equals("")) {
            // System.out.println(parsedParents[i]);
            // Since parents should always proceed children in teh XDSL file, the below line should
            // always return a node
            BayesNode parentNode = (BayesNode) searchSpace.findNode(parsedParents[i]);
            newNode.addConnToParent(parentNode); // Connect new node to parent
            parentNode.addConnToChild(newNode); // Connect parent to new node

            // Create link for drawing the graph
            link = new LinkXY(parentNode, newNode);
          }
        }
      } else {
        System.out.println("No parents for " + newNode.label);
      }

      // Add new node to search space list
      searchSpace.add(newNode);

      if (link != null) {
        searchSpace.add(link);
      }

      // Reset row count
      rowCount = 0;
      rowNames.clear();
      // Reset parents
      parents.setLength(0);
    }

    // System.out.println("endElement: " + uri + ", " + localName + ", " + qName);

  }