/* (c) 2014 - 2016 Open Source Geospatial Foundation - all rights reserved * (c) 2001 - 2013 OpenPlans * This code is licensed under the GPL 2.0 license, available at the root * application directory. */ package org.geoserver.gwc.web.layer; import java.util.Arrays; import java.util.Iterator; import java.util.List; import java.util.Locale; import org.apache.commons.lang.StringUtils; import org.apache.wicket.Component; import org.apache.wicket.markup.html.form.TextArea; import org.apache.wicket.markup.html.form.TextField; import org.apache.wicket.model.IModel; import org.apache.wicket.model.PropertyModel; import org.apache.wicket.util.convert.IConverter; import org.geowebcache.filter.parameters.CaseNormalizer; import org.geowebcache.filter.parameters.StringParameterFilter; /** * Subform that allows editing of a StringParameterFilter * @author Kevin Smith, OpenGeo * */ public class StringParameterFilterSubform extends AbstractParameterFilterSubform<StringParameterFilter> { private static final long serialVersionUID = -3815153551079914831L; private static final IConverter<List<String>> CONVERT = new IConverter<List<String>>() { private static final long serialVersionUID = -7486127358227242772L; @Override public List<String> convertToObject(String value, Locale locale) { if(value==null) { return null; } else { String[] strings = StringUtils.split(value, "\r\n"); return Arrays.asList(strings); } } @Override public String convertToString(List<String> value, Locale locale) { Iterator<String> i = value.iterator(); StringBuilder sb = new StringBuilder(); if(i.hasNext()) { sb.append(i.next()); } while(i.hasNext()){ sb.append("\r\n"); sb.append(i.next()); } return sb.toString(); } }; private Component normalize; public StringParameterFilterSubform(String id, IModel<StringParameterFilter> model) { super(id, model); final Component defaultValue; defaultValue = new TextField<String>("defaultValue", new PropertyModel<String>(model, "defaultValue")); add(defaultValue); final TextArea<List<String>> values; values = new TextArea<List<String>>("values", new PropertyModel<List<String>>(model, "values")) { /** serialVersionUID */ private static final long serialVersionUID = 1L; @SuppressWarnings("unchecked") @Override public <S> IConverter<S> getConverter(Class<S> type) { if (List.class.isAssignableFrom(type)) { return (IConverter<S>) CONVERT; } return super.getConverter(type); } }; values.setConvertEmptyInputStringToNull(false); add(values); normalize = new CaseNormalizerSubform("normalize", new PropertyModel<CaseNormalizer>(model, "normalize")); add(normalize); } }