001 /*
002 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
003 *
004 * Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
005 *
006 * The contents of this file are subject to the terms of either the GNU
007 * General Public License Version 2 only ("GPL") or the Common
008 * Development and Distribution License("CDDL") (collectively, the
009 * "License"). You may not use this file except in compliance with the
010 * License. You can obtain a copy of the License at
011 * http://www.netbeans.org/cddl-gplv2.html
012 * or nbbuild/licenses/CDDL-GPL-2-CP. See the License for the
013 * specific language governing permissions and limitations under the
014 * License. When distributing the software, include this License Header
015 * Notice in each file and include the License file at
016 * nbbuild/licenses/CDDL-GPL-2-CP. Sun designates this
017 * particular file as subject to the "Classpath" exception as provided
018 * by Sun in the GPL Version 2 section of the License file that
019 * accompanied this code. If applicable, add the following below the
020 * License Header, with the fields enclosed by brackets [] replaced by
021 * your own identifying information:
022 * "Portions Copyrighted [year] [name of copyright owner]"
023 *
024 * Contributor(s):
025 *
026 * The Original Software is NetBeans. The Initial Developer of the Original
027 * Software is Sun Microsystems, Inc. Portions Copyright 1997-2006 Sun
028 * Microsystems, Inc. All Rights Reserved.
029 *
030 * If you wish your version of this file to be governed by only the CDDL
031 * or only the GPL Version 2, indicate your decision by adding
032 * "[Contributor] elects to include this software in this distribution
033 * under the [CDDL or GPL Version 2] license." If you do not indicate a
034 * single choice of license, a recipient has the option to distribute
035 * your version of this file under either the CDDL, the GPL Version 2 or
036 * to extend the choice of license to its licensees as provided above.
037 * However, if you add GPL Version 2 code and therefore, elected the GPL
038 * Version 2 license, then the option applies only if the new code is
039 * made subject to such option by the copyright holder.
040 */
041
042 package org.netbeans.modules.j2ee.deployment.common.api;
043
044 import org.openide.filesystems.FileObject;
045
046 /**
047 * This interface provides an abstraction for the original relational database
048 * information used to generate an Entity container managed persistence bean.
049 * Changes to cmp or cmr fields made after generation will not be reflected in
050 * this interface and may invalidation the original mappings. Thus, this
051 * information is intended to serve only as a hint for application server
052 * mapping.
053 * @author Chris Webster
054 */
055 public interface OriginalCMPMapping {
056
057 /**
058 * @return file reference to dbschema where table and column references
059 * refer.
060 */
061 FileObject getSchema();
062
063 /**
064 * @return ejb name.
065 */
066 String getEjbName();
067
068 /**
069 * @return table name containing all column references.
070 */
071 String getTableName();
072
073 /**
074 * @param cmpFieldName to use for locating column mapping.
075 * @return name of column which represents the cmp field in #getTable() or
076 * null if this cmp field does not have a mapping (this could happen because
077 * of a change to the set of cmp fields or changes to the specific cmp field).
078 */
079 String getFieldColumn(String cmpFieldName);
080
081 /**
082 * Obtain the foreign key columns used to express a 1:N relationship. This
083 * method will return the mapping only from the dependant EJB. Consider a
084 * an Order to LineItem relationship (Order contains many line items)
085 * where Order has a cmr field called lineItems and LineItem has a cmr field
086 * named order. Invoking <code>getRelationshipColumn("lineItems")</code> on
087 * Order would return null; however, the same invocation on LineItem would
088 * return the foreign keys which reference Order. Mapping information for
089 * M:N relationships is obtain via the #getRelationshipTable(java.lang.String)
090 * method.
091 * @param cmrFieldName to use for locating column mapping.
092 * @return name of columns representing the cmr field in #getTable() or null
093 * if the field was not present during creation or is participating in a
094 * many to many relationship.
095 */
096 String[] getRelationshipColumn(String cmrFieldName);
097
098 /**
099 * Obtain the name of the join table a cmr field is based on. Both sides
100 * of the relationship will return the same table name.
101 * @param cmrFieldName to use in decision.
102 * @return name of join table if cmrFieldName is based on a join table,
103 * null otherwise.
104 */
105 String getRelationshipJoinTable(String cmrFieldName);
106 }
|