/* (c) 2016 Open Source Geospatial Foundation - all rights reserved * This code is licensed under the GPL 2.0 license, available at the root * application directory. */ package org.geoserver.gwc.wmts; import org.geoserver.wms.WMS; import org.geotools.xml.transform.TransformerBase; import org.geotools.xml.transform.Translator; import org.xml.sax.Attributes; import org.xml.sax.ContentHandler; import java.util.List; import java.util.stream.Collectors; /** * XML transformer for the get histogram operation. */ class HistogramTransformer extends TransformerBase { public HistogramTransformer(WMS wms) { setIndentation(2); setEncoding(wms.getCharSet()); } @Override public Translator createTranslator(ContentHandler handler) { return new TranslatorSupport(handler); } class TranslatorSupport extends TransformerBase.TranslatorSupport { public TranslatorSupport(ContentHandler handler) { super(handler, null, null); } @Override public void encode(Object object) throws IllegalArgumentException { if (!(object instanceof Domains)) { throw new IllegalArgumentException("Expected domains info but instead got: " + object.getClass().getCanonicalName()); } Domains domains = (Domains) object; Tuple<String, List<Integer>> histogram = domains.getHistogramValues(); Attributes nameSpaces = createAttributes(new String[]{ "xmlns", "http://demo.geo-solutions.it/share/wmts-multidim/wmts_multi_dimensional.xsd", "xmlns:ows", "http://www.opengis.net/ows/1.1" }); start("Histogram", nameSpaces); element("ows:Identifier", domains.getHistogramName()); element("Domain", histogram.first); element("Values", histogram.second.stream().map(Object::toString).collect(Collectors.joining(","))); end("Histogram"); } } }