/**************************************************************************** * This software is part of the gCube Project. * Site: http://www.gcube-system.org/ **************************************************************************** * The gCube/gCore software is licensed as Free Open Source software * conveying to the EUPL (http://ec.europa.eu/idabc/eupl). * The software and documentation is provided by its authors/distributors * "as is" and no expressed or * implied warranty is given for its use, quality or fitness for a * particular case. **************************************************************************** * Filename: CommonOperations.java **************************************************************************** * @author Daniele Strollo ***************************************************************************/ package org.gcube.portlets.admin.resourcemanagement.client.utils; import java.util.List; import java.util.Vector; import org.gcube.portlets.admin.resourcemanagement.client.forms.genericresources.GenericResourceForm; import org.gcube.portlets.admin.resourcemanagement.client.remote.ProxyRegistry; import org.gcube.portlets.admin.resourcemanagement.client.widgets.console.ConsoleMessageBroker; import org.gcube.portlets.admin.resourcemanagement.client.widgets.registry.UIIdentifiers; import org.gcube.resourcemanagement.support.client.utils.StatusHandler; import org.gcube.resourcemanagement.support.client.views.ResourceTypeDecorator; import org.gcube.resourcemanagement.support.shared.exceptions.InvalidParameterException; import org.gcube.resourcemanagement.support.shared.operations.SupportedOperations; import org.gcube.resourcemanagement.support.shared.types.datamodel.ResourceDescriptor; import org.gcube.resourcemanagement.support.shared.util.DelayedOperation; import com.extjs.gxt.ui.client.data.ModelData; import com.extjs.gxt.ui.client.event.Listener; import com.extjs.gxt.ui.client.event.MessageBoxEvent; import com.extjs.gxt.ui.client.widget.MessageBox; import com.google.gwt.user.client.Window; import com.google.gwt.user.client.rpc.AsyncCallback; class OpCallBacks { public static final AsyncCallback handleGenericOperation(final SupportedOperations op) { return new AsyncCallback() { public void onSuccess(final Void result) { MessageBox.info("Managing resources", "The operation " + op.name() + " has been successfully executed.", null); if (op == SupportedOperations.GENERIC_RESOURCE_DELETE || op == SupportedOperations.COLLECTION_DELETE) { Commands.refreshResourceGrid(); } } public void onFailure(final Throwable caught) { MessageBox.info("Managing resources", "The operation " + op.name() + " has failed." + ((caught != null) ? "
" + caught.getMessage() : "") + "
See server log for further details.", null); } }; } } /** * Here the commands for operations on resources. * @author Daniele Strollo (ISTI-CNR) * */ public class OpCommands { /************************************************************* * GHN ************************************************************/ public static final void doShutdownGHNs(final List ghns) { List toSend = new Vector(); for (ModelData rawData : ghns) { try { toSend.add(new ResourceDescriptor( ((Object) rawData.get("Type")).toString(), null, // The subType is not required here ((Object) rawData.get("ID")).toString(), ((Object) rawData.get("Name")).toString())); } catch (InvalidParameterException e) { Commands.showPopup("Cannot shutdown GHN", e.getMessage()); } } try { ProxyRegistry.getProxyInstance().doOperation( SupportedOperations.GHN_SHUTDOWN, StatusHandler.getStatus().getCurrentScope(), toSend, OpCallBacks.handleGenericOperation(SupportedOperations.GHN_SHUTDOWN) ); } catch (Exception e) { ConsoleMessageBroker.error(OpCommands.class, e.getMessage()); MessageBox.info( "Failure", "the GHNs cannot be shut down", null); } } public static final void doRestartGHNs(final List ghns, final boolean clean) { List toSend = new Vector(); for (ModelData rawData : ghns) { try { toSend.add(new ResourceDescriptor( ((Object) rawData.get("Type")).toString(), null, // The subType is not required here ((Object) rawData.get("ID")).toString(), ((Object) rawData.get("Name")).toString())); } catch (InvalidParameterException e) { Commands.showPopup("Cannot restart GHN", e.getMessage()); } } try { ProxyRegistry.getProxyInstance().doOperation( ((clean) ? SupportedOperations.GHN_CLEAN_RESTART : SupportedOperations.GHN_RESTART), StatusHandler.getStatus().getCurrentScope(), toSend, OpCallBacks.handleGenericOperation(SupportedOperations.GHN_RESTART) ); } catch (Exception e) { ConsoleMessageBroker.error(OpCommands.class, e.getMessage()); MessageBox.info( "Failure", "the GHNs cannot be restarted", null); } } /************************************************************* * DELETE RESOURCE ************************************************************/ public static final void doDeleteItems( final ResourceTypeDecorator type, final List items, final SupportedOperations requiredPermissions) { List toSend = new Vector(); for (ModelData rawData : items) { try { toSend.add(new ResourceDescriptor( ((Object) rawData.get("Type")).toString(), null, // The subType is not required here ((Object) rawData.get("ID")).toString(), ((Object) rawData.get("Name")).toString())); } catch (InvalidParameterException e) { Commands.showPopup("Cannot delete " + type.name(), e.getMessage()); } } try { ProxyRegistry.getProxyInstance().doOperation( requiredPermissions, StatusHandler.getStatus().getCurrentScope(), toSend, OpCallBacks.handleGenericOperation(requiredPermissions) ); } catch (Exception e) { ConsoleMessageBroker.error(OpCommands.class, e.getMessage()); MessageBox.info( "Failure", "the selected " + type.name() + "(s) cannot be deleted", null); } } /************************************************************* * SERVICE ENDPOINT ************************************************************/ public static final void doOpenServiceEndpointForm() { if (SupportedOperations.GENERIC_RESOURCE_CREATE.isAllowed(StatusHandler.getStatus().getCredentials())) { loadServiceEndopointEditor(null); } else { MessageBox.alert("Service Endpoint Creation", "You are not allowed to execute this operation", null); } } /************************************************************* * GENERIC RESOURCE ************************************************************/ public static final void doOpenGenericResourceForm() { if (SupportedOperations.GENERIC_RESOURCE_CREATE.isAllowed(StatusHandler.getStatus().getCredentials())) { new GenericResourceForm().show(); } else { MessageBox.alert("Generic Resource Creation", "You are not allowed to execute this operation", null); } } public static final void doCreateGenericResource( final String id, final String name, final String description, final String body, final String subType) { if (SupportedOperations.GENERIC_RESOURCE_CREATE.isAllowed(StatusHandler.getStatus().getCredentials())) { ProxyRegistry.getProxyInstance().createGenericResource(id, name, description, body, subType, new AsyncCallback() { public void onSuccess(final String result) { MessageBox.info("Generic Resouce Creation", "The generic resource " + name + " has been created with ID:
" + result, null); new DelayedOperation() { @Override public void doJob() { Commands.refreshResourceGrid(); } } .start(3000); } public void onFailure(final Throwable caught) { MessageBox.alert("Generic Resouce Creation", "Generic Resource Creation failure:
" + ((caught != null && caught.getMessage() != null) ? caught.getMessage() : "See server log for further details."), null); } }); } else { MessageBox.alert("Generic Resource Creation", "You are not allowed to execute this operation", null); } } public static final void doEditGenericResource( final String id, final String name, final String description, final String body, final String subType) { if (SupportedOperations.GENERIC_RESOURCE_EDIT.isAllowed(StatusHandler.getStatus().getCredentials())) { ProxyRegistry.getProxyInstance().updateGenericResource(id, name, description, body, subType, new AsyncCallback() { public void onSuccess(final Void result) { MessageBox.info("Generic Resouce Creation", "The generic resource " + name + " has been updated", null); Commands.refreshResourceGrid(); } public void onFailure(final Throwable caught) { MessageBox.alert("Generic Resouce Creation", "Generic Resource Creation failure:
" + ((caught != null && caught.getMessage() != null) ? caught.getMessage() : "See server log for further details."), null); } }); } else { MessageBox.alert("Generic Resource Creation", "You are not allowed to execute this operation", null); } } /************************************************************* * SERVICE ************************************************************/ public static final void doOpenServiceForm() { if (SupportedOperations.SERVICE_CREATE.isAllowed(StatusHandler.getStatus().getCredentials())) { MessageBox.alert("Service Creation", "To implement", null); } else { MessageBox.alert("Service Creation", "You are not allowed to execute this operation", null); } } public static final void doGetDeployReport() { if (SupportedOperations.SERVICE_GET_REPORT.isAllowed(StatusHandler.getStatus().getCredentials())) { Commands.mask("Requesting deployment report", UIIdentifiers.MAIN_CONTAINER_VIEWPORT_ID); MessageBox.prompt("Deployment Report Request", "Insert Report ID", false, new Listener() { public void handleEvent(final MessageBoxEvent be) { String reportID = be.getValue(); if (reportID != null && reportID.trim().length() > 0) { ProxyRegistry.getProxyInstance().checkDeployStatus( reportID.trim(), StatusHandler.getStatus().getCurrentScope(), Callbacks.handleGetDeploymentReport); } else { Commands.unmask(UIIdentifiers.MAIN_CONTAINER_VIEWPORT_ID); Commands.showPopup("Wrong input", "Invalid input.", 4000); } } }); } } public static final void doGetResourceByID() { if (SupportedOperations.SERVICE_GET_REPORT.isAllowed(StatusHandler.getStatus().getCredentials())) { MessageBox.prompt("Lookup Resource", "Insert Resource ID", false, new Listener() { public void handleEvent(final MessageBoxEvent be) { String reportID = be.getValue(); if (reportID != null && reportID.trim().length() > 0) { Commands.doGetResourceProfileByID(this, StatusHandler.getStatus().getCurrentScope(), reportID.trim()); } else { Commands.unmask(UIIdentifiers.MAIN_CONTAINER_VIEWPORT_ID); Commands.showPopup("Wrong input", "Invalid input.", 4000); } } }); } } /** * Redirect to Service Endpoint Editor * @param idToEdit */ public static void loadServiceEndopointEditor(String idToEdit) { String location = Window.Location.getHref(); String res2EditParam = ""; if (idToEdit != null) { res2EditParam = "&rid=" + idToEdit; } if (location.endsWith("/") || location.endsWith("#")) { //standalone location = location.substring(0, location.length()-2); } location += "/../runtime-resource?pid=126&lifecycle=0&state=maximized&modes=view&doAsId=10136&refererPlid=10139&authzToken=101334249" + "&curscope="+StatusHandler.getStatus().getCurrentScope()+res2EditParam; //Window.open(location, "_blank", ""); openNewWindow("Service Endpoint Editor", location); } /** * Opens a new windows with a specified URL.. * * @param name String with the name of the window. * @param url String with your URL. */ public static void openNewWindow(String name, String url) { com.google.gwt.user.client.Window.open(url, name.replace(" ", "_"), "menubar=no," + "location=false," + "resizable=yes," + "scrollbars=yes," + "status=no," + "dependent=true"); } }