package org.orienteer.core.web.schema;
import com.orientechnologies.orient.core.storage.OCluster;
import org.apache.wicket.model.IModel;
import org.apache.wicket.model.PropertyModel;
import org.apache.wicket.request.http.flow.AbortWithHttpErrorCodeException;
import org.apache.wicket.request.mapper.parameter.PageParameters;
import org.apache.wicket.util.string.Strings;
import org.orienteer.core.MountPath;
import org.orienteer.core.component.property.DisplayMode;
import org.orienteer.core.web.AbstractWidgetDisplayModeAwarePage;
import ru.ydn.wicket.wicketorientdb.model.OClusterModel;
import ru.ydn.wicket.wicketorientdb.security.OSecurityHelper;
import ru.ydn.wicket.wicketorientdb.security.OrientPermission;
import ru.ydn.wicket.wicketorientdb.security.RequiredOrientResource;
import javax.servlet.http.HttpServletResponse;
/**
* Page to show {@link OCluster}
*/
@MountPath("/cluster/${clusterName}/#{mode}")
@RequiredOrientResource(value=OSecurityHelper.SCHEMA, permissions=OrientPermission.READ)
public class OClusterPage extends AbstractWidgetDisplayModeAwarePage<OCluster> {
public OClusterPage(PageParameters parameters) {
super(parameters);
DisplayMode mode = DisplayMode.parse(parameters.get("mode").toOptionalString());
if(mode!=null) setModeObject(mode);
}
@Override
public String getDomain() {
return "cluster";
}
@Override
public void initialize() {
super.initialize();
selectTab("configuration");
}
@Override
protected void onConfigure() {
super.onConfigure();
if(getModelObject()==null) throw new AbortWithHttpErrorCodeException(HttpServletResponse.SC_NOT_FOUND);
}
@Override
protected IModel<OCluster> resolveByPageParameters(
PageParameters pageParameters) {
String name = pageParameters.get("clusterName").toOptionalString();
return Strings.isEmpty(name)? null:new OClusterModel(name);
}
@Override
public IModel<String> getTitleModel() {
return new PropertyModel<String>(getModel(), "name");
}
}