public void test_XMLNode_attribute_set_clear() {
   XMLTriple triple = new XMLTriple("test", "", "");
   XMLAttributes attr = new XMLAttributes();
   XMLNode node = new XMLNode(triple, attr);
   XMLAttributes nattr = new XMLAttributes();
   XMLTriple xt1 = new XMLTriple("name1", "http://name1.org/", "p1");
   XMLTriple xt2 = new XMLTriple("name2", "http://name2.org/", "p2");
   XMLTriple xt3 = new XMLTriple("name3", "http://name3.org/", "p3");
   XMLTriple xt4 = new XMLTriple("name4", "http://name4.org/", "p4");
   XMLTriple xt5 = new XMLTriple("name5", "http://name5.org/", "p5");
   nattr.add(xt1, "val1");
   nattr.add(xt2, "val2");
   nattr.add(xt3, "val3");
   nattr.add(xt4, "val4");
   nattr.add(xt5, "val5");
   node.setAttributes(nattr);
   assertTrue(node.getAttributesLength() == 5);
   assertTrue(node.isAttributesEmpty() == false);
   assertTrue(!node.getAttrName(0).equals("name1") == false);
   assertTrue(!node.getAttrValue(0).equals("val1") == false);
   assertTrue(!node.getAttrURI(0).equals("http://name1.org/") == false);
   assertTrue(!node.getAttrPrefix(0).equals("p1") == false);
   assertTrue(!node.getAttrName(1).equals("name2") == false);
   assertTrue(!node.getAttrValue(1).equals("val2") == false);
   assertTrue(!node.getAttrURI(1).equals("http://name2.org/") == false);
   assertTrue(!node.getAttrPrefix(1).equals("p2") == false);
   assertTrue(!node.getAttrName(2).equals("name3") == false);
   assertTrue(!node.getAttrValue(2).equals("val3") == false);
   assertTrue(!node.getAttrURI(2).equals("http://name3.org/") == false);
   assertTrue(!node.getAttrPrefix(2).equals("p3") == false);
   assertTrue(!node.getAttrName(3).equals("name4") == false);
   assertTrue(!node.getAttrValue(3).equals("val4") == false);
   assertTrue(!node.getAttrURI(3).equals("http://name4.org/") == false);
   assertTrue(!node.getAttrPrefix(3).equals("p4") == false);
   assertTrue(!node.getAttrName(4).equals("name5") == false);
   assertTrue(!node.getAttrValue(4).equals("val5") == false);
   assertTrue(!node.getAttrURI(4).equals("http://name5.org/") == false);
   assertTrue(!node.getAttrPrefix(4).equals("p5") == false);
   XMLTriple ntriple = new XMLTriple("test2", "http://test2.org/", "p2");
   node.setTriple(ntriple);
   assertTrue(!node.getName().equals("test2") == false);
   assertTrue(!node.getURI().equals("http://test2.org/") == false);
   assertTrue(!node.getPrefix().equals("p2") == false);
   node.clearAttributes();
   assertTrue(node.getAttributesLength() == 0);
   assertTrue(node.isAttributesEmpty() != false);
   triple = null;
   ntriple = null;
   node = null;
   attr = null;
   nattr = null;
   xt1 = null;
   xt2 = null;
   xt3 = null;
   xt4 = null;
   xt5 = null;
 }
 public void test_XMLNode_getters() {
   XMLToken token;
   XMLNode node;
   XMLTriple triple;
   XMLAttributes attr;
   XMLNamespaces NS;
   NS = new XMLNamespaces();
   NS.add("http://test1.org/", "test1");
   token = new XMLToken("This is a test");
   node = new XMLNode(token);
   assertTrue(node != null);
   assertTrue(node.getNumChildren() == 0);
   assertTrue(!node.getCharacters().equals("This is a test") == false);
   assertTrue(node.getChild(1) != null);
   attr = new XMLAttributes();
   assertTrue(attr != null);
   attr.add("attr2", "value");
   triple = new XMLTriple("attr", "uri", "prefix");
   token = new XMLToken(triple, attr);
   assertTrue(token != null);
   node = new XMLNode(token);
   assertTrue(!node.getName().equals("attr") == false);
   assertTrue(!node.getURI().equals("uri") == false);
   assertTrue(!node.getPrefix().equals("prefix") == false);
   XMLAttributes returnattr = node.getAttributes();
   assertTrue(!returnattr.getName(0).equals("attr2") == false);
   assertTrue(!returnattr.getValue(0).equals("value") == false);
   token = new XMLToken(triple, attr, NS);
   node = new XMLNode(token);
   XMLNamespaces returnNS = node.getNamespaces();
   assertTrue(returnNS.getLength() == 1);
   assertTrue(returnNS.isEmpty() == false);
   triple = null;
   token = null;
   node = null;
 }
  public static void main(String[] args) {
    System.loadLibrary("sbmlj");

    if (args.length != 2) {
      System.out.println("  usage: addingEvidenceCodes_2 <input-filename> <output-filename>");
      System.out.println("  Adds controlled vocabulary term to a species");
      System.out.println();
      System.exit(2);
    }

    SBMLDocument d = libsbml.readSBML(args[0]);
    long errors = d.getNumErrors();

    if (errors > 0) {
      System.out.println("Read Error(s):");
      d.printErrors();

      System.out.println("Correct the above and re-run.");
    } else {
      long n = d.getModel().getNumSpecies();

      if (n <= 0) {
        System.out.println("Model has no species.\n Cannot add CV terms\n");
      } else {
        Species s = d.getModel().getSpecies(0);

        /*
         * check that the species has a metaid no CVTerms will be added
         * if there is no metaid to reference
         */
        if (!s.isSetMetaId()) s.setMetaId("metaid_0000052");

        CVTerm cv1 = new CVTerm(libsbml.BIOLOGICAL_QUALIFIER);
        cv1.setBiologicalQualifierType(libsbml.BQB_OCCURS_IN);
        cv1.addResource("urn:miriam:obo.go:GO%3A0005764");

        s.addCVTerm(cv1);

        // now create the additional annotation

        // <rdf:Statement>
        // <rdf:subject rdf:resource="#metaid_0000052"/>
        // <rdf:predicate
        // rdf:resource="http://biomodels.net/biology-qualifiers/occursIn"/>
        // <rdf:object rdf:resource="urn:miriam:obo.go:GO%3A0005764"/>
        // <bqbiol:isDescribedBy>
        // <rdf:Bag>
        // <rdf:li rdf:resource="urn:miriam:obo.eco:ECO%3A0000004"/>
        // <rdf:li rdf:resource="urn:miriam:pubmed:7017716"/>
        // </rdf:Bag>
        // </bqbiol:isDescribedBy>
        // </rdf:Statement>

        /* attributes */
        XMLAttributes blank_att = new XMLAttributes();

        XMLAttributes resource_att = new XMLAttributes();

        /* create the outer statement node */
        XMLTriple statement_triple =
            new XMLTriple("Statement", "http://www.w3.org/1999/02/22-rdf-syntax-ns#", "rdf");

        XMLToken statement_token = new XMLToken(statement_triple, blank_att);

        XMLNode statement = new XMLNode(statement_token);

        /* create the subject node */
        XMLTriple subject_triple =
            new XMLTriple("subject", "http://www.w3.org/1999/02/22-rdf-syntax-ns#", "rdf");

        resource_att.clear();
        resource_att.add("rdf:resource", "#" + s.getMetaId());

        XMLToken subject_token = new XMLToken(subject_triple, resource_att);

        XMLNode subject = new XMLNode(subject_token);

        /* create the predicate node */
        XMLTriple predicate_triple =
            new XMLTriple("predicate", "http://www.w3.org/1999/02/22-rdf-syntax-ns#", "rdf");

        resource_att.clear();
        resource_att.add("rdf:resource", "http://biomodels.net/biology-qualifiers/occursIn");

        XMLToken predicate_token = new XMLToken(predicate_triple, resource_att);

        XMLNode predicate = new XMLNode(predicate_token);

        /* create the object node */
        XMLTriple object_triple =
            new XMLTriple("object", "http://www.w3.org/1999/02/22-rdf-syntax-ns#", "rdf");

        resource_att.clear();
        resource_att.add("rdf:resource", "urn:miriam:obo.go:GO%3A0005764");

        XMLToken object_token = new XMLToken(object_triple, resource_att);

        XMLNode object_ = new XMLNode(object_token);

        /* create the bqbiol node */
        XMLTriple bqbiol_triple =
            new XMLTriple("isDescribedBy", "http://biomodels.net/biology-qualifiers/", "bqbiol");

        XMLToken bqbiol_token = new XMLToken(bqbiol_triple, blank_att);

        XMLNode bqbiol = new XMLNode(bqbiol_token);

        /* create the bag node */
        XMLTriple bag_triple =
            new XMLTriple("Bag", "http://www.w3.org/1999/02/22-rdf-syntax-ns#", "rdf");

        XMLToken bag_token = new XMLToken(bag_triple, blank_att);

        XMLNode bag = new XMLNode(bag_token);

        /* create each li node and add to the bag */
        XMLTriple li_triple =
            new XMLTriple("li", "http://www.w3.org/1999/02/22-rdf-syntax-ns#", "rdf");

        resource_att.clear();
        resource_att.add("rdf:resource", "urn:miriam:obo.eco:ECO%3A0000004");

        XMLToken li_token = new XMLToken(li_triple, resource_att);
        li_token.setEnd();

        XMLNode li = new XMLNode(li_token);

        bag.addChild(li);

        resource_att.clear();
        resource_att.add("rdf:resource", "urn:miriam:pubmed:7017716");
        li_token = new XMLToken(li_triple, resource_att);
        li_token.setEnd();
        li = new XMLNode(li_token);

        bag.addChild(li);

        /* add the bag to bqbiol */
        bqbiol.addChild(bag);

        /* add subject, predicate, object and bqbiol to statement */
        statement.addChild(subject);
        statement.addChild(predicate);
        statement.addChild(object_);
        statement.addChild(bqbiol);

        /*
         * create a top-level RDF element this will ensure correct
         * merging
         */

        XMLNamespaces xmlns = new XMLNamespaces();
        xmlns.add("http://www.w3.org/1999/02/22-rdf-syntax-ns#", "rdf");
        xmlns.add("http://purl.org/dc/elements/1.1/", "dc");
        xmlns.add("http://purl.org/dc/terms/", "dcterms");
        xmlns.add("http://www.w3.org/2001/vcard-rdf/3.0#", "vCard");
        xmlns.add("http://biomodels.net/biology-qualifiers/", "bqbiol");
        xmlns.add("http://biomodels.net/model-qualifiers/", "bqmodel");

        XMLTriple RDF_triple =
            new XMLTriple("RDF", "http://www.w3.org/1999/02/22-rdf-syntax-ns#", "rdf");

        XMLToken RDF_token = new XMLToken(RDF_triple, blank_att, xmlns);

        XMLNode annotation = new XMLNode(RDF_token);

        /* add the staement node to the RDF node */
        annotation.addChild(statement);

        s.appendAnnotation(annotation);

        libsbml.writeSBML(d, args[1]);
      }
    }

    System.exit((int) errors);
  }
 public void test_XMLNode_createElement() {
   XMLTriple triple;
   XMLAttributes attr;
   XMLNamespaces ns;
   XMLNode snode, enode, tnode;
   XMLAttributes cattr;
   String name = "test";
   String uri = "http://test.org/";
   String prefix = "p";
   String text = "text node";
   triple = new XMLTriple(name, uri, prefix);
   ns = new XMLNamespaces();
   attr = new XMLAttributes();
   ns.add(uri, prefix);
   attr.add("id", "value", uri, prefix);
   snode = new XMLNode(triple, attr, ns);
   assertTrue(snode != null);
   assertTrue(snode.getNumChildren() == 0);
   assertTrue(!snode.getName().equals(name) == false);
   assertTrue(!snode.getPrefix().equals(prefix) == false);
   assertTrue(!snode.getURI().equals(uri) == false);
   assertTrue(snode.isElement() == true);
   assertTrue(snode.isStart() == true);
   assertTrue(snode.isEnd() == false);
   assertTrue(snode.isText() == false);
   snode.setEnd();
   assertTrue(snode.isEnd() == true);
   snode.unsetEnd();
   assertTrue(snode.isEnd() == false);
   cattr = snode.getAttributes();
   assertTrue(cattr != null);
   assertTrue(!cattr.getName(0).equals("id") == false);
   assertTrue(!cattr.getValue(0).equals("value") == false);
   assertTrue(!cattr.getPrefix(0).equals(prefix) == false);
   assertTrue(!cattr.getURI(0).equals(uri) == false);
   triple = null;
   attr = null;
   ns = null;
   snode = null;
   attr = new XMLAttributes();
   attr.add("id", "value");
   triple = new XMLTriple(name, "", "");
   snode = new XMLNode(triple, attr);
   assertTrue(snode != null);
   assertTrue(snode.getNumChildren() == 0);
   assertTrue(!snode.getName().equals("test") == false);
   assertTrue(snode.getPrefix().equals("") == true);
   assertTrue(snode.getURI().equals("") == true);
   assertTrue(snode.isElement() == true);
   assertTrue(snode.isStart() == true);
   assertTrue(snode.isEnd() == false);
   assertTrue(snode.isText() == false);
   cattr = snode.getAttributes();
   assertTrue(cattr != null);
   assertTrue(!cattr.getName(0).equals("id") == false);
   assertTrue(!cattr.getValue(0).equals("value") == false);
   assertTrue(cattr.getPrefix(0).equals("") == true);
   assertTrue(cattr.getURI(0).equals("") == true);
   enode = new XMLNode(triple);
   assertTrue(enode != null);
   assertTrue(enode.getNumChildren() == 0);
   assertTrue(!enode.getName().equals("test") == false);
   assertTrue(enode.getPrefix().equals("") == true);
   assertTrue(enode.getURI().equals("") == true);
   assertTrue(enode.isElement() == true);
   assertTrue(enode.isStart() == false);
   assertTrue(enode.isEnd() == true);
   assertTrue(enode.isText() == false);
   tnode = new XMLNode(text);
   assertTrue(tnode != null);
   assertTrue(!tnode.getCharacters().equals(text) == false);
   assertTrue(tnode.getNumChildren() == 0);
   assertTrue(tnode.getName().equals("") == true);
   assertTrue(tnode.getPrefix().equals("") == true);
   assertTrue(tnode.getURI().equals("") == true);
   assertTrue(tnode.isElement() == false);
   assertTrue(tnode.isStart() == false);
   assertTrue(tnode.isEnd() == false);
   assertTrue(tnode.isText() == true);
   triple = null;
   attr = null;
   snode = null;
   enode = null;
   tnode = null;
 }