summaryrefslogtreecommitdiffstats
path: root/sonar-ws-client
diff options
context:
space:
mode:
authorGodin <mandrikov@gmail.com>2010-12-13 21:55:49 +0000
committerGodin <mandrikov@gmail.com>2010-12-13 21:55:49 +0000
commitd104ca20751117924dc7e74a9cf13445926b0acc (patch)
tree4ddaaf560ff2c6d8adeb03d643d5e5b015846604 /sonar-ws-client
parentd52d82788c75ca8f67270b247105d3350b22f4e8 (diff)
downloadsonarqube-d104ca20751117924dc7e74a9cf13445926b0acc.tar.gz
sonarqube-d104ca20751117924dc7e74a9cf13445926b0acc.zip
SONAR-833: New Web Service to get history of measures (time machine)
Diffstat (limited to 'sonar-ws-client')
-rw-r--r--sonar-ws-client/src/main/java/org/sonar/wsclient/services/TimeMachineData.java38
-rw-r--r--sonar-ws-client/src/main/java/org/sonar/wsclient/services/TimeMachineQuery.java11
-rw-r--r--sonar-ws-client/src/main/java/org/sonar/wsclient/unmarshallers/TimeMachineUnmarshaller.java34
-rw-r--r--sonar-ws-client/src/test/java/org/sonar/wsclient/services/TimeMachineDataTest.java13
-rw-r--r--sonar-ws-client/src/test/java/org/sonar/wsclient/unmarshallers/TimeMachineUnmarshallerTest.java12
-rw-r--r--sonar-ws-client/src/test/resources/timemachine/many.json10
-rw-r--r--sonar-ws-client/src/test/resources/timemachine/timemachine.json6
7 files changed, 64 insertions, 60 deletions
diff --git a/sonar-ws-client/src/main/java/org/sonar/wsclient/services/TimeMachineData.java b/sonar-ws-client/src/main/java/org/sonar/wsclient/services/TimeMachineData.java
index 4c68d2c3ca1..e0d669d7c2e 100644
--- a/sonar-ws-client/src/main/java/org/sonar/wsclient/services/TimeMachineData.java
+++ b/sonar-ws-client/src/main/java/org/sonar/wsclient/services/TimeMachineData.java
@@ -1,36 +1,42 @@
package org.sonar.wsclient.services;
+import java.util.ArrayList;
import java.util.Date;
-import java.util.HashMap;
import java.util.List;
-import java.util.Map;
public class TimeMachineData extends Model {
+ private Date date;
/**
* We use strings here in order to support measures with string value.
*/
- private Map<Date, List<String>> data = new HashMap<Date, List<String>>();
+ private List<String> values = new ArrayList<String>();
- public Map<Date, List<String>> getData() {
- return data;
+ public Date getDate() {
+ return date;
}
- public TimeMachineData setData(Map<Date, List<String>> data) {
- this.data = data;
+ public TimeMachineData setDate(Date date) {
+ this.date = date;
return this;
}
- public Double getValueAsDouble(Date date, int index) {
- if (data.containsKey(date)) {
- String valueStr = data.get(date).get(index);
- try {
- return valueStr == null ? null : Double.valueOf(valueStr);
- } catch (NumberFormatException e) {
- return null;
- }
+ public List<String> getValues() {
+ return values;
+ }
+
+ public TimeMachineData setValues(List<String> values) {
+ this.values = values;
+ return this;
+ }
+
+ public Double getValueAsDouble(int index) {
+ String valueStr = values.get(index);
+ try {
+ return valueStr == null ? null : Double.valueOf(valueStr);
+ } catch (NumberFormatException e) {
+ return null;
}
- return null;
}
}
diff --git a/sonar-ws-client/src/main/java/org/sonar/wsclient/services/TimeMachineQuery.java b/sonar-ws-client/src/main/java/org/sonar/wsclient/services/TimeMachineQuery.java
index 6d4fee7fa96..04f2019d490 100644
--- a/sonar-ws-client/src/main/java/org/sonar/wsclient/services/TimeMachineQuery.java
+++ b/sonar-ws-client/src/main/java/org/sonar/wsclient/services/TimeMachineQuery.java
@@ -14,6 +14,9 @@ public class TimeMachineQuery extends Query<TimeMachineData> {
private Date from;
private Date to;
+ private String model;
+ private String[] characteristicKeys;
+
public TimeMachineQuery(String resourceKeyOrId) {
this.resourceKeyOrId = resourceKeyOrId;
}
@@ -45,6 +48,12 @@ public class TimeMachineQuery extends Query<TimeMachineData> {
return this;
}
+ public TimeMachineQuery setCharacteristicKeys(String model, String... keys) {
+ this.model = model;
+ this.characteristicKeys = keys;
+ return this;
+ }
+
@Override
public String getUrl() {
StringBuilder url = new StringBuilder(BASE_URL);
@@ -53,6 +62,8 @@ public class TimeMachineQuery extends Query<TimeMachineData> {
appendUrlParameter(url, "metrics", metrics);
appendUrlParameter(url, "fromDateTime", from, true);
appendUrlParameter(url, "toDateTime", to, true);
+ appendUrlParameter(url, "model", model);
+ appendUrlParameter(url, "characteristics", characteristicKeys);
return url.toString();
}
diff --git a/sonar-ws-client/src/main/java/org/sonar/wsclient/unmarshallers/TimeMachineUnmarshaller.java b/sonar-ws-client/src/main/java/org/sonar/wsclient/unmarshallers/TimeMachineUnmarshaller.java
index dab000f069c..1289e63a5ae 100644
--- a/sonar-ws-client/src/main/java/org/sonar/wsclient/unmarshallers/TimeMachineUnmarshaller.java
+++ b/sonar-ws-client/src/main/java/org/sonar/wsclient/unmarshallers/TimeMachineUnmarshaller.java
@@ -2,31 +2,25 @@ package org.sonar.wsclient.unmarshallers;
import org.json.simple.JSONArray;
import org.json.simple.JSONObject;
-import org.json.simple.JSONValue;
import org.sonar.wsclient.services.TimeMachineData;
-import java.util.*;
+import java.util.ArrayList;
+import java.util.List;
-public class TimeMachineUnmarshaller implements Unmarshaller<TimeMachineData> {
+public class TimeMachineUnmarshaller extends AbstractUnmarshaller<TimeMachineData> {
- public TimeMachineData toModel(String json) {
- JSONObject map = (JSONObject) JSONValue.parse(json);
- Map<Date, List<String>> data = new HashMap<Date, List<String>>();
- for (Object key : map.keySet()) {
- JSONArray array = (JSONArray) map.get(key);
- List<String> measures = new ArrayList<String>();
- for (int i = 0; i < array.size(); i++) {
- Object elem = array.get(i);
- String value = elem == null ? null : elem.toString();
- measures.add(value);
- }
- data.put(JsonUtils.parseDateTime((String) key), measures);
+ protected TimeMachineData parse(JSONObject json) {
+ String dateTimeStr = (String) json.keySet().iterator().next();
+ JSONArray array = (JSONArray) json.get(dateTimeStr);
+ List<String> measures = new ArrayList<String>();
+ for (int i = 0; i < array.size(); i++) {
+ Object elem = array.get(i);
+ String value = elem == null ? null : elem.toString();
+ measures.add(value);
}
- return new TimeMachineData().setData(data);
- }
-
- public List<TimeMachineData> toModels(String json) {
- throw new UnsupportedOperationException();
+ return new TimeMachineData()
+ .setDate(JsonUtils.parseDateTime(dateTimeStr))
+ .setValues(measures);
}
}
diff --git a/sonar-ws-client/src/test/java/org/sonar/wsclient/services/TimeMachineDataTest.java b/sonar-ws-client/src/test/java/org/sonar/wsclient/services/TimeMachineDataTest.java
index cd7fec9609f..6672a3acf5e 100644
--- a/sonar-ws-client/src/test/java/org/sonar/wsclient/services/TimeMachineDataTest.java
+++ b/sonar-ws-client/src/test/java/org/sonar/wsclient/services/TimeMachineDataTest.java
@@ -2,7 +2,7 @@ package org.sonar.wsclient.services;
import org.junit.Test;
-import java.util.*;
+import java.util.Arrays;
import static org.hamcrest.Matchers.is;
import static org.hamcrest.Matchers.nullValue;
@@ -12,14 +12,11 @@ public class TimeMachineDataTest {
@Test
public void valueAsDouble() {
- Map<Date, List<String>> map = new HashMap<Date, List<String>>();
- Date date = new Date();
- map.put(date, Arrays.asList(null, "20.3", "hello"));
- TimeMachineData data = new TimeMachineData().setData(map);
+ TimeMachineData data = new TimeMachineData().setValues(Arrays.asList(null, "20.3", "hello"));
- assertThat(data.getValueAsDouble(date, 0), nullValue());
- assertThat(data.getValueAsDouble(date, 1), is(20.3));
- assertThat(data.getValueAsDouble(date, 2), nullValue());
+ assertThat(data.getValueAsDouble(0), nullValue());
+ assertThat(data.getValueAsDouble(1), is(20.3));
+ assertThat(data.getValueAsDouble(2), nullValue());
}
}
diff --git a/sonar-ws-client/src/test/java/org/sonar/wsclient/unmarshallers/TimeMachineUnmarshallerTest.java b/sonar-ws-client/src/test/java/org/sonar/wsclient/unmarshallers/TimeMachineUnmarshallerTest.java
index 13a8b5c0482..908658f336b 100644
--- a/sonar-ws-client/src/test/java/org/sonar/wsclient/unmarshallers/TimeMachineUnmarshallerTest.java
+++ b/sonar-ws-client/src/test/java/org/sonar/wsclient/unmarshallers/TimeMachineUnmarshallerTest.java
@@ -6,7 +6,6 @@ import org.sonar.wsclient.services.TimeMachineData;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;
-import java.util.Map;
import static org.hamcrest.Matchers.is;
import static org.hamcrest.Matchers.nullValue;
@@ -18,12 +17,10 @@ public class TimeMachineUnmarshallerTest {
public void toModel() throws Exception {
TimeMachineData data = new TimeMachineUnmarshaller().toModel(WSTestUtils.loadFile("/timemachine/timemachine.json"));
- Map<Date, List<String>> map = data.getData();
- assertThat(map.size(), is(1));
- Date date = map.keySet().iterator().next();
+ Date date = data.getDate();
final Date expectedDate = new SimpleDateFormat("yyyy-MM-dd'T'kk:mm:ssZZZZ").parse("2010-12-04T15:59:23+0000");
assertThat(date, is(expectedDate));
- List<String> values = map.values().iterator().next();
+ List<String> values = data.getValues();
assertThat(values.size(), is(3));
assertThat(values.get(0), is("20.0"));
assertThat(values.get(1), nullValue());
@@ -32,10 +29,9 @@ public class TimeMachineUnmarshallerTest {
@Test
public void many() throws Exception {
- TimeMachineData data = new TimeMachineUnmarshaller().toModel(WSTestUtils.loadFile("/timemachine/many.json"));
+ List<TimeMachineData> data = new TimeMachineUnmarshaller().toModels(WSTestUtils.loadFile("/timemachine/many.json"));
- Map<Date, List<String>> map = data.getData();
- assertThat(map.size(), is(3));
+ assertThat(data.size(), is(3));
}
}
diff --git a/sonar-ws-client/src/test/resources/timemachine/many.json b/sonar-ws-client/src/test/resources/timemachine/many.json
index a65a8daa255..6ee5fa2312a 100644
--- a/sonar-ws-client/src/test/resources/timemachine/many.json
+++ b/sonar-ws-client/src/test/resources/timemachine/many.json
@@ -1,5 +1,5 @@
-{
- "2010-10-10T00:00:00+0000": [25.0, null, 14.6],
- "2010-11-15T00:00:00+0000": [23.0, null, 10.3],
- "2010-12-04T00:00:00+0000": [20.0, null, 12.8]
-}
+[
+ {"2010-10-10T00:00:00+0000": [25.0, null, 14.6]},
+ {"2010-11-15T00:00:00+0000": [23.0, null, 10.3]},
+ {"2010-12-04T00:00:00+0000": [20.0, null, 12.8]}
+]
diff --git a/sonar-ws-client/src/test/resources/timemachine/timemachine.json b/sonar-ws-client/src/test/resources/timemachine/timemachine.json
index 03130cc0286..17f064aeb0b 100644
--- a/sonar-ws-client/src/test/resources/timemachine/timemachine.json
+++ b/sonar-ws-client/src/test/resources/timemachine/timemachine.json
@@ -1,3 +1,3 @@
-{
- "2010-12-04T15:59:23+0000": [20.0, null, 12.8]
-}
+[
+ {"2010-12-04T15:59:23+0000": [20.0, null, 12.8]}
+]