Beispiel #1
0
  /**
   * Load the rule scheme.
   *
   * @param h AGG XML helper
   */
  public void XreadObject(XMLHelper h) {
    if (h.isTag("RuleScheme", this)) {
      Object attr_str = "";

      //			setSchemeName(h.readAttr("name"));

      attr_str = h.readAttr("atLeastOneMultiMatch");
      if (!"".equals(attr_str)) {
        this.atLeastOneMultiMatch = Boolean.valueOf((String) attr_str).booleanValue();
      }

      attr_str = h.readAttr("checkConflict");
      if (!"".equals(attr_str)) {
        this.checkDeleteUseConflict = Boolean.valueOf((String) attr_str).booleanValue();
      }

      attr_str = h.readAttr("disjointMultis");
      if (!"".equals(attr_str)) {
        this.disjointMultis = Boolean.valueOf((String) attr_str).booleanValue();
      }

      attr_str = h.readAttr("enabled");
      if (!"".equals(attr_str)) {
        this.enabled = Boolean.valueOf((String) attr_str).booleanValue();
      }

      attr_str = h.readAttr("index");
      if (!"".equals(attr_str)) {
        this.itsIndex = Integer.valueOf((String) attr_str).intValue();
      }

      attr_str = h.readAttr("name");
      if (!"".equals(attr_str)) {
        setSchemeName((String) attr_str);
      }

      attr_str = h.readAttr("parallelKernel");
      if (!"".equals(attr_str)) {
        this.parallelKernel = Boolean.valueOf((String) attr_str).booleanValue();
      }

      if (h.readSubTag("Kernel")) {
        h.getObject("", this.kernelRule, true);
        h.close();
        this.kernelRule.getLeft().setKind(GraphKind.LHS);
        this.kernelRule.getRight().setKind(GraphKind.RHS);
        this.kernelRule.setRuleScheme(this);
      }

      while (h.readSubTag("Multi")) {
        MultiRule mr = createEmptyMultiRule();
        h.getObject("", mr, true);

        if (h.readSubTag("EmbeddingLeft")) {
          mr.getEmbeddingLeft().readMorphism(h);
          h.close();
        }

        if (h.readSubTag("EmbeddingRight")) {
          mr.getEmbeddingRight().readMorphism(h);
          h.close();
        }
        h.close();

        mr.getLeft().setKind(GraphKind.LHS);
        mr.getRight().setKind(GraphKind.RHS);

        mr.setRuleScheme(this);
        mr.applyEmbeddedRuleMapping(this.kernelRule);
        mapKernel2MultiObject(mr);

        this.kernelRule.getLeft().addObserver(mr);
        this.kernelRule.getRight().addObserver(mr);
      }

      this.kernelRule.setChanged(false);

      //			if (h.readSubTag("Amalgamated")) {
      //				this.amalgamRule = new AmalgamatedRule(this.getTypeSet());
      //				h.getObject("", amalgamRule, true);
      //				h.close();
      //				this.amalgamRule.setRuleScheme(this);
      //
      //				if (h.readSubTag("MatchOf")) {
      //					Object obj = h.getObject("Rule", null, false);
      //					if (obj instanceof Rule) {
      //						Rule r = (Rule) obj;
      //						Match m = createMatch(r);
      //						h.getObject("Match", m, true);
      //						if (m.getSize() > 0)
      //							m.setPartialMorphismCompletion(true);
      //					}
      //					h.close();
      //				}
      //			}

      // read layer
      if (h.readSubTag("TaggedValue")) {
        int v = 0;
        String t = h.readAttr("Tag");
        // read new attribute
        int v2 = h.readIAttr("TagValue");
        if (v2 > 0) v = v2;
        if (t.equals("layer")) this.layer = v;
        h.close();
      }

      // read priority
      if (h.readSubTag("TaggedValue")) {
        int v = 0;
        String t = h.readAttr("Tag");
        // read new attribute
        int v2 = h.readIAttr("TagValue");
        if (v2 > 0) v = v2;
        if (t.equals("priority")) this.priority = v;
        h.close();
      }
      h.close();
    }
  }