Example usage for org.eclipse.jdt.core.dom.rewrite ImportRewrite hasRecordedChanges

List of usage examples for org.eclipse.jdt.core.dom.rewrite ImportRewrite hasRecordedChanges

Introduction

In this page you can find the example usage for org.eclipse.jdt.core.dom.rewrite ImportRewrite hasRecordedChanges.

Prototype

public boolean hasRecordedChanges() 

Source Link

Document

Returns true if imports have been recorded to be added or removed.

Usage

From source file:com.liferay.blade.upgrade.liferay70.ImportStatementMigrator.java

License:Open Source License

@Override
public void correctProblems(File file, List<Problem> problems) throws AutoMigrateException {
    final List<String> importsToRewrite = new ArrayList<>();

    for (Problem problem : problems) {
        if (problem.autoCorrectContext instanceof String) {
            final String importData = problem.autoCorrectContext;

            if (importData != null && importData.startsWith(PREFIX)) {
                final String importValue = importData.substring(PREFIX.length());

                if (_imports.containsKey(importValue)) {
                    importsToRewrite.add(importValue);
                }/*  w  ww .jav  a 2  s.  co m*/
            }
        }
    }

    if (importsToRewrite.size() > 0) {
        ICompilationUnit source = null;
        final IFile javaFile;

        final JavaFile javaFileService = _context.getService(_context.getServiceReference(JavaFile.class));

        javaFile = javaFileService.getIFile(file);

        if (javaFile == null) {
            throw new AutoMigrateException("Unable to get java file as IFile, is project a java project?");
        }

        try {
            source = JavaCore.createCompilationUnitFrom(javaFile);
        } catch (Exception e) {
            throw new AutoMigrateException("Could not get compilation unit for file: " + file.getName(), e);
        }

        final ImportRewrite importRewrite;

        try {
            importRewrite = ImportRewrite.create(source, true);
        } catch (JavaModelException e1) {
            e1.printStackTrace();
            throw new AutoMigrateException("Unable to create import rewrite action: " + file.getName(), e1);
        }

        for (String importToRewrite : importsToRewrite) {
            importRewrite.removeImport(importToRewrite);

            final String newImport = _imports.get(importToRewrite);

            importRewrite.addImport(newImport);
        }

        if (importRewrite.hasRecordedChanges()) {
            try {
                final TextEdit textEdit = importRewrite.rewriteImports(new NullProgressMonitor());
                final String newSource = Util.editedString(source.getSource(), textEdit);

                javaFile.setContents(new ByteArrayInputStream(newSource.getBytes()), IResource.FORCE, null);
            } catch (CoreException e) {
                throw new AutoMigrateException("Auto correct failed to rewrite imports", e);
            }
        }
    }
}