net.jakobnielsen.imagga.crop_slice.convert.DivisionRegionConverter.java Source code

Java tutorial

Introduction

Here is the source code for net.jakobnielsen.imagga.crop_slice.convert.DivisionRegionConverter.java

Source

/*
 * Copyright 2013 Jakob Vad Nielsen
 *
 * 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.
 */

package net.jakobnielsen.imagga.crop_slice.convert;

import net.jakobnielsen.imagga.convert.Converter;
import net.jakobnielsen.imagga.convert.ConverterException;
import net.jakobnielsen.imagga.crop_slice.bean.DivisionRegion;
import net.jakobnielsen.imagga.crop_slice.bean.Region;
import org.json.simple.JSONArray;
import org.json.simple.JSONObject;
import org.json.simple.JSONValue;

import java.util.ArrayList;
import java.util.List;

import static net.jakobnielsen.imagga.convert.ConverterTools.getInteger;
import static net.jakobnielsen.imagga.convert.ConverterTools.getString;

public class DivisionRegionConverter implements Converter<List<DivisionRegion>> {

    private static final String DIVISION_REGIONS = "division_regions";

    private static final String REGIONS = "regions";

    @Override
    public List<DivisionRegion> convert(String jsonString) {
        if (jsonString == null) {
            throw new ConverterException("The given JSON string is null");
        }

        JSONObject json = (JSONObject) JSONValue.parse(jsonString);
        if (!json.containsKey(DIVISION_REGIONS)) {
            throw new ConverterException(DIVISION_REGIONS + " key missing from json : " + jsonString);
        }
        JSONArray jsonArray = (JSONArray) json.get(DIVISION_REGIONS);
        List<DivisionRegion> divisionRegions = new ArrayList<DivisionRegion>();

        for (Object aJsonArray : jsonArray) {

            JSONObject divisionRegionObject = (JSONObject) aJsonArray;

            String url = getString("url", divisionRegionObject);

            List<Region> regions = new ArrayList<Region>();

            if (divisionRegionObject.containsKey(REGIONS)) {

                if (divisionRegionObject.get(REGIONS) != null
                        && divisionRegionObject.get(REGIONS) instanceof JSONArray) {
                    JSONArray regionsArrays = (JSONArray) divisionRegionObject.get(REGIONS);

                    for (Object aRegionsArray : regionsArrays) {

                        JSONObject regionObject = (JSONObject) aRegionsArray;

                        regions.add(new Region(getInteger("x1", regionObject), getInteger("y1", regionObject),
                                getInteger("x2", regionObject), getInteger("y2", regionObject)));
                    }
                    divisionRegions.add(new DivisionRegion(url, regions));
                }
            }
        }

        return divisionRegions;
    }
}