com.canoo.cog.sonar.SonarResultParser.java Source code

Java tutorial

Introduction

Here is the source code for com.canoo.cog.sonar.SonarResultParser.java

Source

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 java.util.ArrayList;
import java.util.Collections;
import java.util.List;

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.SonarProject;
import com.canoo.cog.sonar.model.SonarProjectImpl;
import com.google.gson.JsonArray;
import com.google.gson.JsonElement;
import com.google.gson.JsonObject;
import com.google.gson.JsonParser;

class SonarResultParser {

    private final JsonParser jsonParser = new JsonParser();

    List<SonarProject> parseProjects(String projectResultString) {
        List<SonarProject> sonarProjects = new ArrayList<>();

        JsonElement projects = jsonParser.parse(projectResultString);
        JsonArray projectArray = projects.getAsJsonArray();
        for (JsonElement projectJson : projectArray) {
            String key = projectJson.getAsJsonObject().get("key").getAsString();
            String name = projectJson.getAsJsonObject().get("name").getAsString();
            String version = projectJson.getAsJsonObject().get("version").getAsString();
            sonarProjects.add(new SonarProjectImpl(key, name, version));
        }
        return sonarProjects;
    }

    CityModelImpl parseCity(String cityResultString) {

        JsonElement cityJson = jsonParser.parse(cityResultString);
        JsonArray allComponents = cityJson.getAsJsonArray();

        // Create city
        JsonObject cityObject = allComponents.get(0).getAsJsonObject();
        JsonToModelConverter jsonToModelConverter = new JsonToModelConverter();
        CityModelImpl city = jsonToModelConverter.convertToCity(cityObject);

        // Sort by name
        List<JsonObjectWrapper> javaElements = new ArrayList<>();
        for (JsonElement component : allComponents) {
            javaElements.add(new JsonObjectWrapper(component.getAsJsonObject()));
        }
        Collections.sort(javaElements);

        // Add neighborhoods
        for (JsonObjectWrapper component : javaElements) {
            JsonObject compObject = component.getObject();
            String scopeString = compObject.get("scope").getAsString();
            if (scopeString.equals("DIR")) {
                HoodModelImpl newHood = jsonToModelConverter.convertToHood(compObject);
                city.addHoodToCity(newHood);
            }
        }

        // Add buildings
        for (JsonObjectWrapper component : javaElements) {
            JsonObject compObject = component.getObject();
            String scopeString = compObject.get("scope").getAsString();
            String qualifierString = compObject.get("qualifier").getAsString();
            if (scopeString.equals("FIL") && !qualifierString.equals("UTS")) {
                BuildingModelImpl buildingModel = jsonToModelConverter.convertToBuilding(compObject);
                city.addBuildingToCity(buildingModel);
            }
        }

        // drop empty hoods
        city.removeEmptyHoods();

        return city;
    }
}