diff options
author | Simon Brandhof <simon.brandhof@gmail.com> | 2011-07-28 19:53:47 +0200 |
---|---|---|
committer | Simon Brandhof <simon.brandhof@gmail.com> | 2011-07-28 19:54:47 +0200 |
commit | 15f5d562a3da55f3702500c1c855f3f9d7a52e2d (patch) | |
tree | 1be83d904bed7fe249f9e9df9cb8f0d707082c04 /sonar-ws-client | |
parent | 27f631d830974a9744b0dcad632f454ff6f85814 (diff) | |
download | sonarqube-15f5d562a3da55f3702500c1c855f3f9d7a52e2d.tar.gz sonarqube-15f5d562a3da55f3702500c1c855f3f9d7a52e2d.zip |
SONAR-2648 add ManualMeasureCreateQuery
Diffstat (limited to 'sonar-ws-client')
2 files changed, 137 insertions, 0 deletions
diff --git a/sonar-ws-client/src/main/java/org/sonar/wsclient/services/ManualMeasureCreateQuery.java b/sonar-ws-client/src/main/java/org/sonar/wsclient/services/ManualMeasureCreateQuery.java new file mode 100644 index 00000000000..83d95c37922 --- /dev/null +++ b/sonar-ws-client/src/main/java/org/sonar/wsclient/services/ManualMeasureCreateQuery.java @@ -0,0 +1,95 @@ +/* + * Sonar, open source software quality management tool. + * Copyright (C) 2008-2011 SonarSource + * mailto:contact AT sonarsource DOT com + * + * Sonar is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 3 of the License, or (at your option) any later version. + * + * Sonar 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with Sonar; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02 + */ +package org.sonar.wsclient.services; + +/** + * @since 2.10 + */ +public class ManualMeasureCreateQuery extends CreateQuery<ManualMeasure> { + + private String resourceKey; + private String metricKey; + private Double value; + private String textValue; + private String description; + + private ManualMeasureCreateQuery(String resourceKey, String metricKey) { + this.resourceKey = resourceKey; + this.metricKey = metricKey; + } + + public String getResourceKey() { + return resourceKey; + } + + public String getMetricKey() { + return metricKey; + } + + public Double getValue() { + return value; + } + + public ManualMeasureCreateQuery setValue(Double value) { + this.value = value; + return this; + } + + public String getTextValue() { + return textValue; + } + + public ManualMeasureCreateQuery setTextValue(String textValue) { + this.textValue = textValue; + return this; + } + + public String getDescription() { + return description; + } + + public ManualMeasureCreateQuery setDescription(String description) { + this.description = description; + return this; + } + + @Override + public String getUrl() { + StringBuilder url = new StringBuilder(); + url.append(ManualMeasureQuery.BASE_URL); + appendUrlParameter(url, "resource", resourceKey); + appendUrlParameter(url, "metric", metricKey); + appendUrlParameter(url, "val", value); + + // limitations : POST body is not used, so the complete URL size is limited + appendUrlParameter(url, "text", textValue); + appendUrlParameter(url, "desc", description); + return url.toString(); + } + + @Override + public Class<ManualMeasure> getModelClass() { + return ManualMeasure.class; + } + + public static ManualMeasureCreateQuery create(String resourceKey, String metricKey) { + return new ManualMeasureCreateQuery(resourceKey, metricKey); + } +} diff --git a/sonar-ws-client/src/test/java/org/sonar/wsclient/services/ManualMeasureCreateQueryTest.java b/sonar-ws-client/src/test/java/org/sonar/wsclient/services/ManualMeasureCreateQueryTest.java new file mode 100644 index 00000000000..1a191df8d7a --- /dev/null +++ b/sonar-ws-client/src/test/java/org/sonar/wsclient/services/ManualMeasureCreateQueryTest.java @@ -0,0 +1,42 @@ +/* + * Sonar, open source software quality management tool. + * Copyright (C) 2008-2011 SonarSource + * mailto:contact AT sonarsource DOT com + * + * Sonar is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 3 of the License, or (at your option) any later version. + * + * Sonar 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with Sonar; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02 + */ +package org.sonar.wsclient.services; + +import org.junit.Test; + +import static org.hamcrest.core.Is.is; +import static org.junit.Assert.assertThat; + +public class ManualMeasureCreateQueryTest extends QueryTestCase { + + @Test + public void shouldCreateWithOnlyMandatoryProperties() { + ManualMeasureCreateQuery query = ManualMeasureCreateQuery.create("foo", "team_size"); + assertThat(query.getUrl(), is("/api/manual_measures?resource=foo&metric=team_size&")); + assertThat(query.getModelClass().getName(), is(ManualMeasure.class.getName())); + } + + @Test + public void shouldCreateWithAllOptionalProperties() { + ManualMeasureCreateQuery query = ManualMeasureCreateQuery.create("foo", "team_size").setValue(3.14).setTextValue("xxx").setDescription("yyy"); + assertThat(query.getUrl(), is("/api/manual_measures?resource=foo&metric=team_size&val=3.14&text=xxx&desc=yyy&")); + assertThat(query.getModelClass().getName(), is(ManualMeasure.class.getName())); + } +}
\ No newline at end of file |