package play.utils.crud;
import play.mvc.Controller;
import play.mvc.Result;
import play.utils.meta.ModelMetadata;
import play.utils.meta.convert.Converter;
public abstract class ControllerProxy<K, M> extends Controller {
protected CRUD<K, M> delegate;
protected ModelMetadata model;
protected Converter<K> keyConverter;
@SuppressWarnings("unchecked")
public ControllerProxy(CRUD<K, M> delegate, ModelMetadata model) {
this.delegate = delegate;
this.model = model;
this.keyConverter = (Converter<K>) model.getKeyConverter();
}
public Result list() {
return delegate.list();
}
public Result create() {
return delegate.create();
}
public Result show(String key) {
K k = keyConverter.convert(key);
return delegate.read(k);
}
public Result update(String key) {
K k = keyConverter.convert(key);
return delegate.update(k);
}
public Result delete(String key) {
K k = keyConverter.convert(key);
return delegate.delete(k);
}
@Override
public String toString() {
StringBuilder builder = new StringBuilder();
builder.append("ControllerProxy(" + model.getName() + ") [").append(delegate).append("]");
return builder.toString();
}
}