View Javadoc
1 package org.apache.torque.map; 2 3 /* ==================================================================== 4 * The Apache Software License, Version 1.1 5 * 6 * Copyright (c) 2001 The Apache Software Foundation. All rights 7 * reserved. 8 * 9 * Redistribution and use in source and binary forms, with or without 10 * modification, are permitted provided that the following conditions 11 * are met: 12 * 13 * 1. Redistributions of source code must retain the above copyright 14 * notice, this list of conditions and the following disclaimer. 15 * 16 * 2. Redistributions in binary form must reproduce the above copyright 17 * notice, this list of conditions and the following disclaimer in 18 * the documentation and/or other materials provided with the 19 * distribution. 20 * 21 * 3. The end-user documentation included with the redistribution, 22 * if any, must include the following acknowledgment: 23 * "This product includes software developed by the 24 * Apache Software Foundation (http://www.apache.org/)." 25 * Alternately, this acknowledgment may appear in the software itself, 26 * if and wherever such third-party acknowledgments normally appear. 27 * 28 * 4. The names "Apache" and "Apache Software Foundation" and 29 * "Apache Turbine" must not be used to endorse or promote products 30 * derived from this software without prior written permission. For 31 * written permission, please contact apache@apache.org. 32 * 33 * 5. Products derived from this software may not be called "Apache", 34 * "Apache Turbine", nor may "Apache" appear in their name, without 35 * prior written permission of the Apache Software Foundation. 36 * 37 * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED 38 * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES 39 * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 40 * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR 41 * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 42 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 43 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF 44 * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND 45 * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, 46 * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT 47 * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 48 * SUCH DAMAGE. 49 * ==================================================================== 50 * 51 * This software consists of voluntary contributions made by many 52 * individuals on behalf of the Apache Software Foundation. For more 53 * information on the Apache Software Foundation, please see 54 * <http://www.apache.org/>. 55 */ 56 57 import java.util.Iterator; 58 import java.util.HashMap; 59 import java.util.Hashtable; 60 import org.apache.torque.adapter.IDMethod; 61 import org.apache.torque.oid.IDBroker; 62 import org.apache.torque.oid.IdGenerator; 63 64 /*** 65 * DatabaseMap is used to model a database. 66 * 67 * @author <a href="mailto:jmcnally@collab.net">John D. McNally</a> 68 * @author <a href="mailto:dlr@collab.net">Daniel Rall</a> 69 * @version $Id: DatabaseMap.java,v 1.7 2002/09/13 06:00:49 mpoeschl Exp $ 70 */ 71 public class DatabaseMap implements java.io.Serializable 72 { 73 /*** Name of the database. */ 74 private String name; 75 76 /*** Name of the tables in the database. */ 77 private Hashtable tables; 78 79 /*** 80 * A special table used to generate primary keys for the other 81 * tables. 82 */ 83 private TableMap idTable = null; 84 85 /*** The IDBroker that goes with the idTable. */ 86 private IDBroker idBroker = null; 87 88 /*** The IdGenerators, keyed by type of idMethod. */ 89 private HashMap idGenerators; 90 91 /*** 92 * Required by proxy. Not used. 93 */ 94 public DatabaseMap() 95 { 96 } 97 98 /*** 99 * Constructor. 100 * 101 * @param name Name of the database. 102 * @param numberOfTables Number of tables in the database. 103 */ 104 public DatabaseMap(String name, int numberOfTables) 105 { 106 this.name = name; 107 tables = new Hashtable((int) (1.25 * numberOfTables) + 1); 108 idGenerators = new HashMap(6); 109 } 110 111 /*** 112 * Constructor. 113 * 114 * @param name Name of the database. 115 */ 116 public DatabaseMap(String name) 117 { 118 this.name = name; 119 tables = new Hashtable(); 120 idGenerators = new HashMap(6); 121 } 122 123 /*** 124 * Does this database contain this specific table? 125 * 126 * @param table The TableMap representation of the table. 127 * @return True if the database contains the table. 128 */ 129 public boolean containsTable(TableMap table) 130 { 131 return containsTable(table.getName()); 132 } 133 134 /*** 135 * Does this database contain this specific table? 136 * 137 * @param name The String representation of the table. 138 * @return True if the database contains the table. 139 */ 140 public boolean containsTable(String name) 141 { 142 if (name.indexOf('.') > 0) 143 { 144 name = name.substring(0, name.indexOf('.')); 145 } 146 return tables.containsKey(name); 147 } 148 149 /*** 150 * Get the ID table for this database. 151 * 152 * @return A TableMap. 153 */ 154 public TableMap getIdTable() 155 { 156 return idTable; 157 } 158 159 /*** 160 * Get the IDBroker for this database. 161 * 162 * @return An IDBroker. 163 */ 164 public IDBroker getIDBroker() 165 { 166 return idBroker; 167 } 168 169 /*** 170 * Get the name of this database. 171 * 172 * @return A String. 173 */ 174 public String getName() 175 { 176 return name; 177 } 178 179 /*** 180 * Get a TableMap for the table by name. 181 * 182 * @param name Name of the table. 183 * @return A TableMap, null if the table was not found. 184 */ 185 public TableMap getTable(String name) 186 { 187 return (TableMap) tables.get(name); 188 } 189 190 /*** 191 * Get a TableMap[] of all of the tables in the database. 192 * 193 * @return A TableMap[]. 194 */ 195 public TableMap[] getTables() 196 { 197 TableMap[] dbTables = new TableMap[tables.size()]; 198 Iterator it = tables.values().iterator(); 199 int i = 0; 200 while (it.hasNext()) 201 { 202 dbTables[i++] = (TableMap) it.next() ; 203 } 204 return dbTables; 205 } 206 207 /*** 208 * Add a new table to the database by name. It creates an empty 209 * TableMap that you need to populate. 210 * 211 * @param tableName The name of the table. 212 */ 213 public void addTable(String tableName) 214 { 215 TableMap tmap = new TableMap(tableName, this); 216 tables.put(tableName, tmap); 217 } 218 219 /*** 220 * Add a new table to the database by name. It creates an empty 221 * TableMap that you need to populate. 222 * 223 * @param tableName The name of the table. 224 * @param numberOfColumns The number of columns in the table. 225 */ 226 public void addTable(String tableName, int numberOfColumns) 227 { 228 TableMap tmap = new TableMap(tableName, numberOfColumns, this); 229 tables.put(tableName, tmap); 230 } 231 232 /*** 233 * Add a new TableMap to the database. 234 * 235 * @param map The TableMap representation. 236 */ 237 public void addTable(TableMap map) 238 { 239 tables.put(map.getName(), map); 240 } 241 242 /*** 243 * Set the ID table for this database. 244 * 245 * @param idTable The TableMap representation for the ID table. 246 */ 247 public void setIdTable(TableMap idTable) 248 { 249 this.idTable = idTable; 250 addTable(idTable); 251 idBroker = new IDBroker(idTable); 252 addIdGenerator(IDMethod.ID_BROKER, idBroker); 253 } 254 255 /*** 256 * Set the ID table for this database. 257 * 258 * @param tableName The name for the ID table. 259 */ 260 public void setIdTable(String tableName) 261 { 262 TableMap tmap = new TableMap(tableName, this); 263 setIdTable(tmap); 264 } 265 266 /*** 267 * Add a type of id generator for access by a TableMap. 268 * 269 * @param type a <code>String</code> value 270 * @param idGen an <code>IdGenerator</code> value 271 */ 272 public void addIdGenerator(String type, IdGenerator idGen) 273 { 274 idGenerators.put(type, idGen); 275 } 276 277 /*** 278 * Get a type of id generator. Valid values are listed in the 279 * {@link org.apache.torque.adapter.IDMethod} interface. 280 * 281 * @param type a <code>String</code> value 282 * @return an <code>IdGenerator</code> value 283 */ 284 IdGenerator getIdGenerator(String type) 285 { 286 return (IdGenerator) idGenerators.get(type); 287 } 288 }

This page was automatically generated by Maven