Package org.geowebcache.filter.parameters

Examples of org.geowebcache.filter.parameters.ParameterFilter


    }

    private boolean filterApplies(Map<String, ParameterFilter> filters, GetMapRequest request,
            String key, StringBuilder requestMistmatchTarget) {

        ParameterFilter parameterFilter = filters.get(key);
        if (parameterFilter == null) {
            requestMistmatchTarget.append("no parameter filter exists for ").append(key);
            return false;
        }
        String parameter = request.getRawKvp().get(key);
        boolean applies = parameterFilter.applies(parameter);
        if (!applies) {
            requestMistmatchTarget.append(key).append(
                    " does not apply to parameter filter of the same name");
        }
        return applies;
View Full Code Here


    @Test
    public void testGetModifiableParameters() throws GeoWebCacheException {

        layerInfoTileLayer = new GeoServerTileLayer(layerInfo, defaults, gridSetBroker);
        ParameterFilter stylesParamFilter = layerInfoTileLayer.getParameterFilters().get(0);
        List<String> legalValues = stylesParamFilter.getLegalValues();

        Map<String, String> requestParams;
        Map<String, String> modifiedParams;

        requestParams = Collections.singletonMap("sTyLeS", "");
        modifiedParams = layerInfoTileLayer.getModifiableParameters(requestParams, "UTF-8");
        assertEquals(0, modifiedParams.size());

        for (String legalStyle : legalValues) {
            requestParams = new HashMap<String, String>();
            requestParams.put("sTyLeS", legalStyle);
            modifiedParams = layerInfoTileLayer.getModifiableParameters(requestParams, "UTF-8");
            if (legalStyle.equals(stylesParamFilter.getDefaultValue())) {
                assertEquals(0, modifiedParams.size());
            } else {
                assertEquals(Collections.singletonMap("STYLES", legalStyle), modifiedParams);
            }
        }
View Full Code Here

                    @Override
                    protected void onClick(AjaxRequestTarget target) {
                        List<ParameterFilter> list;
                        list = new ArrayList<ParameterFilter>(filters.getModelObject());
                        final ParameterFilter filter = (ParameterFilter) getDefaultModelObject();

                        list.remove(filter);
                        filters.setModelObject(list);
                        item.remove();

                        target.addComponent(container);
                    }
                };
                removeLink.setDefaultModel(item.getModel());
                removeLink.add(new AttributeModifier("title", true, new ResourceModel(
                        "ParameterFilterEditor.removeLink")));
                item.add(removeLink);
            }
        };

        filters.setOutputMarkupId(true);
        // this is necessary to avoid loosing item contents on edit/validation checks
        filters.setReuseItems(true);
        table.add(filters);

        List<String> parameterKeys = new ArrayList<String>(GWC.get().getGridSetBroker().getNames());
        for (ParameterFilter filter : model.getObject()) {
            parameterKeys.remove(filter.getKey());
        }
        Collections.sort(parameterKeys);
       
        GeoServerAjaxFormLink addStyleFilterLink = new GeoServerAjaxFormLink("addStyleFilter") {
            private static final long serialVersionUID = 1L;

            @Override
            protected void onClick(AjaxRequestTarget target, Form form) {
                StyleParameterFilter newFilter = new StyleParameterFilter();
                newFilter.setLayer((LayerInfo)layerModel.getObject());
               
                addFilter(newFilter);

                target.addComponent(container);
            }
        };
        addStyleFilterLink.add(new Icon("addIcon", GWCIconFactory.ADD_ICON));
        add(addStyleFilterLink);
       
        // FIXME: make this extensible so new kinds of filter can be supported by
        ArrayList<Class<? extends ParameterFilter>> filterTypes =
                new ArrayList<Class<? extends ParameterFilter>>();
        filterTypes.add(StringParameterFilter.class);
        filterTypes.add(FloatParameterFilter.class);
        filterTypes.add(RegexParameterFilter.class);
       
       
        availableFilterTypes = new DropDownChoice<Class<? extends ParameterFilter>>
            (       "availableFilterTypes",
                    new Model<Class<? extends ParameterFilter>>(),
                    new Model<ArrayList<Class<? extends ParameterFilter>>>(filterTypes),
                    new IChoiceRenderer<Class<? extends ParameterFilter>>() {

                        /** serialVersionUID */
                        private static final long serialVersionUID = 1L;

                        @Override
                        public Object getDisplayValue(
                                Class<? extends ParameterFilter> object) {
                            String resource = "ParameterFilterEditor.filtername."
                                    +object.getCanonicalName();
                            try {
                                // Try to look up a localized name for the class
                                return getLocalizer().getString(resource,
                                        ParameterFilterEditor.this);
                            } catch (MissingResourceException ex) {
                                // Use the simple name as a backup
                                if(LOGGER.isLoggable(Level.CONFIG))
                                    LOGGER.log(Level.CONFIG, "Could not find localization resource"+
                                " for ParameterFilter subclass "+object.getCanonicalName());
                               
                                return object.getSimpleName();
                            }
                        }

                        @Override
                        public String getIdValue(
                                Class<? extends ParameterFilter> object,
                                int index) {
                            return Integer.toString(index);
                        }
               
            });
        availableFilterTypes.setOutputMarkupId(true);
        add(availableFilterTypes);
       
        newFilterKey = new TextField<String>("newFilterKey", Model.of(""));
        add(newFilterKey);
       
        // TODO update this to eliminate keys that are in use
        final RepeatingView commonKeys = new RepeatingView("commonKeys");
        for(String key: COMMON_KEYS) {
            commonKeys.add(new Label(commonKeys.newChildId(), key));
        }
        add(commonKeys);
       
        GeoServerAjaxFormLink addFilterLink = new GeoServerAjaxFormLink("addFilter") {
            private static final long serialVersionUID = 1L;

            @Override
            protected void onClick(AjaxRequestTarget target, Form form) {
                availableFilterTypes.processInput();
                newFilterKey.processInput();
                String key = newFilterKey.getModelObject();
                if(key == null || key.isEmpty()){
                    ParamResourceModel rm = new ParamResourceModel("ParameterFilterEditor.nonEmptyFilter", null, "");
                    error(rm.getString());
                }else{
                    Class<? extends ParameterFilter> type = availableFilterTypes.getModelObject();

                    try {
                        ParameterFilter newFilter = type.getConstructor().newInstance();
                        newFilter.setKey(key);
                        addFilter(newFilter);
                        newFilterKey.setModel(Model.of("")); // Reset the key field
                    } catch (NoSuchMethodException ex) {
                        LOGGER.log(Level.WARNING, "No Default Constructor for "+type ,ex);
                    } catch (InvocationTargetException ex) {
View Full Code Here

        Map<String, String> fullParameters = new HashMap<String, String>();

        final String[] keys = new String[parameterFilters.size()];
        for (int i = 0; i < parameterFilters.size(); i++) {
            ParameterFilter parameterFilter = parameterFilters.get(i);
            keys[i] = parameterFilter.getKey();
        }

        final Map<String, String> requestValues;
        requestValues = ServletUtils.selectedStringsFromMap(map, encoding, keys);

        final Map<String, String> defaultValues = getDefaultParameterFilters();

        for (ParameterFilter parameterFilter : parameterFilters) {
            String key = parameterFilter.getKey().toUpperCase();
            String value = requestValues.get(key);
            value = decodeDimensionValue(value);

            String defaultValue = defaultValues.get(key);
            if (value == null || value.length() == 0
                    || (defaultValue != null && defaultValue.equals(value))) {
                fullParameters.put(key, defaultValue);
            } else {
                String appliedValue = parameterFilter.apply(value);
                fullParameters.put(key, appliedValue);
            }
        }
        if (defaultValues.equals(fullParameters)) {
            return Collections.emptyMap();
View Full Code Here

             } else {
                 xml.simpleElement("ows:Identifier", "TileLayer.encodeDimensionValue(defStyle)", true);
             }
             xml.endElement("Style");
         } else {
             ParameterFilter stylesFilter = null;
             Iterator<ParameterFilter> iter = filters.iterator();
             while(stylesFilter == null && iter.hasNext()) {
                 ParameterFilter filter = iter.next();
                 if(filter.getKey().equalsIgnoreCase("STYLES")) {
                     stylesFilter = filter;
                 }
             }
            
             List<String> legalStyles=null;
View Full Code Here

     private void layerDimensions(XMLBuilder xml, TileLayer layer, List<ParameterFilter> filters) throws IOException {
        
         Iterator<ParameterFilter> iter = filters.iterator();
        
         while(iter.hasNext()) {
             ParameterFilter filter = iter.next();
            
             if(! filter.getKey().equalsIgnoreCase("STYLES")) {
                 List<String> values = filter.getLegalValues();
            
                 if(values != null) {
                     dimensionDescription(xml, filter, values);
                 }
             }
View Full Code Here

       
       
        {
            List<String> gridSetNames = Arrays.asList("GlobalCRS84Pixel", "GlobalCRS84Scale","EPSG:4326");
           
            ParameterFilter styleFilter = mock(ParameterFilter.class);
            when(styleFilter.getKey()).thenReturn("STYLES");
            when(styleFilter.getDefaultValue()).thenReturn("Foo");
            when(styleFilter.getLegalValues()).thenReturn(null);
           
            TileLayer tileLayer = mockTileLayer("mockLayer", gridSetNames, Collections.singletonList(styleFilter));
            when(tld.getLayerList()).thenReturn(Arrays.asList(tileLayer));
        }
   
View Full Code Here

       
       
        {
            List<String> gridSetNames = Arrays.asList("GlobalCRS84Pixel", "GlobalCRS84Scale","EPSG:4326");
           
            ParameterFilter styleFilter = mock(ParameterFilter.class);
            when(styleFilter.getKey()).thenReturn("STYLES");
            when(styleFilter.getDefaultValue()).thenReturn("Foo");
            when(styleFilter.getLegalValues()).thenReturn(Collections.<String>emptyList());
           
            TileLayer tileLayer = mockTileLayer("mockLayer", gridSetNames, Collections.singletonList(styleFilter));
            when(tld.getLayerList()).thenReturn(Arrays.asList(tileLayer));
        }
   
View Full Code Here

       
       
        {
            List<String> gridSetNames = Arrays.asList("GlobalCRS84Pixel", "GlobalCRS84Scale","EPSG:4326");
           
            ParameterFilter styleFilter = mock(ParameterFilter.class);
            when(styleFilter.getKey()).thenReturn("STYLES");
            when(styleFilter.getDefaultValue()).thenReturn("Foo");
            when(styleFilter.getLegalValues()).thenReturn(Arrays.asList("Foo", "Bar", "Baz"));
           
            TileLayer tileLayer = mockTileLayer("mockLayer", gridSetNames, Collections.singletonList(styleFilter));
            when(tld.getLayerList()).thenReturn(Arrays.asList(tileLayer));
        }
   
View Full Code Here

       
       
        {
            List<String> gridSetNames = Arrays.asList("GlobalCRS84Pixel", "GlobalCRS84Scale","EPSG:4326");
           
            ParameterFilter styleFilter = mock(ParameterFilter.class);
            when(styleFilter.getKey()).thenReturn("STYLES");
            when(styleFilter.getDefaultValue()).thenReturn("Foo");
            when(styleFilter.getLegalValues()).thenReturn(Arrays.asList("Foo", "Bar", "Baz"));
           
            TileLayer tileLayer = mockTileLayer("mockLayer", gridSetNames, Collections.singletonList(styleFilter));
           
            // Style parameter should have been made plural by the time getModifiableParameters is called.
            Map<String, String> map = new HashMap<>();
View Full Code Here

TOP

Related Classes of org.geowebcache.filter.parameters.ParameterFilter

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.