package rubysoapservices;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.NodeList;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import java.net.URL;
import nl.aidministrator.rdf.client.*;
import java.io.*;
import java.net.URL;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.util.*;
import nl.aidministrator.rdf.client.model.*;
import nl.aidministrator.rdf.client.query.*;
import nl.aidministrator.rdf.client.repositorylist.*;
import nl.aidministrator.rdf.client.admin.*;
import nl.aidministrator.util.http.*;
import org.xml.sax.*;
import org.xml.sax.helpers.XMLReaderFactory;
/**
* @author Nikki Rogers (nikki.rogers@bristol.ac.uk)
Call this class from the commandline e.g. C:\Program Files\axis-1_1RC1>java rubysoapservices/SesameTestStandalone
It issues a hardcoded query against the sesame database "rubyInfodb" in which you can upload data
in order to test we can soap<->rdf roundtrip
*/
public class SesameTestStandalone {
public static void main(String[] args)
throws Exception
{
System.setProperty(
"org.xml.sax.driver", "org.apache.xerces.parsers.SAXParser");
// private SesRecord result_bean;
URL sesameURL = new URL("http://localhost:8080/sesame/");
SesameClient client = new SesameClient(sesameURL);
System.out.println("here goes ... please wait ...");
// uncomment these lines if using authentication
// client.setUserName("testuser");
// client.setPassword("opensesame");
// because this is a test, hardcode the query
String query = "select X, PRODUCT_NAME, VERSION, STATUS, HOMEPAGE, DOWNLOAD, LICENSE, DESC, EMAIL,OWNER_NAME, OWNER_ID, CATEGORY_MAJOR, CATEGORY_MINOR from {X} ruby:ruby_product . ruby:product_name {PRODUCT_NAME} , {X} ruby:ruby_product . ruby:version {VERSION} ,{X} ruby:ruby_product . ruby:status {STATUS}, {X} ruby:ruby_product . ruby:homepage {HOMEPAGE}, {X} ruby:ruby_product . ruby:download {DOWNLOAD}, {X} ruby:ruby_product . ruby:license {LICENSE}, {X} ruby:ruby_product . ruby:desc {DESC}, {X} ruby:ruby_owner . ruby:email {EMAIL} , {X} ruby:ruby_owner . ruby:owner_name {OWNER_NAME} , {X} ruby:ruby_owner . ruby:owner_id {OWNER_ID} , {X} ruby:ruby_category . ruby:category_major {CATEGORY_MAJOR} , {X} ruby:ruby_category . ruby:category_minor {CATEGORY_MINOR} using namespace ruby = http://example.ruby-language.org/rda-vocab/test2.rdf#";
// Note that the value "mysql-rubyInfo" has a corresponding entry in the config file for sesame
QueryResultsTable queryanswer = client.evalRqlQuery(query, "mysql-rubyInfo");
int rowcount = queryanswer.getRowCount();
RubyInfo [] result_array = new RubyInfo [rowcount];
for (int row = 0; row < rowcount; row++) {
RubyInfo result_bean = new RubyInfo();
Product product_bean = new Product();
Owner owner_bean = new Owner();
Category category_bean = new Category();
for (int col = 0; col < queryanswer.getColumnCount(); col++) {
Value v = queryanswer.getValue(row, col);
switch (col) {
case 0:
// begin to fill the Product bean
product_bean.setProduct_Name(v.toString());
System.out.print(product_bean.getProduct_Name() + "\t");
break;
// carry on filling the Product bean ...
case 1: product_bean.setVersion(v.toString());
System.out.print(product_bean.getVersion() + "\t");
break;
// carry on filling the Product bean ...
case 2: product_bean.setStatus(v.toString());
System.out.print(product_bean.getStatus() + "\t");
break;
// carry on filling the Product bean ...
case 3: product_bean.setHomepage(v.toString());
System.out.print(product_bean.getHomepage() + "\t");
break;
case 4: product_bean.setDownload(v.toString());
System.out.print(product_bean.getDownload() + "\t");
break;
case 5: product_bean.setLicense(v.toString());
System.out.print(product_bean.getLicense() + "\t");
break;
case 6: product_bean.setDesc(v.toString());
System.out.print(product_bean.getDesc() + "\t");
break;
case 7: owner_bean.setEmail(v.toString());
System.out.print(owner_bean.getEmail() + "\t");
break;
case 8: owner_bean.setOwner_Name(v.toString());
System.out.print(owner_bean.getOwner_Name() + "\t");
break;
case 9: owner_bean.setOwner_Id(v.toString());
System.out.print(owner_bean.getOwner_Id() + "\t");
break;
case 10: category_bean.setCategory_Major(v.toString());
System.out.print(category_bean.getCategory_Major() + "\t");
break;
case 11: category_bean.setCategory_Minor(v.toString());
System.out.print(category_bean.getCategory_Minor() + "\t");
break;
// should add the update field in here
}
}
// now add the nested beans to the result_bean (which is of type Ruby_info)
result_bean.setRuby_Product(product_bean);
result_bean.setRuby_Category(category_bean);
result_bean.setRuby_Owner(owner_bean);
// ok, we should have filled up our bean by now, so lets add it to the array of beans
result_array[row] = result_bean;
}
System.out.print("FINISHED - all beans should be full now!");
}
}