package org.orienteer.core.component.command;
import com.orientechnologies.orient.core.metadata.schema.OClass;
import org.apache.wicket.model.IModel;
import org.orienteer.core.component.property.DisplayMode;
import org.orienteer.core.component.table.OrienteerDataTable;
import org.orienteer.core.web.schema.OClassPage;
import ru.ydn.wicket.wicketorientdb.model.OClassModel;
import ru.ydn.wicket.wicketorientdb.proto.OClassPrototyper;
import ru.ydn.wicket.wicketorientdb.security.OSecurityHelper;
import ru.ydn.wicket.wicketorientdb.security.OrientPermission;
import ru.ydn.wicket.wicketorientdb.security.RequiredOrientResource;
import ru.ydn.wicket.wicketorientdb.security.RequiredOrientResources;
/**
* {@link Command} to create {@link OClass}
*/
@RequiredOrientResources({
@RequiredOrientResource(value = OSecurityHelper.SCHEMA, permissions=OrientPermission.CREATE),
@RequiredOrientResource(value=OSecurityHelper.CLUSTER, specific="internal", permissions=OrientPermission.CREATE)
})
public class CreateOClassCommand extends AbstractCreateCommand<OClass>
{
private IModel<OClass> superClassModel;
public CreateOClassCommand(OrienteerDataTable<OClass, ?> table)
{
super(table);
}
public CreateOClassCommand(OrienteerDataTable<OClass, ?> table, IModel<OClass> superClassModel) {
super(table);
this.superClassModel = superClassModel;
}
@Override
public void onClick() {
OClass oClass = OClassPrototyper.newPrototype();
if (superClassModel != null && superClassModel.getObject() != null) {
oClass.addSuperClass(superClassModel.getObject());
}
setResponsePage(new OClassPage(new OClassModel(oClass)).setModeObject(DisplayMode.EDIT));
}
}