at.alladin.rmbt.mapServer.parameters.PointTileParameters.java Source code

Java tutorial

Introduction

Here is the source code for at.alladin.rmbt.mapServer.parameters.PointTileParameters.java

Source

/*******************************************************************************
 * Copyright 2015 alladin-IT GmbH
 *
 * 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 at.alladin.rmbt.mapServer.parameters;

import java.util.UUID;

import org.restlet.data.Form;

import com.google.common.base.Strings;
import com.google.common.hash.PrimitiveSink;

public class PointTileParameters extends TileParameters {
    protected final double pointDiameter;
    protected final boolean noFill;
    protected final boolean noColor;
    protected final UUID highlight;
    protected final PointTileParameters genericParameters; // same without highlight for caching

    public PointTileParameters(Path path, Form params) {
        this(path, params, false);
    }

    protected PointTileParameters(Path path, Form params, boolean generic) {
        super(path, params, 0.6);

        final String diameterString = params.getFirstValue("point_diameter");
        double _diameter = 8.0;
        if (diameterString != null)
            try {
                _diameter = Double.parseDouble(diameterString);
            } catch (final NumberFormatException e) {
            }
        pointDiameter = _diameter;

        final String noFillString = params.getFirstValue("no_fill");
        boolean _noFill = false;
        if (noFillString != null)
            _noFill = Boolean.parseBoolean(noFillString);
        noFill = _noFill;

        final String noColorString = params.getFirstValue("no_color");
        boolean _noColor = false;
        if (noColorString != null)
            _noColor = Boolean.parseBoolean(noColorString);
        noColor = _noColor;

        if (generic)
            highlight = null;
        else {
            String _highlight = params.getFirstValue("highlight");
            if (Strings.isNullOrEmpty(_highlight) || "undefined".equals(_highlight))
                _highlight = null;
            UUID hightlightUUID = null;
            if (_highlight != null)
                try {
                    hightlightUUID = UUID.fromString(_highlight);
                } catch (final Exception e) {
                }
            highlight = hightlightUUID;
        }

        if (highlight == null)
            genericParameters = null;
        else
            genericParameters = new PointTileParameters(path, params, true);
    }

    public double getPointDiameter() {
        return pointDiameter;
    }

    public boolean isNoFill() {
        return noFill;
    }

    public boolean isNoColor() {
        return noColor;
    }

    public UUID getHighlight() {
        return highlight;
    }

    @Override
    public boolean isNoCache() {
        return highlight != null;
    }

    public PointTileParameters getGenericParameters() {
        return genericParameters;
    }

    @Override
    public void funnel(TileParameters o, PrimitiveSink into) {
        super.funnel(o, into);
        if (o instanceof PointTileParameters) {
            final PointTileParameters _o = (PointTileParameters) o;
            into.putDouble(_o.pointDiameter).putBoolean(_o.noFill).putBoolean(_o.noColor);
            if (highlight != null)
                into.putUnencodedChars(highlight.toString());
        }
    }
}