use of com.liferay.ide.project.core.upgrade.ProblemsContainer in project liferay-ide by liferay.
the class AutoCorrectAllAction method run.
public void run() {
final BundleContext context = FrameworkUtil.getBundle(AutoCorrectAction.class).getBundleContext();
WorkspaceJob job = new WorkspaceJob("Auto correcting all of migration problem.") {
@Override
public IStatus runInWorkspace(IProgressMonitor monitor) {
IStatus retval = Status.OK_STATUS;
try {
if ((_problemsContainerList != null) && (_problemsContainerList.size() > 0)) {
for (ProblemsContainer problemsContainer : _problemsContainerList) {
for (UpgradeProblems upgradeProblems : problemsContainer.getProblemsArray()) {
FileProblems[] fileProblemsArray = upgradeProblems.getProblems();
for (FileProblems fileProblems : fileProblemsArray) {
List<Problem> problems = fileProblems.getProblems();
Set<String> fixed = new HashSet<>();
for (Problem problem : problems) {
if (problem.getStatus() == Problem.STATUS_IGNORE) {
continue;
}
final IResource file = MigrationUtil.getIResourceFromProblem(problem);
if (FileUtil.notExists(file)) {
continue;
}
String fixedKey = file.getLocation().toString() + "," + problem.autoCorrectContext;
if ((problem.autoCorrectContext == null) || fixed.contains(fixedKey)) {
continue;
}
String autoCorrectKey = null;
final int filterKeyIndex = problem.autoCorrectContext.indexOf(":");
if (filterKeyIndex > -1) {
autoCorrectKey = problem.autoCorrectContext.substring(0, filterKeyIndex);
} else {
autoCorrectKey = problem.autoCorrectContext;
}
final Collection<ServiceReference<AutoMigrator>> refs = context.getServiceReferences(AutoMigrator.class, "(auto.correct=" + autoCorrectKey + ")");
for (ServiceReference<AutoMigrator> ref : refs) {
final AutoMigrator autoMigrator = context.getService(ref);
int problemsCorrected = autoMigrator.correctProblems(problem.file, problems);
fixed.add(fixedKey);
if ((problemsCorrected > 0) && (file != null)) {
IMarker problemMarker = file.findMarker(problem.markerId);
if ((problemMarker != null) && problemMarker.exists()) {
problemMarker.delete();
}
}
}
file.refreshLocal(IResource.DEPTH_ONE, monitor);
}
}
}
}
}
UIUtil.sync(new Runnable() {
@Override
public void run() {
IViewPart view = UIUtil.findView(UpgradeView.ID);
try {
BreakingChangeSelectedProject selectedProject = UpgradeAssistantSettingsUtil.getObjectFromStore(BreakingChangeSelectedProject.class);
StructuredSelection projectSelection = null;
List<IProject> projects = new ArrayList<>();
if (selectedProject != null) {
List<BreakingChangeSimpleProject> selectedProjects = selectedProject.getSelectedProjects();
selectedProjects.stream().forEach(breakingProject -> projects.add(CoreUtil.getProject(breakingProject.getName())));
projectSelection = new StructuredSelection(projects.toArray(new IProject[0]));
}
new RunMigrationToolAction("Run Migration Tool", view.getViewSite().getShell(), projectSelection).run();
} catch (IOException ioe) {
ProjectUI.logError(ioe);
}
}
});
} catch (AutoMigrateException | CoreException | InvalidSyntaxException e) {
return retval = ProjectUI.createErrorStatus("Unable to auto correct problem", e);
}
return retval;
}
};
job.schedule();
}
use of com.liferay.ide.project.core.upgrade.ProblemsContainer in project liferay-ide by liferay.
the class FindBreakingChangesPage method getInitialInput.
public List<ProblemsContainer> getInitialInput() {
List<ProblemsContainer> problems = null;
try {
MigrationProblemsContainer container = UpgradeAssistantSettingsUtil.getObjectFromStore(MigrationProblemsContainer.class);
if (container != null) {
problems = new ArrayList<>();
problems.add(container);
}
} catch (IOException ioe) {
ioe.printStackTrace();
}
_migrationContentProvider.setProblems(problems);
return problems;
}
use of com.liferay.ide.project.core.upgrade.ProblemsContainer in project liferay-ide by liferay.
the class MigrationContentProvider method hasChildren.
@Override
public boolean hasChildren(Object element) {
if (element instanceof ProblemsContainer) {
ProblemsContainer problemsContainer = (ProblemsContainer) element;
UpgradeProblems[] upgradeProblemsArray = problemsContainer.getProblemsArray();
if (upgradeProblemsArray.length == 1) {
if (ListUtil.isNotEmpty(problemsContainer.getProblemsArray()[0].getProblems())) {
return true;
}
return false;
} else {
return true;
}
} else if (element instanceof UpgradeProblems) {
if (ListUtil.isNotEmpty(((UpgradeProblems) element).getProblems())) {
return true;
}
return false;
}
return false;
}
use of com.liferay.ide.project.core.upgrade.ProblemsContainer in project liferay-ide by liferay.
the class MigrationDecorator method decorate.
@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 (ListUtil.isNotEmpty(problems)) {
StringBuilder sb = new StringBuilder();
sb.append("[");
sb.append(problems.size()).append(" total");
if (ListUtil.isNotEmpty(resolvedProblems)) {
sb.append(", ");
sb.append(resolvedProblems.size());
sb.append(" resolved");
}
if (ListUtil.isNotEmpty(ignoreProblems)) {
sb.append(", ");
sb.append(ignoreProblems.size());
sb.append(" ignored");
}
sb.append("]");
decoration.addSuffix(sb.toString());
}
}
Aggregations