001: /*
002: $Header: /cvsroot/xorm/xorm/src/org/xorm/RelationshipMapping.java,v 1.10 2003/07/09 01:44:02 wbiggs Exp $
003:
004: This file is part of XORM.
005:
006: XORM is free software; you can redistribute it and/or modify
007: it under the terms of the GNU General Public License as published by
008: the Free Software Foundation; either version 2 of the License, or
009: (at your option) any later version.
010:
011: XORM is distributed in the hope that it will be useful,
012: but WITHOUT ANY WARRANTY; without even the implied warranty of
013: MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
014: GNU General Public License for more details.
015:
016: You should have received a copy of the GNU General Public License
017: along with XORM; if not, write to the Free Software
018: Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
019: */
020: package org.xorm;
021:
022: import org.xorm.datastore.Column;
023:
024: /**
025: * A relationship mapping is a set of two endpoints that map specific columns
026: * to primary keys of specific interface types.
027: */
028: public class RelationshipMapping {
029: public static class Endpoint {
030: public static final int OBJECT = 1;
031: public static final int SET = 2;
032: // TODO: BAG, LIST, ORDERED_SET, MAP, ORDERED_MAP
033:
034: private int collectionType;
035:
036: public int getCollectionType() {
037: return collectionType;
038: }
039:
040: public void setCollectionType(int collectionType) {
041: this .collectionType = collectionType;
042: }
043:
044: private Class elementClass;
045:
046: public Class getElementClass() {
047: return elementClass;
048: }
049:
050: public void setElementClass(Class elementClass) {
051: this .elementClass = elementClass;
052: }
053:
054: private Column column;
055:
056: public Column getColumn() {
057: return column;
058: }
059:
060: public void setColumn(Column column) {
061: this .column = column;
062: }
063: }
064:
065: private String orderBy;
066: private String ordering;
067:
068: // We used to just set the target's elementClass to signify many-to-many,
069: // but that seemed like a hack to me. And since the target's elementClass
070: // was set to the owner class, which didn't seem to apply (if anything the
071: // target element class would be the collection's element class, not the
072: // owner's class), I swapped it out for a boolean. (Dan C)
073: private boolean manyToMany = false;
074:
075: private Endpoint source;
076: private Endpoint target;
077: private Column indexColumn;
078: // Added support for filtered collections (Dan Checkoway, 6/26/03)
079: private String filter;
080: private String parameters;
081: private String variables;
082: private String imports;
083:
084: public String getOrderBy() {
085: return orderBy;
086: }
087:
088: public void setOrderBy(String orderBy) {
089: this .orderBy = orderBy;
090: }
091:
092: public String getOrdering() {
093: return ordering;
094: }
095:
096: public void setOrdering(String ordering) {
097: this .ordering = ordering;
098: }
099:
100: /** Returns true if this is a many-to-many relationship. */
101: public boolean isMToN() {
102: return manyToMany;
103: }
104:
105: public void setMToN(boolean val) {
106: manyToMany = val;
107: }
108:
109: public Endpoint getSource() {
110: return source;
111: }
112:
113: public void setSource(Endpoint source) {
114: this .source = source;
115: }
116:
117: public Endpoint getTarget() {
118: return target;
119: }
120:
121: public void setTarget(Endpoint target) {
122: this .target = target;
123: }
124:
125: public Column getIndexColumn() {
126: return indexColumn;
127: }
128:
129: public void setIndexColumn(Column indexColumn) {
130: this .indexColumn = indexColumn;
131: }
132:
133: public RelationshipMapping reverse() {
134: RelationshipMapping other = new RelationshipMapping();
135: other.source = target;
136: other.target = source;
137: return other;
138: }
139:
140: public String getFilter() {
141: return filter;
142: }
143:
144: public void setFilter(String filter) {
145: this .filter = filter;
146: }
147:
148: public String getParameters() {
149: return parameters;
150: }
151:
152: public void setParameters(String parameters) {
153: this .parameters = parameters;
154: }
155:
156: public String getVariables() {
157: return variables;
158: }
159:
160: public void setVariables(String variables) {
161: this .variables = variables;
162: }
163:
164: public String getImports() {
165: return imports;
166: }
167:
168: public void setImports(String imports) {
169: this.imports = imports;
170: }
171: }
|