001/* 002 * Copyright (c) 2003-2010 The Regents of the University of California. 003 * All rights reserved. 004 * 005 * '$Author: welker $' 006 * '$Date: 2010-05-06 05:21:26 +0000 (Thu, 06 May 2010) $' 007 * '$Revision: 24234 $' 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 */ 029 030package org.kepler.objectmanager.data.db; 031 032import java.util.Vector; 033 034/** 035 * Simple Implementation of the DSTableKeyIFace<br> 036 * A key can be made up of more than one field 037 */ 038public class DSTableKeyDef implements DSTableKeyIFace { 039 protected Vector mFields = new Vector(); 040 protected DSTableDef mTable = null; 041 protected Vector mMissingValueCode = new Vector(); 042 043 /** 044 * Default Constructor 045 * 046 */ 047 public DSTableKeyDef() { 048 } 049 050 /** 051 * Adds a DSTableFieldDef object to the Key 052 * 053 * @param aFieldDef 054 * Object to be added 055 */ 056 public void add(DSTableFieldDef aFieldDef) { 057 // aFieldDef.setIsKey(true); 058 mFields.add(aFieldDef); 059 } 060 061 /** 062 * Get Vector of DSTableFieldDef objects 063 * 064 * @return vector 065 */ 066 public Vector getFields() { 067 return mFields; 068 } 069 070 /** 071 * Returns one or more names. A single name for a single field or key. 072 * Multiple names for a key with multiple fields 073 * 074 * @return String of type in format "XXXX, XXXX, XXXX" 075 */ 076 public String getName() { 077 StringBuffer name = new StringBuffer(); 078 for (int i = 0; i < mFields.size(); i++) { 079 if (i > 0) 080 name.append(", "); 081 name.append(((DSTableFieldDef) mFields.elementAt(i)).getName()); 082 } 083 return name.toString(); 084 } 085 086 /** 087 * Passes back one or more types in human readable string may want to change 088 * this to an array of type or a vector 089 * 090 * @return String of type in format "XXXX, XXXX, XXXX" 091 */ 092 public String getDataType() { 093 StringBuffer name = new StringBuffer(); 094 for (int i = 0; i < mFields.size(); i++) { 095 if (i > 0) 096 name.append(", "); 097 name.append(((DSTableFieldDef) mFields.elementAt(i)).getDataType()); 098 } 099 return name.toString(); 100 } 101 102 /** 103 * @return Returns the mKeyType. 104 */ 105 public int getKeyType() { 106 return DSTableKeyIFace.PRIMARYKEY; 107 } 108 109 /** 110 * Sets the Parent DSTableDef object 111 * 112 * @param aTable 113 * DSTableDef object 114 */ 115 public void setTable(DSTableDef aTable) { 116 mTable = aTable; 117 } 118 119 /** 120 * Returns the table for the field 121 * 122 * @return DSTableDef Object 123 */ 124 public DSTableIFace getTable() { 125 return mTable; 126 } 127 128 /** 129 * Method to return the vector which store the missing value code. If this 130 * attribute doesn't has the missing value code, empty vector will be 131 * returned. 132 * 133 * */ 134 public Vector getMissingValueCode() { 135 return mMissingValueCode; 136 } 137 138 /** 139 * Method to add missing value code into a vector. This method will be used 140 * to store the missing value code in metadata 141 * 142 * @param code 143 */ 144 public void addMissingValueCode(String code) { 145 if (code != null) { 146 mMissingValueCode.add(code); 147 } 148 } 149 150 /** 151 * Method to return the vector which store the missing value code. If this 152 * attribute doesn't has the missing value code, empty vector will be 153 * returned. 154 * 155 * */ 156 public void setMissingValueCode(Vector missingValueVector) { 157 mMissingValueCode = missingValueVector; 158 } 159}