1 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 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 toString() 50 { 51 StringBuffer result = new StringBuffer (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 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 getDetailPropertyName() 105 { 106 try 108 { 109 DjProperty prop = _via.getDetailExtent().getPropertyByInternalId(_via.getDetailProperty().getInternalId()); 110 return prop.getName(); 111 } 112 catch (ObjectNotDefinedException onde) 113 { 114 } 116 return _via.getDetailProperty().getName(); 120 } 121 122 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 |