package org.solmix.fmk.datasource; import org.solmix.api.datasource.DSRequest; import org.solmix.api.datasource.DSResponse; import org.solmix.api.datasource.DataSource; import org.solmix.api.exception.SlxException; import org.solmix.api.jaxb.Eoperation; public abstract class FetchOp<D> extends DsOp<D> { public FetchOp(String dataSourceName) { super(dataSourceName, Eoperation.FETCH); } public FetchOp(DataSource dataSource) { super(dataSource, Eoperation.FETCH); } private Object criteria; @Override public D exe(DSRequest request) throws SlxException { if (criteria != null) request.getContext().setCriteria(criteria); return fetch(request); } public abstract D fetch(DSRequest request) throws SlxException; public FetchOp<D> withCriteria(Object criteria) { this.criteria = criteria; return this; } public static class DfFetchOp extends FetchOp<DSResponse> { public DfFetchOp(String dataSourceName) { super(dataSourceName); } public DfFetchOp(DataSource dataSource) { super(dataSource); } @Override public DSResponse fetch(DSRequest request) throws SlxException { return request.execute(); } } }