/* Date: February 2, 2010 * Template: PluginScreenJavaTemplateGen.java.ftl * generator: org.molgenis.generators.ui.PluginScreenJavaTemplateGen 3.3.2-testing * * THIS FILE IS A TEMPLATE. PLEASE EDIT :-) */ package plugins.genenetwork; import java.io.BufferedReader; import java.io.DataInputStream; import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.io.InputStreamReader; import java.io.OutputStreamWriter; import java.net.URL; import java.net.URLConnection; import java.net.URLEncoder; import java.util.ArrayList; import org.molgenis.framework.db.Database; import org.molgenis.framework.ui.PluginModel; import org.molgenis.framework.ui.ScreenController; import org.molgenis.framework.ui.ScreenMessage; import org.molgenis.util.Tuple; public class GeneNetwork extends PluginModel { private GeneNetworkModel model = new GeneNetworkModel(); String baseurl = "http://www.genenetwork.org/webqtl/main.py"; public GeneNetworkModel getMyModel() { return model; } public GeneNetwork(String name, ScreenController<?> parent) { super(name, parent); } @Override public String getViewName() { return "GeneNetwork"; } @Override public String getViewTemplate() { return "plugins/genenetwork/GeneNetwork.ftl"; } public void handleRequest(Database db, Tuple request) { if (request.getString("__action") != null) { String action = request.getString("__action"); try { if (action.equals("postInput")) { model.setDb(request.getString("db")); model.setFormat(request.getString("format")); model.setProbe(request.getString("probe")); model.setProbeset(request.getString("probeset")); ArrayList res = wrapGet(model.getProbeset(), model.getDb(), model.getProbe(), model.getFormat()); model.setResult(res); } if (action.equals("submitFile")) { String resp = postData(request.getFile("theFile")); model.setUploadResponse(resp); } } catch (Exception e) { e.printStackTrace(); this.setMessages(new ScreenMessage(e.getMessage() != null ? e.getMessage() : "null", false)); } } } @Override public void reload(Database db) { } ArrayList<String> wrapGet(String probeset, String db, String probe, String format) { ArrayList<String> ret = new ArrayList<String>(); String cmd = "?cmd="; cmd += "get&probeset=" + probeset; cmd += "&db=" + db; cmd += "&probe=" + probe; cmd += "&format=" + format; String urlstring = baseurl + cmd; // http://www.genenetwork.org/webqtl/main.py?cmd=get&probeset=98332_at&db=bra08-03MAS5&probe=119637&format=col try { URL url = new URL(urlstring); URLConnection conn = url.openConnection(); BufferedReader rd = new BufferedReader(new InputStreamReader(conn.getInputStream())); String line; while ((line = rd.readLine()) != null) { ret.add(line); } rd.close(); } catch (Exception e) { e.printStackTrace(); } return ret; } private String readFromFile(File theFile) throws IOException { String content = ""; // Open the file that is the first // command line parameter FileInputStream fstream = new FileInputStream(theFile); // Get the object of DataInputStream DataInputStream in = new DataInputStream(fstream); BufferedReader br = new BufferedReader(new InputStreamReader(in)); String strLine; // Read File Line By Line while ((strLine = br.readLine()) != null) { // Print the content on the console content += strLine + "\n"; } // Close the input stream in.close(); return content; } private String postData(File theFile) throws IOException { String response = ""; String data = URLEncoder.encode("RISet", "UTF-8") + "=" + URLEncoder.encode("BXD", "UTF-8"); data += "&" + URLEncoder.encode("batchdatafile", "UTF-8") + "=" + URLEncoder.encode(readFromFile(theFile), "UTF-8"); data += "&" + URLEncoder.encode("FormID", "UTF-8") + "=" + URLEncoder.encode("batSubmitResult", "UTF-8"); // data += "&" + URLEncoder.encode("Default_Name", "UTF-8") ); URL url = new URL(baseurl); URLConnection conn = url.openConnection(); conn.setDoOutput(true); OutputStreamWriter wr = new OutputStreamWriter(conn.getOutputStream()); wr.write(data); wr.flush(); // Get the response BufferedReader rd = new BufferedReader(new InputStreamReader(conn.getInputStream())); String line; while ((line = rd.readLine()) != null) { // Process line... response += line; } wr.close(); rd.close(); return response; } }