package com.canoo.cog.sonar;
/*
* #%L
* code-of-gotham
* %%
* Copyright (C) 2015 Canoo Engineering AG
* %%
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
* #L%
*/
import com.canoo.cog.sonar.model.BuildingModelImpl;
import com.canoo.cog.sonar.model.CityModelImpl;
import com.canoo.cog.sonar.model.HoodModelImpl;
import com.canoo.cog.sonar.model.ModelImpl;
import com.google.gson.JsonArray;
import com.google.gson.JsonElement;
import com.google.gson.JsonObject;
public class JsonToModelConverter {
public CityModelImpl convertToCity(JsonObject modelObject) {
String cityName = modelObject.get("name").getAsString();
CityModelImpl newCity = new CityModelImpl(cityName);
fillModel(modelObject.get("msr").getAsJsonArray(), newCity);
return newCity;
}
public HoodModelImpl convertToHood(JsonObject modelObject) {
String hoodName = modelObject.get("name").getAsString();
HoodModelImpl newHood = new HoodModelImpl(hoodName);
fillModel(modelObject.get("msr").getAsJsonArray(), newHood);
return newHood;
}
public BuildingModelImpl convertToBuilding(JsonObject modelObject) {
String buildingName = modelObject.get("lname").getAsString();
BuildingModelImpl newBuilding = new BuildingModelImpl(buildingName);
fillModel(modelObject.get("msr").getAsJsonArray(), newBuilding);
return newBuilding;
}
private void fillModel(JsonArray msr, ModelImpl model) {
for (JsonElement jsonElement : msr) {
String key = jsonElement.getAsJsonObject().get("key").getAsString();
String val = jsonElement.getAsJsonObject().get("val").getAsString();
switch (key) {
case SonarConstants.CLASSES:
model.setClasses(val);
break;
case SonarConstants.CLASS_COMPLEXITY:
model.setClassComplexity(val);
break;
case SonarConstants.COMMENT_LINES:
model.setCommentLines(val);
break;
case SonarConstants.COMMENT_LINES_DENSITY:
model.setCommentLineDensity(val);
break;
case SonarConstants.COMPLEXITY:
model.setComplexity(val);
break;
case SonarConstants.COVERAGE:
model.setCoverage(val);
break;
case SonarConstants.DIRECTORIES:
model.setDirectories(val);
break;
case SonarConstants.FILE_COMPLEXITY:
model.setFileComplexity(val);
break;
case SonarConstants.FILES:
model.setFiles(val);
break;
case SonarConstants.FUNCTION_COMPLEXITY:
model.setFunctionComplexity(val);
break;
case SonarConstants.FUNCTIONS:
model.setFunctions(val);
break;
case SonarConstants.LINES_OF_CODE:
model.setLinesOfCode(val);
break;
case SonarConstants.PUBLIC_API:
model.setPublicApi(val);
break;
case SonarConstants.TESTS:
model.setTests(val);
break;
case SonarConstants.STATEMENTS:
model.setStatements(val);
break;
case SonarConstants.SQALE_INDEX:
model.setSqaleIndex(val);
break;
}
}
}
}