001/* =========================================================== 002 * Orson Charts : a 3D chart library for the Java(tm) platform 003 * =========================================================== 004 * 005 * (C)opyright 2013-2022, by David Gilbert. All rights reserved. 006 * 007 * https://github.com/jfree/orson-charts 008 * 009 * This program is free software: you can redistribute it and/or modify 010 * it under the terms of the GNU General Public License as published by 011 * the Free Software Foundation, either version 3 of the License, or 012 * (at your option) any later version. 013 * 014 * This program is distributed in the hope that it will be useful, 015 * but WITHOUT ANY WARRANTY; without even the implied warranty of 016 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 017 * GNU General Public License for more details. 018 * 019 * You should have received a copy of the GNU General Public License 020 * along with this program. If not, see <http://www.gnu.org/licenses/>. 021 * 022 * [Oracle and Java are registered trademarks of Oracle and/or its affiliates. 023 * Other names may be trademarks of their respective owners.] 024 * 025 * If you do not wish to be bound by the terms of the GPL, an alternative 026 * commercial license can be purchased. For details, please see visit the 027 * Orson Charts home page: 028 * 029 * http://www.object-refinery.com/orsoncharts/index.html 030 * 031 */ 032 033package org.jfree.chart3d.data; 034 035import java.io.Serializable; 036import org.jfree.chart3d.internal.Args; 037 038/** 039 * An object that references one data item in a {@link KeyedValues3D} data 040 * structure. 041 * 042 * @since 1.3 043 */ 044public class KeyedValuesItemKey implements ItemKey, Serializable { 045 046 /** The key for the item. */ 047 Comparable<? extends Object> key; 048 049 /** 050 * Creates a new instance. 051 * 052 * @param key the key ({@code null} not permitted). 053 */ 054 public KeyedValuesItemKey(Comparable<? extends Object> key) { 055 Args.nullNotPermitted(key, "key"); 056 this.key = key; 057 } 058 059 /** 060 * Returns the key. 061 * 062 * @return The key (never {@code null}). 063 */ 064 public Comparable<?> getKey() { 065 return this.key; 066 } 067 068 /** 069 * Tests this instance for equality with an arbitrary object. 070 * 071 * @param obj the object ({@code null} not permitted). 072 * 073 * @return A boolean. 074 */ 075 @Override 076 public boolean equals(Object obj) { 077 if (obj == this) { 078 return true; 079 } 080 if (!(obj instanceof KeyedValuesItemKey)) { 081 return false; 082 } 083 KeyedValuesItemKey that = (KeyedValuesItemKey) obj; 084 if (!this.key.equals(that.key)) { 085 return false; 086 } 087 return true; 088 } 089 090 @Override 091 public String toJSONString() { 092 return "{\"key\": \"" + this.key.toString() + "\"}"; 093 } 094 095 @Override 096 public String toString() { 097 return "ValuesItemKey[" + this.key.toString() + "]"; 098 } 099}