1 14 package org.compiere.dbPort; 15 16 import org.compiere.util.*; 17 18 26 public class Join 27 { 28 32 public Join (String joinClause) 33 { 34 if (joinClause == null) 35 throw new IllegalArgumentException ("Join - clause cannot be null"); 36 evaluate (joinClause); 37 } 39 private String m_joinClause; 40 private String m_mainTable; 41 private String m_mainAlias; 42 private String m_joinTable; 43 private String m_joinAlias; 44 private boolean m_left; 45 private String m_condition; 46 47 53 private void evaluate (String joinClause) 54 { 55 m_joinClause = joinClause; 56 int indexEqual = joinClause.indexOf('='); 57 m_left = indexEqual < joinClause.indexOf("(+)"); if (m_left) { 61 m_mainAlias = joinClause.substring 62 (0, Util.findIndexOf(joinClause, '.','=')).trim(); int end = joinClause.indexOf('.', indexEqual); 64 if (end == -1) end = joinClause.indexOf('(', indexEqual); 66 m_joinAlias = joinClause.substring(indexEqual+1, end).trim(); } 68 else { 70 int end = joinClause.indexOf('.', indexEqual); 71 if (end == -1) end = joinClause.length(); 73 m_mainAlias = joinClause.substring(indexEqual+1, end).trim(); m_joinAlias = joinClause.substring 75 (0, Util.findIndexOf(joinClause, '.','(')).trim(); } 77 m_condition = Util.replace(joinClause, "(+)", "").trim(); 78 } 80 85 public String getJoinClause() 86 { 87 return m_joinClause; 88 } 90 94 public String getMainAlias() 95 { 96 return m_mainAlias; 97 } 99 103 public String getJoinAlias() 104 { 105 return m_joinAlias; 106 } 108 112 public boolean isLeft() 113 { 114 return m_left; 115 } 117 122 public String getCondition() 123 { 124 return m_condition; 125 } 127 128 129 134 public void setMainTable(String mainTable) 135 { 136 if (mainTable == null || mainTable.length() == 0) 137 return; 138 m_mainTable = mainTable; 139 if (m_mainAlias.equals(mainTable)) 140 m_mainAlias = ""; 141 } 143 147 public String getMainTable() 148 { 149 return m_mainTable; 150 } 152 157 public void setJoinTable(String joinTable) 158 { 159 if (joinTable == null || joinTable.length() == 0) 160 return; 161 m_joinTable = joinTable; 162 if (m_joinAlias.equals(joinTable)) 163 m_joinAlias = ""; 164 } 166 170 public String getJoinTable() 171 { 172 return m_joinTable; 173 } 175 176 177 183 public boolean isConditionOf (Join first) 184 { 185 if (m_mainTable == null && (first.getJoinTable().equals(m_joinTable) || first.getMainAlias().equals(m_joinTable))) return true; 189 return false; 190 } 192 196 public String toString() 197 { 198 StringBuffer sb = new StringBuffer ("Join["); 199 sb.append(m_joinClause) 200 .append(" - Main=").append(m_mainTable).append("/").append(m_mainAlias) 201 .append(", Join=").append(m_joinTable).append("/").append(m_joinAlias) 202 .append(", Left=").append(m_left) 203 .append(", Condition=").append(m_condition) 204 .append("]"); 205 return sb.toString(); 206 } 208 } | Popular Tags |