com.intellectualcrafters.plot.flag.Flag.java Source code

Java tutorial

Introduction

Here is the source code for com.intellectualcrafters.plot.flag.Flag.java

Source

////////////////////////////////////////////////////////////////////////////////////////////////////
// PlotSquared - A plot manager and world generator for the Bukkit API                             /
// Copyright (c) 2014 IntellectualSites/IntellectualCrafters                                       /
//                                                                                                 /
// This program is free software; you can redistribute it and/or modify                            /
// it under the terms of the GNU General Public License as published by                            /
// the Free Software Foundation; either version 3 of the License, or                               /
// (at your option) any later version.                                                             /
//                                                                                                 /
// This program is distributed in the hope that it will be useful,                                 /
// but WITHOUT ANY WARRANTY; without even the implied warranty of                                  /
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the                                   /
// GNU General Public License for more details.                                                    /
//                                                                                                 /
// You should have received a copy of the GNU General Public License                               /
// along with this program; if not, write to the Free Software Foundation,                         /
// Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301  USA                               /
//                                                                                                 /
// You can contact us via: support@intellectualsites.com                                           /
////////////////////////////////////////////////////////////////////////////////////////////////////

package com.intellectualcrafters.plot.flag;

import org.apache.commons.lang.StringUtils;

public class Flag {
    private final AbstractFlag key;
    private final String value;

    /**
     * Flag object used to store basic information for a Plot. Flags are a
     * key/value pair. For a flag to be usable by a player, you need to register
     * it with PlotSquared.
     *
     * @param key   AbstractFlag
     * @param value Value must be alphanumerical (can have spaces) and be <= 48
     *              characters
     * @throws IllegalArgumentException if you provide inadequate inputs
     */
    public Flag(final AbstractFlag key, final String value) {
        final char[] allowedCharacters = new char[] { '[', ']', '(', ')', ',', '_', '-', '.', ',', '?', '!', '&',
                ':', '\u00A7' };
        String tempValue = value;
        for (final char c : allowedCharacters) {
            tempValue = tempValue.replace(c, 'c');
        }
        if (!StringUtils.isAlphanumericSpace(tempValue)) {
            throw new IllegalArgumentException(
                    "Flag must be alphanumerical (colours and some special characters are allowed)");
        }
        if (value.length() > 48) {
            throw new IllegalArgumentException("Value must be <= 48 characters");
        }
        this.key = key;
        this.value = key.parseValue(value);
        if (this.value == null) {
            throw new IllegalArgumentException(key.getValueDesc());
        }
    }

    /**
     * Get the AbstractFlag used in creating the flag
     *
     * @return AbstractFlag
     */
    public AbstractFlag getAbstractFlag() {
        return this.key;
    }

    /**
     * Get the key for the AbstractFlag
     *
     * @return String
     */
    public String getKey() {
        return this.key.getKey();
    }

    /**
     * Get the value
     *
     * @return String
     */
    public String getValue() {
        return this.value;
    }

    @Override
    public String toString() {
        if (this.value.equals("")) {
            return this.key.getKey();
        }
        return this.key + ":" + this.value;
    }

    @Override
    public boolean equals(final Object obj) {
        if (this == obj) {
            return true;
        }
        if (obj == null) {
            return false;
        }
        if (getClass() != obj.getClass()) {
            return false;
        }
        final Flag other = (Flag) obj;
        return (this.key.getKey().equals(other.key.getKey()) && this.value.equals(other.value));
    }

    @Override
    public int hashCode() {
        return this.key.getKey().hashCode();
    }
}