List of usage examples for com.fasterxml.jackson.core JsonParser getValueAsDouble
public double getValueAsDouble(double defaultValue) throws IOException, JsonParseException
From source file:org.zapto.samhippiemiddlepoolchecker.Values.java
PoolError update(String address, URL... urls) { //error is returned at the end PoolError error = PoolError.NONE;//from w ww. ja v a 2 s .co m //Aborting the http to save data throws an error. This says if we should cover it up. boolean actualNetworkError = true; //reset the values. If they are never changed, then 0 is the most accurate number accepted = 0; rejected = 0; immature = 0; unexchanged = 0; balance = 0; paid = 0; try { //streaming the json HttpClient client = new DefaultHttpClient(); HttpGet request = new HttpGet(urls[0].toString()); HttpResponse response = client.execute(request); InputStream in = response.getEntity().getContent(); JsonFactory factory = new JsonFactory(); JsonParser parser = factory.createParser(in); boolean addressFound = false;//see if we need to return and address not found error mainParse: //label for breaking when address is found while (parser.nextToken() != JsonToken.END_OBJECT)//finding "report" { if ("report".equals(parser.getCurrentName()))//beginning of report { boolean firstRun = true; while (parser.nextToken() == JsonToken.START_ARRAY)//each address has its own array { if (firstRun)//this jumps over some junk at the begining { parser.nextToken(); firstRun = false; } parser.nextToken();//have to skip some junk each time if (address.equals(parser.getText()))//we have found our address { addressFound = true;//this prevents an address not found error from being returned while (parser.nextToken() != JsonToken.END_ARRAY) { //getting each of our values from the array. //having -420 as a default lets us see if the value is there while not using up 0 if ("megahashesPerSecond".equals(parser.getCurrentName())) { float value = (float) parser.getValueAsDouble(-420); if (value > 0)//negative means wrong value { accepted = value; } } if ("rejectedMegahashesPerSecond".equals(parser.getCurrentName())) { float value = (float) parser.getValueAsDouble(-420); if (value > 0)//negative means wrong value { rejected = value; } } if ("immatureBalance".equals(parser.getCurrentName())) { float value = (float) parser.getValueAsDouble(-420); if (value > 0)//negative means wrong value { immature = value; } } if ("unexchangedBalance".equals(parser.getCurrentName())) { float value = (float) parser.getValueAsDouble(-420); if (value > 0)//negative means wrong value { unexchanged = value; } } if ("bitcoinBalance".equals(parser.getCurrentName())) { float value = (float) parser.getValueAsDouble(-420); if (value > 0)//negative means wrong value { balance = value; } } if ("paidOut".equals(parser.getCurrentName())) { float value = (float) parser.getValueAsDouble(-420); if (value > 0)//negative means wrong value { paid = value; } } } break mainParse;//no need to download any more addresses } else { while (parser.nextToken() != JsonToken.END_ARRAY) { } //skipping over an unwanted address } } } } if (!addressFound)//we never found an address { error = PoolError.ADDRESS; } actualNetworkError = false; request.abort();//should stop any extra data usage, also forces ioexception (which is ignored) parser.close(); in.close(); } catch (MalformedURLException e) { if (actualNetworkError) { error = PoolError.NETWORK; } } catch (IOException e) { if (actualNetworkError) { error = PoolError.NETWORK; } } return error; }