package org.orienteer.core.component.widget.browse;
import org.apache.wicket.model.IModel;
import org.apache.wicket.util.string.Strings;
import org.orienteer.core.component.table.filter.sql.ODefaultQueryBuilder;
import org.orienteer.core.component.widget.AbstractCalculatedDocumentsWidget;
import org.orienteer.core.widget.Widget;
import com.orientechnologies.orient.core.metadata.schema.OClass;
import com.orientechnologies.orient.core.record.impl.ODocument;
import ru.ydn.wicket.wicketorientdb.filter.IODataFilter;
import ru.ydn.wicket.wicketorientdb.filter.impl.DefaultDataFilter;
import ru.ydn.wicket.wicketorientdb.model.OQueryDataProvider;
/**
* Widget for calculated document
*/
@Widget(id="browse-calculated-documents", domain="browse", order=20, oClass = AbstractCalculatedDocumentsWidget.WIDGET_OCLASS_NAME, autoEnable=false)
public class CalculatedDocumentsWidget extends AbstractCalculatedDocumentsWidget<OClass> {
public CalculatedDocumentsWidget(String id, IModel<OClass> model, IModel<ODocument> widgetDocumentModel) {
super(id, model, widgetDocumentModel);
}
@Override
protected OQueryDataProvider<ODocument> newDataProvider(String sql) {
OQueryDataProvider<ODocument> provider = new OQueryDataProvider<ODocument>(sql);
IODataFilter<ODocument, String> dataFilter = new DefaultDataFilter<ODocument>(getModel());
dataFilter.setQueryBuilder(new ODefaultQueryBuilder<ODocument>(getModel().getObject().getName()));
provider.setFilterState(dataFilter);
return provider;
}
@Override
protected String getSql() {
String sql = super.getSql();
if(!Strings.isEmpty(sql)) return sql;
else {
String requiredClass = getWidgetDocument().field("class");
return "select from "+(Strings.isEmpty(requiredClass)?getModelObject().getName():requiredClass);
}
}
}