/******************************************************************************* * Copyright (c) 2000-present Liferay, Inc. All rights reserved. * * This library is free software; you can redistribute it and/or modify it under * the terms of the GNU Lesser General Public License as published by the Free * Software Foundation; either version 2.1 of the License, or (at your option) * any later version. * * This library 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 Lesser General Public License for more * details. * *******************************************************************************/ package com.liferay.ide.project.ui.migration; import com.liferay.blade.api.Problem; import com.liferay.ide.core.util.CoreUtil; import com.liferay.ide.project.core.upgrade.FileProblems; import com.liferay.ide.project.core.upgrade.IgnoredProblemsContainer; import com.liferay.ide.project.core.upgrade.MigrationProblems; import com.liferay.ide.project.core.upgrade.UpgradeAssistantSettingsUtil; import com.liferay.ide.project.ui.ProjectUI; import com.liferay.ide.project.ui.upgrade.animated.FindBreakingChangesPage; import com.liferay.ide.project.ui.upgrade.animated.Page; import com.liferay.ide.project.ui.upgrade.animated.UpgradeView; import java.io.IOException; import java.util.Iterator; import java.util.List; import org.eclipse.core.resources.WorkspaceJob; import org.eclipse.core.runtime.IProgressMonitor; import org.eclipse.core.runtime.IStatus; import org.eclipse.core.runtime.Status; import org.eclipse.jface.action.IAction; import org.eclipse.jface.viewers.ISelectionProvider; import org.eclipse.jface.viewers.IStructuredSelection; import org.eclipse.jface.viewers.TreeViewer; import org.eclipse.ui.actions.SelectionProviderAction; /** * @author Lovett Li */ public class IgnoreAlwaysAction extends SelectionProviderAction implements IAction { private ISelectionProvider _provider; public IgnoreAlwaysAction( ISelectionProvider provider ) { super( provider, "Ignore all problems of this type" ); _provider = provider; } @Override public void run() { final Problem problem = MigrationUtil.getProblemFromSelection( getSelection() ); storeIgnoredProblem( problem ); new WorkspaceJob( "Ignore all problems of this type" ) { public IStatus runInWorkspace( IProgressMonitor monitor ) { IStatus retval = Status.OK_STATUS; try { FindBreakingChangesPage page = UpgradeView.getPage( Page.FINDBREACKINGCHANGES_PAGE_ID, FindBreakingChangesPage.class ); TreeViewer treeViewer = page.getTreeViewer(); MigrationContentProvider contentProvider = (MigrationContentProvider) treeViewer.getContentProvider(); final MigrationProblemsContainer mpContainer = (MigrationProblemsContainer) contentProvider._problems.get( 0 ); final MigrationProblems[] projectProblem = mpContainer.getProblemsArray(); for( MigrationProblems pProblem : projectProblem ) { FileProblems[] fProblems = pProblem.getProblems(); for( FileProblems fp : fProblems ) { List<Problem> problems = fp.getProblems(); Iterator<Problem> iterator = problems.iterator(); while( iterator.hasNext() ) { Problem p = iterator.next(); if( p.getTicket().equals( problem.getTicket() ) ) { new IgnoreAction().run( p, _provider ); } } } } } catch( Exception e ) { retval = ProjectUI.createErrorStatus( "Unable to get file from problem" ); } return retval; } }.schedule(); } @Override public void selectionChanged( IStructuredSelection selection ) { final Object element = getStructuredSelection().getFirstElement(); if( element instanceof Problem && !CoreUtil.empty( ( (Problem) element ).getTicket() ) ) { setEnabled( true ); } else { setEnabled( false ); } } private void storeIgnoredProblem( Problem problem ) { try { IgnoredProblemsContainer ipContainer = MigrationUtil.getIgnoredProblemsContainer(); if( ipContainer == null ) { ipContainer = new IgnoredProblemsContainer(); } ipContainer.add( problem ); UpgradeAssistantSettingsUtil.setObjectToStore( IgnoredProblemsContainer.class, ipContainer ); } catch( IOException e ) { } } }