Example usage for org.eclipse.jdt.internal.core PackageFragment getResource

List of usage examples for org.eclipse.jdt.internal.core PackageFragment getResource

Introduction

In this page you can find the example usage for org.eclipse.jdt.internal.core PackageFragment getResource.

Prototype

@Override
    public IResource getResource() 

Source Link

Usage

From source file:org.eclipse.ajdt.core.javaelements.AJCompilationUnit.java

License:Open Source License

/**
 * @param fragment//w  w w . j a  v  a 2  s .c  o  m
 * @param elementName
 * @param workingCopyOwner
 */
public AJCompilationUnit(PackageFragment fragment, String elementName, WorkingCopyOwner workingCopyOwner) {
    super(fragment, elementName, workingCopyOwner);
    if (fragment.getResource() instanceof IProject) {
        IProject p = (IProject) fragment.getResource();
        this.ajFile = (IFile) p.findMember(elementName);
    } else {
        IFolder f = (IFolder) fragment.getResource();
        this.ajFile = (IFile) f.findMember(elementName);
    }
}

From source file:org.eclipse.jdt.internal.core.CopyResourceElementsOperation.java

License:Open Source License

/**
 * Copies/moves a compilation unit with the name <code>newCUName</code>
 * to the destination package.<br>
 * The package statement in the compilation unit is updated if necessary.
 * The main type of the compilation unit is renamed if necessary.
 *
 * @exception JavaModelException if the operation is unable to
 * complete// w w  w.jav a2 s  . com
 */
private void processCompilationUnitResource(ICompilationUnit source, PackageFragment dest)
        throws JavaModelException {
    String newCUName = getNewNameFor(source);
    String destName = (newCUName != null) ? newCUName : source.getElementName();
    TextEdit edit = updateContent(source, dest, newCUName); // null if unchanged

    // TODO (frederic) remove when bug 67606 will be fixed (bug 67823)
    // store encoding (fix bug 66898)
    IFile sourceResource = (IFile) source.getResource();
    String sourceEncoding = null;
    try {
        sourceEncoding = sourceResource.getCharset(false);
    } catch (CoreException ce) {
        // no problem, use default encoding
    }
    // end todo
    // copy resource
    IContainer destFolder = (IContainer) dest.getResource(); // can be an IFolder or an IProject
    IFile destFile = destFolder.getFile(new Path(destName));
    // GROOVY start
    /* old {
    org.eclipse.jdt.internal.core.CompilationUnit destCU = new org.eclipse.jdt.internal.core.CompilationUnit(dest, destName, DefaultWorkingCopyOwner.PRIMARY);
    } new */
    org.eclipse.jdt.internal.core.CompilationUnit destCU = LanguageSupportFactory.newCompilationUnit(dest,
            destName, DefaultWorkingCopyOwner.PRIMARY);
    // GROOVY end

    if (!destFile.equals(sourceResource)) {
        try {
            if (!destCU.isWorkingCopy()) {
                if (destFile.exists()) {
                    if (this.force) {
                        // we can remove it
                        deleteResource(destFile, IResource.KEEP_HISTORY);
                        destCU.close(); // ensure the in-memory buffer for the dest CU is closed
                    } else {
                        // abort
                        throw new JavaModelException(
                                new JavaModelStatus(IJavaModelStatusConstants.NAME_COLLISION, Messages.bind(
                                        Messages.status_nameCollision, destFile.getFullPath().toString())));
                    }
                }
                int flags = this.force ? IResource.FORCE : IResource.NONE;
                if (isMove()) {
                    flags |= IResource.KEEP_HISTORY;
                    sourceResource.move(destFile.getFullPath(), flags, getSubProgressMonitor(1));
                } else {
                    if (edit != null)
                        flags |= IResource.KEEP_HISTORY;
                    sourceResource.copy(destFile.getFullPath(), flags, getSubProgressMonitor(1));
                }
                setAttribute(HAS_MODIFIED_RESOURCE_ATTR, TRUE);
            } else {
                destCU.getBuffer().setContents(source.getBuffer().getContents());
            }
        } catch (JavaModelException e) {
            throw e;
        } catch (CoreException e) {
            throw new JavaModelException(e);
        }

        // update new resource content
        if (edit != null) {
            boolean wasReadOnly = destFile.isReadOnly();
            try {
                saveContent(dest, destName, edit, sourceEncoding, destFile);
            } catch (CoreException e) {
                if (e instanceof JavaModelException)
                    throw (JavaModelException) e;
                throw new JavaModelException(e);
            } finally {
                Util.setReadOnly(destFile, wasReadOnly);
            }
        }

        // register the correct change deltas
        prepareDeltas(source, destCU, isMove());
        if (newCUName != null) {
            //the main type has been renamed
            String oldName = Util.getNameWithoutJavaLikeExtension(source.getElementName());
            String newName = Util.getNameWithoutJavaLikeExtension(newCUName);
            prepareDeltas(source.getType(oldName), destCU.getType(newName), isMove());
        }
    } else {
        if (!this.force) {
            throw new JavaModelException(new JavaModelStatus(IJavaModelStatusConstants.NAME_COLLISION,
                    Messages.bind(Messages.status_nameCollision, destFile.getFullPath().toString())));
        }
        // update new resource content
        // in case we do a saveas on the same resource we have to simply update the contents
        // see http://dev.eclipse.org/bugs/show_bug.cgi?id=9351
        if (edit != null) {
            saveContent(dest, destName, edit, sourceEncoding, destFile);
        }
    }
}