001: package org.openi.stat;
002:
003: import java.io.BufferedInputStream;
004: import java.io.BufferedReader;
005: import java.io.FileInputStream;
006: import java.io.FileNotFoundException;
007: import java.io.IOException;
008: import java.io.InputStreamReader;
009: import java.util.Iterator;
010: import java.util.Vector;
011:
012: import org.apache.log4j.Logger;
013: import org.openi.util.Util;
014: import org.rosuda.JRclient.REXP;
015: import org.rosuda.JRclient.Rconnection;
016:
017: import junit.framework.TestCase;
018:
019: public class JRClientTest extends TestCase {
020: private static Logger logger = Logger.getLogger(JRClientTest.class);
021: Rconnection rConn;
022:
023: public static void main(String[] args) {
024: }
025:
026: public JRClientTest(String arg0) {
027: super (arg0);
028: }
029:
030: protected void setUp() throws Exception {
031: super .setUp();
032: // rConn = new Rconnection("dev.intelligenceportal.com");
033: rConn = new Rconnection("localhost");
034: }
035:
036: protected void tearDown() throws Exception {
037: super .tearDown();
038: rConn.close();
039: rConn = null;
040: }
041:
042: public void testConnectionBasics() throws Exception {
043: logger.debug("toString: " + rConn.toString());
044: logger.debug("last error: " + rConn.getLastError());
045: logger.debug("server version: " + rConn.getServerVersion());
046: logger.debug("is connected: " + rConn.isConnected());
047: }
048:
049: private String readFile(String filename) throws IOException {
050: StringBuffer buffer = new StringBuffer();
051: BufferedReader input = new BufferedReader(
052: new InputStreamReader(new FileInputStream(filename)));
053: while (input.ready()) {
054: buffer.append(input.readLine());
055: buffer.append("\n");
056: }
057: return buffer.toString();
058: }
059:
060: public void testExecuteFunctionReadFromFile() throws Exception {
061: /*
062: StringBuffer command = new StringBuffer();
063: command.append("files = c(\"foobar\")\n");
064: command.append("files = c(files, \"foobar\")\n");
065: command.append("files\n");
066: */
067:
068: // adjust file locations
069: String command = readFile("survival_curve.r");
070: String datafilename = "vw_members_by_offer_group.tab";
071: command += "\nsurvival_curve(myDevice = jpeg, ext=\".jpg\", UsageGroup=offer_group, Heading=\"heading\", sIsActive=TRUE, dataSet = \""
072: + datafilename + "\", cHeight=768, cWidth=1280)";
073: REXP rexp = rConn.eval(command);
074: /*
075: double[] results = rexp.asDoubleArray();
076: for(int i=0; i < 10; i++){
077: logger.debug("" + results[i]);
078: }
079: */
080: logger.debug(parseResType(rexp.getType()));
081: // logger.debug(rexp.asString().toString());
082: logger.debug("last error: " + rConn.getLastError());
083: }
084:
085: private String parseResType(int type) {
086: String output = null;
087: switch (type) {
088: case REXP.XT_NULL:
089: output = "it's null";
090: break;
091: case REXP.XT_INT:
092: output = "XT_INT";
093: break;
094: case REXP.XT_DOUBLE:
095: output = "XT_DOUBLE";
096: break;
097: case REXP.XT_STR:
098: output = "XT_STR";
099: break;
100: case REXP.XT_LANG:
101: output = "XT_LANG";
102: break;
103: case REXP.XT_SYM:
104: output = "XT_SYM";
105: break;
106: case REXP.XT_BOOL:
107: output = "XT_BOOL";
108: break;
109: case REXP.XT_VECTOR:
110: output = "XT_VECTOR";
111: break;
112: case REXP.XT_LIST:
113: output = "XT_LIST";
114: break;
115: case REXP.XT_CLOS:
116: output = "XT_CLOS";
117: break;
118: case REXP.XT_ARRAY_INT:
119: output = "XT_ARRAY_INT'";
120: break;
121: case REXP.XT_ARRAY_DOUBLE:
122: output = "XT_ARRAY_DOUBLE'";
123: break;
124: case REXP.XT_ARRAY_STR:
125: output = "XT_ARRAY_STR'";
126: break;
127: case REXP.XT_ARRAY_BOOL_UA:
128: output = "iXT_ARRAY_BOOL_UAt's null";
129: break;
130: case REXP.XT_ARRAY_BOOL:
131: output = "XT_ARRAY_BOOL'";
132: break;
133: case REXP.XT_UNKNOWN:
134: output = "XT_UNKNOWN'";
135: break;
136: case REXP.XT_FACTOR:
137: output = "XT_FACTOR'";
138: break;
139: default:
140: output = "trouble! couldn't match type";
141:
142: }
143: return output;
144: }
145: }
|