package org.orienteer.pivottable.component.widget;
import org.apache.wicket.model.IModel;
import org.orienteer.core.widget.Widget;
import org.orienteer.pivottable.PivotTableModule;
import com.orientechnologies.orient.core.metadata.schema.OClass;
import com.orientechnologies.orient.core.metadata.schema.OProperty;
import com.orientechnologies.orient.core.record.impl.ODocument;
/**
* Widget for Pivot widget for document page
*/
@Widget(id="document-pivot-table", domain="document", oClass=PivotTableModule.WIDGET_OCLASS_NAME, order=10, autoEnable=false)
public class ODocumentPivotTableWidget extends AbstractPivotTableWidget<ODocument> {
public ODocumentPivotTableWidget(String id, IModel<ODocument> model, IModel<ODocument> widgetDocumentModel) {
super(id, model, widgetDocumentModel);
}
@Override
protected String getSql() {
String sql = super.getSql();
ODocument doc = getModelObject();
sql = sql.replaceAll(":doc\\b", doc.getIdentity().toString());
return sql;
}
@Override
protected String getDefaultSql() {
ODocument doc = getModelObject();
OClass oClass = doc.getSchemaClass();
OProperty multiProperty = null;
for(OProperty property : oClass.properties()) {
if(property.getType().isLink() && property.getType().isMultiValue()) {
multiProperty = property;
break;
}
}
if(multiProperty!=null) {
return "select expand("+multiProperty.getName()+") from :doc";
} else {
return "select from :doc";
}
}
}