KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > com > genimen > djeneric > structure > RelationUsage


1 /*
2  * Copyright (c) 2001-2005 by Genimen BV (www.genimen.com) All rights reserved.
3  *
4  * Redistribution and use in source and binary forms, with or without
5  * modification, is permitted provided that the following conditions are met: -
6  * Redistributions of source code must retain the above copyright notice, this
7  * list of conditions and the following disclaimer. - Redistributions in binary
8  * form must reproduce the above copyright notice, this list of conditions and
9  * the following disclaimer in the documentation and/or other materials
10  * provided with the distribution. - All advertising materials mentioning
11  * features or use of this software must display the following acknowledgment:
12  * "This product includes Djeneric." - Products derived from this software may
13  * not be called "Djeneric" nor may "Djeneric" appear in their names without
14  * prior written permission of Genimen BV. - Redistributions of any form
15  * whatsoever must retain the following acknowledgment: "This product includes
16  * Djeneric."
17  *
18  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDER AND CONTRIBUTORS "AS IS"
19  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
20  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
21  * ARE DISCLAIMED. IN NO EVENT SHALL GENIMEN BV, DJENERIC.ORG, OR CONTRIBUTORS
22  * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
23  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
24  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
25  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
26  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
27  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
28  * POSSIBILITY OF SUCH DAMAGE.
29  */

30 package com.genimen.djeneric.structure;
31
32 import com.genimen.djeneric.repository.DjProperty;
33 import com.genimen.djeneric.repository.DjRelation;
34 import com.genimen.djeneric.repository.exceptions.ObjectNotDefinedException;
35
36 public class RelationUsage extends Object JavaDoc
37 {
38   ExtentUsage _master;
39   ExtentUsage _detail;
40   DjRelation _via;
41
42   public RelationUsage(ExtentUsage master, ExtentUsage detail, DjRelation via)
43   {
44     _master = master;
45     _detail = detail;
46     _via = via;
47   }
48
49   public String JavaDoc toString()
50   {
51     StringBuffer JavaDoc result = new StringBuffer JavaDoc(100);
52     if (_master != null) result.append(_master.toString());
53     else result.append("null");
54
55     result.append("-<");
56
57     if (_detail != null) result.append(_detail.toString());
58     else result.append("null");
59
60     result.append(" via ");
61
62     if (_via != null) result.append(_via.toString());
63     else result.append("null");
64
65     return result.toString();
66
67   }
68
69   public ExtentUsage getMaster()
70   {
71     return _master;
72   }
73
74   public ExtentUsage getDetail()
75   {
76     return _detail;
77   }
78
79   public DjRelation getRelation()
80   {
81     return _via;
82   }
83
84   public boolean equals(Object JavaDoc obj)
85   {
86     if (!(obj instanceof RelationUsage)) return false;
87
88     RelationUsage rel = (RelationUsage) obj;
89
90     return rel._master.getExtent() == _master.getExtent() && rel._detail.getExtent() == _detail.getExtent()
91            && rel._via.getDetailProperty().getName().equals(_via.getDetailProperty().getName());
92   }
93
94   public int hashCode()
95   {
96     int result = 0;
97     if (_master.getExtent() != null) result += _master.getExtent().hashCode();
98     if (_detail.getExtent() != null) result += _detail.getExtent().hashCode();
99     if (_via.getDetailProperty().getName() != null) result += _via.getDetailProperty().getName().hashCode();
100
101     return result;
102   }
103
104   public String JavaDoc getDetailPropertyName()
105   {
106     // The property might have been renamed; so try the inter ID first
107
try
108     {
109       DjProperty prop = _via.getDetailExtent().getPropertyByInternalId(_via.getDetailProperty().getInternalId());
110       return prop.getName();
111     }
112     catch (ObjectNotDefinedException onde)
113     {
114       //
115
}
116     // If not found, then the original property might have been deleted and
117
// added again with the same name
118
// Try to recover from this by returning the original name
119
return _via.getDetailProperty().getName();
120   }
121
122   /**
123    * @return
124    */

125   public boolean isValid()
126   {
127     if (_via == null || _via.getDetailProperty() == null) return false;
128     if (!getDetail().getExtent().hasProperty(_via.getDetailProperty().getInternalId())) return false;
129
130     return true;
131   }
132
133 }
Popular Tags