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

Java tutorial

Introduction

Here is the source code for net.jakobnielsen.imagga.crop_slice.convert.SmartCroppingConverter.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.Cropping;
import net.jakobnielsen.imagga.crop_slice.bean.Region;
import net.jakobnielsen.imagga.crop_slice.bean.Resolution;
import net.jakobnielsen.imagga.crop_slice.bean.SmartCropping;
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 SmartCroppingConverter implements Converter<List<SmartCropping>> {

    private static final String SMART_CROPPINGS = "smart_croppings";

    private static final String CROPPINGS = "croppings";

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

        JSONObject json = (JSONObject) JSONValue.parse(jsonString);
        if (!json.containsKey(SMART_CROPPINGS)) {
            throw new ConverterException(SMART_CROPPINGS + " key missing from json : " + jsonString);
        }
        JSONArray jsonArray = (JSONArray) json.get(SMART_CROPPINGS);

        List<SmartCropping> smartCroppings = new ArrayList<SmartCropping>();

        for (Object aJsonArray : jsonArray) {

            JSONObject smartCroppingObject = (JSONObject) aJsonArray;

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

            List<Cropping> croppings = new ArrayList<Cropping>();

            if (smartCroppingObject.containsKey(CROPPINGS)) {

                JSONArray croppingsArray = (JSONArray) smartCroppingObject.get(CROPPINGS);

                for (Object aCroppingsArray : croppingsArray) {

                    JSONObject croppingObject = (JSONObject) aCroppingsArray;

                    croppings.add(new Cropping(
                            new Resolution(getInteger("target_width", croppingObject),
                                    getInteger("target_height", croppingObject)),
                            new Region(getInteger("x1", croppingObject), getInteger("y1", croppingObject),
                                    getInteger("x2", croppingObject), getInteger("y2", croppingObject))));
                }
                smartCroppings.add(new SmartCropping(url, croppings));
            }
        }

        return smartCroppings;
    }

}