/******************************************************************************* * Copyright (c) 2006-2010 eBay Inc. All Rights Reserved. * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 *******************************************************************************/ /** * */ package org.ebayopensource.turmeric.eclipse.errorlibrary.ui.wizards; import java.lang.reflect.InvocationTargetException; import java.util.ArrayList; import java.util.Date; import java.util.List; import org.ebayopensource.turmeric.eclipse.core.logging.SOALogger; import org.ebayopensource.turmeric.eclipse.core.model.BaseServiceParamModel; import org.ebayopensource.turmeric.eclipse.errorlibrary.buildsystem.ErrorDomainCreator; import org.ebayopensource.turmeric.eclipse.errorlibrary.providers.ErrorLibraryProviderFactory; import org.ebayopensource.turmeric.eclipse.errorlibrary.providers.IErrorLibraryProvider; import org.ebayopensource.turmeric.eclipse.errorlibrary.providers.ISOAErrorLibraryWizardPageProvider; import org.ebayopensource.turmeric.eclipse.errorlibrary.resources.SOAMessages; import org.ebayopensource.turmeric.eclipse.errorlibrary.ui.model.DomainParamModel; import org.ebayopensource.turmeric.eclipse.exception.resources.SOAErrorTypeCreationFailedException; import org.ebayopensource.turmeric.eclipse.exception.resources.SOAGetErrorLibraryProviderFailedException; import org.ebayopensource.turmeric.eclipse.repositorysystem.core.GlobalRepositorySystem; import org.ebayopensource.turmeric.eclipse.repositorysystem.core.TrackingEvent; import org.ebayopensource.turmeric.eclipse.ui.SOABaseWizard; import org.ebayopensource.turmeric.eclipse.utils.lang.StringUtil; import org.ebayopensource.turmeric.eclipse.utils.plugin.EclipseMessageUtils; import org.ebayopensource.turmeric.eclipse.utils.plugin.ProgressUtil; import org.ebayopensource.turmeric.eclipse.utils.ui.UIUtil; import org.eclipse.core.runtime.CoreException; import org.eclipse.core.runtime.IProgressMonitor; import org.eclipse.core.runtime.IStatus; import org.eclipse.core.runtime.Status; import org.eclipse.jface.wizard.IWizardPage; import org.eclipse.ui.actions.WorkspaceModifyOperation; /** * <<<<<<< HEAD The Class NewErrorDomainWizard. * * @author yayu ======= * @author yayu * * >>>>>>> TURMERIC-1351 */ public class NewErrorDomainWizard extends SOABaseWizard { private ISOAErrorLibraryWizardPageProvider wizardProvider; private static final SOALogger logger = SOALogger.getLogger(); /** * Instantiates a new new error domain wizard. */ public NewErrorDomainWizard() { super(); } /* * (non-Javadoc) * * @see org.ebayopensource.turmeric.eclipse.ui.SOABaseWizard#preValidate() */ @Override public IStatus preValidate() { // checking if there is a provider try { ErrorLibraryProviderFactory.getInstance().getPreferredProvider(); } catch (SOAGetErrorLibraryProviderFailedException e) { return EclipseMessageUtils.createErrorStatus(e); } return Status.OK_STATUS; } /* * (non-Javadoc) * * @see * org.ebayopensource.turmeric.eclipse.ui.SOABaseWizard#getContentPages() */ @Override public IWizardPage[] getContentPages() { final List<IWizardPage> pages = new ArrayList<IWizardPage>(); IErrorLibraryProvider errorLibProvider; try { errorLibProvider = ErrorLibraryProviderFactory.getInstance() .getPreferredProvider(); if (errorLibProvider != null && errorLibProvider.getErrorDomainWizardPageProvider() != null) { wizardProvider = errorLibProvider .getErrorDomainWizardPageProvider(); pages.addAll(wizardProvider.getWizardpages(getSelection())); } } catch (SOAGetErrorLibraryProviderFailedException e) { SOALogger.getLogger().error(e); UIUtil.showErrorDialog(e); } return pages.toArray(new IWizardPage[0]); } /* * (non-Javadoc) * * @see org.ebayopensource.turmeric.eclipse.ui.SOABaseWizard#performFinish() */ @Override public boolean performFinish() { if (wizardProvider != null) { try { final BaseServiceParamModel uimodel = wizardProvider .performFinish(); if ((uimodel instanceof DomainParamModel) == false) { return false; } final DomainParamModel model = (DomainParamModel) uimodel; final WorkspaceModifyOperation operation = new WorkspaceModifyOperation() { @Override protected void execute(IProgressMonitor monitor) throws CoreException, InvocationTargetException, InterruptedException { final long startTime = System.currentTimeMillis(); final int totalWork = ProgressUtil.PROGRESS_STEP * 30; monitor.beginTask( StringUtil.formatString( SOAMessages.CREATING_DOMAIN, model.getDomain()), totalWork); ProgressUtil.progressOneStep(monitor); try { ErrorDomainCreator .createErrorDomain(model, monitor); final TrackingEvent event = new TrackingEvent( SOAMessages.NEW_ERR_DOMAIN, new Date( startTime), System.currentTimeMillis() - startTime); GlobalRepositorySystem.instanceOf() .getActiveRepositorySystem() .trackingUsage(event); } catch (Exception e) { logger.error(e); throw new SOAErrorTypeCreationFailedException( "Failed to create new error domain->" + model.getDomain(), e); } finally { monitor.done(); } } }; ErrorLibraryProviderFactory.getInstance() .getPreferredProvider().getErrorDomainCreator() .preCreation(model); getContainer().run(false, true, operation); // http://www.nbweekly.com/Print/Page/844,62.shtml // No change if just resource created inside a project // changePerspective(); } catch (Exception e) { logger.error(e); UIUtil.showErrorDialog(SOAMessages.CREATE_DOMAIN_ERR, e); if (SOALogger.DEBUG) logger.exiting(false); return false; } } return true; } }