org.geoserver.wps.gs.PagedUniqueProcessPPIO.java Source code

Java tutorial

Introduction

Here is the source code for org.geoserver.wps.gs.PagedUniqueProcessPPIO.java

Source

/* Copyright (c) 2014 OpenPlans - www.openplans.org. All rights reserved.
 * This code is licensed under the GPL 2.0 license, available at the root
 * application directory.
 */
package org.geoserver.wps.gs;

import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.io.Reader;
import java.io.Writer;

import org.geoserver.wps.ppio.CDataPPIO;
import org.json.simple.JSONObject;
import org.json.simple.parser.JSONParser;

/**
 * A PPIO to generate good looking JSON for the PagedUnique process results
 * 
 * @author Sandro Salari - GeoSolutions
 * @author Mauro Bartolomeoli
 */
public class PagedUniqueProcessPPIO extends CDataPPIO {

    static final private JSONParser parser = new JSONParser();

    protected PagedUniqueProcessPPIO() {
        super(PagedUniqueProcess.Results.class, PagedUniqueProcess.Results.class, "application/json");

    }

    @Override
    public Object decode(String input) throws Exception {
        return parser.parse(input);
    }

    @Override
    public Object decode(InputStream input) throws Exception {
        Reader reader = new InputStreamReader(input);
        return parser.parse(reader);
    }

    @Override
    public void encode(Object value, OutputStream os) throws Exception {
        PagedUniqueProcess.Results result = (PagedUniqueProcess.Results) value;
        JSONObject obj = new JSONObject();
        obj.put("featureTypeName", result.getFeatureTypeName());
        obj.put("fieldName", result.getFieldName());
        obj.put("size", result.getSize());
        obj.put("values", result.getValues());
        Writer writer = new OutputStreamWriter(os);
        obj.writeJSONString(writer);
        writer.flush();
    }

    @Override
    public String getFileExtension() {
        return "json";
    }

}