From ddb5a6ae956d76c602188af5eb82d4d276cb209a Mon Sep 17 00:00:00 2001 From: Daniel Nilsson Date: Sat, 15 Oct 2016 18:57:55 +0200 Subject: [PATCH 01/14] Started modifying architecture to support fetching inputs --- .../EnvironmentLandAndWaterAreaClient.java | 1 + .../environment/landandwaterarea/Area.java | 5 ++++- .../population/demography/FertilityRate.java | 2 +- .../demography/MeanAgeFirstChild.java | 2 +- .../name/NumberOfChildrenBornWithFirstName.java | 2 +- .../model/population/statistic/AverageAge.java | 8 ++++++-- .../model/population/statistic/LiveBirth.java | 2 +- .../model/population/statistic/Population.java | 2 +- .../scbjavaclient/utility/JsonUtility.java | 17 +++++++++++++++++ .../utility/requester/AbstractRequester.java | 11 +++++------ .../statistic/AverageAge_UnitTest.java | 4 ++-- .../utility/RequestPoster_UnitTest.java | 2 +- 12 files changed, 41 insertions(+), 17 deletions(-) diff --git a/src/main/java/com/github/dannil/scbjavaclient/client/environment/landandwaterarea/EnvironmentLandAndWaterAreaClient.java b/src/main/java/com/github/dannil/scbjavaclient/client/environment/landandwaterarea/EnvironmentLandAndWaterAreaClient.java index 8814af5da..d12f4eedc 100644 --- a/src/main/java/com/github/dannil/scbjavaclient/client/environment/landandwaterarea/EnvironmentLandAndWaterAreaClient.java +++ b/src/main/java/com/github/dannil/scbjavaclient/client/environment/landandwaterarea/EnvironmentLandAndWaterAreaClient.java @@ -100,6 +100,7 @@ public List getArea(Collection regions, Collection types, mappings.put("Tid", years); String response = super.post("MI/MI0802/Areal2012", QueryBuilder.build(mappings)); + System.out.println(response); return JsonUtility.jsonToListOf(response, Area.class); } diff --git a/src/main/java/com/github/dannil/scbjavaclient/model/environment/landandwaterarea/Area.java b/src/main/java/com/github/dannil/scbjavaclient/model/environment/landandwaterarea/Area.java index dbca630c7..28010fc01 100644 --- a/src/main/java/com/github/dannil/scbjavaclient/model/environment/landandwaterarea/Area.java +++ b/src/main/java/com/github/dannil/scbjavaclient/model/environment/landandwaterarea/Area.java @@ -24,6 +24,8 @@ import com.github.dannil.scbjavaclient.model.ValueNode; import com.github.dannil.scbjavaclient.utility.JsonUtility; import com.github.dannil.scbjavaclient.utility.requester.AbstractRequester; +import com.github.dannil.scbjavaclient.utility.requester.RequestMethod; +import com.github.dannil.scbjavaclient.utility.requester.RequesterFactory; /** * Model for area data. @@ -123,7 +125,8 @@ public String toString() { * @return a list of codes that is used by the API to index the values */ public static List getCodes() { - return JsonUtility.getCodes(AbstractRequester.getCodes("MI/MI0802/Areal2012")); + AbstractRequester get = RequesterFactory.getRequester(RequestMethod.GET); + return JsonUtility.getCodes(get.getBodyAsStringFromTable("MI/MI0802/Areal2012")); } } diff --git a/src/main/java/com/github/dannil/scbjavaclient/model/population/demography/FertilityRate.java b/src/main/java/com/github/dannil/scbjavaclient/model/population/demography/FertilityRate.java index 6c9abb379..074002fcc 100644 --- a/src/main/java/com/github/dannil/scbjavaclient/model/population/demography/FertilityRate.java +++ b/src/main/java/com/github/dannil/scbjavaclient/model/population/demography/FertilityRate.java @@ -123,7 +123,7 @@ public String toString() { * @return a list of codes that is used by the API to index the values */ public static List getCodes() { - return JsonUtility.getCodes(AbstractRequester.getCodes("BE/BE0701/FruktsamhetSumNy")); + return JsonUtility.getCodes(AbstractRequester.getBodyAsStringFromTable("BE/BE0701/FruktsamhetSumNy")); } } diff --git a/src/main/java/com/github/dannil/scbjavaclient/model/population/demography/MeanAgeFirstChild.java b/src/main/java/com/github/dannil/scbjavaclient/model/population/demography/MeanAgeFirstChild.java index fe7f3dd5f..486096068 100644 --- a/src/main/java/com/github/dannil/scbjavaclient/model/population/demography/MeanAgeFirstChild.java +++ b/src/main/java/com/github/dannil/scbjavaclient/model/population/demography/MeanAgeFirstChild.java @@ -123,7 +123,7 @@ public String toString() { * @return a list of codes that is used by the API to index the values */ public static List getCodes() { - return JsonUtility.getCodes(AbstractRequester.getCodes("BE/BE0701/MedelAlderNY")); + return JsonUtility.getCodes(AbstractRequester.getBodyAsStringFromTable("BE/BE0701/MedelAlderNY")); } } diff --git a/src/main/java/com/github/dannil/scbjavaclient/model/population/name/NumberOfChildrenBornWithFirstName.java b/src/main/java/com/github/dannil/scbjavaclient/model/population/name/NumberOfChildrenBornWithFirstName.java index a557b21fd..89889e76d 100644 --- a/src/main/java/com/github/dannil/scbjavaclient/model/population/name/NumberOfChildrenBornWithFirstName.java +++ b/src/main/java/com/github/dannil/scbjavaclient/model/population/name/NumberOfChildrenBornWithFirstName.java @@ -119,7 +119,7 @@ public String toString() { * @return a list of codes that is used by the API to index the values */ public static List getCodes() { - return JsonUtility.getCodes(AbstractRequester.getCodes("BE/BE0001/BE0001T04Ar")); + return JsonUtility.getCodes(AbstractRequester.getBodyAsStringFromTable("BE/BE0001/BE0001T04Ar")); } } diff --git a/src/main/java/com/github/dannil/scbjavaclient/model/population/statistic/AverageAge.java b/src/main/java/com/github/dannil/scbjavaclient/model/population/statistic/AverageAge.java index 04b9f6075..b9fe1bd4f 100644 --- a/src/main/java/com/github/dannil/scbjavaclient/model/population/statistic/AverageAge.java +++ b/src/main/java/com/github/dannil/scbjavaclient/model/population/statistic/AverageAge.java @@ -17,6 +17,7 @@ package com.github.dannil.scbjavaclient.model.population.statistic; import java.util.List; +import java.util.Map; import java.util.Objects; import com.fasterxml.jackson.annotation.JsonProperty; @@ -24,6 +25,8 @@ import com.github.dannil.scbjavaclient.model.ValueNode; import com.github.dannil.scbjavaclient.utility.JsonUtility; import com.github.dannil.scbjavaclient.utility.requester.AbstractRequester; +import com.github.dannil.scbjavaclient.utility.requester.RequestMethod; +import com.github.dannil.scbjavaclient.utility.requester.RequesterFactory; /** * Model for average age. @@ -122,8 +125,9 @@ public String toString() { * * @return a list of codes that is used by the API to index the values */ - public static List getCodes() { - return JsonUtility.getCodes(AbstractRequester.getCodes("BE/BE0101/BE0101B/BefolkningMedelAlder")); + public static Map> getInputs() { + AbstractRequester get = RequesterFactory.getRequester(RequestMethod.GET); + return JsonUtility.getInputs(get.getBodyAsStringFromTable("BE/BE0101/BE0101B/BefolkningMedelAlder")); } } diff --git a/src/main/java/com/github/dannil/scbjavaclient/model/population/statistic/LiveBirth.java b/src/main/java/com/github/dannil/scbjavaclient/model/population/statistic/LiveBirth.java index c7895b9f4..103b60d1d 100644 --- a/src/main/java/com/github/dannil/scbjavaclient/model/population/statistic/LiveBirth.java +++ b/src/main/java/com/github/dannil/scbjavaclient/model/population/statistic/LiveBirth.java @@ -151,7 +151,7 @@ public String toString() { * @return a list of codes that is used by the API to index the values */ public static List getCodes() { - return JsonUtility.getCodes(AbstractRequester.getCodes("BE/BE0101/BE0101H/FoddaK")); + return JsonUtility.getCodes(AbstractRequester.getBodyAsStringFromTable("BE/BE0101/BE0101H/FoddaK")); } } diff --git a/src/main/java/com/github/dannil/scbjavaclient/model/population/statistic/Population.java b/src/main/java/com/github/dannil/scbjavaclient/model/population/statistic/Population.java index a78869de0..7c9297a3e 100644 --- a/src/main/java/com/github/dannil/scbjavaclient/model/population/statistic/Population.java +++ b/src/main/java/com/github/dannil/scbjavaclient/model/population/statistic/Population.java @@ -179,7 +179,7 @@ public String toString() { * @return a list of codes that is used by the API to index the values */ public static List getCodes() { - return JsonUtility.getCodes(AbstractRequester.getCodes("BE/BE0101/BE0101A/BefolkningNy")); + return JsonUtility.getCodes(AbstractRequester.getBodyAsStringFromTable("BE/BE0101/BE0101A/BefolkningNy")); } } diff --git a/src/main/java/com/github/dannil/scbjavaclient/utility/JsonUtility.java b/src/main/java/com/github/dannil/scbjavaclient/utility/JsonUtility.java index 71db9e026..94a9f0300 100644 --- a/src/main/java/com/github/dannil/scbjavaclient/utility/JsonUtility.java +++ b/src/main/java/com/github/dannil/scbjavaclient/utility/JsonUtility.java @@ -258,4 +258,21 @@ public static List getContentCodes(String json) { return valueTexts; } + public static Map> getInputs(String json) { + Map> inputs = new HashMap>(); + + JsonNode node = JsonUtility.toNode(json, "variables"); + for (int i = 0; i < node.size(); i++) { + JsonNode child = node.get(i); + + List values = new ArrayList(); + JsonNode valuesNode = child.get("values"); + for (int j = 0; j < valuesNode.size(); j++) { + values.add(valuesNode.get(j).asText()); + } + + inputs.put(child.get("code").asText(), values); + } + return inputs; + } } diff --git a/src/main/java/com/github/dannil/scbjavaclient/utility/requester/AbstractRequester.java b/src/main/java/com/github/dannil/scbjavaclient/utility/requester/AbstractRequester.java index ecc399cae..2dd936445 100644 --- a/src/main/java/com/github/dannil/scbjavaclient/utility/requester/AbstractRequester.java +++ b/src/main/java/com/github/dannil/scbjavaclient/utility/requester/AbstractRequester.java @@ -143,15 +143,14 @@ protected String getBody(HttpResponse response) { } /** - * Return the available codes from the specified table. + * Return the content from the specified table. * * @param table - * the table to fetch the codes from - * @return the available codes from the specified table + * the table to fetch the content from + * @return the content of the table */ - public static String getCodes(String table) { - AbstractRequester get = RequesterFactory.getRequester(RequestMethod.GET); - return get.getBodyAsString("http://api.scb.se/OV0104/v1/doris/sv/ssd/" + table); + public String getBodyAsStringFromTable(String table) { + return getBodyAsString("http://api.scb.se/OV0104/v1/doris/sv/ssd/" + table); } /** diff --git a/src/test/java/com/github/dannil/scbjavaclient/model/population/statistic/AverageAge_UnitTest.java b/src/test/java/com/github/dannil/scbjavaclient/model/population/statistic/AverageAge_UnitTest.java index d22534ea5..4e91ba47f 100644 --- a/src/test/java/com/github/dannil/scbjavaclient/model/population/statistic/AverageAge_UnitTest.java +++ b/src/test/java/com/github/dannil/scbjavaclient/model/population/statistic/AverageAge_UnitTest.java @@ -88,8 +88,8 @@ public void setValues() { } @Test - public void getCodes() { - assertNotNull(AverageAge.getCodes()); + public void getInputs() { + assertNotNull(AverageAge.getInputs()); } @Test diff --git a/src/test/java/com/github/dannil/scbjavaclient/utility/RequestPoster_UnitTest.java b/src/test/java/com/github/dannil/scbjavaclient/utility/RequestPoster_UnitTest.java index 50730995d..8f814b3fb 100644 --- a/src/test/java/com/github/dannil/scbjavaclient/utility/RequestPoster_UnitTest.java +++ b/src/test/java/com/github/dannil/scbjavaclient/utility/RequestPoster_UnitTest.java @@ -41,7 +41,7 @@ public class RequestPoster_UnitTest { @Test(expected = SCBClientUrlNotFoundException.class) public void getCodesInvalidTable() { - String response = AbstractRequester.getCodes("ABCABCABC"); + String response = AbstractRequester.getBodyAsStringFromTable("ABCABCABC"); assertNull(response); } From 2b8b8f056f2c7886080ce6f0a6d412721b6837a9 Mon Sep 17 00:00:00 2001 From: Daniel Nilsson Date: Sat, 15 Oct 2016 19:01:55 +0200 Subject: [PATCH 02/14] Renamed methods and added functionality --- .../model/environment/landandwaterarea/Area.java | 2 +- .../model/population/demography/MeanAgeFirstChild.java | 2 +- .../scbjavaclient/model/population/statistic/AverageAge.java | 4 ++-- .../scbjavaclient/model/population/statistic/LiveBirth.java | 2 +- .../com/github/dannil/scbjavaclient/utility/JsonUtility.java | 2 -- 5 files changed, 5 insertions(+), 7 deletions(-) diff --git a/src/main/java/com/github/dannil/scbjavaclient/model/environment/landandwaterarea/Area.java b/src/main/java/com/github/dannil/scbjavaclient/model/environment/landandwaterarea/Area.java index 28010fc01..9cfc9caa2 100644 --- a/src/main/java/com/github/dannil/scbjavaclient/model/environment/landandwaterarea/Area.java +++ b/src/main/java/com/github/dannil/scbjavaclient/model/environment/landandwaterarea/Area.java @@ -120,7 +120,7 @@ public String toString() { } /** - * Get the codes for the area model from the API. + * Get the available inputs for the area data from the API. * * @return a list of codes that is used by the API to index the values */ diff --git a/src/main/java/com/github/dannil/scbjavaclient/model/population/demography/MeanAgeFirstChild.java b/src/main/java/com/github/dannil/scbjavaclient/model/population/demography/MeanAgeFirstChild.java index 486096068..ef4f5dc33 100644 --- a/src/main/java/com/github/dannil/scbjavaclient/model/population/demography/MeanAgeFirstChild.java +++ b/src/main/java/com/github/dannil/scbjavaclient/model/population/demography/MeanAgeFirstChild.java @@ -118,7 +118,7 @@ public String toString() { } /** - * Get the codes for the mean age first child model from the API. + * Get the codes for the mean age first child from the API. * * @return a list of codes that is used by the API to index the values */ diff --git a/src/main/java/com/github/dannil/scbjavaclient/model/population/statistic/AverageAge.java b/src/main/java/com/github/dannil/scbjavaclient/model/population/statistic/AverageAge.java index b9fe1bd4f..7b067614d 100644 --- a/src/main/java/com/github/dannil/scbjavaclient/model/population/statistic/AverageAge.java +++ b/src/main/java/com/github/dannil/scbjavaclient/model/population/statistic/AverageAge.java @@ -121,9 +121,9 @@ public String toString() { } /** - * Get the codes for the average age from the API. + * Get the available inputs for the average age data from the API. * - * @return a list of codes that is used by the API to index the values + * @return a list of inputs that is used by the API to index the values */ public static Map> getInputs() { AbstractRequester get = RequesterFactory.getRequester(RequestMethod.GET); diff --git a/src/main/java/com/github/dannil/scbjavaclient/model/population/statistic/LiveBirth.java b/src/main/java/com/github/dannil/scbjavaclient/model/population/statistic/LiveBirth.java index 103b60d1d..b6780fc56 100644 --- a/src/main/java/com/github/dannil/scbjavaclient/model/population/statistic/LiveBirth.java +++ b/src/main/java/com/github/dannil/scbjavaclient/model/population/statistic/LiveBirth.java @@ -146,7 +146,7 @@ public String toString() { } /** - * Get the codes for the live births from the API. + * Get the codes for the live births model from the API. * * @return a list of codes that is used by the API to index the values */ diff --git a/src/main/java/com/github/dannil/scbjavaclient/utility/JsonUtility.java b/src/main/java/com/github/dannil/scbjavaclient/utility/JsonUtility.java index 94a9f0300..61d2dd842 100644 --- a/src/main/java/com/github/dannil/scbjavaclient/utility/JsonUtility.java +++ b/src/main/java/com/github/dannil/scbjavaclient/utility/JsonUtility.java @@ -264,13 +264,11 @@ public static Map> getInputs(String json) { JsonNode node = JsonUtility.toNode(json, "variables"); for (int i = 0; i < node.size(); i++) { JsonNode child = node.get(i); - List values = new ArrayList(); JsonNode valuesNode = child.get("values"); for (int j = 0; j < valuesNode.size(); j++) { values.add(valuesNode.get(j).asText()); } - inputs.put(child.get("code").asText(), values); } return inputs; From 4036f7ca13eb562a446bad4b4055ac4d8a24579c Mon Sep 17 00:00:00 2001 From: Daniel Nilsson Date: Sat, 15 Oct 2016 19:09:00 +0200 Subject: [PATCH 03/14] Renamed methods and changed functionality --- .../scbjavaclient/client/SCBClient.java | 4 +- .../scbjavaclient/utility/JsonUtility.java | 76 +++++++++++-------- 2 files changed, 46 insertions(+), 34 deletions(-) diff --git a/src/main/java/com/github/dannil/scbjavaclient/client/SCBClient.java b/src/main/java/com/github/dannil/scbjavaclient/client/SCBClient.java index 9b55c19c0..b33a5d139 100644 --- a/src/main/java/com/github/dannil/scbjavaclient/client/SCBClient.java +++ b/src/main/java/com/github/dannil/scbjavaclient/client/SCBClient.java @@ -101,14 +101,14 @@ public PopulationClient population() { * the table to fetch data from * @return a JSON string containing all available data in the specified table * - * @see com.github.dannil.scbjavaclient.utility.JsonUtility#getContentCodes(String) + * @see com.github.dannil.scbjavaclient.utility.JsonUtility#getContentsCodes(String) * JsonUtility#getContentsCodes(String) */ public String getRawData(String table) { String json = super.get(table); Map> inputs = new HashMap>(); - inputs.put("ContentsCode", JsonUtility.getContentCodes(json)); + inputs.put("ContentsCode", JsonUtility.getContentsCodes(json)); return getRawData(table, inputs); } diff --git a/src/main/java/com/github/dannil/scbjavaclient/utility/JsonUtility.java b/src/main/java/com/github/dannil/scbjavaclient/utility/JsonUtility.java index 61d2dd842..8e5457557 100644 --- a/src/main/java/com/github/dannil/scbjavaclient/utility/JsonUtility.java +++ b/src/main/java/com/github/dannil/scbjavaclient/utility/JsonUtility.java @@ -223,41 +223,12 @@ public static List jsonToListOf(String json, Class clazz) { } /** - * Extracts the codes from the input. - * - * @param content - * the input which should be parsed - * @return a list of codes for the input - */ - public static List getCodes(String content) { - JsonNode data = toNode(content); - return data.findValuesAsText("code"); - } - - /** - * Retrieves the contents codes from the specified JSON. + * Extracts all the codes and their respective available inputs from the input. * * @param json - * the json to retrieve the contents codes from - * @return a list of the available contents codes + * the json which should be parsed + * @return a collection of all codes and their respective inputs */ - public static List getContentCodes(String json) { - List valueTexts = new ArrayList(); - - JsonNode node = JsonUtility.toNode(json, "variables"); - for (int i = 0; i < node.size(); i++) { - JsonNode child = node.get(i); - if (child.get("code").asText().equals("ContentsCode")) { - JsonNode values = child.get("values"); - for (int j = 0; j < values.size(); j++) { - valueTexts.add(values.get(j).asText()); - } - break; - } - } - return valueTexts; - } - public static Map> getInputs(String json) { Map> inputs = new HashMap>(); @@ -273,4 +244,45 @@ public static Map> getInputs(String json) { } return inputs; } + + /** + * Extracts the codes from the input. + * + * @param json + * the json which should be parsed + * @return a list of codes + */ + public static List getCodes(String json) { + List codes = new ArrayList(getInputs(json).keySet()); + return codes; + + // return getInputs(json).keySet().; + // JsonNode data = toNode(content); + // return data.findValuesAsText("code"); + } + + /** + * Extracts the contents codes from the input. + * + * @param json + * the json which should be parsed + * @return a list of contents codes + */ + public static List getContentsCodes(String json) { + // List valueTexts = new ArrayList(); + // + // JsonNode node = JsonUtility.toNode(json, "variables"); + // for (int i = 0; i < node.size(); i++) { + // JsonNode child = node.get(i); + // if (child.get("code").asText().equals("ContentsCode")) { + // JsonNode values = child.get("values"); + // for (int j = 0; j < values.size(); j++) { + // valueTexts.add(values.get(j).asText()); + // } + // break; + // } + // } + // return valueTexts; + return getInputs(json).get("ContentsCode"); + } } From addf9b0e262af77d22c7e5fa7ef24b14320a6d66 Mon Sep 17 00:00:00 2001 From: Daniel Nilsson Date: Sat, 15 Oct 2016 19:11:37 +0200 Subject: [PATCH 04/14] Changed to new input fetching method --- .../model/environment/landandwaterarea/Area.java | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/github/dannil/scbjavaclient/model/environment/landandwaterarea/Area.java b/src/main/java/com/github/dannil/scbjavaclient/model/environment/landandwaterarea/Area.java index 9cfc9caa2..389af80cc 100644 --- a/src/main/java/com/github/dannil/scbjavaclient/model/environment/landandwaterarea/Area.java +++ b/src/main/java/com/github/dannil/scbjavaclient/model/environment/landandwaterarea/Area.java @@ -17,6 +17,7 @@ package com.github.dannil.scbjavaclient.model.environment.landandwaterarea; import java.util.List; +import java.util.Map; import java.util.Objects; import com.fasterxml.jackson.annotation.JsonProperty; @@ -124,9 +125,9 @@ public String toString() { * * @return a list of codes that is used by the API to index the values */ - public static List getCodes() { + public static Map> getInputs() { AbstractRequester get = RequesterFactory.getRequester(RequestMethod.GET); - return JsonUtility.getCodes(get.getBodyAsStringFromTable("MI/MI0802/Areal2012")); + return JsonUtility.getInputs(get.getBodyAsStringFromTable("MI/MI0802/Areal2012")); } } From b644dc694e278df28cf0c2a88c7c026f75bd3b6b Mon Sep 17 00:00:00 2001 From: Daniel Nilsson Date: Sun, 16 Oct 2016 08:48:04 +0200 Subject: [PATCH 05/14] Updated Javadoc --- .../scbjavaclient/model/environment/landandwaterarea/Area.java | 2 +- .../scbjavaclient/model/population/statistic/AverageAge.java | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/github/dannil/scbjavaclient/model/environment/landandwaterarea/Area.java b/src/main/java/com/github/dannil/scbjavaclient/model/environment/landandwaterarea/Area.java index 389af80cc..f956207c5 100644 --- a/src/main/java/com/github/dannil/scbjavaclient/model/environment/landandwaterarea/Area.java +++ b/src/main/java/com/github/dannil/scbjavaclient/model/environment/landandwaterarea/Area.java @@ -123,7 +123,7 @@ public String toString() { /** * Get the available inputs for the area data from the API. * - * @return a list of codes that is used by the API to index the values + * @return a list of the available codes and their inputs */ public static Map> getInputs() { AbstractRequester get = RequesterFactory.getRequester(RequestMethod.GET); diff --git a/src/main/java/com/github/dannil/scbjavaclient/model/population/statistic/AverageAge.java b/src/main/java/com/github/dannil/scbjavaclient/model/population/statistic/AverageAge.java index 7b067614d..8105fe19f 100644 --- a/src/main/java/com/github/dannil/scbjavaclient/model/population/statistic/AverageAge.java +++ b/src/main/java/com/github/dannil/scbjavaclient/model/population/statistic/AverageAge.java @@ -123,7 +123,7 @@ public String toString() { /** * Get the available inputs for the average age data from the API. * - * @return a list of inputs that is used by the API to index the values + * @return a list of the available codes and their inputs */ public static Map> getInputs() { AbstractRequester get = RequesterFactory.getRequester(RequestMethod.GET); From dc5f49bf5ba29f55ab8133c2c5c26471438ce737 Mon Sep 17 00:00:00 2001 From: Daniel Nilsson Date: Tue, 18 Oct 2016 22:56:01 +0200 Subject: [PATCH 06/14] Added new way of retrieving inputs --- .../model/population/demography/FertilityRate.java | 8 ++++++-- .../model/population/demography/MeanAgeFirstChild.java | 8 ++++++-- .../name/NumberOfChildrenBornWithFirstName.java | 8 ++++++-- .../model/population/statistic/LiveBirth.java | 8 ++++++-- .../model/population/statistic/Population.java | 8 ++++++-- 5 files changed, 30 insertions(+), 10 deletions(-) diff --git a/src/main/java/com/github/dannil/scbjavaclient/model/population/demography/FertilityRate.java b/src/main/java/com/github/dannil/scbjavaclient/model/population/demography/FertilityRate.java index 074002fcc..cb5e16e6a 100644 --- a/src/main/java/com/github/dannil/scbjavaclient/model/population/demography/FertilityRate.java +++ b/src/main/java/com/github/dannil/scbjavaclient/model/population/demography/FertilityRate.java @@ -17,6 +17,7 @@ package com.github.dannil.scbjavaclient.model.population.demography; import java.util.List; +import java.util.Map; import java.util.Objects; import com.fasterxml.jackson.annotation.JsonProperty; @@ -24,6 +25,8 @@ import com.github.dannil.scbjavaclient.model.ValueNode; import com.github.dannil.scbjavaclient.utility.JsonUtility; import com.github.dannil.scbjavaclient.utility.requester.AbstractRequester; +import com.github.dannil.scbjavaclient.utility.requester.RequestMethod; +import com.github.dannil.scbjavaclient.utility.requester.RequesterFactory; /** * Model for fertility rate. @@ -122,8 +125,9 @@ public String toString() { * * @return a list of codes that is used by the API to index the values */ - public static List getCodes() { - return JsonUtility.getCodes(AbstractRequester.getBodyAsStringFromTable("BE/BE0701/FruktsamhetSumNy")); + public static Map> getInputs() { + AbstractRequester get = RequesterFactory.getRequester(RequestMethod.GET); + return JsonUtility.getInputs(get.getBodyAsStringFromTable("BE/BE0701/FruktsamhetSumNy")); } } diff --git a/src/main/java/com/github/dannil/scbjavaclient/model/population/demography/MeanAgeFirstChild.java b/src/main/java/com/github/dannil/scbjavaclient/model/population/demography/MeanAgeFirstChild.java index ef4f5dc33..dc843d3a3 100644 --- a/src/main/java/com/github/dannil/scbjavaclient/model/population/demography/MeanAgeFirstChild.java +++ b/src/main/java/com/github/dannil/scbjavaclient/model/population/demography/MeanAgeFirstChild.java @@ -17,6 +17,7 @@ package com.github.dannil.scbjavaclient.model.population.demography; import java.util.List; +import java.util.Map; import java.util.Objects; import com.fasterxml.jackson.annotation.JsonProperty; @@ -24,6 +25,8 @@ import com.github.dannil.scbjavaclient.model.ValueNode; import com.github.dannil.scbjavaclient.utility.JsonUtility; import com.github.dannil.scbjavaclient.utility.requester.AbstractRequester; +import com.github.dannil.scbjavaclient.utility.requester.RequestMethod; +import com.github.dannil.scbjavaclient.utility.requester.RequesterFactory; /** * Model for mean age first child data. @@ -122,8 +125,9 @@ public String toString() { * * @return a list of codes that is used by the API to index the values */ - public static List getCodes() { - return JsonUtility.getCodes(AbstractRequester.getBodyAsStringFromTable("BE/BE0701/MedelAlderNY")); + public static Map> getCodes() { + AbstractRequester get = RequesterFactory.getRequester(RequestMethod.GET); + return JsonUtility.getInputs(get.getBodyAsStringFromTable("BE/BE0701/MedelAlderNY")); } } diff --git a/src/main/java/com/github/dannil/scbjavaclient/model/population/name/NumberOfChildrenBornWithFirstName.java b/src/main/java/com/github/dannil/scbjavaclient/model/population/name/NumberOfChildrenBornWithFirstName.java index 89889e76d..b86d6ab81 100644 --- a/src/main/java/com/github/dannil/scbjavaclient/model/population/name/NumberOfChildrenBornWithFirstName.java +++ b/src/main/java/com/github/dannil/scbjavaclient/model/population/name/NumberOfChildrenBornWithFirstName.java @@ -17,6 +17,7 @@ package com.github.dannil.scbjavaclient.model.population.name; import java.util.List; +import java.util.Map; import java.util.Objects; import com.fasterxml.jackson.annotation.JsonProperty; @@ -24,6 +25,8 @@ import com.github.dannil.scbjavaclient.model.ValueNode; import com.github.dannil.scbjavaclient.utility.JsonUtility; import com.github.dannil.scbjavaclient.utility.requester.AbstractRequester; +import com.github.dannil.scbjavaclient.utility.requester.RequestMethod; +import com.github.dannil.scbjavaclient.utility.requester.RequesterFactory; /** * Model for number of children born with first name. @@ -118,8 +121,9 @@ public String toString() { * * @return a list of codes that is used by the API to index the values */ - public static List getCodes() { - return JsonUtility.getCodes(AbstractRequester.getBodyAsStringFromTable("BE/BE0001/BE0001T04Ar")); + public static Map> getCodes() { + AbstractRequester get = RequesterFactory.getRequester(RequestMethod.GET); + return JsonUtility.getInputs(get.getBodyAsStringFromTable("BE/BE0001/BE0001T04Ar")); } } diff --git a/src/main/java/com/github/dannil/scbjavaclient/model/population/statistic/LiveBirth.java b/src/main/java/com/github/dannil/scbjavaclient/model/population/statistic/LiveBirth.java index b6780fc56..bf2c25c89 100644 --- a/src/main/java/com/github/dannil/scbjavaclient/model/population/statistic/LiveBirth.java +++ b/src/main/java/com/github/dannil/scbjavaclient/model/population/statistic/LiveBirth.java @@ -17,6 +17,7 @@ package com.github.dannil.scbjavaclient.model.population.statistic; import java.util.List; +import java.util.Map; import java.util.Objects; import com.fasterxml.jackson.annotation.JsonProperty; @@ -24,6 +25,8 @@ import com.github.dannil.scbjavaclient.model.ValueNode; import com.github.dannil.scbjavaclient.utility.JsonUtility; import com.github.dannil.scbjavaclient.utility.requester.AbstractRequester; +import com.github.dannil.scbjavaclient.utility.requester.RequestMethod; +import com.github.dannil.scbjavaclient.utility.requester.RequesterFactory; /** * Model for live births data. @@ -150,8 +153,9 @@ public String toString() { * * @return a list of codes that is used by the API to index the values */ - public static List getCodes() { - return JsonUtility.getCodes(AbstractRequester.getBodyAsStringFromTable("BE/BE0101/BE0101H/FoddaK")); + public static Map> getCodes() { + AbstractRequester get = RequesterFactory.getRequester(RequestMethod.GET); + return JsonUtility.getInputs(get.getBodyAsStringFromTable("BE/BE0101/BE0101H/FoddaK")); } } diff --git a/src/main/java/com/github/dannil/scbjavaclient/model/population/statistic/Population.java b/src/main/java/com/github/dannil/scbjavaclient/model/population/statistic/Population.java index 7c9297a3e..b275ec416 100644 --- a/src/main/java/com/github/dannil/scbjavaclient/model/population/statistic/Population.java +++ b/src/main/java/com/github/dannil/scbjavaclient/model/population/statistic/Population.java @@ -17,6 +17,7 @@ package com.github.dannil.scbjavaclient.model.population.statistic; import java.util.List; +import java.util.Map; import java.util.Objects; import com.fasterxml.jackson.annotation.JsonProperty; @@ -24,6 +25,8 @@ import com.github.dannil.scbjavaclient.model.ValueNode; import com.github.dannil.scbjavaclient.utility.JsonUtility; import com.github.dannil.scbjavaclient.utility.requester.AbstractRequester; +import com.github.dannil.scbjavaclient.utility.requester.RequestMethod; +import com.github.dannil.scbjavaclient.utility.requester.RequesterFactory; /** * Model for population data. @@ -178,8 +181,9 @@ public String toString() { * * @return a list of codes that is used by the API to index the values */ - public static List getCodes() { - return JsonUtility.getCodes(AbstractRequester.getBodyAsStringFromTable("BE/BE0101/BE0101A/BefolkningNy")); + public static Map> getCodes() { + AbstractRequester get = RequesterFactory.getRequester(RequestMethod.GET); + return JsonUtility.getInputs(get.getBodyAsStringFromTable("BE/BE0101/BE0101A/BefolkningNy")); } } From f1bb337c4d3d10efa9304296c5ce5971f5f56061 Mon Sep 17 00:00:00 2001 From: Daniel Nilsson Date: Tue, 18 Oct 2016 23:15:47 +0200 Subject: [PATCH 07/14] Porting over elements to new solutions --- .../scbjavaclient/client/AbstractClient.java | 121 +++++++++++------- .../scbjavaclient/client/SCBClient.java | 6 +- .../scbjavaclient/utility/JsonUtility.java | 19 +++ src/main/resources/language_en_US.properties | 3 +- src/main/resources/language_sv_SE.properties | 3 +- ...t.java => AbstractRequester_UnitTest.java} | 9 +- 6 files changed, 107 insertions(+), 54 deletions(-) rename src/test/java/com/github/dannil/scbjavaclient/utility/{RequestPoster_UnitTest.java => AbstractRequester_UnitTest.java} (78%) diff --git a/src/main/java/com/github/dannil/scbjavaclient/client/AbstractClient.java b/src/main/java/com/github/dannil/scbjavaclient/client/AbstractClient.java index d1d682613..c980d6e50 100644 --- a/src/main/java/com/github/dannil/scbjavaclient/client/AbstractClient.java +++ b/src/main/java/com/github/dannil/scbjavaclient/client/AbstractClient.java @@ -16,13 +16,11 @@ package com.github.dannil.scbjavaclient.client; -import java.util.ArrayList; import java.util.List; import java.util.Locale; import java.util.logging.Level; import java.util.logging.Logger; -import com.fasterxml.jackson.databind.JsonNode; import com.github.dannil.scbjavaclient.exception.SCBClientUrlNotFoundException; import com.github.dannil.scbjavaclient.utility.JsonUtility; import com.github.dannil.scbjavaclient.utility.Localization; @@ -163,33 +161,53 @@ protected String post(String url, String query) { * @param url * the URL to retrieve the regions from * @return a list of the available regions for the given URL - * @throws UnsupportedOperationException + * @throws IllegalArgumentException * if the specified URL doesn't supply a regions table */ public List getRegions(String url) { - String content = get(url); - - JsonNode contentAsJsonNode = JsonUtility.toNode(content); - - List codes = contentAsJsonNode.findValuesAsText("code"); - List values = contentAsJsonNode.findValues("values"); - - int position = codes.indexOf("Region"); - if (position < 0) { - Object[] variables = new Object[] { url }; - - throw new UnsupportedOperationException(this.localization.getString("regions_is_not_supported_for_url", - variables)); - } - - JsonNode jsonRegions = values.get(position); - - List regions = new ArrayList(jsonRegions.size()); - for (int j = 0; j < jsonRegions.size(); j++) { - regions.add(jsonRegions.get(j).asText()); + String json = get(url); + String code = "Region"; + try { + List values = JsonUtility.getValues(json, code); + return values; + } catch (IllegalArgumentException e) { + Object[] variables = new Object[] { code, url }; + throw new IllegalArgumentException(this.localization.getString("code_is_not_supported_for_url", variables)); } - return regions; + // if (!inputs.containsKey("Region")) { + // Object[] variables = new Object[] { url }; + // + // throw new + // UnsupportedOperationException(this.localization.getString("regions_is_not_supported_for_url", + // variables)); + // } + // return inputs.get("Region"); + + // String content = get(url); + // + // JsonNode contentAsJsonNode = JsonUtility.toNode(content); + // + // List codes = contentAsJsonNode.findValuesAsText("code"); + // List values = contentAsJsonNode.findValues("values"); + // + // int position = codes.indexOf("Region"); + // if (position < 0) { + // Object[] variables = new Object[] { url }; + // + // throw new + // UnsupportedOperationException(this.localization.getString("regions_is_not_supported_for_url", + // variables)); + // } + // + // JsonNode jsonRegions = values.get(position); + // + // List regions = new ArrayList(jsonRegions.size()); + // for (int j = 0; j < jsonRegions.size(); j++) { + // regions.add(jsonRegions.get(j).asText()); + // } + // + // return regions; } /** @@ -202,29 +220,40 @@ public List getRegions(String url) { * if the specified URL doesn't supply a years table */ public List getYears(String url) { - String content = get(url); - - JsonNode contentAsJsonNode = JsonUtility.toNode(content); - - List codes = contentAsJsonNode.findValuesAsText("code"); - List values = contentAsJsonNode.findValues("values"); - - int position = codes.indexOf("Tid"); - if (position < 0) { - Object[] variables = new Object[] { url }; - - throw new UnsupportedOperationException(this.localization.getString("years_is_not_supported_for_url", - variables)); - } - - JsonNode jsonYears = values.get(position); - - List years = new ArrayList(jsonYears.size()); - for (int j = 0; j < jsonYears.size(); j++) { - years.add(jsonYears.get(j).asText()); + String json = get(url); + String code = "Tid"; + try { + List values = JsonUtility.getValues(json, code); + return values; + } catch (IllegalArgumentException e) { + Object[] variables = new Object[] { code, url }; + throw new IllegalArgumentException(this.localization.getString("code_is_not_supported_for_url", variables)); } - - return years; + // + // String content = get(url); + // + // JsonNode contentAsJsonNode = JsonUtility.toNode(content); + // + // List codes = contentAsJsonNode.findValuesAsText("code"); + // List values = contentAsJsonNode.findValues("values"); + // + // int position = codes.indexOf("Tid"); + // if (position < 0) { + // Object[] variables = new Object[] { url }; + // + // throw new + // UnsupportedOperationException(this.localization.getString("years_is_not_supported_for_url", + // variables)); + // } + // + // JsonNode jsonYears = values.get(position); + // + // List years = new ArrayList(jsonYears.size()); + // for (int j = 0; j < jsonYears.size(); j++) { + // years.add(jsonYears.get(j).asText()); + // } + // + // return years; } // private void validateLocale() { diff --git a/src/main/java/com/github/dannil/scbjavaclient/client/SCBClient.java b/src/main/java/com/github/dannil/scbjavaclient/client/SCBClient.java index b33a5d139..b86c43dfe 100644 --- a/src/main/java/com/github/dannil/scbjavaclient/client/SCBClient.java +++ b/src/main/java/com/github/dannil/scbjavaclient/client/SCBClient.java @@ -101,14 +101,14 @@ public PopulationClient population() { * the table to fetch data from * @return a JSON string containing all available data in the specified table * - * @see com.github.dannil.scbjavaclient.utility.JsonUtility#getContentsCodes(String) - * JsonUtility#getContentsCodes(String) + * @see com.github.dannil.scbjavaclient.utility.JsonUtility#getValues(String, String) + * JsonUtility#getValues(String, String) */ public String getRawData(String table) { String json = super.get(table); Map> inputs = new HashMap>(); - inputs.put("ContentsCode", JsonUtility.getContentsCodes(json)); + inputs.put("ContentsCode", JsonUtility.getValues(json, "ContentsCode")); return getRawData(table, inputs); } diff --git a/src/main/java/com/github/dannil/scbjavaclient/utility/JsonUtility.java b/src/main/java/com/github/dannil/scbjavaclient/utility/JsonUtility.java index 8e5457557..e74a7bbb2 100644 --- a/src/main/java/com/github/dannil/scbjavaclient/utility/JsonUtility.java +++ b/src/main/java/com/github/dannil/scbjavaclient/utility/JsonUtility.java @@ -245,6 +245,25 @@ public static Map> getInputs(String json) { return inputs; } + /** + * Extracts the values for a code from the JSON. + * + * @param json + * the json + * @param code + * the code + * @return a list of values + * @throws IllegalArgumentException + * if the JSON doesn't contain the code + */ + public static List getValues(String json, String code) throws IllegalArgumentException { + Map> inputs = getInputs(json); + if (!inputs.containsKey(code)) { + throw new IllegalArgumentException(); + } + return inputs.get(code); + } + /** * Extracts the codes from the input. * diff --git a/src/main/resources/language_en_US.properties b/src/main/resources/language_en_US.properties index da7607c8e..fc925b904 100644 --- a/src/main/resources/language_en_US.properties +++ b/src/main/resources/language_en_US.properties @@ -4,4 +4,5 @@ test = TestEnglish unique = UniqueEnglish regions_is_not_supported_for_url = Regions is not supported for URL {0} -years_is_not_supported_for_url = Years is not supported for URL {0} \ No newline at end of file +years_is_not_supported_for_url = Years is not supported for URL {0} +code_is_not_supported_for_url {0} is not supported for URL {1} \ No newline at end of file diff --git a/src/main/resources/language_sv_SE.properties b/src/main/resources/language_sv_SE.properties index f61aa4eab..95e32372f 100644 --- a/src/main/resources/language_sv_SE.properties +++ b/src/main/resources/language_sv_SE.properties @@ -3,4 +3,5 @@ hello = Hej test = TestSvenska regions_is_not_supported_for_url = Regioner stöds inte för URL {0} -years_is_not_supported_for_url = År stöds inte för URL {0} \ No newline at end of file +years_is_not_supported_for_url = År stöds inte för URL {0} +code_is_not_supported_for_url {0} stödjs inte för URL {1} \ No newline at end of file diff --git a/src/test/java/com/github/dannil/scbjavaclient/utility/RequestPoster_UnitTest.java b/src/test/java/com/github/dannil/scbjavaclient/utility/AbstractRequester_UnitTest.java similarity index 78% rename from src/test/java/com/github/dannil/scbjavaclient/utility/RequestPoster_UnitTest.java rename to src/test/java/com/github/dannil/scbjavaclient/utility/AbstractRequester_UnitTest.java index 8f814b3fb..ab2a6501f 100644 --- a/src/test/java/com/github/dannil/scbjavaclient/utility/RequestPoster_UnitTest.java +++ b/src/test/java/com/github/dannil/scbjavaclient/utility/AbstractRequester_UnitTest.java @@ -24,9 +24,11 @@ import com.github.dannil.scbjavaclient.exception.SCBClientUrlNotFoundException; import com.github.dannil.scbjavaclient.utility.requester.AbstractRequester; +import com.github.dannil.scbjavaclient.utility.requester.RequestMethod; +import com.github.dannil.scbjavaclient.utility.requester.RequesterFactory; @RunWith(JUnit4.class) -public class RequestPoster_UnitTest { +public class AbstractRequester_UnitTest { // @Test // public void callPrivateConstructor() throws InstantiationException, IllegalAccessException, @@ -40,8 +42,9 @@ public class RequestPoster_UnitTest { // } @Test(expected = SCBClientUrlNotFoundException.class) - public void getCodesInvalidTable() { - String response = AbstractRequester.getBodyAsStringFromTable("ABCABCABC"); + public void getBodyAsStringFromTableInvalidTable() { + AbstractRequester requester = RequesterFactory.getRequester(RequestMethod.GET); + String response = requester.getBodyAsStringFromTable("ABCABCABC"); assertNull(response); } From 79353ac6fb3ea36922952031b5414c6ed35f1c1b Mon Sep 17 00:00:00 2001 From: Daniel Nilsson Date: Tue, 18 Oct 2016 23:18:17 +0200 Subject: [PATCH 08/14] Updated Javadoc and deprecated method --- .../scbjavaclient/utility/JsonUtility.java | 56 +++++++++---------- 1 file changed, 28 insertions(+), 28 deletions(-) diff --git a/src/main/java/com/github/dannil/scbjavaclient/utility/JsonUtility.java b/src/main/java/com/github/dannil/scbjavaclient/utility/JsonUtility.java index e74a7bbb2..2347f45f8 100644 --- a/src/main/java/com/github/dannil/scbjavaclient/utility/JsonUtility.java +++ b/src/main/java/com/github/dannil/scbjavaclient/utility/JsonUtility.java @@ -223,11 +223,11 @@ public static List jsonToListOf(String json, Class clazz) { } /** - * Extracts all the codes and their respective available inputs from the input. + * Extracts the codes and their respective values from the JSON. * * @param json - * the json which should be parsed - * @return a collection of all codes and their respective inputs + * the JSON which should be parsed + * @return a collection of all codes and their respective values */ public static Map> getInputs(String json) { Map> inputs = new HashMap>(); @@ -265,7 +265,7 @@ public static List getValues(String json, String code) throws IllegalArg } /** - * Extracts the codes from the input. + * Extracts the codes from the JSON. * * @param json * the json which should be parsed @@ -280,28 +280,28 @@ public static List getCodes(String json) { // return data.findValuesAsText("code"); } - /** - * Extracts the contents codes from the input. - * - * @param json - * the json which should be parsed - * @return a list of contents codes - */ - public static List getContentsCodes(String json) { - // List valueTexts = new ArrayList(); - // - // JsonNode node = JsonUtility.toNode(json, "variables"); - // for (int i = 0; i < node.size(); i++) { - // JsonNode child = node.get(i); - // if (child.get("code").asText().equals("ContentsCode")) { - // JsonNode values = child.get("values"); - // for (int j = 0; j < values.size(); j++) { - // valueTexts.add(values.get(j).asText()); - // } - // break; - // } - // } - // return valueTexts; - return getInputs(json).get("ContentsCode"); - } + // /** + // * Extracts the contents codes from the input. + // * + // * @param json + // * the json which should be parsed + // * @return a list of contents codes + // */ + // public static List getContentsCodes(String json) { + // // List valueTexts = new ArrayList(); + // // + // // JsonNode node = JsonUtility.toNode(json, "variables"); + // // for (int i = 0; i < node.size(); i++) { + // // JsonNode child = node.get(i); + // // if (child.get("code").asText().equals("ContentsCode")) { + // // JsonNode values = child.get("values"); + // // for (int j = 0; j < values.size(); j++) { + // // valueTexts.add(values.get(j).asText()); + // // } + // // break; + // // } + // // } + // // return valueTexts; + // return getInputs(json).get("ContentsCode"); + // } } From 1bb111373d3b759b16589c622f0f0b37264bde90 Mon Sep 17 00:00:00 2001 From: Daniel Nilsson Date: Tue, 18 Oct 2016 23:19:50 +0200 Subject: [PATCH 09/14] Updated tests --- .../model/environment/landandwaterarea/Area_UnitTest.java | 4 ++-- .../model/population/demography/FertilityRate_UnitTest.java | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/test/java/com/github/dannil/scbjavaclient/model/environment/landandwaterarea/Area_UnitTest.java b/src/test/java/com/github/dannil/scbjavaclient/model/environment/landandwaterarea/Area_UnitTest.java index 72d3145b7..3371cb959 100644 --- a/src/test/java/com/github/dannil/scbjavaclient/model/environment/landandwaterarea/Area_UnitTest.java +++ b/src/test/java/com/github/dannil/scbjavaclient/model/environment/landandwaterarea/Area_UnitTest.java @@ -126,8 +126,8 @@ public void getValues() { } @Test - public void getCodes() { - assertNotNull(Area.getCodes()); + public void getInputs() { + assertNotNull(Area.getInputs()); } @Test diff --git a/src/test/java/com/github/dannil/scbjavaclient/model/population/demography/FertilityRate_UnitTest.java b/src/test/java/com/github/dannil/scbjavaclient/model/population/demography/FertilityRate_UnitTest.java index ce005714c..949ff84ab 100644 --- a/src/test/java/com/github/dannil/scbjavaclient/model/population/demography/FertilityRate_UnitTest.java +++ b/src/test/java/com/github/dannil/scbjavaclient/model/population/demography/FertilityRate_UnitTest.java @@ -88,8 +88,8 @@ public void setValues() { } @Test - public void getCodes() { - assertNotNull(FertilityRate.getCodes()); + public void getInputs() { + assertNotNull(FertilityRate.getInputs()); } @Test From 6e6391c3a5bb9e83a1a061e0681fe78f48569c7e Mon Sep 17 00:00:00 2001 From: Daniel Nilsson Date: Tue, 18 Oct 2016 23:32:58 +0200 Subject: [PATCH 10/14] Javadoc updates --- .../environment/landandwaterarea/Area.java | 4 +- .../population/statistic/AverageAge.java | 4 +- .../utility/AbstractRequester_UnitTest.java | 52 ------------------- 3 files changed, 4 insertions(+), 56 deletions(-) delete mode 100644 src/test/java/com/github/dannil/scbjavaclient/utility/AbstractRequester_UnitTest.java diff --git a/src/main/java/com/github/dannil/scbjavaclient/model/environment/landandwaterarea/Area.java b/src/main/java/com/github/dannil/scbjavaclient/model/environment/landandwaterarea/Area.java index f956207c5..6ba5c0663 100644 --- a/src/main/java/com/github/dannil/scbjavaclient/model/environment/landandwaterarea/Area.java +++ b/src/main/java/com/github/dannil/scbjavaclient/model/environment/landandwaterarea/Area.java @@ -121,9 +121,9 @@ public String toString() { } /** - * Get the available inputs for the area data from the API. + * Get the available codes and their respective values for the area data from the API. * - * @return a list of the available codes and their inputs + * @return a list of the available codes and their values */ public static Map> getInputs() { AbstractRequester get = RequesterFactory.getRequester(RequestMethod.GET); diff --git a/src/main/java/com/github/dannil/scbjavaclient/model/population/statistic/AverageAge.java b/src/main/java/com/github/dannil/scbjavaclient/model/population/statistic/AverageAge.java index 8105fe19f..3501cae84 100644 --- a/src/main/java/com/github/dannil/scbjavaclient/model/population/statistic/AverageAge.java +++ b/src/main/java/com/github/dannil/scbjavaclient/model/population/statistic/AverageAge.java @@ -121,9 +121,9 @@ public String toString() { } /** - * Get the available inputs for the average age data from the API. + * Get the available codes and their respective values for the average age data from the API. * - * @return a list of the available codes and their inputs + * @return a list of the available codes and their values */ public static Map> getInputs() { AbstractRequester get = RequesterFactory.getRequester(RequestMethod.GET); diff --git a/src/test/java/com/github/dannil/scbjavaclient/utility/AbstractRequester_UnitTest.java b/src/test/java/com/github/dannil/scbjavaclient/utility/AbstractRequester_UnitTest.java deleted file mode 100644 index ab2a6501f..000000000 --- a/src/test/java/com/github/dannil/scbjavaclient/utility/AbstractRequester_UnitTest.java +++ /dev/null @@ -1,52 +0,0 @@ -/* - * Copyright 2016 Daniel Nilsson - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.github.dannil.scbjavaclient.utility; - -import static org.junit.Assert.assertNull; - -import org.junit.Test; -import org.junit.runner.RunWith; -import org.junit.runners.JUnit4; - -import com.github.dannil.scbjavaclient.exception.SCBClientUrlNotFoundException; -import com.github.dannil.scbjavaclient.utility.requester.AbstractRequester; -import com.github.dannil.scbjavaclient.utility.requester.RequestMethod; -import com.github.dannil.scbjavaclient.utility.requester.RequesterFactory; - -@RunWith(JUnit4.class) -public class AbstractRequester_UnitTest { - - // @Test - // public void callPrivateConstructor() throws InstantiationException, IllegalAccessException, - // IllegalArgumentException, InvocationTargetException { - // Constructor[] cons = AbstractRequester.class.getDeclaredConstructors(); - // cons[0].setAccessible(true); - // cons[0].newInstance(); - // cons[0].setAccessible(false); - // - // assertFalse(cons[0].isAccessible()); - // } - - @Test(expected = SCBClientUrlNotFoundException.class) - public void getBodyAsStringFromTableInvalidTable() { - AbstractRequester requester = RequesterFactory.getRequester(RequestMethod.GET); - String response = requester.getBodyAsStringFromTable("ABCABCABC"); - - assertNull(response); - } - -} From 7c27dcfb85863c9ade21814f9ba8a24ead745da1 Mon Sep 17 00:00:00 2001 From: Daniel Nilsson Date: Tue, 18 Oct 2016 23:33:10 +0200 Subject: [PATCH 11/14] Added new exception on parsing invalid JSON --- .../com/github/dannil/scbjavaclient/utility/JsonUtility.java | 3 +++ .../scbjavaclient/client/AbstractClient_IntegrationTest.java | 5 +++-- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/github/dannil/scbjavaclient/utility/JsonUtility.java b/src/main/java/com/github/dannil/scbjavaclient/utility/JsonUtility.java index 2347f45f8..334914e24 100644 --- a/src/main/java/com/github/dannil/scbjavaclient/utility/JsonUtility.java +++ b/src/main/java/com/github/dannil/scbjavaclient/utility/JsonUtility.java @@ -233,6 +233,9 @@ public static Map> getInputs(String json) { Map> inputs = new HashMap>(); JsonNode node = JsonUtility.toNode(json, "variables"); + if (node == null) { + throw new SCBClientParsingException(); + } for (int i = 0; i < node.size(); i++) { JsonNode child = node.get(i); List values = new ArrayList(); diff --git a/src/test/java/com/github/dannil/scbjavaclient/client/AbstractClient_IntegrationTest.java b/src/test/java/com/github/dannil/scbjavaclient/client/AbstractClient_IntegrationTest.java index 004390c11..0d29c2944 100644 --- a/src/test/java/com/github/dannil/scbjavaclient/client/AbstractClient_IntegrationTest.java +++ b/src/test/java/com/github/dannil/scbjavaclient/client/AbstractClient_IntegrationTest.java @@ -32,6 +32,7 @@ import org.junit.runner.RunWith; import org.junit.runners.JUnit4; +import com.github.dannil.scbjavaclient.exception.SCBClientParsingException; import com.github.dannil.scbjavaclient.utility.QueryBuilder; @RunWith(JUnit4.class) @@ -103,7 +104,7 @@ public void getRegions() { assertFalse(regions.isEmpty()); } - @Test(expected = UnsupportedOperationException.class) + @Test(expected = IllegalArgumentException.class) public void getRegionsInvalidTable() { DummyClient client = new DummyClient(); @@ -122,7 +123,7 @@ public void getYears() { assertFalse(years.isEmpty()); } - @Test(expected = UnsupportedOperationException.class) + @Test(expected = SCBClientParsingException.class) public void getYearsInvalidTable() { DummyClient client = new DummyClient(); From fa7877fb7d48169895ecf5044feeb7f5a6b95a42 Mon Sep 17 00:00:00 2001 From: Daniel Nilsson Date: Thu, 20 Oct 2016 00:43:11 +0200 Subject: [PATCH 12/14] Removed debug output --- .../landandwaterarea/EnvironmentLandAndWaterAreaClient.java | 1 - 1 file changed, 1 deletion(-) diff --git a/src/main/java/com/github/dannil/scbjavaclient/client/environment/landandwaterarea/EnvironmentLandAndWaterAreaClient.java b/src/main/java/com/github/dannil/scbjavaclient/client/environment/landandwaterarea/EnvironmentLandAndWaterAreaClient.java index d12f4eedc..8814af5da 100644 --- a/src/main/java/com/github/dannil/scbjavaclient/client/environment/landandwaterarea/EnvironmentLandAndWaterAreaClient.java +++ b/src/main/java/com/github/dannil/scbjavaclient/client/environment/landandwaterarea/EnvironmentLandAndWaterAreaClient.java @@ -100,7 +100,6 @@ public List getArea(Collection regions, Collection types, mappings.put("Tid", years); String response = super.post("MI/MI0802/Areal2012", QueryBuilder.build(mappings)); - System.out.println(response); return JsonUtility.jsonToListOf(response, Area.class); } From d272067e67990bd79765cebc781298317a9d2ea6 Mon Sep 17 00:00:00 2001 From: Daniel Nilsson Date: Thu, 20 Oct 2016 23:07:27 +0200 Subject: [PATCH 13/14] Updated Javadoc --- .../model/population/demography/FertilityRate.java | 6 +++--- .../model/population/demography/MeanAgeFirstChild.java | 5 +++-- .../population/name/NumberOfChildrenBornWithFirstName.java | 7 ++++--- .../model/population/statistic/LiveBirth.java | 6 +++--- .../model/population/statistic/Population.java | 6 +++--- 5 files changed, 16 insertions(+), 14 deletions(-) diff --git a/src/main/java/com/github/dannil/scbjavaclient/model/population/demography/FertilityRate.java b/src/main/java/com/github/dannil/scbjavaclient/model/population/demography/FertilityRate.java index cb5e16e6a..217efff41 100644 --- a/src/main/java/com/github/dannil/scbjavaclient/model/population/demography/FertilityRate.java +++ b/src/main/java/com/github/dannil/scbjavaclient/model/population/demography/FertilityRate.java @@ -121,9 +121,9 @@ public String toString() { } /** - * Get the codes for the fertility rate from the API. - * - * @return a list of codes that is used by the API to index the values + * Get the available codes and their respective values for the fertility rate data from the API. + * + * @return a list of the available codes and their values */ public static Map> getInputs() { AbstractRequester get = RequesterFactory.getRequester(RequestMethod.GET); diff --git a/src/main/java/com/github/dannil/scbjavaclient/model/population/demography/MeanAgeFirstChild.java b/src/main/java/com/github/dannil/scbjavaclient/model/population/demography/MeanAgeFirstChild.java index dc843d3a3..a6f1c2b32 100644 --- a/src/main/java/com/github/dannil/scbjavaclient/model/population/demography/MeanAgeFirstChild.java +++ b/src/main/java/com/github/dannil/scbjavaclient/model/population/demography/MeanAgeFirstChild.java @@ -121,9 +121,10 @@ public String toString() { } /** - * Get the codes for the mean age first child from the API. + * Get the available codes and their respective values for the mean age first child data from + * the API. * - * @return a list of codes that is used by the API to index the values + * @return a list of the available codes and their values */ public static Map> getCodes() { AbstractRequester get = RequesterFactory.getRequester(RequestMethod.GET); diff --git a/src/main/java/com/github/dannil/scbjavaclient/model/population/name/NumberOfChildrenBornWithFirstName.java b/src/main/java/com/github/dannil/scbjavaclient/model/population/name/NumberOfChildrenBornWithFirstName.java index b86d6ab81..989153aac 100644 --- a/src/main/java/com/github/dannil/scbjavaclient/model/population/name/NumberOfChildrenBornWithFirstName.java +++ b/src/main/java/com/github/dannil/scbjavaclient/model/population/name/NumberOfChildrenBornWithFirstName.java @@ -117,9 +117,10 @@ public String toString() { } /** - * Get the codes for the number of children born with first name from the API. - * - * @return a list of codes that is used by the API to index the values + * Get the available codes and their respective values for the number of children born with + * first name data from the API. + * + * @return a list of the available codes and their values */ public static Map> getCodes() { AbstractRequester get = RequesterFactory.getRequester(RequestMethod.GET); diff --git a/src/main/java/com/github/dannil/scbjavaclient/model/population/statistic/LiveBirth.java b/src/main/java/com/github/dannil/scbjavaclient/model/population/statistic/LiveBirth.java index bf2c25c89..5abbcfee3 100644 --- a/src/main/java/com/github/dannil/scbjavaclient/model/population/statistic/LiveBirth.java +++ b/src/main/java/com/github/dannil/scbjavaclient/model/population/statistic/LiveBirth.java @@ -149,9 +149,9 @@ public String toString() { } /** - * Get the codes for the live births model from the API. - * - * @return a list of codes that is used by the API to index the values + * Get the available codes and their respective values for the live birth data from the API. + * + * @return a list of the available codes and their values */ public static Map> getCodes() { AbstractRequester get = RequesterFactory.getRequester(RequestMethod.GET); diff --git a/src/main/java/com/github/dannil/scbjavaclient/model/population/statistic/Population.java b/src/main/java/com/github/dannil/scbjavaclient/model/population/statistic/Population.java index b275ec416..26b4b372a 100644 --- a/src/main/java/com/github/dannil/scbjavaclient/model/population/statistic/Population.java +++ b/src/main/java/com/github/dannil/scbjavaclient/model/population/statistic/Population.java @@ -177,9 +177,9 @@ public String toString() { } /** - * Get the codes for the population model from the API. - * - * @return a list of codes that is used by the API to index the values + * Get the available codes and their respective values for the population data from the API. + * + * @return a list of the available codes and their values */ public static Map> getCodes() { AbstractRequester get = RequesterFactory.getRequester(RequestMethod.GET); From 0bb50dd307d637829d9e80e69ce7672e59f52c67 Mon Sep 17 00:00:00 2001 From: Daniel Nilsson Date: Sun, 23 Oct 2016 13:23:00 +0200 Subject: [PATCH 14/14] Added exception to output --- .../github/dannil/scbjavaclient/client/AbstractClient.java | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/github/dannil/scbjavaclient/client/AbstractClient.java b/src/main/java/com/github/dannil/scbjavaclient/client/AbstractClient.java index c980d6e50..d445dd3a6 100644 --- a/src/main/java/com/github/dannil/scbjavaclient/client/AbstractClient.java +++ b/src/main/java/com/github/dannil/scbjavaclient/client/AbstractClient.java @@ -172,7 +172,8 @@ public List getRegions(String url) { return values; } catch (IllegalArgumentException e) { Object[] variables = new Object[] { code, url }; - throw new IllegalArgumentException(this.localization.getString("code_is_not_supported_for_url", variables)); + throw new IllegalArgumentException(this.localization.getString("code_is_not_supported_for_url", variables), + e); } // if (!inputs.containsKey("Region")) { @@ -227,7 +228,8 @@ public List getYears(String url) { return values; } catch (IllegalArgumentException e) { Object[] variables = new Object[] { code, url }; - throw new IllegalArgumentException(this.localization.getString("code_is_not_supported_for_url", variables)); + throw new IllegalArgumentException(this.localization.getString("code_is_not_supported_for_url", variables), + e); } // // String content = get(url);