com.liferay.ide.project.ui.migration.MigrationDecorator.java Source code

Java tutorial

Introduction

Here is the source code for com.liferay.ide.project.ui.migration.MigrationDecorator.java

Source

/*******************************************************************************
 * 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());
        }
    }

}