001    // BSD License (http://www.galagosearch.org/license)
002    
003    package org.galagosearch.tupleflow.typebuilder;
004    
005    /**
006     *
007     * @author trevor
008     */
009    public class FieldSpecification {
010        public enum DataType {
011            BOOLEAN ("boolean", "boolean", "Boolean", false, false, false),
012            BYTE   ("byte", "byte", "Byte", true, false, false),
013            SHORT  ("short", "short", "Short", true, false, false),
014            INT    ("int", "int", "Integer", true, false, false),
015            LONG   ("long", "long", "Long", true, false, false),
016            FLOAT  ("float", "float", "Float", false, false, false),
017            DOUBLE ("double", "double", "Double", false, false, false),
018            STRING ("String", "String", "String", false, true, false),
019            BYTES  ("bytes", "byte", "byte[]", false, false, true);
020                    
021            DataType(String internalType, String baseType, String className,
022                     boolean isInteger, boolean isString, boolean isArray) {
023                this.internalType = internalType;
024                this.baseType = baseType;
025                this.className = className;
026                this.isInteger = isInteger;
027                this.isString = isString;
028                this.isArray = isArray;
029            }
030    
031            public String getType() {
032                if (!isArray)
033                    return baseType;
034                return baseType + "[]";
035            }
036            
037            public String getBaseType() {
038                return baseType;
039            }
040            
041            public String getInternalType() {
042                return internalType;
043            }
044    
045            public boolean isInteger() {
046                return isInteger;
047            }
048    
049            public boolean isString() {
050                return isString;
051            }
052            
053            public boolean isArray() {
054                return isArray;
055            }
056    
057            public String getClassName() {
058                return className;
059            }
060            
061            private String baseType;
062            private String internalType;
063            private String className;
064            private boolean isInteger;
065            private boolean isString;
066            private boolean isArray;
067        };
068        
069        public FieldSpecification(DataType type, String name) {
070            this.type = type;
071            this.name = name;
072        }
073        
074        public DataType getType() {
075            return type;
076        }
077        
078        public String getName() {
079            return name;
080        }
081        
082        protected DataType type;
083        protected String name;
084    }