Example usage for org.eclipse.jdt.core IPackageFragmentRoot createPackageFragment

List of usage examples for org.eclipse.jdt.core IPackageFragmentRoot createPackageFragment

Introduction

In this page you can find the example usage for org.eclipse.jdt.core IPackageFragmentRoot createPackageFragment.

Prototype

IPackageFragment createPackageFragment(String name, boolean force, IProgressMonitor monitor)
        throws JavaModelException;

Source Link

Document

Creates and returns a package fragment in this root with the given dot-separated package name.

Usage

From source file:byke.tests.workspaceutils.JavaProject.java

License:Open Source License

public ICompilationUnit createCompilationUnit(final IPackageFragmentRoot sourceFolder, String packageName,
        String cuName, String contents) throws JavaModelException, CoreException {

    IPackageFragment packageFragment = sourceFolder.getPackageFragment(packageName);
    if (!packageFragment.exists()) {
        packageFragment = sourceFolder.createPackageFragment(packageName, false, null);
    }/*from w  ww.j a v  a2s .c o  m*/
    return createCompilationUnit(packageFragment, cuName, contents);
}

From source file:com.aliyun.odps.eclipse.utils.NewWizardUtils.java

License:Apache License

public static void createClass(IJavaProject myjavapro, String className, String classPath,
        IProgressMonitor monitor, String content) throws JavaModelException {
    IPath mypath = myjavapro.getPath();// w w  w . j  a  va2 s  .  c  om
    mypath = mypath.append("src");
    mypath.append(classPath);
    IPackageFragmentRoot fragmentRoot = myjavapro.findPackageFragmentRoot(mypath);
    IPackageFragment fragment = fragmentRoot.createPackageFragment(classPath, true, monitor);
    fragment.createCompilationUnit(className + ".java", content, true, monitor);
}

From source file:com.aliyun.odps.eclipse.utils.NewWizardUtils.java

License:Apache License

public static void createTestBase(IJavaProject myjavapro, String classPath, IProgressMonitor monitor,
        String content, String testBaseName) throws JavaModelException {
    IPath mypath = myjavapro.getPath();/*from   w  w w .j  a  v  a  2  s  .  c  o m*/
    mypath = mypath.append("src");
    mypath.append(classPath);

    IPackageFragmentRoot fragmentRoot = myjavapro.findPackageFragmentRoot(mypath);
    IPackageFragment fragment = fragmentRoot.createPackageFragment(classPath, true, monitor);
    IJavaElement[] iJavaElement = fragment.getChildren();
    boolean exit = false;
    for (int i = 0; i < iJavaElement.length; i++) {
        if (iJavaElement[i].getElementName().equals(testBaseName)) {
            exit = true;
            break;
        }
    }
    if (!exit) {
        fragment.createCompilationUnit(testBaseName, content, false, monitor);
    }
}

From source file:com.android.ide.eclipse.adt.internal.editors.layout.gle2.GraphicalEditorPart.java

License:Open Source License

private void createNewClass(String fqcn) {

    int pos = fqcn.lastIndexOf('.');
    String packageName = pos < 0 ? "" : fqcn.substring(0, pos); //$NON-NLS-1$
    String className = pos <= 0 || pos >= fqcn.length() ? "" : fqcn.substring(pos + 1); //$NON-NLS-1$

    // create the wizard page for the class creation, and configure it
    NewClassWizardPage page = new NewClassWizardPage();

    // set the parent class
    page.setSuperClass(SdkConstants.CLASS_VIEW, true /* canBeModified */);

    // get the source folders as java elements.
    IPackageFragmentRoot[] roots = getPackageFragmentRoots(mEditorDelegate.getEditor().getProject(),
            false /*includeContainers*/, true /*skipGenFolder*/);

    IPackageFragmentRoot currentRoot = null;
    IPackageFragment currentFragment = null;
    int packageMatchCount = -1;

    for (IPackageFragmentRoot root : roots) {
        // Get the java element for the package.
        // This method is said to always return a IPackageFragment even if the
        // underlying folder doesn't exist...
        IPackageFragment fragment = root.getPackageFragment(packageName);
        if (fragment != null && fragment.exists()) {
            // we have a perfect match! we use it.
            currentRoot = root;/*from   w w w  .  j av  a2s.  c  o  m*/
            currentFragment = fragment;
            packageMatchCount = -1;
            break;
        } else {
            // we don't have a match. we look for the fragment with the best match
            // (ie the closest parent package we can find)
            try {
                IJavaElement[] children;
                children = root.getChildren();
                for (IJavaElement child : children) {
                    if (child instanceof IPackageFragment) {
                        fragment = (IPackageFragment) child;
                        if (packageName.startsWith(fragment.getElementName())) {
                            // its a match. get the number of segments
                            String[] segments = fragment.getElementName().split("\\."); //$NON-NLS-1$
                            if (segments.length > packageMatchCount) {
                                packageMatchCount = segments.length;
                                currentFragment = fragment;
                                currentRoot = root;
                            }
                        }
                    }
                }
            } catch (JavaModelException e) {
                // Couldn't get the children: we just ignore this package root.
            }
        }
    }

    ArrayList<IPackageFragment> createdFragments = null;

    if (currentRoot != null) {
        // if we have a perfect match, we set it and we're done.
        if (packageMatchCount == -1) {
            page.setPackageFragmentRoot(currentRoot, true /* canBeModified*/);
            page.setPackageFragment(currentFragment, true /* canBeModified */);
        } else {
            // we have a partial match.
            // create the package. We have to start with the first segment so that we
            // know what to delete in case of a cancel.
            try {
                createdFragments = new ArrayList<IPackageFragment>();

                int totalCount = packageName.split("\\.").length; //$NON-NLS-1$
                int count = 0;
                int index = -1;
                // skip the matching packages
                while (count < packageMatchCount) {
                    index = packageName.indexOf('.', index + 1);
                    count++;
                }

                // create the rest of the segments, except for the last one as indexOf will
                // return -1;
                while (count < totalCount - 1) {
                    index = packageName.indexOf('.', index + 1);
                    count++;
                    createdFragments.add(currentRoot.createPackageFragment(packageName.substring(0, index),
                            true /* force*/, new NullProgressMonitor()));
                }

                // create the last package
                createdFragments.add(currentRoot.createPackageFragment(packageName, true /* force*/,
                        new NullProgressMonitor()));

                // set the root and fragment in the Wizard page
                page.setPackageFragmentRoot(currentRoot, true /* canBeModified*/);
                page.setPackageFragment(createdFragments.get(createdFragments.size() - 1),
                        true /* canBeModified */);
            } catch (JavaModelException e) {
                // If we can't create the packages, there's a problem.
                // We revert to the default package
                for (IPackageFragmentRoot root : roots) {
                    // Get the java element for the package.
                    // This method is said to always return a IPackageFragment even if the
                    // underlying folder doesn't exist...
                    IPackageFragment fragment = root.getPackageFragment(packageName);
                    if (fragment != null && fragment.exists()) {
                        page.setPackageFragmentRoot(root, true /* canBeModified*/);
                        page.setPackageFragment(fragment, true /* canBeModified */);
                        break;
                    }
                }
            }
        }
    } else if (roots.length > 0) {
        // if we haven't found a valid fragment, we set the root to the first source folder.
        page.setPackageFragmentRoot(roots[0], true /* canBeModified*/);
    }

    // if we have a starting class name we use it
    if (className != null) {
        page.setTypeName(className, true /* canBeModified*/);
    }

    // create the action that will open it the wizard.
    OpenNewClassWizardAction action = new OpenNewClassWizardAction();
    action.setConfiguredWizardPage(page);
    action.run();
    IJavaElement element = action.getCreatedElement();

    if (element == null) {
        // lets delete the packages we created just for this.
        // we need to start with the leaf and go up
        if (createdFragments != null) {
            try {
                for (int i = createdFragments.size() - 1; i >= 0; i--) {
                    createdFragments.get(i).delete(true /* force*/, new NullProgressMonitor());
                }
            } catch (JavaModelException e) {
                e.printStackTrace();
            }
        }
    }
}

From source file:com.android.ide.eclipse.adt.internal.editors.manifest.model.UiClassAttributeNode.java

License:Open Source License

private void createNewClass(String packageName, String className) {
    // create the wizard page for the class creation, and configure it
    NewClassWizardPage page = new NewClassWizardPage();

    // set the parent class
    page.setSuperClass(mReferenceClass, true /* canBeModified */);

    // get the source folders as java elements.
    IPackageFragmentRoot[] roots = getPackageFragmentRoots(getProject(), true /*include_containers*/);

    IPackageFragmentRoot currentRoot = null;
    IPackageFragment currentFragment = null;
    int packageMatchCount = -1;

    for (IPackageFragmentRoot root : roots) {
        // Get the java element for the package.
        // This method is said to always return a IPackageFragment even if the
        // underlying folder doesn't exist...
        IPackageFragment fragment = root.getPackageFragment(packageName);
        if (fragment != null && fragment.exists()) {
            // we have a perfect match! we use it.
            currentRoot = root;/*from w w  w .  j  ava  2 s . c  o m*/
            currentFragment = fragment;
            packageMatchCount = -1;
            break;
        } else {
            // we don't have a match. we look for the fragment with the best match
            // (ie the closest parent package we can find)
            try {
                IJavaElement[] children;
                children = root.getChildren();
                for (IJavaElement child : children) {
                    if (child instanceof IPackageFragment) {
                        fragment = (IPackageFragment) child;
                        if (packageName.startsWith(fragment.getElementName())) {
                            // its a match. get the number of segments
                            String[] segments = fragment.getElementName().split("\\."); //$NON-NLS-1$
                            if (segments.length > packageMatchCount) {
                                packageMatchCount = segments.length;
                                currentFragment = fragment;
                                currentRoot = root;
                            }
                        }
                    }
                }
            } catch (JavaModelException e) {
                // Couldn't get the children: we just ignore this package root.
            }
        }
    }

    ArrayList<IPackageFragment> createdFragments = null;

    if (currentRoot != null) {
        // if we have a perfect match, we set it and we're done.
        if (packageMatchCount == -1) {
            page.setPackageFragmentRoot(currentRoot, true /* canBeModified*/);
            page.setPackageFragment(currentFragment, true /* canBeModified */);
        } else {
            // we have a partial match.
            // create the package. We have to start with the first segment so that we
            // know what to delete in case of a cancel.
            try {
                createdFragments = new ArrayList<IPackageFragment>();

                int totalCount = packageName.split("\\.").length; //$NON-NLS-1$
                int count = 0;
                int index = -1;
                // skip the matching packages
                while (count < packageMatchCount) {
                    index = packageName.indexOf('.', index + 1);
                    count++;
                }

                // create the rest of the segments, except for the last one as indexOf will
                // return -1;
                while (count < totalCount - 1) {
                    index = packageName.indexOf('.', index + 1);
                    count++;
                    createdFragments.add(currentRoot.createPackageFragment(packageName.substring(0, index),
                            true /* force*/, new NullProgressMonitor()));
                }

                // create the last package
                createdFragments.add(currentRoot.createPackageFragment(packageName, true /* force*/,
                        new NullProgressMonitor()));

                // set the root and fragment in the Wizard page
                page.setPackageFragmentRoot(currentRoot, true /* canBeModified*/);
                page.setPackageFragment(createdFragments.get(createdFragments.size() - 1),
                        true /* canBeModified */);
            } catch (JavaModelException e) {
                // if we can't create the packages, there's a problem. we revert to the default
                // package
                for (IPackageFragmentRoot root : roots) {
                    // Get the java element for the package.
                    // This method is said to always return a IPackageFragment even if the
                    // underlying folder doesn't exist...
                    IPackageFragment fragment = root.getPackageFragment(packageName);
                    if (fragment != null && fragment.exists()) {
                        page.setPackageFragmentRoot(root, true /* canBeModified*/);
                        page.setPackageFragment(fragment, true /* canBeModified */);
                        break;
                    }
                }
            }
        }
    } else if (roots.length > 0) {
        // if we haven't found a valid fragment, we set the root to the first source folder.
        page.setPackageFragmentRoot(roots[0], true /* canBeModified*/);
    }

    // if we have a starting class name we use it
    if (className != null) {
        page.setTypeName(className, true /* canBeModified*/);
    }

    // create the action that will open it the wizard.
    OpenNewClassWizardAction action = new OpenNewClassWizardAction();
    action.setConfiguredWizardPage(page);
    action.run();
    IJavaElement element = action.getCreatedElement();

    if (element != null) {
        if (element.getElementType() == IJavaElement.TYPE) {

            IType type = (IType) element;

            if (mPostCreationAction != null) {
                mPostCreationAction.processNewType(type);
            }

            handleNewType(type);
        }
    } else {
        // lets delete the packages we created just for this.
        // we need to start with the leaf and go up
        if (createdFragments != null) {
            try {
                for (int i = createdFragments.size() - 1; i >= 0; i--) {
                    createdFragments.get(i).delete(true /* force*/, new NullProgressMonitor());
                }
            } catch (JavaModelException e) {
                e.printStackTrace();
            }
        }
    }
}

From source file:com.arcbees.gwtp.plugin.core.common.GWTPNewTypeWizardPage.java

License:Apache License

protected void ensurePackageExists(IProgressMonitor monitor) throws JavaModelException {
    IPackageFragmentRoot root = getPackageFragmentRoot();
    IPackageFragment pack = getPackageFragment();
    if (pack == null) {
        pack = root.getPackageFragment(""); //$NON-NLS-1$
    }//from  w  ww  .java 2s.  c  om

    if (!pack.exists()) {
        String packName = pack.getElementName();
        pack = root.createPackageFragment(packName, true, new SubProgressMonitor(monitor, 1));
    }
}

From source file:com.ecfeed.ui.common.utils.EclipsePackageFragmentGetter.java

License:Open Source License

public static IPackageFragment getPackageFragment(String name, IFileInfoProvider fileInfoProvider)
        throws CoreException {

    IPackageFragmentRoot packageFragmentRoot = getPackageFragmentRoot(fileInfoProvider);
    IPackageFragment packageFragment = packageFragmentRoot.getPackageFragment(name);

    if (packageFragment.exists() == false) {
        packageFragment = packageFragmentRoot.createPackageFragment(name, false, null);
    }/*  w ww .  j a  va 2 s . c om*/
    return packageFragment;
}

From source file:com.google.gdt.eclipse.appengine.rpc.wizards.helpers.RpcServiceLayerCreator.java

License:Open Source License

private void generateSharedFiles(String packageName, IProgressMonitor monitor)
        throws CoreException, MalformedTreeException, BadLocationException {
    String sharedPackageName = packageName;
    if (sharedPackageName.contains("server")) { //$NON-NLS-N$
        sharedPackageName = sharedPackageName.replace("server", "shared"); //$NON-NLS-N$
    } else {/*from   ww w .j av a2s  . c o m*/
        sharedPackageName += ".shared"; //$NON-NLS-N$
    }

    // get shared source folder
    IFolder gaeSharedFolder = gaeProject.getFolder(SHARED_FOLDER_NAME);
    if (!gaeSharedFolder.exists()) {
        gaeSharedFolder.create(true, true, new SubProgressMonitor(monitor, 2));
        CodegenUtils.setupSourceFolders(JavaCore.create(gaeProject), gaeSharedFolder, monitor);
    }

    if (androidProject != null) {
        IFolder androidLinkedFolder = androidProject.getFolder(SHARED_FOLDER_NAME);
        if (!androidLinkedFolder.exists()) {
            /* The variable workspaceLoc is required only for Eclipse 3.5.
             * For Eclipses after 3.5, the project specific path variable WORKSPACE_LOC
             * can be used instead.
             */
            String workspaceLoc = ResourcesPlugin.getWorkspace().getRoot().getLocation().toString();
            // use variables for shared folder path
            IPath sharedFolderPath = new Path(workspaceLoc + "/" //$NON-NLS-N$
                    + gaeProject.getName() + "/" + SHARED_FOLDER_NAME);
            androidLinkedFolder.createLink(sharedFolderPath, IResource.ALLOW_MISSING_LOCAL,
                    new SubProgressMonitor(monitor, 1));
            CodegenUtils.setupSourceFolders(JavaCore.create(androidProject), androidLinkedFolder, monitor);
        }
    }

    IPackageFragmentRoot srcFolder = JavaCore.create(gaeProject).getPackageFragmentRoot(gaeSharedFolder);
    IPackageFragment pack = srcFolder.getPackageFragment(sharedPackageName);

    if (!pack.exists()) {
        pack = srcFolder.createPackageFragment(sharedPackageName, true, new SubProgressMonitor(monitor, 2));
    }

    // for all the entities, generate Proxy, Request
    for (IType anEntity : entityList) {
        current = anEntity;
        createCompilationUnit(pack, current.getElementName() + "Proxy", RpcType.PROXY, //$NON-NLS-N$
                new SubProgressMonitor(monitor, 1));
    }

    // generate Request
    String requestFileName = serviceName.replace("Service", "") + "Request"; //$NON-NLS-N$
    createCompilationUnit(pack, requestFileName, RpcType.REQUEST, //$NON-NLS-N$
            new SubProgressMonitor(monitor, 1));
    // generate RequestFactory
    // check if there is a request factory class in the project
    String rfactoryFileName = serviceName.replace("Service", "") + "RequestFactory"; //$NON-NLS-N$
    List<IType> reqFactoryList = RequestFactoryUtils.findTypes(JavaCore.create(gaeProject),
            RpcType.REQ_FACTORY);
    if (reqFactoryList.isEmpty()) {
        createCompilationUnit(pack, rfactoryFileName, RpcType.REQ_FACTORY, new SubProgressMonitor(monitor, 1)); //$NON-NLS-N$
    } else {
        addReqFactoryBody(reqFactoryList.get(0), new SubProgressMonitor(monitor, 1));
    }
}

From source file:com.google.gdt.eclipse.core.JavaProjectTestUtilities.java

License:Open Source License

/**
 * Creates an {@link ICompilationUnit} with the given fully qualified name and
 * code in the <code>javaProject</code>.
 * // w ww .jav a2 s.c o m
 * @param javaProject java project to host the new class
 * @param fullyQualifiedClassName fully qualified name for the class
 * @param source code for the classs
 * @return newly created {@link ICompilationUnit}
 * @throws JavaModelException
 */
public static ICompilationUnit createCompilationUnit(IJavaProject javaProject, String fullyQualifiedClassName,
        String source) throws JavaModelException {
    IPackageFragmentRoot root = javaProject.findPackageFragmentRoot(javaProject.getPath());
    if (root == null) {
        addRawClassPathEntry(javaProject, JavaCore.newSourceEntry(javaProject.getPath()));
        root = javaProject.findPackageFragmentRoot(javaProject.getPath());
    }

    String qualifier = Signature.getQualifier(fullyQualifiedClassName);
    IProgressMonitor monitor = new NullProgressMonitor();
    IPackageFragment packageFragment = root.createPackageFragment(qualifier, true, monitor);
    String name = Signature.getSimpleName(fullyQualifiedClassName);
    return packageFragment.createCompilationUnit(name + ".java", source, false, monitor);
}

From source file:com.google.gdt.eclipse.core.JavaProjectUtilities.java

License:Open Source License

/**
 * Creates an {@link ICompilationUnit} with the given fully qualified name and
 * code in the <code>javaProject</code>.
 *
 * @param javaProject java project to host the new class
 * @param fullyQualifiedClassName fully qualified name for the class
 * @param source code for the classs/*from   ww  w .  j  a v  a 2  s  .  co  m*/
 * @return newly created {@link ICompilationUnit}
 * @throws JavaModelException
 */
public static ICompilationUnit createCompilationUnit(IJavaProject javaProject, String fullyQualifiedClassName,
        String source) throws JavaModelException {
    IPackageFragmentRoot root = javaProject.findPackageFragmentRoot(javaProject.getPath());
    if (root == null) {
        addRawClassPathEntry(javaProject, JavaCore.newSourceEntry(javaProject.getPath()));
        root = javaProject.findPackageFragmentRoot(javaProject.getPath());
    }

    String qualifier = Signature.getQualifier(fullyQualifiedClassName);
    IProgressMonitor monitor = new NullProgressMonitor();
    IPackageFragment packageFragment = root.createPackageFragment(qualifier, true, monitor);
    String name = Signature.getSimpleName(fullyQualifiedClassName);
    ICompilationUnit cu = packageFragment.createCompilationUnit(name + ".java", source, false, monitor);
    JobsUtilities.waitForIdle();
    return cu;
}