Exemplo n.º 1
0
  public void updateStatsBuildUI(boolean isInitial, SQNodeList nodeList, String cursqexp) {
    if (DebugOutput.isSetFor("AllSQUpdater")) {
      Messages.postDebug("--------------------- Calc node list:");
      SQBuild.printNodeList(nodeList);
      Messages.postDebug("--------------------- End calc nodes");
    }
    // TODO: All of updateStatsBuildUI needs cleaning up.
    // Get list of action nodes visible in the SQ
    List<String> visibleIds = getNodeIdsFromSQ(ProtocolBuilder.ACTIONS);
    String sampleInfoId = removeSampleInfoNode(visibleIds);
    if (DebugOutput.isSetFor("AllSQUpdater") && sampleInfoId != null) {
      Messages.postDebug("SampleInfo node ignored");
    }

    if (!isInitial && nodeList.size() != visibleIds.size()) {
      Messages.postDebug(
          "SQUpdater", "calc nodes: " + nodeList.size() + ", vis nodes: " + visibleIds.size());
      Util.sendToVnmr(m_updateCmd);
      if (DebugOutput.isSetFor("AllSQUpdater")) {
        Messages.postDebug(
            visibleIds.size() + " nodes visible in SQ; " + nodeList.size() + " calculated");

        // Print out the visibleNodes
        Messages.postDebug("--------------------- Visible node list:");
        SQNodeList visibleNodes = getNodeInfoFromSQ(visibleIds);
        for (SQNode node : visibleNodes) {
          Messages.postDebug(node.toString());
        }
        Messages.postDebug("--------------------- End visible nodes");
      }

    } else {
      // Get all attributes from the visible SQ nodes
      // Build list of the visible SQ Nodes
      SQNodeList visibleNodes = getNodeInfoFromSQ(visibleIds);

      if (DebugOutput.isSetFor("AllSQUpdater")) {
        Messages.postDebug("--------------------- Visible node attrs:");
        printAllNodeAttributes(visibleIds);
        Messages.postDebug("--------------------- End visible attrs");
      }

      // Find differences between nodeList and SQ
      boolean isDiff = false;
      if (DebugOutput.isSetFor("AllSQUpdater")) {
        Messages.postDebug("--------------------- Node diffs:");
      }
      for (int i = 0; i < nodeList.size(); i++) {
        SQNode node = nodeList.get(i);
        SQNode vnode = visibleNodes.get(i);
        String diffs = vnode.diff(node);
        if (diffs.length() > 0) {
          isDiff = true;
          if (DebugOutput.isSetFor("AllSQUpdater")) {
            Messages.postDebug("Node " + i + " (" + visibleIds.get(i) + ") differs:");
            Messages.postDebug(diffs);
          }

          //                    // TODO: May not need to check this stuff
          //                    String vstat = vnode.getStatus();
          //                    String cstat = node.getStatus();
          //                    Boolean completed = (cstat.equals(COMPLETED)
          //                                         && (vstat.equals(EXECUTING)
          //                                             || vstat.equals(ACTIVE)));
          //                    String vtitle = vnode.getTitle().trim();
          //                    // Displayed title may have other stuff after true title
          //                    String[] titleTokens = vtitle.split(" +", 2);
          //                    if (node.getTitle().contains(titleTokens[0]) || completed) {

          // Set some SQ node attributes to match calculated node
          List<String> changed = vnode.update(node);
          if (changed.size() > 0) {
            String nodeId = visibleIds.get(i);
            updateNodeInSQ(nodeId, vnode, changed);
            writePropFile(cursqexp, nodeId, vnode);
          }
          //                    }
        }
      }
      if (DebugOutput.isSetFor("AllSQUpdater")) {
        Messages.postDebug("--------------------- End node diffs");
      }
      if (!isDiff) {
        if (DebugOutput.isSetFor("SQUpdater")) {
          Messages.postDebug("NO DIFFERENCES");
        }
        //            } else {
        //                m_sqInfoDir = m_curSQExp + "/tmpstudy/info";
      }
    }
  }