(12)検索条件の追加

検索テンプレートの検索時に任意の条件を追加します。

このサンプルコードでは検索条件「conditionValue」をAppComponentによる値入力を想定しています。また、事前に検索結果テーブルのIDを「resultTable」に変更したとします。

     拡張対象ページのApexクラス : SearchConditionSample

global with sharing class SearchConditionSampleExtender extends SkyEditor2.Extender{

    SearchConditionSample ext;

    //条件の値
    public String conditionValue {get; set;}

    private MyQueryListener  myListner;
    
    public SearchConditionSampleExtender(SearchConditionSample extension){
        this.ext = extension;
    }
    public override void init(){
        System.debug('init:');
            myListner = new MyQueryListener();
			//検索結果テーブルのIDでQueryMapを取得
            ext.QueryMap.get('resultTable'). addListener(myListner);

    }
    public override void preSearch(){
        // 条件に使われていたら追加
        if(String.isBlank(conditionValue)){
            myListner.setMyWhereClause(null);
        }else{
        	String sWhere = 'text__c = ' + conditionValue;
            myListner.setMyWhereClause(sWhere);
        }
    }
    
    
    //  QueryListenerはSVEの検索処理を拡張するためのインターフェース。これを実装することで追加のクエリーを発行することが出来ます。
    public class MyQueryListener implements SkyEditor2.QueryListener{
        private string myWhereClause;
        public void setMyWhereClause(String s){
            myWhereClause = s;
        }
        public void apply(SkyEditor2.Query query){
        	if(String.isNotBlank(myWhereClause)){
        		query.addWhereIfNotFirst('AND');
        		query.addWhere(myWhereClause);
        	}
        }
    }
}