package org.orienteer.core.component.command;
import java.util.List;
import org.apache.wicket.ajax.AjaxRequestTarget;
import org.orienteer.core.component.table.DataTableCommandsToolbar;
import org.orienteer.core.component.table.OrienteerDataTable;
import ru.ydn.wicket.wicketorientdb.security.OSecurityHelper;
import ru.ydn.wicket.wicketorientdb.security.OrientPermission;
import ru.ydn.wicket.wicketorientdb.security.RequiredOrientResource;
import com.orientechnologies.orient.core.index.OIndex;
import com.orientechnologies.orient.core.index.OIndexManager;
import com.orientechnologies.orient.core.metadata.schema.OProperty;
import com.orientechnologies.orient.core.metadata.security.ODatabaseSecurityResources;
import com.orientechnologies.orient.core.metadata.security.ORule;
/**
* {@link Command} to delete {@link OIndex}
*/
@RequiredOrientResource(value = OSecurityHelper.SCHEMA, permissions=OrientPermission.DELETE)
public class DeleteOIndexCommand extends AbstractDeleteCommand<OIndex<?>>
{
private OIndexManager indexManager;
public DeleteOIndexCommand(OrienteerDataTable<OIndex<?>, ?> table)
{
super(table);
}
@Override
protected void performMultiAction(AjaxRequestTarget target, List<OIndex<?>> objects) {
getDatabase().commit();
super.performMultiAction(target, objects);
getDatabase().begin();
}
@Override
protected void perfromSingleAction(AjaxRequestTarget target, OIndex<?> object) {
//object.delete(); //TODO: This doesn't work - might be make PR to OrientDB?
getIndexManager().dropIndex(object.getName());
}
protected OIndexManager getIndexManager()
{
if(indexManager==null)
{
indexManager = getDatabase().getMetadata().getIndexManager();
}
return indexManager;
}
@Override
protected void onDetach() {
super.onDetach();
indexManager = null;
}
}