/*******************************************************************************
* 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.project.core.upgrade.FileProblems;
import com.liferay.ide.project.core.upgrade.UpgradeProblems;
import java.util.ArrayList;
import java.util.List;
import org.eclipse.jface.viewers.BaseLabelProvider;
import org.eclipse.jface.viewers.IDecoration;
import org.eclipse.jface.viewers.ILightweightLabelDecorator;
/**
* @author Gregory Amerson
* @author Terry Jia
*/
public class MigrationDecorator extends BaseLabelProvider implements ILightweightLabelDecorator
{
@Override
public void decorate( Object element, IDecoration decoration )
{
final List<Problem> problems = new ArrayList<>();
final List<Problem> resolvedProblems = new ArrayList<>();
final List<Problem> ignoreProblems = new ArrayList<>();
if( element instanceof FileProblems )
{
final FileProblems fileProblems = (FileProblems) element;
problems.addAll( fileProblems.getProblems() );
resolvedProblems.addAll( fileProblems.getProblems( Problem.STATUS_RESOLVED ) );
ignoreProblems.addAll( fileProblems.getProblems( Problem.STATUS_IGNORE ) );
}
else if( element instanceof UpgradeProblems )
{
final UpgradeProblems upgradeProblems = (UpgradeProblems) element;
for( FileProblems fileProblems : upgradeProblems.getProblems() )
{
problems.addAll( fileProblems.getProblems() );
resolvedProblems.addAll( fileProblems.getProblems( Problem.STATUS_RESOLVED ) );
ignoreProblems.addAll( fileProblems.getProblems( Problem.STATUS_IGNORE ) );
}
}
else if( element instanceof ProblemsContainer )
{
ProblemsContainer problemsContainer = (ProblemsContainer) element;
for( UpgradeProblems upgradeProblems : problemsContainer.getProblemsArray() )
{
for( FileProblems fileProblems : upgradeProblems.getProblems() )
{
problems.addAll( fileProblems.getProblems() );
resolvedProblems.addAll( fileProblems.getProblems( Problem.STATUS_RESOLVED ) );
ignoreProblems.addAll( fileProblems.getProblems( Problem.STATUS_IGNORE ) );
}
}
}
if( problems != null && problems.size() > 0 )
{
final StringBuilder sb = new StringBuilder();
sb.append( "[" );
sb.append( problems.size() + " total" );
if( resolvedProblems.size() > 0 )
{
sb.append( ", " + resolvedProblems.size() + " resolved" );
}
if( ignoreProblems.size() > 0 )
{
sb.append( ", " + ignoreProblems.size() + " ignored" );
}
sb.append( "]" );
decoration.addSuffix( sb.toString() );
}
}
}