« Hibernate search 導入 | トップページ | サーバーのバックアップ機が遅くなった »

2010年6月 6日 (日)

マスター検索の formalname 対応

マスター検索を formalname 対応にした。これで,例えば,TP が「総蛋白」,T-Cho が「コレステロール」で検索できるようになる。

dao/SqlMaster.java

private ArrayList getTreatmentByName(String text, boolean startsWith, String orderClassCode, String sortBy, String order) {
//pns   デフォルトを部分一致に。前方一致したいときは,自分で ^ を付けることにする
  String sql = getTreatemenrSql(text, orderClassCode, sortBy, order, false);
  ArrayList ret = getTreatmentCollection(sql);
/* // 前方一致検索を行う
  String sql = getTreatemenrSql(text, orderClassCode, sortBy, order, true);
  ArrayList ret = getTreatmentCollection(sql);
        
  // NoError で結果がないとき部分一致検索を行う
  if (isNoError() && (ret == null || ret.size() == 0) ) {
    sql = getTreatemenrSql(text, orderClassCode, sortBy, order, false);
    ret = getTreatmentCollection(sql);
  }*/
  return ret;
}

private String getTreatemenrSql(String text,  String orderClassCode, String sortBy, String order, boolean forward) {
 ・
 ・        
//pns   formalname 対応
  // buf.append("select srycd,name,kananame,tensikibetu,ten,nyugaitekkbn,routekkbn,srysyukbn,hospsrykbn,yukostymd,yukoedymd from tbl_tensu where ");
  buf.append("select srycd,name,kananame,tensikibetu,ten,nyugaitekkbn,routekkbn,srysyukbn,hospsrykbn,yukostymd,yukoedymd,formalname from tbl_tensu where ");
 ・
 ・
//pns   8xxxxxxxx のコメントを検索できるようにする
//pns   buf.append("(srycd ~ '^1' or srycd ~ '^00') and ");
  buf.append("(srycd ~ '^1' or srycd ~ '^00' or srycd ~ '^8') and ");

//pns^  formalname と kananame 対応
  StringBuilder nameClause = new StringBuilder();
  word = forward? addSingleQuote("^" + text): addSingleQuote(text);

  if (StringTool.isAllDigit(text)) {
    //word = text;
    //buf.append("srycd ~ ");
    nameClause.append("srycd ~ " + word);
  } else {    
    //word = text;
    //buf.append("name ~ ");
    nameClause.append("(name ~ " + word);
    nameClause.append(" or kananame ~ " + word);
    nameClause.append(" or formalname ~ " + word + ")");
  }
  buf.append(nameClause.toString());
//pns$
  StringBuilder sbd = new StringBuilder();
 ・
 ・
private ArrayList getTreatmentCollection(String sql) {
 ・
 ・
  while (rs.next()) {
    te = new TreatmentEntry();
    te.setCode(rs.getString(1));            // srycd
 ・
 ・
//pns
    te.setFormalName(rs.getString(12)); // formalname
 ・
 ・

infomodel/MasterEntry.java

public class MasterEntry extends InfoModel implements java.lang.Comparable {
 ・
 ・
//pns
    protected String formalname;
 ・
 ・
//pns^
    public void setFormalName(String val) {
        formalname = val;
    }
    public String getFormalName() {
        return formalname;
    }
//pns$
 ・
 ・

order/TreatmentMaster.java

 ・
 ・
protected final class TreatmentMasterRenderer extends MasterRenderer {
 ・
 ・
    case KANA_COLUMN:
      label.setText(entry.getKana());
//pns^ 正式名称があれば表示することにした
      String formalName = entry.getFormalName();
      if (formalName != null && !formalName.equals(""))
        label.setText(formalName);
//pns$
      break;
 ・
 ・

« Hibernate search 導入 | トップページ | サーバーのバックアップ機が遅くなった »

OpenDolphin」カテゴリの記事