com.esri.geoportal.commons.csw.client.impl.DcList.java Source code

Java tutorial

Introduction

Here is the source code for com.esri.geoportal.commons.csw.client.impl.DcList.java

Source

/*
 * Copyright 2016 Esri, Inc.
 *
 * 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 com.esri.geoportal.commons.csw.client.impl;

import java.util.Iterator;
import java.util.LinkedList;
import java.util.List;
import org.apache.commons.lang3.StringUtils;

/**
 * The Class DcList.  List that has key value pairs.  The keys
 * can be duplicate and will produce a list on get(key)
 */
public class DcList extends LinkedList<DcList.Value> {

    // class variables =============================================================
    /** The Constant serialVersionUID. */
    private static final long serialVersionUID = 1L;

    /** The Constant DELIMETER_LIST. */
    public final static String DELIMETER_LIST = "\u2715";

    /** The Constant DELIMETER_VALUES. */
    public final static String DELIMETER_VALUES = "\u2714";

    /** The Constant EMPTY_SCHEME. */
    public final static String EMPTY_SCHEME = "************";

    // constructors ================================================================
    /**
     * Instantiates a new dc list.
     */
    public DcList() {
    };

    /**
     * Instantiates a new dc list.
     * 
     * @param dcList the dc list
     */
    public DcList(String dcList) {

        this.add(dcList);

    }

    // methods =====================================================================
    /**
     * Adds the dc string
     * 
     * @param dcString the dc string
     */
    public void add(String dcString) {
        dcString = StringUtils.trimToEmpty(dcString);
        if ("".equals(dcString)) {
            return;
        }

        String schemeValues[] = dcString.split(DELIMETER_LIST);

        String arrKeyValue[];
        for (String schemeValue : schemeValues) {
            schemeValue = StringUtils.trimToEmpty(schemeValue);
            if ("".equals(schemeValue)) {
                continue;
            }
            arrKeyValue = schemeValue.split(DELIMETER_VALUES);
            if (arrKeyValue.length == 1) {
                this.add(this.new Value(arrKeyValue[0], EMPTY_SCHEME));
                continue;
            }
            this.add(this.new Value(arrKeyValue[0], arrKeyValue[1]));

        }
    }

    /**
     * Gets the dc string
     * 
     * @param scheme the scheme (if null or empty, EMPTY_SCHEME will be used)
     * @return list dc strings
     */
    public List<String> get(String scheme) {
        scheme = StringUtils.trimToEmpty(scheme);
        if ("".equals(scheme)) {
            scheme = EMPTY_SCHEME;
        }
        List<String> valueList = new LinkedList<String>();
        Iterator<DcList.Value> iter = this.iterator();

        while (iter.hasNext()) {
            Value value = iter.next();
            if (value == null) {
                continue;
            }
            if (value.getScheme().equalsIgnoreCase(scheme)) {
                valueList.add(value.getValue());
            }
        }
        return valueList;

    }

    /**
     * Removes the scheme.
     * 
     * @param urn the urn
     */
    public void removeScheme(String urn) {

        Iterator<DcList.Value> iter = this.iterator();
        Value value = null;
        boolean found = false;
        while (iter.hasNext()) {
            value = iter.next();
            if (value == null) {
                continue;
            }
            if (value.getScheme().equalsIgnoreCase(urn)) {
                found = true;
                break;
            }
        }
        if (found) {
            super.remove(value);
        }

    }

    /**
     * Removes the value.
     * 
     * @param val the val
     */
    public void removeValue(String val) {
        Iterator<DcList.Value> iter = this.iterator();
        Value value = null;
        boolean found = false;
        while (iter.hasNext()) {
            value = iter.next();
            if (value == null) {
                continue;
            }
            if (value.getValue().equalsIgnoreCase(val)) {
                found = true;
                break;
            }
        }
        if (found) {
            super.remove(value);
        }
    }

    /**
     * Removes the value.
     * @see #removeValue(String)
     * 
     * @param val the val
     */
    public void remove(String val) {
        removeValue(val);
    }

    // inner class =================================================================
    /**
     * The Class Value.
     */
    public class Value {

        // instance variables ==========================================================
        /** The scheme. */
        String scheme;

        /** The value. */
        String value;

        // constructor =================================================================
        /**
         * Instantiates a new value.
         * 
         * @param scheme the scheme
         * @param value the value
         */
        public Value(String value, String scheme) {
            this.setScheme(scheme);
            this.setValue(value);
        }

        // properties ==================================================================
        /**
         * Gets the scheme.
         * 
         * @return the scheme (trimmed, never null)
         */
        public String getScheme() {
            return StringUtils.trimToEmpty(scheme);
        }

        /**
         * Sets the scheme.
         * 
         * @param scheme the new scheme
         */
        public void setScheme(String scheme) {
            this.scheme = scheme;
        }

        /**
         * Gets the value.
         * 
         * @return the value (trimmed, never null)
         */
        public String getValue() {
            return StringUtils.trimToEmpty(value);

        }

        /**
         * Sets the value.
         * 
         * @param value the new value
         */
        public void setValue(String value) {
            this.value = value;
        }

    }
}