001 /* 002 * Sonar, open source software quality management tool. 003 * Copyright (C) 2008-2011 SonarSource 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.sonar.wsclient.services.Measure; 023 import org.sonar.wsclient.services.Resource; 024 import org.sonar.wsclient.services.WSUtils; 025 026 import java.util.ArrayList; 027 import java.util.List; 028 029 public class ResourceUnmarshaller extends AbstractUnmarshaller<Resource> { 030 031 @Override 032 protected Resource parse(Object json) { 033 Resource resource = new Resource(); 034 parseResourceFields(json, resource); 035 parseMeasures(json, resource); 036 return resource; 037 } 038 039 private void parseResourceFields(Object json, Resource resource) { 040 WSUtils utils = WSUtils.getINSTANCE(); 041 resource.setId(utils.getInteger(json, "id")) 042 .setKey(utils.getString(json, "key")) 043 .setName(utils.getString(json, "name")) 044 .setLongName(utils.getString(json, "lname")) 045 .setScope(utils.getString(json, "scope")) 046 .setQualifier(utils.getString(json, "qualifier")) 047 .setLanguage(utils.getString(json, "lang")) 048 .setDescription(utils.getString(json, "description")) 049 .setDate(utils.getDateTime(json, "date")) 050 .setVersion(utils.getString(json, "version")) 051 .setPeriod1Mode(utils.getString(json, "p1")) 052 .setPeriod1Param(utils.getString(json, "p1p")) 053 .setPeriod1Date(utils.getDateTime(json, "p1d")) 054 .setPeriod2Mode(utils.getString(json, "p2")) 055 .setPeriod2Param(utils.getString(json, "p2p")) 056 .setPeriod2Date(utils.getDateTime(json, "p2d")) 057 .setPeriod3Mode(utils.getString(json, "p3")) 058 .setPeriod3Param(utils.getString(json, "p3p")) 059 .setPeriod3Date(utils.getDateTime(json, "p3d")) 060 .setPeriod4Mode(utils.getString(json, "p4")) 061 .setPeriod4Param(utils.getString(json, "p4p")) 062 .setPeriod4Date(utils.getDateTime(json, "p4d")) 063 .setPeriod5Mode(utils.getString(json, "p5")) 064 .setPeriod5Param(utils.getString(json, "p5p")) 065 .setPeriod5Date(utils.getDateTime(json, "p5d")); 066 } 067 068 private void parseMeasures(Object json, Resource resource) { 069 WSUtils utils = WSUtils.getINSTANCE(); 070 Object measuresJson = utils.getField(json, "msr"); 071 if (measuresJson != null) { 072 resource.setMeasures(parseMeasures(measuresJson)); 073 } 074 } 075 076 private List<Measure> parseMeasures(Object measuresJson) { 077 WSUtils utils = WSUtils.getINSTANCE(); 078 List<Measure> projectMeasures = new ArrayList<Measure>(); 079 int len = utils.getArraySize(measuresJson); 080 for (int i = 0; i < len; i++) { 081 Object measureJson = utils.getArrayElement(measuresJson, i); 082 if (measureJson != null) { 083 Measure measure = parseMeasure(measureJson); 084 projectMeasures.add(measure); 085 } 086 } 087 return projectMeasures; 088 } 089 090 private Measure parseMeasure(Object json) { 091 WSUtils utils = WSUtils.getINSTANCE(); 092 093 Measure measure = new Measure(); 094 measure 095 .setMetricKey(utils.getString(json, "key")) 096 .setMetricName(utils.getString(json, "name")) 097 .setValue(utils.getDouble(json, "val")) 098 .setFormattedValue(utils.getString(json, "frmt_val")) 099 .setTrend(utils.getInteger(json, "trend")) 100 .setVar(utils.getInteger(json, "var")) 101 .setData(utils.getString(json, "data")) 102 .setRuleKey(utils.getString(json, "rule_key")) 103 .setRuleName(utils.getString(json, "rule_name")) 104 .setRuleCategory(utils.getString(json, "rule_category")) 105 .setRuleSeverity(utils.getString(json, "rule_priority")) 106 .setCharacteristicKey(utils.getString(json, "ctic_key")) 107 .setCharacteristicName(utils.getString(json, "ctic_name")) 108 .setVariation1(utils.getDouble(json, "var1")) 109 .setVariation2(utils.getDouble(json, "var2")) 110 .setVariation3(utils.getDouble(json, "var3")) 111 .setVariation4(utils.getDouble(json, "var4")) 112 .setVariation5(utils.getDouble(json, "var5")); 113 return measure; 114 } 115 }