001/* 002 * SonarQube, open source software quality management tool. 003 * Copyright (C) 2008-2014 SonarSource 004 * mailto:contact AT sonarsource DOT com 005 * 006 * SonarQube 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 * SonarQube 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 License 017 * along with this program; if not, write to the Free Software Foundation, 018 * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. 019 */ 020package org.sonar.wsclient.unmarshallers; 021 022import org.sonar.wsclient.services.Measure; 023import org.sonar.wsclient.services.Resource; 024import org.sonar.wsclient.services.WSUtils; 025 026import java.util.ArrayList; 027import java.util.List; 028 029public 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 .setCopy(utils.getInteger(json, "copy")) 046 .setScope(utils.getString(json, "scope")) 047 .setQualifier(utils.getString(json, "qualifier")) 048 .setLanguage(utils.getString(json, "lang")) 049 .setDescription(utils.getString(json, "description")) 050 .setDate(utils.getDateTime(json, "date")) 051 .setCreationDate(utils.getDateTime(json, "creationDate")) 052 .setVersion(utils.getString(json, "version")) 053 .setPeriod1Mode(utils.getString(json, "p1")) 054 .setPeriod1Param(utils.getString(json, "p1p")) 055 .setPeriod1Date(utils.getDateTime(json, "p1d")) 056 .setPeriod2Mode(utils.getString(json, "p2")) 057 .setPeriod2Param(utils.getString(json, "p2p")) 058 .setPeriod2Date(utils.getDateTime(json, "p2d")) 059 .setPeriod3Mode(utils.getString(json, "p3")) 060 .setPeriod3Param(utils.getString(json, "p3p")) 061 .setPeriod3Date(utils.getDateTime(json, "p3d")) 062 .setPeriod4Mode(utils.getString(json, "p4")) 063 .setPeriod4Param(utils.getString(json, "p4p")) 064 .setPeriod4Date(utils.getDateTime(json, "p4d")) 065 .setPeriod5Mode(utils.getString(json, "p5")) 066 .setPeriod5Param(utils.getString(json, "p5p")) 067 .setPeriod5Date(utils.getDateTime(json, "p5d")); 068 } 069 070 private void parseMeasures(Object json, Resource resource) { 071 WSUtils utils = WSUtils.getINSTANCE(); 072 Object measuresJson = utils.getField(json, "msr"); 073 if (measuresJson != null) { 074 resource.setMeasures(parseMeasures(measuresJson)); 075 } 076 } 077 078 private List<Measure> parseMeasures(Object measuresJson) { 079 WSUtils utils = WSUtils.getINSTANCE(); 080 List<Measure> projectMeasures = new ArrayList<Measure>(); 081 int len = utils.getArraySize(measuresJson); 082 for (int i = 0; i < len; i++) { 083 Object measureJson = utils.getArrayElement(measuresJson, i); 084 if (measureJson != null) { 085 Measure measure = parseMeasure(measureJson); 086 projectMeasures.add(measure); 087 } 088 } 089 return projectMeasures; 090 } 091 092 private Measure parseMeasure(Object json) { 093 WSUtils utils = WSUtils.getINSTANCE(); 094 095 Measure measure = new Measure(); 096 measure 097 .setMetricKey(utils.getString(json, "key")) 098 .setMetricName(utils.getString(json, "name")) 099 .setValue(utils.getDouble(json, "val")) 100 .setFormattedValue(utils.getString(json, "frmt_val")) 101 .setAlertStatus(utils.getString(json, "alert")) 102 .setAlertText(utils.getString(json, "alert_text")) 103 .setTrend(utils.getInteger(json, "trend")) 104 .setVar(utils.getInteger(json, "var")) 105 .setData(utils.getString(json, "data")) 106 .setRuleKey(utils.getString(json, "rule_key")) 107 .setRuleName(utils.getString(json, "rule_name")) 108 .setRuleCategory(utils.getString(json, "rule_category")) 109 .setRuleSeverity(utils.getString(json, "rule_priority")) 110 .setCharacteristicKey(utils.getString(json, "ctic_key")) 111 .setCharacteristicName(utils.getString(json, "ctic_name")) 112 .setVariation1(utils.getDouble(json, "var1")) 113 .setVariation2(utils.getDouble(json, "var2")) 114 .setVariation3(utils.getDouble(json, "var3")) 115 .setVariation4(utils.getDouble(json, "var4")) 116 .setVariation5(utils.getDouble(json, "var5")); 117 return measure; 118 } 119}