Sunday, July 2, 2023

sample code for endeca atg.endeca.assembler.navigation.filter.OrRecordFilterBuilder

 1. Write your own recordbuilderImpl for example, highlighted method needs to be overridden, implement your custom logic to formulate the query. In this example im querying against storeId.

import atg.endeca.assembler.navigation.filter.RecordFilterBuilderImpl;

public class CustomRecordFilterBuilder extends RecordFilterBuilderImpl {

    private String recordPropertyName;

    private String storeId;

    public String getRecordPropertyName() {

        return recordPropertyName;

    }

    public void setRecordPropertyName(String recordPropertyName) {

        this.recordPropertyName = recordPropertyName;

    }

    public String getStoreId() {

        return storeId;

    }

    public void setStoreId(String storeId) {

        this.storeId = storeId;

    }

    @Override

    public String buildRecordFilter() {

        return this.recordPropertyName+":"+this.storeId;

    }

}


2. Custom logic for implementing the OrRecordFilterBuilder

f(storeId.contains(",")){

                OrRecordFilterBuilder orRecordFilterBuilder = new OrRecordFilterBuilder();

                orRecordFilterBuilder.setSecurityFilter(Boolean.FALSE);

                //StoreId is are tokenized by ',' eg. 292,110,101

                StringTokenizer tokenizer = new StringTokenizer(storeId, ",");

                List<CustomRecordFilterBuilder> recordFilterBuilderList = new ArrayList<CustomRecordFilterBuilder>();

                while(tokenizer.hasMoreTokens()){

                   CustomRecordFilterBuilder recordFilterBuilder = new CustomRecordFilterBuilder();

                   recordFilterBuilder.setStoreId(tokenizer.nextToken());

                   recordFilterBuilder.setRecordPropertyName(recordPropertyName);

                   recordFilterBuilderList.add(recordFilterBuilder);

                }

                if(recordFilterBuilderList != null && recordFilterBuilderList.size() > 0){

                    RecordFilterBuilder[] recordFilterBuildersArray = recordFilterBuilderList.toArray( new RecordFilterBuilder[recordFilterBuilderList.size()]);

                    orRecordFilterBuilder.setRecordFilterBuilders(recordFilterBuildersArray);

                    filter = orRecordFilterBuilder.buildRecordFilter();

                    LogUtils.getLogger(this).vlogDebug(" filter ---------->>>>"+filter);

                }

            }


No comments:

Post a Comment