/*
* RHQ Management Platform
* Copyright (C) 2005-2010 Red Hat, Inc.
* All rights reserved.
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation version 2 of the License.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/
package org.rhq.coregui.client.bundle.deploy;
import com.google.gwt.user.client.rpc.AsyncCallback;
import com.google.gwt.user.client.ui.HasHorizontalAlignment;
import com.google.gwt.user.client.ui.Label;
import com.smartgwt.client.types.Alignment;
import com.smartgwt.client.widgets.Canvas;
import com.smartgwt.client.widgets.Img;
import com.smartgwt.client.widgets.layout.VLayout;
import org.rhq.core.domain.bundle.BundleDeployment;
import org.rhq.coregui.client.CoreGUI;
import org.rhq.coregui.client.ImageManager;
import org.rhq.coregui.client.components.wizard.AbstractWizardStep;
import org.rhq.coregui.client.gwt.GWTServiceLookup;
import org.rhq.coregui.client.util.ErrorHandler;
import org.rhq.coregui.client.util.enhanced.EnhancedVLayout;
import org.rhq.coregui.client.util.message.Message;
import org.rhq.coregui.client.util.message.Message.Severity;
/**
* @author Jay Shaughnessy
*
*/
public class DeployStep extends AbstractWizardStep {
private VLayout canvas;
private final BundleDeployWizard wizard;
public DeployStep(BundleDeployWizard wizard) {
this.wizard = wizard;
}
public String getName() {
return MSG.view_bundle_deployWizard_deployStep();
}
public Canvas getCanvas() {
if (canvas == null) {
canvas = new EnhancedVLayout();
canvas.setWidth100();
canvas.setHeight100();
canvas.setAlign(Alignment.CENTER);
final Img deployingImage = new Img(ImageManager.getLoadingIcon());
deployingImage.setLayoutAlign(Alignment.CENTER);
deployingImage.setWidth(50);
deployingImage.setHeight(15);
final Label deployingMessage = new Label(MSG.view_bundle_deployWizard_deploying());
deployingMessage.setHorizontalAlignment(HasHorizontalAlignment.ALIGN_CENTER);
canvas.addMember(deployingImage);
canvas.addMember(deployingMessage);
GWTServiceLookup.getBundleService().createBundleDeployment(wizard.getBundleVersion().getId(),
wizard.getDestination().getId(), wizard.getNewDeploymentDescription(), wizard.getNewDeploymentConfig(),
false, -1, false, //
new AsyncCallback<BundleDeployment>() {
public void onSuccess(BundleDeployment result) {
deployingImage.setSrc(ImageManager.getStatusComplete());
deployingMessage.setText(MSG.view_bundle_deployWizard_deploymentCreated());
CoreGUI.getMessageCenter().notify(
new Message(MSG.view_bundle_deployWizard_deploymentCreatedDetail_concise(result.getName()),
MSG.view_bundle_deployWizard_deploymentCreatedDetail(result.getName(),
result.getDescription()), Severity.Info));
wizard.setNewDeployment(result);
GWTServiceLookup.getBundleService().scheduleBundleDeployment(wizard.getNewDeployment().getId(),
wizard.isCleanDeployment(), //
new AsyncCallback<BundleDeployment>() {
public void onSuccess(BundleDeployment result) {
deployingImage.setSrc(ImageManager.getStatusComplete());
deployingMessage.setText(MSG.view_bundle_deployWizard_deploymentScheduled());
CoreGUI.getMessageCenter().notify(
new Message(MSG.view_bundle_deployWizard_deploymentScheduledDetail_concise(),
MSG.view_bundle_deployWizard_deploymentScheduledDetail(result.getName(),
result.getDestination().getGroup().getName()), Severity.Info));
wizard.getView().hideMessage();
CoreGUI.refresh();
wizard.setNewDeployment(result);
}
public void onFailure(Throwable caught) {
deployingImage.setSrc(ImageManager.getStatusError());
deployingMessage.setText(MSG.view_bundle_deployWizard_error_3());
String errMsg = MSG.view_bundle_deployWizard_error_4(ErrorHandler
.getAllMessages(caught));
wizard.getView().showMessage(errMsg);
Message msg = new Message(MSG.view_bundle_deployWizard_error_3(), errMsg,
Severity.Error);
CoreGUI.getMessageCenter().notify(msg);
}
});
}
public void onFailure(Throwable caught) {
deployingImage.setSrc(ImageManager.getStatusError());
deployingMessage.setText(MSG.view_bundle_deployWizard_error_5());
String errMsg = MSG.view_bundle_deployWizard_error_6(ErrorHandler.getAllMessages(caught));
wizard.getView().showMessage(errMsg);
Message msg = new Message(MSG.view_bundle_deployWizard_error_5(), errMsg, Severity.Error);
CoreGUI.getMessageCenter().notify(msg);
}
});
}
return canvas;
}
public boolean nextPage() {
return true;
}
}