esProc Helps Process Structured Texts in Java –Expression Computing

As Java doesn’t directly support dynamically parsing expressions in the text files, the computation can only be realized by splitting strings manually and then writing a recursive program. The whole process requires writing a great amount of code, is complicated and the code is difficult to maintain. With the assistance of esProc, we can develop program for the computation in Java without writing code manually. Let’s look at how esProc works through an example.

Here is a text file formula.txt with tab being the separator and the first row being the column names. It has three columns: No, type and exp. Column exp consists of formulas. It is required to parse the formulas in column exp dynamically, append the results to the column and rename it as value. The first rows of data of for mula.txt are as follows:

esProc_java_structured_expression_1

The esProc script is as follows:

esProc_java_structured_expression_2

A1:=file(“E:\\ formula.txt”).import@t(). import function is used to import the text file. Function option @t means importing the first row as the column names. The imported data will be stored in cell A1 as follows:

esProc_java_structured_expression_3

A2:=A1.derive(eval(exp):value).derive function is used to add a new column – value – to A1. The value of the column is eval(exp). eval function is to parse the strings dynamically. For example, the computed result of eval(“1+1”) is 2. Since column exp consists of multiple strings, the computed result of eval(exp) will be multiple too, as shown below:

esProc_java_structured_expression_4

Now that the dynamic expression has been parsed, A2 will be written to a text file. The code is:

A3:=file(“E:\\ result.txt”).export@t(A2)

In the above script, export function is used to write the data in A2 to the file result.txt. Function option @t means writing the column names to the first row. The following content will be shown when the file is opened:

esProc_java_structured_expression_5

A4:result A2. This line of script is to return the data in A2 to Java. To get the result, Java will only call the esProc script through JDBC. The code for this last step is as follows:

//create a connection using esProcjdbc

Class.forName(“com.esproc.jdbc.InternalDriver”);

con= DriverManager.getConnection(“jdbc:esproc:local://”);

//call esProc file script, whose name is test

st =(com.esproc.jdbc.InternalCStatement)con.prepareCall(“call test()”);

st.execute();//execute esProc stored procedure

ResultSet set = st.getResultSet();   // get the result set

Advertisements

About datathinker

a technical consultant on Database performance optimization, Database storage expansion, Off-database computation. personal blog at: datakeywrod, website: raqsoft
This entry was posted in Data Analytics, esProc/R/Python/Perl, Program Language, Structured Data Process. Bookmark the permalink.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s