package org.orienteer.devutils.component; import com.google.inject.Inject; import com.orientechnologies.orient.core.metadata.schema.OClass; import com.orientechnologies.orient.core.record.impl.ODocument; import org.apache.wicket.extensions.markup.html.repeater.data.table.IColumn; import org.apache.wicket.markup.html.panel.GenericPanel; import org.apache.wicket.model.IModel; import org.apache.wicket.model.ResourceModel; import org.orienteer.core.component.command.DeleteODocumentCommand; import org.orienteer.core.component.command.EditODocumentsCommand; import org.orienteer.core.component.command.ExportCommand; import org.orienteer.core.component.command.SaveODocumentsCommand; import org.orienteer.core.component.property.DisplayMode; import org.orienteer.core.component.table.OrienteerDataTable; import org.orienteer.core.component.table.component.GenericTablePanel; import org.orienteer.core.service.IOClassIntrospector; import ru.ydn.wicket.wicketorientdb.model.OQueryDataProvider; import ru.ydn.wicket.wicketorientdb.model.OQueryModel; import java.util.List; /** * Panel to incapsulate table with query results */ public class OQueryModelResultsPanel extends GenericPanel<List<ODocument>> { @Inject private IOClassIntrospector oClassIntrospector; public OQueryModelResultsPanel(String id, OQueryModel<ODocument> queryModel) { super(id, queryModel); OClass oClass = queryModel.probeOClass(20); OQueryDataProvider<ODocument> provider = new OQueryDataProvider<>(queryModel); IModel<DisplayMode> modeModel = DisplayMode.VIEW.asModel(); List<? extends IColumn<ODocument, String>> columns = oClassIntrospector.getColumnsFor(oClass, true, modeModel); GenericTablePanel<ODocument> tablePanel = new GenericTablePanel<ODocument>("tablePanel", columns, provider, 20); OrienteerDataTable<ODocument, String> table = tablePanel.getDataTable(); table.addCommand(new EditODocumentsCommand(table, modeModel, oClass)); table.addCommand(new SaveODocumentsCommand(table, modeModel)); table.addCommand(new DeleteODocumentCommand(table, oClass)); table.addCommand(new ExportCommand<>(table, new ResourceModel("sql.results"))); add(tablePanel); } }