package com.csc.library.entry; import java.util.StringTokenizer; import java.util.Vector; import com.csc.library.database.ChildManager; import com.csc.library.database.FieldDate; import com.csc.library.database.Relation; import com.csc.library.session.DbInquiry; import com.csc.library.session.DbRecord; import com.csc.library.session.DbTable; import com.csc.library.utilities.CscCalendar; import com.csc.library.utilities.MyLog; public class BinaryHelpEntry extends HelpEntry{ public BinaryHelpEntry() { this.type = "helpEntry"; } @Override public void setSearch() { try { ChildManager cmobj = null; if (this.myRec != null) { cmobj = (ChildManager) myRec; } else if (this.inq != null) { cmobj = (ChildManager) inq; } else if (this.myTab != null) { cmobj = (ChildManager) myTab; } MyLog.debug(this, this.getUProfile(), " ******** Debug Child Manager : " + cmobj); String listCon = ""; Object obj = null; if ((this.fixCon != null) && (!this.fixCon.equals("")) && (!this.fixCon.equals("null"))) { listCon = fixCon; } if ((!this.valueSearch.equals("")) && (!this.searchBy.equals("")) && (!this.valueSearch.equals("null"))) { if (this.searchBy.substring(0,this.searchBy.indexOf(".")).equalsIgnoreCase(cmobj.getTableName())) { if (cmobj instanceof DbRecord) { obj = (DbRecord)cmobj; } else if (cmobj instanceof DbInquiry) { obj = (DbRecord)this.inq.getCurrentDbRecord(); } else if (cmobj instanceof DbTable) { obj = (DbRecord)this.myTab.getCurrentRecordManager(); } String valuesearch=this.valueSearch; String searchby=this.searchBy.substring(this.searchBy.indexOf(".") + 1); if(((DbRecord)obj).getField(searchby) instanceof FieldDate){ CscCalendar cs=new CscCalendar(valuesearch); valuesearch=cs.getYYYYMMDD(); } if ((listCon != null) && (!listCon.equals(""))) { if (this.conSearch.equals("like")) { listCon = "(" + listCon + ") and " + searchby + " " + this.conSearch + " N'%" + valuesearch + "%'"; } else { listCon = "(" + listCon + ") and " + searchby + " " + this.conSearch + " N'" + valuesearch + "'"; } } else { if (this.conSearch.equals("like")) { listCon = searchby + " " + this.conSearch + " N'%" + valuesearch + "%'"; } else { listCon = searchby + " " + this.conSearch + " N'" + valuesearch + "'"; } } } else { if (cmobj instanceof DbRecord) { obj = cmobj.getChild(this.searchBy.substring(0, this.searchBy.indexOf("."))); if (this.conSearch.equals("like")) { ((DbRecord) obj).setFilter(this.searchBy.substring(this.searchBy.indexOf(".") + 1) + " " + this.conSearch + " N'%" + this.valueSearch + "%'"); } else { ((DbRecord) obj).setFilter(this.searchBy.substring(this.searchBy.indexOf(".") + 1) + " " + this.conSearch + " N'" + this.valueSearch + "'"); } } else if (cmobj instanceof DbInquiry) { obj = this.inq.getCurrentDbRecord().getChild(this.searchBy.substring(0, this.searchBy.indexOf("."))); String subQuery=""; Relation rela=null; try{ if(obj!=null){ rela= ((DbInquiry) obj).getRelation(inq.getTableName()); Vector vrela=rela.getVFieldListParent(); Vector vparent=inq.getCurrentDbRecord().getAllFieldName(); for(int i=0;i<vrela.size();i++){ if(vparent.contains((String)vrela.get(i))){ subQuery=(String)vrela.get(i)+" in (select "+(String)rela.getVFieldtListChild().get(i)+" from "+((DbInquiry)obj).getTableName()+" where "; break; } } } }catch(Exception ex){ MyLog.warn(this,this.getUProfile(),ex); } if (this.conSearch.equals("like")) { inq.setFilter(subQuery+" "+this.searchBy.substring(this.searchBy.indexOf(".") + 1) + " " + this.conSearch + " N'%" + this.valueSearch + "%' "+((subQuery.length()>0)?")":"")); } else { inq.setFilter(subQuery+" "+this.searchBy.substring(this.searchBy.indexOf(".") + 1) + " " + this.conSearch + " N'" + this.valueSearch + "' "+((subQuery.length()>0)?")":"")); } } else if (cmobj instanceof DbTable) { obj = this.myTab.getCurrentRecordManager().getChild(this.searchBy.substring(0, this.searchBy.indexOf("."))); } } } if ((this.childFilter != null) && (!this.childFilter.equals("")) && (!this.childFilter.equals("null"))) { for (StringTokenizer token = new StringTokenizer(this.childFilter, ";"); token.hasMoreTokens();) { for (StringTokenizer sub_token = new StringTokenizer(token.nextToken(), ":"); sub_token.hasMoreTokens();) { if (cmobj instanceof DbRecord) { obj = this.myRec.getChild(sub_token.nextToken()); } else if (cmobj instanceof DbInquiry) { obj = this.inq.getCurrentDbRecord().getChild(sub_token.nextToken()); } else if (cmobj instanceof DbTable) { obj = this.myTab.getCurrentRecordManager().getChild(sub_token.nextToken()); } if (obj instanceof DbRecord) { ((DbRecord) obj).setFilter(sub_token.nextToken()); } else { if (obj instanceof DbInquiry) { ((DbInquiry) obj).setFilter(sub_token.nextToken()); } else if (obj instanceof DbTable) { ((DbTable) obj).setFilter(sub_token.nextToken()); } } } } } if ((listCon != null) && (!listCon.equals("")) && (!listCon.equals("null"))) { if(cmobj instanceof DbInquiry ){ if(((DbInquiry)cmobj).getFilter().trim().length()>0){ cmobj.setFilter(((DbInquiry)cmobj).getFilter()+" and "+listCon); }else{ cmobj.setFilter(listCon); } } } } catch (Exception e) { MyLog.error(this, this.getUProfile(), e); } } }