001/*
002 * Copyright (c) 2015 The Regents of the University of California.
003 * All rights reserved.
004 *
005 * '$Author: crawl $'
006 * '$Date: 2015-12-09 21:41:18 +0000 (Wed, 09 Dec 2015) $' 
007 * '$Revision: 34321 $'
008 * 
009 * Permission is hereby granted, without written agreement and without
010 * license or royalty fees, to use, copy, modify, and distribute this
011 * software and its documentation for any purpose, provided that the above
012 * copyright notice and the following two paragraphs appear in all copies
013 * of this software.
014 *
015 * IN NO EVENT SHALL THE UNIVERSITY OF CALIFORNIA BE LIABLE TO ANY PARTY
016 * FOR DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES
017 * ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF
018 * THE UNIVERSITY OF CALIFORNIA HAS BEEN ADVISED OF THE POSSIBILITY OF
019 * SUCH DAMAGE.
020 *
021 * THE UNIVERSITY OF CALIFORNIA SPECIFICALLY DISCLAIMS ANY WARRANTIES,
022 * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
023 * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE
024 * PROVIDED HEREUNDER IS ON AN "AS IS" BASIS, AND THE UNIVERSITY OF
025 * CALIFORNIA HAS NO OBLIGATION TO PROVIDE MAINTENANCE, SUPPORT, UPDATES,
026 * ENHANCEMENTS, OR MODIFICATIONS.
027 *
028 */
029package org.kepler.gis.data;
030
031import java.io.Serializable;
032
033import ptolemy.data.Token;
034import ptolemy.data.type.Type;
035import ptolemy.kernel.util.IllegalActionException;
036
037/** Token containing GIS data.
038 * 
039 *  FIXME this class only exists for the GIS type and calls in the static block.
040 * 
041 *  @author Daniel Crawl
042 *  @version $Id: GISToken.java 34321 2015-12-09 21:41:18Z crawl $
043 *  
044 */
045public abstract class GISToken extends Token {
046    
047    /** Get the token type. */
048    @Override
049    public Type getType() {
050        return GIS;
051    }
052    
053    public static class GISType implements Cloneable, Type, Serializable {
054
055        @Override
056        public Type add(Type rightArgumentType) {
057            // TODO Auto-generated method stub
058            return this;
059        }
060
061        @Override
062        public Object clone() {
063            return this;
064        }
065        
066        @Override
067        public Token convert(Token token) throws IllegalActionException {
068            if (token instanceof GISToken) {
069                return token;
070            } else {
071                throw new IllegalActionException("Attempt to convert token "
072                        + token + " into a GIS token, which is not possible.");
073            }
074        }
075
076        @Override
077        public Type divide(Type rightArgumentType) {
078            // TODO Auto-generated method stub
079            return this;
080        }
081
082        @Override
083        public int getTypeHash() {
084            // TODO Auto-generated method stub
085            return 0;
086        }
087
088        @Override
089        public Class<?> getTokenClass() {
090            return GISToken.class;
091        }
092
093        @Override
094        public boolean isAbstract() {
095            return false;
096        }
097
098        @Override
099        public boolean isCompatible(Type type) {
100            return type == this;
101        }
102
103        @Override
104        public boolean isConstant() {
105            return true;
106        }
107
108        @Override
109        public boolean isInstantiable() {
110            return true;
111        }
112
113        @Override
114        public boolean isSubstitutionInstance(Type type) {
115            return type == this;
116        }
117
118        @Override
119        public Type modulo(Type rightArgumentType) {
120            // TODO Auto-generated method stub
121            return this;
122        }
123
124        @Override
125        public Type multiply(Type rightArgumentType) {
126            // TODO Auto-generated method stub
127            return this;
128        }
129
130        @Override
131        public Type one() {
132            // TODO Auto-generated method stub
133            return this;
134        }
135
136        @Override
137        public Type subtract(Type rightArgumentType) {
138            // TODO Auto-generated method stub
139            return this;
140        }
141
142        @Override
143        public String toString() {
144            return "gis";
145        }
146        
147        @Override
148        public Type zero() {
149            // TODO Auto-generated method stub
150            return this;
151        }
152
153    }
154    
155    /** The GIS type. */
156    public static final GISType GIS = new GISType();    
157}