Esempio n. 1
0
  protected boolean compareToTemplate(XMLElement topEl, XMLElement el, XMLElement tmplEl) {
    boolean ret = true;
    System.out.println("Checking against template");
    if (tmplEl.getClass() == el.getClass()) {
      if (el instanceof XMLSimpleElement && !tmplEl.isEmpty()) {
        ret = el.toValue().equals(tmplEl.toValue());
      } else if (el instanceof XMLAttribute) {
        boolean checkIt = true;
        if ((el.toName().equals("Id") || el.toName().equals("Name"))
            && el.getParent() == topEl
            && !(el instanceof ExtendedAttribute)) {
          checkIt = false;
        } else if (el.toName().equals("Value")) {
          checkIt = false;
        }
        if (checkIt) {
          XMLAttribute attrEl = (XMLAttribute) el;
          XMLAttribute attrTmplEl = (XMLAttribute) tmplEl;
          ret =
              (attrEl.getChoices() == null
                  ? attrTmplEl.getChoices() == null
                  : attrEl.getChoices().equals(attrTmplEl.getChoices()));
          if (ret && !tmplEl.isEmpty()) {
            ret = el.toValue().equals(tmplEl.toValue());
          }
        }
      } else if (el instanceof XMLComplexElement) {
        if (!tmplEl.toValue().equals("") && !tmplEl.toValue().equals(el.toValue())) {
          ret = false;
        } else {
          XMLComplexElement cmplxEl = (XMLComplexElement) el;
          Iterator it = ((XMLComplexElement) tmplEl).toElementMap().entrySet().iterator();
          while (it.hasNext()) {
            Map.Entry me = (Map.Entry) it.next();
            String subElName = (String) me.getKey();
            XMLElement subEl = (XMLElement) me.getValue();
            if (!subEl.isEmpty()) {
              if (!compareToTemplate(topEl, cmplxEl.get(subElName), subEl)) {
                ret = false;
                break;
              }
            }
          }
        }
      } else if (el instanceof XMLCollection) {
        if (!tmplEl.toValue().equals("") && !tmplEl.toValue().equals(el.toValue())) {
          ret = false;
        } else {
          XMLCollection col = (XMLCollection) el;
          List cels = ((XMLCollection) tmplEl).toElements();
          for (int i = 0; i < cels.size(); i++) {
            XMLElement tcel = (XMLElement) cels.get(i);
            if (tcel instanceof ActualParameter || tcel instanceof FormalParameter) {
              if (!compareToTemplate(topEl, col.get(i), tcel)) {
                ret = false;
                break;
              }
            } else {
              boolean btt = false;
              for (int j = 0; j < col.size(); j++) {
                XMLElement e = (XMLElement) col.get(j);
                if (compareToTemplate(topEl, e, tcel)) {
                  btt = true;
                  break;
                }
              }
              if (!btt) {
                ret = btt;
              }
            }
          }
        }
      } else if (el instanceof XMLComplexChoice) {
        XMLElement tmplChsn = ((XMLComplexChoice) tmplEl).getChoosen();
        XMLElement elChsn = ((XMLComplexChoice) el).getChoosen();
        ret = compareToTemplate(topEl, elChsn, tmplChsn);
      }
    } else {
      ret = false;
    }

    return ret;
  }