001 /* 002 * Sonar, open source software quality management tool. 003 * Copyright (C) 2009 SonarSource SA 004 * mailto:contact AT sonarsource DOT com 005 * 006 * Sonar is free software; you can redistribute it and/or 007 * modify it under the terms of the GNU Lesser General Public 008 * License as published by the Free Software Foundation; either 009 * version 3 of the License, or (at your option) any later version. 010 * 011 * Sonar is distributed in the hope that it will be useful, 012 * but WITHOUT ANY WARRANTY; without even the implied warranty of 013 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 014 * Lesser General Public License for more details. 015 * 016 * You should have received a copy of the GNU Lesser General Public 017 * License along with Sonar; if not, write to the Free Software 018 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02 019 */ 020 package org.sonar.wsclient.unmarshallers; 021 022 import org.json.simple.JSONArray; 023 import org.json.simple.JSONObject; 024 import org.sonar.wsclient.services.Measure; 025 import org.sonar.wsclient.services.Resource; 026 027 import java.util.ArrayList; 028 import java.util.List; 029 030 public class ResourceUnmarshaller extends AbstractUnmarshaller<Resource> { 031 032 @Override 033 protected Resource parse(JSONObject json) { 034 Resource resource = new Resource(); 035 parseResourceFields(json, resource); 036 parseMeasures(json, resource); 037 return resource; 038 } 039 040 private void parseResourceFields(JSONObject json, Resource resource) { 041 resource.setId(JsonUtils.getInteger(json, "id")) 042 .setKey(JsonUtils.getString(json, "key")) 043 .setName(JsonUtils.getString(json, "name")) 044 .setLongName(JsonUtils.getString(json, "lname")) 045 .setScope(JsonUtils.getString(json, "scope")) 046 .setQualifier(JsonUtils.getString(json, "qualifier")) 047 .setLanguage(JsonUtils.getString(json, "lang")) 048 .setDescription(JsonUtils.getString(json, "description")) 049 .setDate(JsonUtils.getDateTime(json, "date")) 050 .setVersion(JsonUtils.getString(json, "version")) 051 .setPeriod1Mode(JsonUtils.getString(json, "p1")) 052 .setPeriod1Param(JsonUtils.getString(json, "p1p")) 053 .setPeriod1Date(JsonUtils.getDateTime(json, "p1d")) 054 .setPeriod2Mode(JsonUtils.getString(json, "p2")) 055 .setPeriod2Param(JsonUtils.getString(json, "p2p")) 056 .setPeriod2Date(JsonUtils.getDateTime(json, "p2d")) 057 .setPeriod3Mode(JsonUtils.getString(json, "p3")) 058 .setPeriod3Param(JsonUtils.getString(json, "p3p")) 059 .setPeriod3Date(JsonUtils.getDateTime(json, "p3d")) 060 .setPeriod4Mode(JsonUtils.getString(json, "p4")) 061 .setPeriod4Param(JsonUtils.getString(json, "p4p")) 062 .setPeriod4Date(JsonUtils.getDateTime(json, "p4d")) 063 .setPeriod5Mode(JsonUtils.getString(json, "p5")) 064 .setPeriod5Param(JsonUtils.getString(json, "p5p")) 065 .setPeriod5Date(JsonUtils.getDateTime(json, "p5d")); 066 } 067 068 private void parseMeasures(JSONObject json, Resource resource) { 069 JSONArray measuresJson = JsonUtils.getArray(json, "msr"); 070 if (measuresJson != null) { 071 resource.setMeasures(parseMeasures(measuresJson)); 072 } 073 } 074 075 private List<Measure> parseMeasures(JSONArray measuresJson) { 076 List<Measure> projectMeasures = new ArrayList<Measure>(); 077 int len = measuresJson.size(); 078 for (int i = 0; i < len; i++) { 079 JSONObject measureJson = (JSONObject) measuresJson.get(i); 080 if (measureJson != null) { 081 Measure measure = parseMeasure(measureJson); 082 projectMeasures.add(measure); 083 } 084 } 085 return projectMeasures; 086 } 087 088 private Measure parseMeasure(JSONObject json) { 089 Measure measure = new Measure(); 090 measure 091 .setMetricKey(JsonUtils.getString(json, "key")) 092 .setMetricName(JsonUtils.getString(json, "name")) 093 .setValue(JsonUtils.getDouble(json, "val")) 094 .setFormattedValue(JsonUtils.getString(json, "frmt_val")) 095 .setTrend(JsonUtils.getInteger(json, "trend")) 096 .setVar(JsonUtils.getInteger(json, "var")) 097 .setData(JsonUtils.getString(json, "data")) 098 .setRuleKey(JsonUtils.getString(json, "rule_key")) 099 .setRuleName(JsonUtils.getString(json, "rule_name")) 100 .setRuleCategory(JsonUtils.getString(json, "rule_category")) 101 .setRuleSeverity(JsonUtils.getString(json, "rule_priority")) 102 .setCharacteristicKey(JsonUtils.getString(json, "ctic_key")) 103 .setCharacteristicName(JsonUtils.getString(json, "ctic_name")) 104 .setVariation1(JsonUtils.getDouble(json, "var1")) 105 .setVariation2(JsonUtils.getDouble(json, "var2")) 106 .setVariation3(JsonUtils.getDouble(json, "var3")) 107 .setVariation4(JsonUtils.getDouble(json, "var4")) 108 .setVariation5(JsonUtils.getDouble(json, "var5")); 109 return measure; 110 } 111 }