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

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

Introduction

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

Prototype

IPackageFragment getPackageFragment(String packageName);

Source Link

Document

Returns the package fragment with the given package name.

Usage

From source file:org.entirej.ide.ui.wizards.service.NewEJPojoServiceContentPage.java

License:Apache License

public String createPojoClass(EJPojoGeneratorType pojoGeneratorType, IProgressMonitor monitor)
        throws Exception, CoreException {

    Class<?> pojoGeneratorClass = EJPluginEntireJClassLoader.loadClass(projectProvider.getJavaProject(),
            pojoPage.getPojoGeneratorClass());
    if (!EJPojoContentGenerator.class.isAssignableFrom(pojoGeneratorClass)) {
        throw new IllegalArgumentException(
                "The pojo generator does not implement the interface: EJPojoContentGenerator");
    }/*  w  w w.j  a  va 2s  .  co m*/

    EJPojoContentGenerator pojoContentGenerator = (EJPojoContentGenerator) pojoGeneratorClass.newInstance();

    pojoGeneratorType.setPackageName(pojoPage.getPackageText());

    IPackageFragmentRoot root = getPackageFragmentRoot();
    IPackageFragment pack = root.getPackageFragment(pojoGeneratorType.getPackageName());
    if (pack == null) {
        pack = root.getPackageFragment(""); //$NON-NLS-1$
    }

    if (!pack.exists()) {
        String packName = pack.getElementName();
        pack = root.createPackageFragment(packName, true, new SubProgressMonitor(monitor, 1));
    } else {
        monitor.worked(1);
    }
    pojoGeneratorType.setPackageName(pack.getElementName());
    ICompilationUnit connectedCU = null;

    try {
        ICompilationUnit parentCU = pack.createCompilationUnit(pojoGeneratorType.getClassName() + ".java", "", //$NON-NLS-1$
                true, new SubProgressMonitor(monitor, 2));
        // create a working copy with a new owner
        parentCU.becomeWorkingCopy(new SubProgressMonitor(monitor, 1));
        connectedCU = parentCU;

        IBuffer buffer = parentCU.getBuffer();
        String fileContents = pojoContentGenerator.generateContent(pojoGeneratorType);

        if (fileContents == null) {
            throw new IllegalArgumentException("No content provided by chosen pojo generator.");
        }

        CodeFormatter codeFormatter = ToolFactory.createCodeFormatter(getProject().getOptions(true));
        IDocument doc = new Document(fileContents);
        TextEdit edit = codeFormatter.format(CodeFormatter.K_COMPILATION_UNIT, doc.get(), 0, doc.get().length(),
                0, null);
        if (edit != null) {
            edit.apply(doc);
            fileContents = doc.get();
        }

        buffer.setContents(fileContents);
        final IType createdType = parentCU.getType(pojoGeneratorType.getClassName());
        connectedCU.commitWorkingCopy(true, new SubProgressMonitor(monitor, 1));

        getShell().getDisplay().asyncExec(new Runnable() {
            public void run() {
                IWizard iWizard = getWizard();
                if (iWizard instanceof NewWizard) {
                    NewWizard wizard = (NewWizard) iWizard;
                    wizard.selectAndReveal(createdType.getResource());
                    wizard.openResource((IFile) createdType.getResource());
                }

            }
        });
        return createdType.getFullyQualifiedName('$');
    } finally {
        if (connectedCU != null) {
            connectedCU.discardWorkingCopy();
        }
        IJavaProject javaProject = pojoPage.getJavaProject();
        javaProject.getProject().build(IncrementalProjectBuilder.INCREMENTAL_BUILD, monitor);
    }

}

From source file:org.evolizer.core.util.projecthandling.JavaProjectHelper.java

License:Apache License

/**
 * Adds the source file.//ww w  .jav  a2  s . c  om
 * 
 * @param sourceFolder
 *            the source folder
 * @param packageName
 *            the package name
 * @param fileName
 *            the file name
 * @param content
 *            the content
 * @param progressMonitor
 *            the progress monitor
 * @throws JavaModelException
 *             if the element could not be created. Reasons include:
 *             <ul>
 *             <li>This Java element does not exist (ELEMENT_DOES_NOT_EXIST)</li>
 *             <li>A CoreException occurred while creating an underlying resource</li>
 *             <li>This package fragment root is read only (READ_ONLY)</li>
 *             <li>The name is not a valid package name (INVALID_NAME)</li>
 *             </ul>
 */
public void addSourceFile(String sourceFolder, String packageName, String fileName, String content,
        IProgressMonitor progressMonitor) throws JavaModelException {

    IProgressMonitor monitor = (progressMonitor == null) ? new NullProgressMonitor() : progressMonitor;
    try {
        monitor.beginTask("Adding Source File " + fileName + " to Package " + packageName, 1);
        IFolder folder = fProject.getFolder(sourceFolder);
        IPackageFragmentRoot javaRoot = fJavaProject.getPackageFragmentRoot(folder);
        IPackageFragment packageFragment = javaRoot.getPackageFragment(packageName);
        packageFragment.createCompilationUnit(fileName, content, false, null);
    } finally {
        monitor.done();
    }
}

From source file:org.fastcode.util.JUnitCreator.java

License:Open Source License

/**
 *
 * @param typeToWorkOn//from w  ww  . ja  v  a2s  . c  om
 * @param method
 * @return
 * @throws Exception
 */
public static IMember generateTest(final IType type,
        final Map<Object, List<FastCodeEntityHolder>> commitMessage, final IMethod... methods)
        throws Exception {

    final VersionControlPreferences versionControlPreferences = VersionControlPreferences.getInstance();

    if (JunitPreferences.getInstance(type) == null) {
        throw new Exception(
                "Please select the correct project in Windows->Preferences->Fast Code->Unit Test and try again.");
    }
    final CreateUnitTestData createUnitTestData = getCreateUnitTestData(type, methods);

    if (createUnitTestData == null) {
        return null;
    }
    final JunitPreferencesAndType junitPreferencesAndType = createUnitTestData.getJunitPreferencesAndType(); // JUnitUtil.findJunitPreferences(type,
    // createUnitTestData.getJunitTestProfileName());
    /*
     * if (junitPreferencesAndType == null) { throw new
     * Exception("This class you selected does not match any profile. " +
     * "Please configure it first by going to Window -> Preference -> Fast Code Pereference."
     * ); }
     */
    JunitPreferences junitPreferences = junitPreferencesAndType.getJunitPreferences();
    IType typeToWorkOn = junitPreferencesAndType.getType();
    /*
     * junitPreferences.setExpTest(createUnitTestData.getUnitTestType() ==
     * UNIT_TEST_TYPE.EXCEPTION_TEST);
     * junitPreferences.setHandleException(createUnitTestData
     * .getHandleException());
     * junitPreferences.setResultFormatList(Arrays.asList
     * (createUnitTestData.getUnitTestRsltFormatSelected()));
     * junitPreferences
     * .setMethodReturnType(createUnitTestData.getMethodReturnType());
     */
    junitPreferences.setCreateUnitTestData(createUnitTestData);

    // String junitTestLocation =
    // replacePlaceHolder(junitPreferences.getJunitTestLocation(),
    // "project", type.getJavaProject().getElementName());
    // junitTestLocation = "/" + junitTestLocation;

    final GlobalSettings globalSettings = getInstance();

    String junitTestLocation = globalSettings.isUseDefaultForPath() ? globalSettings.getSourcePathTest()
            : junitPreferences.getJunitTestLocation();
    junitTestLocation = getDefaultPathFromProject(typeToWorkOn.getJavaProject(), "test", junitTestLocation);
    final IPackageFragmentRoot testPackageFragmentRoot = SourceUtil
            .getPackageRootFromProject(typeToWorkOn.getJavaProject(), junitTestLocation);

    if (testPackageFragmentRoot == null || !testPackageFragmentRoot.exists()) {
        throw new Exception("Path does not exist in the project " + junitTestLocation);
    }

    // final String junitTestClassName =
    // junitPreferences.getJunitTestClass();
    final String junitBase = junitPreferences.getJunitBaseType();
    // final boolean createMethodBody =
    // junitPreferences.isCreateMethodBody();
    // final boolean alwaysCreateTryCatch =
    // junitPreferences.isAlwaysCreateTryCatch();
    // final boolean createInstance = junitPreferences.isCreateInstance();
    // final String[] methodAnnotations =
    // junitPreferences.getMethodAnnotations();

    ICompilationUnit unitTestCU = findTestUnit(typeToWorkOn, junitPreferences);
    // find the interface if unit test is null
    if (unitTestCU == null && typeToWorkOn.isClass()) {
        final IType tmpType = findSuperInterfaceType(typeToWorkOn);
        if (tmpType != null) {
            final JunitPreferences junitPref = JunitPreferences.getInstance(tmpType);
            if (junitPref != null) {
                unitTestCU = findTestUnit(tmpType, junitPref);
                if (unitTestCU != null) {
                    junitPreferences = junitPref;
                    typeToWorkOn = tmpType;
                    /*
                     * junitPreferences.setExpTest(createUnitTestData.
                     * getUnitTestType() == UNIT_TEST_TYPE.EXCEPTION_TEST);
                     * junitPreferences
                     * .setHandleException(createUnitTestData
                     * .getHandleException());
                     * junitPreferences.setResultFormatList
                     * (Arrays.asList(createUnitTestData
                     * .getUnitTestRsltFormatSelected()));
                     * junitPreferences.setMethodReturnType
                     * (createUnitTestData.getMethodReturnType());
                     */
                    junitPreferences.setCreateUnitTestData(createUnitTestData);
                }
            }
        }
    }

    if (!typeToWorkOn.equals(type) && checkForErrors(typeToWorkOn.getCompilationUnit().getResource())) {
        if (!MessageDialog.openQuestion(new Shell(), "Error",
                "There seems to be some problems associated with " + typeToWorkOn.getElementName()
                        + ". It is better to fix those problems and try again. Do you want to continue?")) {
            return null;
        }
    }

    IType junitBaseType = null;

    final JUNIT_TYPE junitType = junitPreferences.getJunitType();
    if (junitType == JUNIT_TYPE.JUNIT_TYPE_3) {
        junitBaseType = typeToWorkOn.getJavaProject().findType(junitBase);
        if (junitBaseType == null || !junitBaseType.exists()) {
            throw new Exception("Unable to find Junit Base Class " + junitBase + " in the current project. "
                    + "Make sure you have configured it properly by going to Windows -> Preference ->Fast Code Preference");
        }
    }

    final String testPkg = typeToWorkOn.getPackageFragment().getElementName();
    IPackageFragment testPackageFragment = testPackageFragmentRoot.getPackageFragment(testPkg);

    if (testPackageFragment == null || !testPackageFragment.exists()) {
        testPackageFragment = testPackageFragmentRoot.createPackageFragment(testPkg, false, null);
    }

    //final String testFormat = junitPreferences.getTestFormat();
    final String instance = createDefaultInstance(typeToWorkOn.getElementName());
    final CreateSimilarDescriptor createSimilarDescriptor = makeCreateSimilarDescriptor(junitPreferences,
            typeToWorkOn);
    final FastCodeContext fastCodeContext = new FastCodeContext(typeToWorkOn, true, junitPreferences);
    final boolean testClassExst = unitTestCU != null && unitTestCU.exists();
    final CreateSimilarDescriptorClass createSimilarDescriptorClass = createSimilarDescriptor
            .getCreateSimilarDescriptorClasses()[0];
    IFile unitTestFile = null;
    boolean createFileAlone = false;
    if (!testClassExst) {
        final String prjURI = testPackageFragment.getResource().getLocationURI().toString();
        final String path = prjURI.substring(prjURI.indexOf(COLON) + 1);
        final File newFileObj = new File(
                path + FORWARD_SLASH + createSimilarDescriptor.getToPattern() + DOT + JAVA_EXTENSION);
        final boolean prjShared = !isEmpty(
                testPackageFragment.getResource().getProject().getPersistentProperties());
        final boolean prjConfigured = !isEmpty(
                isPrjConfigured(testPackageFragment.getResource().getProject().getName()));
        if (versionControlPreferences.isEnable() && prjShared && prjConfigured) {
            final RepositoryService repositoryService = getRepositoryServiceClass();
            if (repositoryService.isFileInRepository(newFileObj)) { // && !MessageDialog.openQuestion(new Shell(), "File present in repository", "File already present in repository. Click yes to overwrite")) {
                /*MessageDialog.openWarning(new Shell(), "File present in repository", junitPreferences.getJunitTestClass() + " is already present in repository. Please synchronise and try again.");
                return null;*/
                createFileAlone = MessageDialog.openQuestion(new Shell(), "File present in repository", "File "
                        + newFileObj.getName()
                        + " already present in repository. Click yes to just create the file, No to return without any action.");
                if (!createFileAlone) {
                    return null;
                }
            }
        } else {
            createFileAlone = true;
        }
        /*final FastCodeCheckinCache checkinCache = FastCodeCheckinCache.getInstance();
        checkinCache.getFilesToCheckIn().add(new FastCodeFileForCheckin(INITIATED, newFileObj.getAbsolutePath()));*/
        addOrUpdateFileStatusInCache(newFileObj);

        createSimilar(fastCodeContext, null, createSimilarDescriptor, new NullProgressMonitor());
        unitTestCU = fastCodeContext.getCompilationUnitRegsistry(createSimilarDescriptorClass);
        if (!createFileAlone) {
            unitTestFile = (IFile) unitTestCU.findPrimaryType().getResource();//.getLocationURI());
            List<FastCodeEntityHolder> chngsForType = commitMessage.get(unitTestFile);
            if (chngsForType == null) {
                chngsForType = new ArrayList<FastCodeEntityHolder>();
                chngsForType.add(new FastCodeEntityHolder(PLACEHOLDER_CLASS,
                        new FastCodeType(unitTestCU.findPrimaryType())));
            }
            commitMessage.put(unitTestFile, chngsForType);
        }

    } else {
        createFileAlone = true;
    }

    if (testClassExst) {
        if (!unitTestCU.getResource().isSynchronized(0)) {
            throw new Exception(
                    unitTestCU.getElementName() + " is not Synchronized, please refresh and try again.");
        }
        unitTestFile = (IFile) unitTestCU.findPrimaryType().getResource(); //.getLocationURI());
    }
    final Map<String, FastCodeMethod> stubMethods = createUnitTestData.getStubMethodsMap(); // FastCodeMethodRegistry.getRegisteredUnitTestStubMethods(junitType);
    if (stubMethods != null) { // && !testClassExst) {
        /*
         * final FastCodeMethodSelectionDialog methodSelectionDialog = new
         * FastCodeMethodSelectionDialog(new Shell(), "Select Methods",
         * "Select One of more Stub Methods from Below", stubMethods, true);
         * methodSelectionDialog.open(); final Object[] regularMethods =
         * methodSelectionDialog.getResult();
         */
        //unitTestFile = (IFile) unitTestCU.findPrimaryType().getResource();
        if (!createFileAlone) {
            final File newFileObj = new File(unitTestFile.getLocationURI().toString());
            final FastCodeCheckinCache checkinCache = FastCodeCheckinCache.getInstance();
            checkinCache.getFilesToCheckIn()
                    .add(new FastCodeFileForCheckin(INITIATED, newFileObj.getAbsolutePath()));
        }
        if (createUnitTestData.getSelectedStubMethodsList() != null) {
            for (final FastCodeMethod fastCodeMethod : createUnitTestData.getSelectedStubMethodsList()
                    .toArray(new FastCodeMethod[0])) {
                createStubMethod(unitTestCU.findPrimaryType(), fastCodeMethod);
                if (!createFileAlone) {
                    List<FastCodeEntityHolder> chngesForType = commitMessage.get(unitTestFile);
                    if (chngesForType == null) {
                        chngesForType = new ArrayList<FastCodeEntityHolder>();
                        final List<Object> fastCodeMethodList = new ArrayList<Object>();
                        fastCodeMethodList.add(fastCodeMethod);
                        chngesForType
                                .add(new FastCodeEntityHolder(PLACEHOLDER_STUBMETHODS, fastCodeMethodList));
                    } else {
                        boolean isNew = true;
                        Object fastCodeMethodList = null;
                        for (final FastCodeEntityHolder fcEntityHolder : chngesForType) {
                            if (fcEntityHolder.getEntityName().equals(PLACEHOLDER_STUBMETHODS)) {
                                fastCodeMethodList = fcEntityHolder.getFastCodeEntity();
                                isNew = false;
                                break;
                            }
                        }

                        if (isNew) {
                            fastCodeMethodList = new ArrayList<Object>();
                            ((List<Object>) fastCodeMethodList).add(fastCodeMethod);
                            chngesForType
                                    .add(new FastCodeEntityHolder(PLACEHOLDER_STUBMETHODS, fastCodeMethodList));
                        } else {
                            ((List<Object>) fastCodeMethodList).add(fastCodeMethod);
                        }
                    }
                    commitMessage.put(unitTestFile, chngesForType);
                }
            }
        }
    }

    if (junitType == JUNIT_TYPE.JUNIT_TYPE_3 || junitType == JUNIT_TYPE.JUNIT_TYPE_CUSTOM) {
        if (junitBaseType != null && junitBaseType.exists()) {
            unitTestCU.createImport(junitBaseType.getFullyQualifiedName(), null, null);
        }
    } else if (junitType == JUNIT_TYPE.JUNIT_TYPE_4) {
        unitTestCU.createImport("org.junit.*", null, null);
        unitTestCU.createImport("org.junit.Assert.*", null, AccStatic, null);
    } else if (junitType == JUNIT_TYPE.JUNIT_TYPE_TESTNG) {
        unitTestCU.createImport("org.testng.annotations.*", null, null);
        unitTestCU.createImport("org.testng.Assert.*", null, AccStatic, null);
    }

    if (unitTestCU == null || !unitTestCU.exists() || createUnitTestData.getClassMethodsSelected() == null
            || methods.length == 0) {
        return unitTestCU != null && unitTestCU.exists() ? unitTestCU.findPrimaryType() : null;
    }

    unitTestCU.createImport(typeToWorkOn.getFullyQualifiedName(), null, null);

    final List<IMethod> retMethods = new ArrayList<IMethod>();
    final UnitTestMethodBuilder methodBuilder = new UnitTestMethodBuilder(fastCodeContext);

    boolean becomeWorkingCopy = false;
    if (!unitTestCU.isWorkingCopy()) {
        becomeWorkingCopy = true;
        unitTestCU.becomeWorkingCopy(null);
    }

    try {
        for (final IMethod method : createUnitTestData.getClassMethodsSelected().toArray(new IMethod[0])) {

            if (EMPTY_STR.equals(createUnitTestData.getTestMethodName())) {
                createUnitTestData.setTestMethodName(method.getElementName());
            }
            IMethod methodToWorkOn = method;
            if (!type.equals(typeToWorkOn)) {
                methodToWorkOn = typeToWorkOn.getMethod(method.getElementName(), method.getParameterTypes());
                if (methodToWorkOn == null || !methodToWorkOn.exists()) {
                    MessageDialog.openError(new Shell(), "Error", "Method " + method.getElementName()
                            + " does not exist in " + typeToWorkOn.getElementName());
                    continue;
                }
            }
            final IMethod[] testMethods = testClassExst
                    ? findTestMethods(typeToWorkOn, methodToWorkOn, junitPreferences)
                    : null;
            // boolean testMethodExist = false, createAotherTestMethod =
            // false;
            // testMethodExist = createAotherTestMethod = false;

            if (testMethods != null && testMethods.length > 0) {
                // testMethodExist = createAotherTestMethod = true;
                /*
                 * final String[] choices = {"Create an additional test",
                 * "Do Nothing", "Jump To The Test"};
                 *
                 * final String choice = getChoiceFromMultipleValues(new
                 * Shell(), "Junit Test Exists for method " +
                 * methodToWorkOn.getElementName(), "Would You Like To",
                 * choices); final int result = findInStringArray(choice,
                 * choices);
                 */

                if (createUnitTestData.getUnitTestChoice().equals(UNIT_TEST_CHOICE.CREATEADDITIONALTEST)) {
                    // break;
                } else if (createUnitTestData.getUnitTestChoice().equals(UNIT_TEST_CHOICE.JUMPTOTEST)) {
                    if (methods.length == 1) {
                        if (testMethods.length == 1) {
                            return testMethods[0];
                        }
                        final MethodSelectionDialog methodSelectionDialog = new MethodSelectionDialog(
                                new Shell(), "Select Test Method",
                                "Multiple tests found for the method you selected, "
                                        + "please select one from the list below.",
                                testMethods, false);
                        methodSelectionDialog.open();
                        return methodSelectionDialog.getResult() == null
                                || methodSelectionDialog.getResult().length == 0 ? null
                                        : (IMethod) methodSelectionDialog.getFirstResult();
                    }
                }
                /*
                 * switch (result) { case 0: // createAotherTestMethod =
                 * true; break; case 1: continue; case 2:
                 *
                 * }
                 */

                // if (createAotherTestMethod) {
                // final MessageDialogWithToggle dialogForMethodBody =
                // openYesNoQuestion(new Shell(),
                // "Create Method Body", "Do you create method body?",
                // "Remember Decision", false,
                // Activator.getDefault().getPreferenceStore(),
                // P_JUNIT_TEST_ASK_FOR_METHOD_BODY);
                // if (dialogForMethodBody.getReturnCode() !=
                // MESSAGE_DIALOG_RETURN_YES) {
                // createMethodBody = false;
                // alwaysCreateTryCatch = false;
                // }
                // }
            }

            if (junitBaseType != null) {
                for (final IMethod meth : junitBaseType.getMethods()) {
                    if (isAbstract(meth.getFlags())) {
                        // add methods here.
                        // copyMethods(junitBaseType,
                        // testCU.findPrimaryType(), meth, null,
                        // METHOD_PATTERN_DEFAULT, null,
                        // RETURN_TYPE.RETURN_TYPE_PASS_THRU, null, null,
                        // false, null, false, false, null, null, null);
                    }
                }
            }

            // if (junitPreferences.isCreateInstance()) {
            // final IField field =
            // testCU.findPrimaryType().getField(instance);
            // if (field == null || !field.exists()) {
            // testCU.findPrimaryType().createField("protected " +
            // type.getElementName() + SPACE + instance + ";\n", null,
            // false, null);
            // }
            // }
            // if (!testMethodExist || createAotherTestMethod) {
            // copyImports(type.getCompilationUnit(), testCU, method);
            // copyMethods(type, testCU.findPrimaryType(), method, instance,
            // junitPreferences.getJunitTestMethod(),
            // createAotherTestMethod ? EXTENSION_OTHER : null,
            // RETURN_TYPE.RETURN_TYPE_CONSUME, null, null, false, "result",
            // createMethodBody, alwaysCreateTryCatch,
            // methodAnnotations, null, null);
            // }

            /**
             * if (method == null) { for (final IMethod meth:
             * testCU.findPrimaryType().getMethods()) { if
             * (!meth.isConstructor()) { testMethod = meth; break; } } }
             * else { String testMethName =
             * replacePlaceHolder(junitPreferences.getJunitTestMethod(),
             * "method_name", method.getElementName()); if
             * (!junitPreferences
             * .getJunitTestMethod().startsWith("${method_name}")) {
             * testMethName =
             * replacePlaceHolder(junitPreferences.getJunitTestMethod(),
             * "method_name",
             * createEmbeddedInstance(method.getElementName())); }
             *
             * testMethod = testCU.findPrimaryType().getMethod(testMethName
             * + (createAotherTestMethod ? EXTENSION_OTHER : EMPTY_STR),
             * null); }
             */
            if (!createFileAlone) {
                final File newFileObj = new File(unitTestFile.getLocationURI().toString());
                final FastCodeCheckinCache checkinCache = FastCodeCheckinCache.getInstance();
                checkinCache.getFilesToCheckIn()
                        .add(new FastCodeFileForCheckin(INITIATED, newFileObj.getAbsolutePath()));
            }
            final IMethod tstMethod = methodBuilder.buildMethod(methodToWorkOn, unitTestCU.findPrimaryType(),
                    createSimilarDescriptor, createSimilarDescriptorClass);
            createUnitTestData.setTestMethodName(EMPTY_STR);
            if (tstMethod != null) {
                retMethods.add(tstMethod);
                if (!createFileAlone) {
                    List<FastCodeEntityHolder> chngesForType = commitMessage.get(unitTestFile);
                    if (chngesForType == null) {
                        chngesForType = new ArrayList<FastCodeEntityHolder>();
                        final List<Object> fastCodeMethodList = new ArrayList<Object>();
                        fastCodeMethodList.add(new FastCodeMethod(tstMethod));
                        chngesForType
                                .add(new FastCodeEntityHolder(PLACEHOLDER_TESTMETHODS, fastCodeMethodList));
                    } else {

                        boolean isNew = true;
                        Object fastCodeMethodList = null;
                        for (final FastCodeEntityHolder fcEntityHolder : chngesForType) {
                            if (fcEntityHolder.getEntityName().equals(PLACEHOLDER_TESTMETHODS)) {
                                fastCodeMethodList = fcEntityHolder.getFastCodeEntity();
                                isNew = false;
                                break;
                            }
                        }

                        if (isNew) {
                            fastCodeMethodList = new ArrayList<Object>();
                            ((List<Object>) fastCodeMethodList).add(new FastCodeMethod(tstMethod));
                            chngesForType
                                    .add(new FastCodeEntityHolder(PLACEHOLDER_TESTMETHODS, fastCodeMethodList));
                        } else {
                            ((List<Object>) fastCodeMethodList).add(new FastCodeMethod(tstMethod));
                        }
                    }
                    commitMessage.put(unitTestFile, chngesForType);
                }
            }
        }
    } catch (final Exception ex) {
        ex.printStackTrace();
        throw new Exception(ex.getMessage(), ex);
    } finally {
        // if (testClassExst) {
        if (!unitTestCU.hasResourceChanged()) {
            unitTestCU.commitWorkingCopy(false, null);
        }
        if (becomeWorkingCopy) {
            unitTestCU.discardWorkingCopy();
        }
    }

    if (retMethods.isEmpty()) {
        return unitTestCU.findPrimaryType();
    } else if (retMethods.size() == 1) {
        return retMethods.get(0);
    } else {
        final IMember[] selectedMembers = getSelectedMembers(IJavaElement.METHOD,
                retMethods.toArray(new IMethod[0]), "Unit Test to Jump", false);
        return selectedMembers == null || selectedMembers.length == 0 ? retMethods.get(0)
                : (IMethod) selectedMembers[0];
    }
}

From source file:org.fastcode.util.SourceUtil.java

License:Open Source License

/**
 * @param fastCodeContext/* w w w. ja  v  a 2s  .  c om*/
 * @param member
 * @param createSimilarDescriptor
 * @param monitor
 * @return
 * @throws Exception
 */
public static void createSimilar(final FastCodeContext fastCodeContext, final IMember[] members,
        final CreateSimilarDescriptor createSimilarDescriptor, final IProgressMonitor monitor)
        throws Exception {

    final GlobalSettings globalSettings = getInstance();
    final Shell parentShell = MessageUtil.getParentShell();
    final Shell shell = parentShell == null ? new Shell() : parentShell;

    IPackageFragmentRoot packageFragmentRoot = null;
    String newpkg = EMPTY_STR, newcls = EMPTY_STR;
    String targetProject = null;
    final CreateSimilarDescriptorClass[] descriptorClasses = createSimilarDescriptor
            .getCreateSimilarDescUserChoice() == null
                    ? createSimilarDescriptor.getCreateSimilarDescriptorClasses()
                    : createSimilarDescriptor.getCreateSimilarDescUserChoice();
    for (final CreateSimilarDescriptorClass createSimilarDescriptorClass : descriptorClasses) {

        if (createSimilarDescriptorClass == null) {
            continue;
        }
        final boolean replaceName = createSimilarDescriptor.isReplaceName();
        String toName = createSimilarDescriptorClass.getToPattern();

        // final String classBody =
        // createSimilarDescriptorClass.getClassBody();
        IPackageFragment packageFragment = null;

        if (packageFragmentRoot == null) {
            targetProject = createSimilarDescriptorClass.getProject();
            if (fastCodeContext.getFromType() == null) {

                /*final IJavaProject project = getJavaProject(targetProject);
                if (project != null && project.exists() && !isEmpty(createSimilarDescriptorClass.getPackge())) {
                   for (final IPackageFragmentRoot pkgFragmntRoot : project.getPackageFragmentRoots()) {
                      packageFragment = pkgFragmntRoot.getPackageFragment(createSimilarDescriptorClass.getPackge());
                      if (packageFragment != null && packageFragment.exists()) {
                packageFragmentRoot = pkgFragmntRoot;
                break;
                      }
                   }
                }
                if (packageFragment == null || !packageFragment.exists()) {
                   final SelectionDialog packageDialog = JavaUI.createPackageDialog(shell, project, 0, null);
                   if (packageDialog.open() == CANCEL) {
                      return;
                   }
                   packageFragment = (IPackageFragment) packageDialog.getResult()[0];
                   packageFragmentRoot = (IPackageFragmentRoot) packageFragment.getParent();
                } else if (isEmpty(createSimilarDescriptorClass.getSubPackage()) && packageFragment.hasSubpackages()) {
                   final List<IPackageFragment> subPackages = new ArrayList<IPackageFragment>();
                   for (final IJavaElement chldPkgFragment : packageFragmentRoot.getChildren()) {
                      if (chldPkgFragment instanceof IPackageFragment
                   && chldPkgFragment.getElementName().startsWith(packageFragment.getElementName())) {
                subPackages.add((IPackageFragment) chldPkgFragment);
                      }
                   }
                   if (!subPackages.isEmpty()) {
                      final PackageSelectionDialog selectionDialog = new PackageSelectionDialog(shell, "Sub Package",
                   "Choose the sub pacage from below", subPackages.toArray(new IPackageFragment[0]));
                      if (selectionDialog.open() != CANCEL) {
                packageFragment = (IPackageFragment) selectionDialog.getFirstResult();
                      }
                   }
                }*/

                packageFragment = createSimilarDescriptorClass.getUserInputPackage();
                packageFragmentRoot = (IPackageFragmentRoot) packageFragment.getParent();
                newpkg = packageFragment.getElementName();
                newcls = replacePlaceHolders(toName, fastCodeContext.getPlaceHolders());
            } else {
                if (fastCodeContext.isUnitTest()) {
                    String sourcePath = globalSettings.isUseDefaultForPath()
                            ? globalSettings.getSourcePathTest()
                            : createSimilarDescriptorClass.getSourcePath();
                    sourcePath = getDefaultPathFromProject(fastCodeContext.getFromType().getJavaProject(),
                            "test", sourcePath);
                    packageFragmentRoot = getPackageRootFromProject(
                            fastCodeContext.getFromType().getJavaProject(), sourcePath);
                } else if (!isEmpty(targetProject)) {
                    final String sourcePath = globalSettings.isUseDefaultForPath()
                            ? getPathFromGlobalSettings(
                                    fastCodeContext.getFromType().getJavaProject().getElementName())
                            : createSimilarDescriptorClass.getSourcePath();
                    ;
                    packageFragmentRoot = getPackageRootFromProject(createSimilarDescriptorClass.getProject(),
                            sourcePath);
                } else {
                    packageFragmentRoot = (IPackageFragmentRoot) fastCodeContext.getFromType()
                            .getPackageFragment().getParent();
                    targetProject = packageFragmentRoot.getParent().getElementName();
                }
                final String fullname = fastCodeContext.getFromType().getFullyQualifiedName();
                final String fromPattern = createSimilarDescriptor.getFromPattern();
                if (fromPattern != null) {
                    parseTokens(fromPattern, fullname, fastCodeContext.getPlaceHolders());
                }
                if (packageFragmentRoot == null || !packageFragmentRoot.exists()) {
                    throw new Exception("Unable to find source path for, please check configuration.");
                }
                toName = replacePlaceHolders(toName, fastCodeContext.getPlaceHolders());
                if (createSimilarDescriptor.isDifferentName()) {
                    toName = fullname.replaceAll(createSimilarDescriptor.getReplacePart(),
                            createSimilarDescriptor.getReplaceValue());
                }
                final int lastDotPos = toName.lastIndexOf(DOT_CHAR);
                newpkg = lastDotPos != -1 ? toName.substring(0, lastDotPos)
                        : fastCodeContext.getFromType().getPackageFragment().getElementName();
                newcls = lastDotPos != -1 ? toName.substring(lastDotPos + 1) : toName;
                packageFragment = packageFragmentRoot.getPackageFragment(newpkg);
            }
        }

        if (packageFragmentRoot == null || !packageFragmentRoot.exists()) {
            throw new Exception("Unable to find package fragment root for " + toName);
        }

        // fastCodeContext.addToPlaceHolders(toName, newcls);
        final boolean isImplClass = createSimilarDescriptorClass.getParentDescriptor() != null
                && createSimilarDescriptorClass
                        .getRelationTypeToParent() == RELATION_TYPE.RELATION_TYPE_IMPLEMENTS;

        if (isImplClass) {
            newcls += globalSettings.getImplExtension();
            if (!isEmpty(createSimilarDescriptorClass.getSubPackage())) {
                newpkg += "." + createSimilarDescriptorClass.getSubPackage();
                packageFragment = packageFragmentRoot.getPackageFragment(newpkg);
                if (packageFragment == null || !packageFragment.exists()) {
                    packageFragment = packageFragmentRoot.createPackageFragment(newpkg, false, monitor);
                }
            }
        }

        fastCodeContext.addToPlaceHolders(PACKAGE_NAME_STR, newpkg);
        fastCodeContext.addToPlaceHolders(CLASS_NAME_STR, newcls);
        if (createSimilarDescriptorClass.isFinalClass()) {
            fastCodeContext.addToPlaceHolders(CLASS_MODIFIER_STR, "final");
        }
        fastCodeContext.addToPlaceHolders(CLASS_INSTANCE_STR, createDefaultInstance(newcls));
        fastCodeContext.addToPlaceHolders(CLASS_TYPE_STR,
                createSimilarDescriptorClass.getClassType().value().toLowerCase());

        if (!fastCodeContext.getPlaceHolders().containsKey(KEYWORD_FROM_CLASS)
                && fastCodeContext.getFromType() != null) {
            fastCodeContext.addToPlaceHolders(KEYWORD_FROM_CLASS,
                    fastCodeContext.getFromType().getElementName());
            fastCodeContext.addToPlaceHolders(KEYWORD_FROM_INSTANCE,
                    createDefaultInstance(fastCodeContext.getFromType().getElementName()));
        }

        if (!fastCodeContext.getPlaceHolders().containsKey(KEYWORD_TO_CLASS)) {
            fastCodeContext.addToPlaceHolders(KEYWORD_TO_CLASS, newcls);
            fastCodeContext.addToPlaceHolders(KEYWORD_TO_PACKAGE, newpkg);
            fastCodeContext.addToPlaceHolders(KEYWORD_TO_FULL_CLASS, newpkg + DOT + newcls);
            fastCodeContext.addToPlaceHolders(KEYWORD_TO_INSTANCE, createDefaultInstance(newcls));
        } else if (isImplClass) {
            fastCodeContext.addToPlaceHolders(KEYWORD_TO_IMPL_PACKAGE, newpkg);
            fastCodeContext.addToPlaceHolders(KEYWORD_TO_IMPL_CLASS, newcls);
            fastCodeContext.addToPlaceHolders(KEYWORD_TO_FULL_IMPL_CLASS, newpkg + DOT + newcls);
        }

        if (replaceName && (packageFragment == null || !packageFragment.exists())) {
            throw new Exception("Fatal error : package must exist.");
        } else if (packageFragment == null || !packageFragment.exists()) {
            final File pkgObj = new File(packageFragmentRoot.getResource().getLocationURI());
            /*final FastCodeCheckinCache checkinCache = FastCodeCheckinCache.getInstance();
            checkinCache.getFilesToCheckIn().add(new FastCodeFileForCheckin(INITIATED, pkgObj.getAbsolutePath()));*/
            addOrUpdateFileStatusInCache(pkgObj);

            packageFragment = packageFragmentRoot.createPackageFragment(newpkg, false, monitor);
        }

        ICompilationUnit compilationUnit = packageFragment.getCompilationUnit(newcls + DOT + JAVA_EXTENSION);
        boolean isNew = false;
        final CompUnitBuilder compUnitBuilder = new SimilarCompUnitBuilder();
        if (compilationUnit == null || !compilationUnit.exists()) {
            fastCodeConsole.writeToConsole("Creating class " + newcls);
            // compilationUnit = createCompUnit(packageFragment,
            // fastCodeContext, createSimilarDescriptorClass, newcls);
            final String prjURI = packageFragment.getResource().getLocationURI().toString();
            final String path = prjURI.substring(prjURI.indexOf(COLON) + 1);
            final File newFileObj = new File(path + FORWARD_SLASH + newcls + DOT + JAVA_EXTENSION);
            final FastCodeCheckinCache checkinCache = FastCodeCheckinCache.getInstance();
            checkinCache.getFilesToCheckIn()
                    .add(new FastCodeFileForCheckin(INITIATED, newFileObj.getAbsolutePath()));

            compilationUnit = compUnitBuilder.buildCompUnit(packageFragment, fastCodeContext,
                    createSimilarDescriptorClass, newcls, fastCodeConsole);
            isNew = true;
        } else {
            if (!compilationUnit.getResource().isSynchronized(0)) {
                throw new Exception(compilationUnit.getElementName()
                        + " is not Synchronized, please refresh and try again.");
            }
            fastCodeConsole.writeToConsole("Class  " + newcls + " exists already.");
        }
        fastCodeContext.addCompilationUnitToRegsistry(createSimilarDescriptorClass, compilationUnit);

        compilationUnit.becomeWorkingCopy(monitor);
        fastCodeContext.addResource(new FastCodeResource(compilationUnit.getResource(), isNew));

        monitor.subTask("Creating details for " + compilationUnit.findPrimaryType().getFullyQualifiedName());

        try {
            IType pType = compilationUnit.findPrimaryType();
            int tries = 0;
            // hack because findPrimaryType is not available immediately
            // sometimes.
            while (isNew && (tries++ < MAX_TRY || pType == null || !pType.exists())) {
                pType = compilationUnit.findPrimaryType();
                Thread.sleep(100);
            }
            if (pType == null || !pType.exists()) {
                throw new Exception("Unknown exception occured, please try it again.");
            }

            createNewTypeDetails(fastCodeContext, pType, members, createSimilarDescriptor,
                    createSimilarDescriptorClass, monitor);
            if (globalSettings.isAutoSave()) {
                compilationUnit.commitWorkingCopy(false, monitor);
            }
        } finally {
            compilationUnit.discardWorkingCopy();
        }
    }

    // monitor.subTask("Creating configuration for " +
    // cu.findPrimaryType().getFullyQualifiedName());

    boolean createConfig = false;
    if (createSimilarDescriptor.getNoOfInputs() > 1) {
        return;
    }
    for (final CreateSimilarDescriptorConfig descriptorConfig : createSimilarDescriptor
            .getDescriptorConfigParts()) {
        if (descriptorConfig != null) {
            createConfig = true;
        }
    }

    if (!createConfig) {
        return;
    }

    boolean showFieldsDialog = true;
    final List<FastCodeField> fastCodeFields = new ArrayList<FastCodeField>();
    final Map<String, List<FastCodeField>> fieldsMap = new HashMap<String, List<FastCodeField>>();
    fieldsMap.put("fields", fastCodeFields);

    IType typeForConfiguration = null;
    for (final CreateSimilarDescriptorClass createSimilarDescriptorClass : descriptorClasses) {
        final ICompilationUnit compilationUnit = fastCodeContext
                .getCompilationUnitRegsistry(createSimilarDescriptorClass);
        if (compilationUnit.findPrimaryType().isClass()) {
            typeForConfiguration = compilationUnit.findPrimaryType();
            break;
        }
    }

    for (final CreateSimilarDescriptorConfig descriptorConfig : createSimilarDescriptor
            .getDescriptorConfigParts()) {

        if (descriptorConfig == null) {
            continue;
        }

        final IField[] fields = getFieldsOfType(typeForConfiguration);
        if (showFieldsDialog && fields != null && fields.length > 0) {
            final FieldSelectionDialog fieldSelectionDialog = new FieldSelectionDialog(shell,
                    "Fields for configuration",
                    "Choose the fields for configuration " + descriptorConfig.getConfigType(), fields, true);

            if (fieldSelectionDialog.open() != CANCEL) {
                final Object[] results = fieldSelectionDialog.getResult();
                for (final Object result : results) {
                    final IField field = (IField) result;
                    fastCodeFields.add(new FastCodeField(field, field.getElementName()));
                }
                showFieldsDialog = false; // get the fields first time.
            }
        }

        // String fileName = descriptorConfig.getConfigFileName();
        // final String fileName =
        // replacePlaceHolders(descriptorConfig.getConfigFileName(),
        // fastCodeContext.getPlaceHolders());

        createConfigurations(fastCodeContext, descriptorConfig, targetProject, fieldsMap);
    }
}

From source file:org.fastcode.util.SourceUtil.java

License:Open Source License

/**
 *
 * @param packageName//from  ww  w .j av a  2 s. c  om
 * @return
 * @throws JavaModelException
 */
public static IPackageFragment getPackageFragmentFromWorkspace(final String packageName)
        throws JavaModelException {
    final IProject[] javaProjects = ResourcesPlugin.getWorkspace().getRoot().getProjects();
    for (final IProject project : javaProjects) {
        final IJavaProject javaProj = JavaCore.create(project);
        if (javaProj == null || !javaProj.exists() || !javaProj.isOpen()) {
            continue;
        }
        for (final IPackageFragmentRoot packageFragmentRoot : javaProj.getAllPackageFragmentRoots()) {
            final IPackageFragment packageFragment = packageFragmentRoot.getPackageFragment(packageName);
            if (packageFragment != null && packageFragment.exists()) {
                return packageFragment;
            }
        }
    }
    return null;
}

From source file:org.fastcode.util.SourceUtil.java

License:Open Source License

/**
 * @param fastCodeContext//from ww  w. j  a  va  2  s  . co m
 * @param createSimilarDescriptor
 * @param length
 * @throws Exception
 */
public static void populatecreateDescClassWithUserInput(final FastCodeContext fastCodeContext,
        final CreateSimilarDescriptor createSimilarDescriptor, final String[] inputs,
        final boolean differentName, final IType typeToWorkOn) throws Exception {

    final Shell parentShell = MessageUtil.getParentShell();
    final Shell shell = parentShell == null ? new Shell() : parentShell;
    IPackageFragmentRoot packageFragmentRoot = null;
    IPackageFragment tmpPackageFragment = null;
    final GlobalSettings globalSettings = getInstance();
    String superClass = EMPTY_STR;
    IType supType = null;
    int k = 0;
    boolean isMultiple = false;
    if (inputs.length > 1) {
        isMultiple = true;
    }
    createSimilarDescriptor.setNoOfInputs(inputs.length);
    for (final String input : inputs) {
        if (differentName) {
            final Pattern p = Pattern.compile(createSimilarDescriptor.getFromPattern());
            final Matcher m = p.matcher(typeToWorkOn.getFullyQualifiedName());

            if (!m.matches()) {
                continue;
            }

            final String replatePart = m.group(m.groupCount());
            createSimilarDescriptor.createReplacePartAndValue(replatePart, input);
        }
    }

    final CreateSimilarDescriptorClass[] createSimilarDescUserChoice = new CreateSimilarDescriptorClass[createSimilarDescriptor
            .getCreateSimilarDescriptorClasses().length];
    for (final CreateSimilarDescriptorClass createSimilarDescriptorClass : createSimilarDescriptor
            .getCreateSimilarDescriptorClasses()) {
        IPackageFragment packageFragment = null;
        if (createSimilarDescriptorClass == null) {
            continue;
        }
        String toName = createSimilarDescriptorClass.getToPattern();
        IType[] fldTypeArr = null;
        String targetProject = null;
        if (packageFragmentRoot == null) {
            targetProject = createSimilarDescriptorClass.getProject();
            if (fastCodeContext.getFromType() == null) {
                final IJavaProject project = getJavaProject(targetProject);
                if (project != null && project.exists() && !isEmpty(createSimilarDescriptorClass.getPackge())) {
                    for (final IPackageFragmentRoot pkgFragmntRoot : project.getPackageFragmentRoots()) {
                        packageFragment = pkgFragmntRoot
                                .getPackageFragment(createSimilarDescriptorClass.getPackge());
                        if (packageFragment != null && packageFragment.exists()) {
                            packageFragmentRoot = pkgFragmntRoot;
                            break;
                        }
                    }
                }
                if (packageFragment == null || !packageFragment.exists()) {
                    final SelectionDialog packageDialog = JavaUI.createPackageDialog(shell, project, 0, null);
                    if (packageDialog.open() == CANCEL) {
                        return;
                    }
                    packageFragment = (IPackageFragment) packageDialog.getResult()[0];
                    packageFragmentRoot = (IPackageFragmentRoot) packageFragment.getParent();
                } else if (isEmpty(createSimilarDescriptorClass.getSubPackage())
                        && packageFragment.hasSubpackages()) {
                    final List<IPackageFragment> subPackages = new ArrayList<IPackageFragment>();
                    for (final IJavaElement chldPkgFragment : packageFragmentRoot.getChildren()) {
                        if (chldPkgFragment instanceof IPackageFragment && chldPkgFragment.getElementName()
                                .startsWith(packageFragment.getElementName())) {
                            subPackages.add((IPackageFragment) chldPkgFragment);
                        }
                    }
                    if (!subPackages.isEmpty()) {
                        final PackageSelectionDialog selectionDialog = new PackageSelectionDialog(shell,
                                "Sub Package", "Choose the sub pacage from below",
                                subPackages.toArray(new IPackageFragment[0]));
                        if (selectionDialog.open() != CANCEL) {
                            packageFragment = (IPackageFragment) selectionDialog.getFirstResult();
                        }
                    }
                }
            } else {
                if (fastCodeContext.isUnitTest()) {
                    String sourcePath = globalSettings.isUseDefaultForPath()
                            ? globalSettings.getSourcePathTest()
                            : createSimilarDescriptorClass.getSourcePath();
                    sourcePath = getDefaultPathFromProject(fastCodeContext.getFromType().getJavaProject(),
                            "test", sourcePath);
                    packageFragmentRoot = getPackageRootFromProject(
                            fastCodeContext.getFromType().getJavaProject(), sourcePath);
                } else if (!isEmpty(targetProject)) {
                    final String sourcePath = globalSettings.isUseDefaultForPath()
                            ? getPathFromGlobalSettings(
                                    fastCodeContext.getFromType().getJavaProject().getElementName())
                            : createSimilarDescriptorClass.getSourcePath();
                    ;
                    packageFragmentRoot = getPackageRootFromProject(createSimilarDescriptorClass.getProject(),
                            sourcePath);
                } else {
                    packageFragmentRoot = (IPackageFragmentRoot) fastCodeContext.getFromType()
                            .getPackageFragment().getParent();
                    targetProject = packageFragmentRoot.getParent().getElementName();
                }
                final String fullname = fastCodeContext.getFromType().getFullyQualifiedName();
                final String fromPattern = createSimilarDescriptor.getFromPattern();
                if (fromPattern != null) {
                    parseTokens(fromPattern, fullname, fastCodeContext.getPlaceHolders());
                }
                if (packageFragmentRoot == null || !packageFragmentRoot.exists()) {
                    throw new Exception("Unable to find source path for, please check configuration.");
                }
                toName = replacePlaceHolders(toName, fastCodeContext.getPlaceHolders());
                if (createSimilarDescriptor.isDifferentName()) {
                    toName = fullname.replaceAll(createSimilarDescriptor.getReplacePart(),
                            createSimilarDescriptor.getReplaceValue());
                }
                final int lastDotPos = toName.lastIndexOf(DOT_CHAR);
                final String newpkg = lastDotPos != -1 ? toName.substring(0, lastDotPos)
                        : fastCodeContext.getFromType().getPackageFragment().getElementName();
                packageFragment = packageFragmentRoot.getPackageFragment(newpkg);

            }
            tmpPackageFragment = packageFragment;

        }

        if (tmpPackageFragment != null) {
            final List<IType> importTypes = new ArrayList<IType>();

            final IJavaProject javaProject = tmpPackageFragment.getJavaProject();
            final String[] impTypes = replacePlaceHolders(createSimilarDescriptorClass.getImportTypes(),
                    fastCodeContext.getPlaceHolders());
            final String[] superTypes = replacePlaceHolders(createSimilarDescriptorClass.getSuperTypes(),
                    fastCodeContext.getPlaceHolders());
            final String[] implementTypes = replacePlaceHolders(
                    createSimilarDescriptorClass.getImplementTypes(), fastCodeContext.getPlaceHolders());
            gatherImports(javaProject, impTypes, IJavaElementSearchConstants.CONSIDER_ALL_TYPES, "import",
                    importTypes);
            final List<IType> implTypes = gatherImports(javaProject, implementTypes,
                    IJavaElementSearchConstants.CONSIDER_INTERFACES, "implement", importTypes);
            // createSimilarDescriptorClass.setUserInputInterface(implTypes);
            // createSimilarDescriptorClass.setUserInputImports(importTypes);
            if (superTypes != null && superTypes.length > 0) {

                final FastCodeType[] fastCodeTypes = new FastCodeType[superTypes.length];
                int i = 0;
                for (final String superType : superTypes) {
                    fastCodeTypes[i++] = parseType(superType, null);
                }
                final ClassSelectionDialog classSelectionDialog = new ClassSelectionDialog(shell, "Super Class",
                        "Choose the classes to extend", fastCodeTypes, false);
                final int ret = classSelectionDialog.open();
                if (ret != CANCEL) {
                    // final FastCodeType fastCodeType = (FastCodeType)
                    // classSelectionDialog.getResult()[0];
                    supType = tmpPackageFragment.getJavaProject()
                            .findType(classSelectionDialog.getResult()[0].toString());

                    if (supType != null && supType.exists()) {
                        // superClass = flattenType(fastCodeType, false);
                        superClass = superClass.replace(supType.getFullyQualifiedName(),
                                supType.getElementName());
                        // placeHolders.put("super_class", superClass);
                        if (!supType.isBinary() && supType.getCompilationUnit() != null
                                && supType.getCompilationUnit().exists()) {
                            fastCodeContext.addResource(new FastCodeResource(supType.getResource()));
                        }
                    }
                }

            }

            if (createSimilarDescriptorClass.isCreateFields()) {
                final SelectionDialog selectionDialog = JavaUI.createTypeDialog(shell, null,
                        SearchEngine.createWorkspaceScope(),
                        IJavaElementSearchConstants.CONSIDER_CLASSES_AND_INTERFACES, true,
                        createSimilarDescriptorClass.getCreateFieldsName());
                selectionDialog.setMessage("Please select one or more classes to create field.");
                selectionDialog.setTitle("Select Class");

                if (selectionDialog.open() != CANCEL) {
                    int i = 0;
                    final Object[] tmpArray = selectionDialog.getResult();
                    fldTypeArr = new IType[tmpArray.length];
                    for (final Object type : tmpArray) {
                        final IType fldType = (IType) type;
                        if (isAbstract(fldType.getFlags())) {
                            openWarning(shell, "Warning",
                                    "Cannot make an instance of an abstract class " + fldType.getElementName());
                            continue;
                        }
                        fldTypeArr[i] = fldType;
                        i++;
                    }

                }
            }
            createSimilarDescUserChoice[k] = new CreateSimilarDescriptorClass.Builder()
                    .withUserInputPackage(packageFragment).withUserInputImports(importTypes)
                    .withUserInputInterface(implTypes).withSuperClass(superClass)
                    .withUserInputFieldTypes(fldTypeArr)
                    .withCreateFields(createSimilarDescriptorClass.isCreateFields())
                    .withClassAnnotations(createSimilarDescriptorClass.getClassAnnotations())
                    .withClassBody(createSimilarDescriptorClass.getClassBody())
                    .withClassHeader(createSimilarDescriptorClass.getClassHeader())
                    .withClassInsideBody(createSimilarDescriptorClass.getClassInsideBody())
                    .withClassType(createSimilarDescriptorClass.getClassType())
                    .withConvertMethodParam(createSimilarDescriptorClass.isConvertMethodParam())
                    .withConvertMethodParamFrom(createSimilarDescriptorClass.getConvertMethodParamFrom())
                    .withConvertMethodParamTo(createSimilarDescriptorClass.getConvertMethodParamTo())
                    .withCreateDefaultConstructor(createSimilarDescriptorClass.isCreateDefaultConstructor())
                    .withCreateEqualsHashcode(
                            isMultiple ? false : createSimilarDescriptorClass.isCreateEqualsHashcode())
                    .withCreateFieldsName(createSimilarDescriptorClass.getCreateFieldsName())
                    .withCreateInstanceConstructor(
                            isMultiple ? false : createSimilarDescriptorClass.isCreateInstanceConstructor())
                    .withCreateMethodBody(createSimilarDescriptorClass.isCreateMethodBody())
                    .withCreateToString(isMultiple ? false : createSimilarDescriptorClass.isCreateToString())
                    .withCreateUnitTest(createSimilarDescriptorClass.isCreateUnitTest())
                    .withFieldAnnotations(createSimilarDescriptorClass.getFieldAnnotations())
                    .withFinalClass(createSimilarDescriptorClass.isFinalClass())
                    .withImplementTypes(createSimilarDescriptorClass.getImplementTypes())
                    .withImportTypes(createSimilarDescriptorClass.getImportTypes())
                    .withInclGetterSetterForInstance(
                            createSimilarDescriptorClass.isInclGetterSetterForInstance())
                    .withMethodAnnotations(createSimilarDescriptorClass.getMethodAnnotations())
                    .withPackge(createSimilarDescriptorClass.getPackge())
                    .withProject(createSimilarDescriptorClass.getProject())
                    .withRelationTypeToParent(createSimilarDescriptorClass.getRelationTypeToParent())
                    .withSourcePath(createSimilarDescriptorClass.getSourcePath())
                    .withSubPackage(createSimilarDescriptorClass.getSubPackage())
                    .withSuperTypes(createSimilarDescriptorClass.getSuperTypes())
                    .withUserInputSuperClass(supType).withToPattern(createSimilarDescriptorClass.getToPattern())
                    .withInclInstance(createSimilarDescriptorClass.isInclInstance())
                    .withRelatedDescriptors(new ArrayList<CreateSimilarDescriptorClass>()).build();

            k++;

        }
    }
    if (tmpPackageFragment != null) {
        createSimilarDescriptor.setCreateSimilarDescUserChoice(createSimilarDescUserChoice);
        createSimilarDescriptor.numbersOfCreateSimilarDescUserChoiceClasses(createSimilarDescUserChoice);
    }
}

From source file:org.fusesource.ide.camel.editor.globalconfiguration.beans.BeanConfigUtil.java

License:Open Source License

private void setInitialPackageFramentWithName(final IProject project, NewClassWizardPage wp, String packName) {
    try {//w w  w. j a  va2  s . co m
        IJavaProject javaProject = (IJavaProject) project.getNature(JavaCore.NATURE_ID);
        if (javaProject != null) {
            IPackageFragmentRoot fragroot = findPackageFragmentRoot(project, javaProject);
            wp.setPackageFragmentRoot(fragroot, true);
            wp.setPackageFragment(fragroot.getPackageFragment(packName), true);
        }
    } catch (Exception ex) {
        CamelEditorUIActivator.pluginLog().logError(ex);
    }
}

From source file:org.fusesource.ide.camel.editor.propertysheet.PropertiesUtils.java

License:Open Source License

/**
 * Checks if the package field has to be pre-filled in this page and returns the package
 * fragment to be used for that. The package fragment has the name of the project if the source
 * folder does not contain any package and if the project name is a valid package name. If the
 * source folder contains exactly one package then the name of that package is used as the
 * package fragment's name. <code>null</code> is returned if none of the above is applicable.
 * //  w ww. j  av  a 2s.  c o  m
 * @param javaProject the containing Java project of the selection used to initialize this page
 * 
 * @return the package fragment to be pre-filled in this page or <code>null</code> if no
 *         suitable package can be suggested for the given project
 * 
 * @since 3.9
 */
public static IPackageFragment getPackage(IJavaProject javaProject,
        final IPackageFragmentRoot pkgFragmentRoot) {
    String packName = null;
    IJavaElement[] packages = null;
    try {
        if (pkgFragmentRoot != null && pkgFragmentRoot.exists()) {
            packages = pkgFragmentRoot.getChildren();
            if (packages.length == 1) { // only default package -> use Project name
                packName = javaProject.getElementName();
                // validate package name
                IStatus status = validatePackageName(packName, javaProject);
                if (status.getSeverity() == IStatus.OK) {
                    return pkgFragmentRoot.getPackageFragment(packName);
                }
            } else {
                int noOfPackages = 0;
                IPackageFragment thePackage = null;
                for (final IJavaElement pack : packages) {
                    IPackageFragment pkg = (IPackageFragment) pack;
                    // ignoring empty parent packages and default package
                    if ((!pkg.hasSubpackages() || pkg.hasChildren()) && !pkg.isDefaultPackage()) {
                        noOfPackages++;
                        thePackage = pkg;
                        if (noOfPackages > 1) {
                            return null;
                        }
                    }
                }
                if (noOfPackages == 1) { // use package name
                    packName = thePackage.getElementName();
                    return pkgFragmentRoot.getPackageFragment(packName);
                }
            }
        }
    } catch (JavaModelException e) {
        // fall through
    }
    return null;
}

From source file:org.fusesource.ide.camel.model.service.core.util.PropertiesUtils.java

License:Open Source License

/**
 * Checks if the package field has to be pre-filled in this page and returns
 * the package fragment to be used for that. The package fragment has the
 * name of the project if the source folder does not contain any package and
 * if the project name is a valid package name. If the source folder
 * contains exactly one package then the name of that package is used as the
 * package fragment's name. <code>null</code> is returned if none of the
 * above is applicable.//from www  .  jav  a  2s  .  c o m
 * 
 * @param javaProject
 *            the containing Java project of the selection used to
 *            initialize this page
 * 
 * @return the package fragment to be pre-filled in this page or
 *         <code>null</code> if no suitable package can be suggested for the
 *         given project
 * 
 * @since 3.9
 */
public static IPackageFragment getPackage(IJavaProject javaProject,
        final IPackageFragmentRoot pkgFragmentRoot) {
    String packName = null;
    IJavaElement[] packages = null;
    try {
        if (pkgFragmentRoot != null && pkgFragmentRoot.exists()) {
            packages = pkgFragmentRoot.getChildren();
            if (packages.length == 1) { // only default package -> use
                // Project name
                packName = javaProject.getElementName();
                // validate package name
                IStatus status = validatePackageName(packName, javaProject);
                if (status.getSeverity() == IStatus.OK) {
                    return pkgFragmentRoot.getPackageFragment(packName);
                }
            } else {
                int noOfPackages = 0;
                IPackageFragment thePackage = null;
                for (final IJavaElement pack : packages) {
                    IPackageFragment pkg = (IPackageFragment) pack;
                    // ignoring empty parent packages and default package
                    if ((!pkg.hasSubpackages() || pkg.hasChildren()) && !pkg.isDefaultPackage()) {
                        noOfPackages++;
                        thePackage = pkg;
                        if (noOfPackages > 1) {
                            return null;
                        }
                    }
                }
                if (noOfPackages == 1) { // use package name
                    packName = thePackage.getElementName();
                    return pkgFragmentRoot.getPackageFragment(packName);
                }
            }
        }
    } catch (JavaModelException e) {
        // fall through
    }
    return null;
}

From source file:org.grails.ide.eclipse.editor.gsp.translation.GSPTranslation.java

License:Open Source License

/**
 * Originally from ReconcileStepForJava.  Creates an ICompilationUnit from the contents of the JSP document.
 * //from www. j av a  2s. c  o m
 * @return an ICompilationUnit from the contents of the JSP document
 */
private ICompilationUnit createCompilationUnit() throws JavaModelException {

    IPackageFragment packageFragment = null;
    IJavaElement je = getJavaProject();

    if (je == null || !je.exists())
        return null;

    switch (je.getElementType()) {
    case IJavaElement.PACKAGE_FRAGMENT:
        je = je.getParent();
        // fall through

    case IJavaElement.PACKAGE_FRAGMENT_ROOT:
        IPackageFragmentRoot packageFragmentRoot = (IPackageFragmentRoot) je;
        packageFragment = packageFragmentRoot.getPackageFragment(IPackageFragmentRoot.DEFAULT_PACKAGEROOT_PATH);
        break;

    case IJavaElement.JAVA_PROJECT:
        IJavaProject jProject = (IJavaProject) je;

        if (!jProject.exists()) {
            if (DEBUG) {
                System.out.println(
                        "** Abort create working copy: cannot create working copy: JSP is not in a Java project"); //$NON-NLS-1$
            }
            return null;
        }

        packageFragmentRoot = null;
        IPackageFragmentRoot[] packageFragmentRoots = jProject.getPackageFragmentRoots();
        int i = 0;
        while (i < packageFragmentRoots.length) {
            if (!packageFragmentRoots[i].isArchive() && !packageFragmentRoots[i].isExternal()) {
                packageFragmentRoot = packageFragmentRoots[i];
                break;
            }
            i++;
        }
        if (packageFragmentRoot == null) {
            if (DEBUG) {
                System.out.println(
                        "** Abort create working copy: cannot create working copy: JSP is not in a Java project with source package fragment root"); //$NON-NLS-1$
            }
            return null;
        }
        packageFragment = packageFragmentRoot.getPackageFragment(IPackageFragmentRoot.DEFAULT_PACKAGEROOT_PATH);
        break;

    default:
        return null;
    }

    // GRAILS CHANGE
    // create compilation unit with .groovy instead of .java file extension
    ICompilationUnit cu = packageFragment.getCompilationUnit(getClassname() + ".groovy") //$NON-NLS-1$
            .getWorkingCopy(getWorkingCopyOwner(), getProgressMonitor());
    //        ICompilationUnit cu = packageFragment.getCompilationUnit(getClassname() + ".java").getWorkingCopy(getWorkingCopyOwner(), getProgressMonitor()); //$NON-NLS-1$
    setContents(cu);

    // GRAILS CHANGE
    // need extra call to makeConsistent
    // https://issuetracker.springsource.com/browse/STS-3091#comment-79054
    cu.makeConsistent(getProgressMonitor());

    if (DEBUG) {
        System.out.println("+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++"); //$NON-NLS-1$
        System.out.println("(+) JSPTranslation [" + this + "] finished creating CompilationUnit: " + cu); //$NON-NLS-1$ //$NON-NLS-2$
        System.out.println("+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++"); //$NON-NLS-1$
    }

    return cu;
}