package org.orienteer.graph.component.command; import com.orientechnologies.orient.core.id.ORID; import com.orientechnologies.orient.core.metadata.schema.OClass; import com.orientechnologies.orient.core.record.impl.ODocument; import com.tinkerpop.blueprints.Direction; import com.tinkerpop.blueprints.Edge; import com.tinkerpop.blueprints.impls.orient.OrientEdge; import com.tinkerpop.blueprints.impls.orient.OrientGraph; import com.tinkerpop.blueprints.impls.orient.OrientGraphFactory; import com.tinkerpop.blueprints.impls.orient.OrientVertex; import org.apache.wicket.ajax.AjaxRequestTarget; import org.apache.wicket.model.IModel; import org.apache.wicket.model.ResourceModel; import org.orienteer.core.component.command.AbstractDeleteCommand; import org.orienteer.core.component.command.Command; import org.orienteer.core.component.property.DisplayMode; import org.orienteer.core.component.table.OrienteerDataTable; import org.orienteer.core.web.ODocumentPage; import org.orienteer.graph.module.GraphModule; import ru.ydn.wicket.wicketorientdb.model.OClassModel; import ru.ydn.wicket.wicketorientdb.security.ISecuredComponent; import ru.ydn.wicket.wicketorientdb.security.OSecurityHelper; import ru.ydn.wicket.wicketorientdb.security.OrientPermission; import ru.ydn.wicket.wicketorientdb.security.RequiredOrientResource; import java.util.List; /** * {@link Command} to delete edges */ public class DeleteEdgeCommand extends AbstractDeleteCommand<ODocument> implements ISecuredComponent { private static final long serialVersionUID = 1L; private IModel<OClass> classModel; private IModel<ODocument> documentModel; public DeleteEdgeCommand(OrienteerDataTable<ODocument, ?> table, IModel<ODocument> documentModel) { super(new ResourceModel("command.delete"), table); this.documentModel = documentModel; this.classModel = new OClassModel(GraphModule.EDGE_CLASS_NAME); } @Override protected void performMultiAction(AjaxRequestTarget target, List<ODocument> objects) { super.performMultiAction(target, objects); OrientGraph tx = new OrientGraphFactory(getDatabase().getURL()).getTx(); tx.commit(); for (ODocument doc : objects) { ORID id = doc.getIdentity(); OrientEdge edge = tx.getEdge(id); tx.removeEdge(edge); } tx.begin(); setResponsePage(new ODocumentPage(documentModel.getObject()).setModeObject(DisplayMode.VIEW)); } @Override public RequiredOrientResource[] getRequiredResources() { return OSecurityHelper.requireOClass(classModel.getObject(), OrientPermission.DELETE); } }