summaryrefslogtreecommitdiff
path: root/blaconvert.java
diff options
context:
space:
mode:
authorwjoe <joe@lc8n.com>2011-12-22 11:50:51 +0000
committerwjoe <joe@lc8n.com>2011-12-22 11:50:51 +0000
commit5bc659799b8e57e41d5b0f13db26cc6ce59ae1ea (patch)
tree91601f46bd89991593668f8698a04f2b8a4b78bb /blaconvert.java
Initial commit
Diffstat (limited to 'blaconvert.java')
-rw-r--r--blaconvert.java134
1 files changed, 134 insertions, 0 deletions
diff --git a/blaconvert.java b/blaconvert.java
new file mode 100644
index 0000000..c493df8
--- /dev/null
+++ b/blaconvert.java
@@ -0,0 +1,134 @@
+/*
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation, either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+/*
+ Copyright 2011 Joe Robinson <joe@lc8n.com>
+ based on code by Jamie Walters <jagw@jagw.co.uk>
+ based on code by Joe Robinson <joe@lc8n.com>
+*/
+
+
+import java.net.URL;
+import java.net.URLConnection;
+import java.io.BufferedReader;
+import java.io.IOException;
+import java.io.InputStreamReader;
+import java.util.ArrayList;
+
+public class blaconvert {
+
+ public static void main(String[] args) throws IOException
+ {
+ String sourceUnit = "";
+ String targetUnit = "";
+ String amount = "";
+ /* Build query from query or arguments, depending on whether
+ arguments were given. */
+ if (args.length == 0) {
+ try {
+ BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
+ String[] split = br.readLine().split(" ");
+ amount = split[0];
+ sourceUnit = split[1];
+ targetUnit = split[3];
+
+ } catch (Exception e) {
+ System.err.println("Error:" + e.getMessage());
+ System.exit(1);
+ }
+ } else {
+ amount = args[0];
+ sourceUnit = args[1];
+ targetUnit = args[2];
+ }
+
+
+ //URL which provides XML response
+ URL url = new URL("http://www.google.com/ig/calculator?hl=en&q="+amount+sourceUnit+"=?"+targetUnit);
+ URLConnection urlc = url.openConnection();
+
+ BufferedReader br = new BufferedReader(new InputStreamReader(urlc.getInputStream()));
+ String line;
+ String[] lines;
+ String tempString = "";
+ String lhs = "";
+ String rhs = "";
+ String error = "";
+ //Read every line
+ while ((line = br.readLine()) != null)
+ {
+ // Splits the google output by the commas
+ lines = line.split(",");
+
+ for(int i=0; i<lines.length; i++){
+ //System.out.println(lines[i]);
+ // Get the useful information (the urls!)
+ if(lines[i].trim().startsWith("{lhs")){
+ tempString = lines[i];
+ // Blat the non-url information
+ lhs = tempString.substring(7, tempString.length()-1);
+ }
+ else if(lines[i].trim().startsWith("rhs")){
+ tempString = lines[i];
+ // Blat the non-url information
+ rhs = tempString.substring(6, tempString.length()-1);
+ }
+ else if(lines[i].trim().startsWith("error")){
+ tempString = lines[i];
+ // Blat the non-url information
+ error = tempString.substring(8, tempString.length()-1);
+ }
+
+ }
+
+ }
+
+ String[] parts = rhs.split(" ");
+ String result = "";
+
+ //Convert weird output into something that makes sense
+ for (int i = 0; i < parts.length; i++)
+ {
+ //System.out.println(parts[i]);
+ if (parts[i].equals("\\x26#215;"))
+ {
+ parts[i] = "*";
+ } else if (parts[i].startsWith("10\\"))
+ {
+ String[] exp = parts[i].split("\\\\");
+ parts[i] = "10^"+exp[2].substring(3, exp[2].length());
+ }
+ result += parts[i]+" ";
+ }
+
+ // Print results
+ if(error.isEmpty()) {
+
+ System.out.println(lhs+" = "+result);
+ System.exit(0);
+
+ } else {
+ if(error.equals("4"))
+ {
+ error = "Unknown unit";
+ }
+ System.out.print("Error: "+error);
+ System.out.println("\n");
+ System.exit(1);
+ }
+
+ }
+
+}