Docjar: A Java Source and Docuemnt Enginecom.*    java.*    javax.*    org.*    all    new    plug-in

Quick Search    Search Deep

Source code: org/objectstyle/cayenne/map/DbAttribute.java


1   /* ====================================================================
2    * 
3    * The ObjectStyle Group Software License, Version 1.0 
4    *
5    * Copyright (c) 2002-2003 The ObjectStyle Group 
6    * and individual authors of the software.  All rights reserved.
7    *
8    * Redistribution and use in source and binary forms, with or without
9    * modification, are permitted provided that the following conditions
10   * are met:
11   *
12   * 1. Redistributions of source code must retain the above copyright
13   *    notice, this list of conditions and the following disclaimer. 
14   *
15   * 2. Redistributions in binary form must reproduce the above copyright
16   *    notice, this list of conditions and the following disclaimer in
17   *    the documentation and/or other materials provided with the
18   *    distribution.
19   *
20   * 3. The end-user documentation included with the redistribution, if
21   *    any, must include the following acknowlegement:  
22   *       "This product includes software developed by the 
23   *        ObjectStyle Group (http://objectstyle.org/)."
24   *    Alternately, this acknowlegement may appear in the software itself,
25   *    if and wherever such third-party acknowlegements normally appear.
26   *
27   * 4. The names "ObjectStyle Group" and "Cayenne" 
28   *    must not be used to endorse or promote products derived
29   *    from this software without prior written permission. For written 
30   *    permission, please contact andrus@objectstyle.org.
31   *
32   * 5. Products derived from this software may not be called "ObjectStyle"
33   *    nor may "ObjectStyle" appear in their names without prior written
34   *    permission of the ObjectStyle Group.
35   *
36   * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
37   * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
38   * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
39   * DISCLAIMED.  IN NO EVENT SHALL THE OBJECTSTYLE GROUP OR
40   * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
41   * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
42   * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
43   * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
44   * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
45   * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
46   * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
47   * SUCH DAMAGE.
48   * ====================================================================
49   *
50   * This software consists of voluntary contributions made by many
51   * individuals on behalf of the ObjectStyle Group.  For more
52   * information on the ObjectStyle Group, please see
53   * <http://objectstyle.org/>.
54   *
55   */
56  
57  package org.objectstyle.cayenne.map;
58  
59  import org.objectstyle.cayenne.dba.TypesMapping;
60  import org.objectstyle.cayenne.map.event.AttributeEvent;
61  import org.objectstyle.cayenne.map.event.DbAttributeListener;
62  
63  /** 
64   * A DbAttribute defines a descriptor for a single database table column.
65   * 
66   * @author Misha Shengaout
67   * @author Andrei Adamchik
68   */
69  public class DbAttribute extends Attribute {
70    /** 
71     * The type of the column. 
72     */
73    protected int type = TypesMapping.NOT_DEFINED;
74  
75    /**
76     * If <code>true</code>, column corresponding to 
77     * this attribute does not allows nulls.
78     */
79    protected boolean mandatory;
80  
81    /** 
82     * If <code>true</code>, this attribute is 
83     * a part of primary key.
84     */
85    protected boolean primaryKey;
86  
87    // The length of CHAR or VARCHAr or max num of digits for DECIMAL.
88    protected int maxLength = -1;
89  
90    // The number of digits after period for DECIMAL.
91    protected int precision = -1;
92  
93    public DbAttribute() {
94      super();
95    }
96    
97    public DbAttribute(String name) {
98      super(name);
99    }
100 
101   public DbAttribute(String name, int type, DbEntity entity) {
102     this.setName(name);
103     this.setType(type);
104     this.setEntity(entity);
105   }
106 
107   public String getAliasedName(String alias) {
108     return (alias != null) ? alias + '.' + this.getName() : this.getName();
109   }
110 
111   /** 
112    * Returns the SQL type of the column.
113    * 
114    * @see java.sql.Types
115    */
116   public int getType() {
117     return type;
118   }
119 
120   /** 
121    * Sets the SQL type for the column.
122    * 
123    * @see java.sql.Types
124    */
125   public void setType(int type) {
126     this.type = type;
127   }
128 
129   public boolean isPrimaryKey() {
130     return primaryKey;
131   }
132 
133   public void setPrimaryKey(boolean primaryKey) {
134     this.primaryKey = primaryKey;
135     Entity e = this.getEntity();
136     if (e instanceof DbAttributeListener) {
137       ((DbAttributeListener)e).dbAttributeChanged(new AttributeEvent(this, this, e));
138     }
139   }
140 
141   public boolean isMandatory() {
142     return mandatory;
143   }
144 
145   public void setMandatory(boolean mandatory) {
146     this.mandatory = mandatory;
147   }
148 
149   /** Returns the length of database column described by this attribute. */
150   public int getMaxLength() {
151     return maxLength;
152   }
153 
154   /** Sets the length of character or binary type or max num of digits for DECIMAL.*/
155   public void setMaxLength(int maxLength) {
156     this.maxLength = maxLength;
157   }
158 
159   /** Returns the number of digits after period for DECIMAL.*/
160   public int getPrecision() {
161     return precision;
162   }
163 
164   /** Sets the number of digits after period for DECIMAL.*/
165   public void setPrecision(int precision) {
166     this.precision = precision;
167   }
168 
169   /** Appends string representation of attribute to a provided buffer.
170    *  This is a variation of "toString" method. It may be more
171    *  efficient in some cases. For example, when printing all
172    *  attributes of a single entity together. */
173   public StringBuffer toStringBuffer(StringBuffer buf) {
174     buf.append("   Column name: " + this.getName() + "\n");
175     buf.append("   Column type: " + type + "\n");
176     return buf;
177   }
178 
179   public String toString() {
180     StringBuffer buf = new StringBuffer("DbAttribute\n");
181     return this.toStringBuffer(buf).toString();
182   }
183 
184 }