Example usage for org.eclipse.jdt.core IJavaElement getElementName

List of usage examples for org.eclipse.jdt.core IJavaElement getElementName

Introduction

In this page you can find the example usage for org.eclipse.jdt.core IJavaElement getElementName.

Prototype

String getElementName();

Source Link

Document

Returns the name of this element.

Usage

From source file:org.evosuite.eclipse.quickfixes.ResolutionMarkerThrowsException.java

License:Open Source License

@Override
public void run(IMarker marker) {
    // TODO Auto-generated method stub
    IResource res = marker.getResource();

    try {/*from ww w  .  jav  a2  s . c o m*/
        String markerMessage = (String) marker.getAttribute(IMarker.MESSAGE);
        String exception = markerMessage.split(" ")[0];
        String[] exceptionPackageArray = exception.split("\\.");
        String exceptionPackage = "";
        for (int i = 0; i < exceptionPackageArray.length - 1; i++) {
            exceptionPackage += exceptionPackageArray[i] + ".";
        }
        exception = exception.substring(exceptionPackage.length());

        System.out.println("Package: " + exceptionPackage + ", Exception: " + exception);

        ICompilationUnit icomp = CompilationUnitManager.getICompilationUnit(res);

        CompilationUnit compunit = CompilationUnitManager.getCompilationUnit(res);

        int position = marker.getAttribute(IMarker.CHAR_START, 0) + 1;
        if (position == 1) {
            int line = marker.getAttribute(IMarker.LINE_NUMBER, 0);
            position = compunit.getPosition(line, 0);
        }

        AST ast = compunit.getAST();
        ASTRewrite rewriter = ASTRewrite.create(ast);

        IJavaElement element = icomp.getElementAt(position);
        IJavaElement method = getMethod(element);

        //         TypeDeclaration td = (TypeDeclaration) compunit.types().get(0);
        TypeDeclaration td = (TypeDeclaration) compunit.types().get(0);

        MethodDeclaration md = td.getMethods()[0];

        int counter = 1;
        while (!md.getName().getFullyQualifiedName().equals(method.getElementName())
                && counter < td.getMethods().length) {
            md = td.getMethods()[counter];
            System.out.println(md.getName().getFullyQualifiedName() + " " + method.getElementName());
            counter++;
        }

        ListRewrite lr = rewriter.getListRewrite(md, MethodDeclaration.THROWN_EXCEPTIONS_PROPERTY);
        ImportDeclaration id = ast.newImportDeclaration();
        id.setName(ast.newName(exceptionPackage + exception));
        ListRewrite lrClass = rewriter.getListRewrite(compunit, CompilationUnit.TYPES_PROPERTY);
        lrClass.insertAt(id, 0, null);

        Statement s = (Statement) rewriter.createStringPlaceholder(exception, ASTNode.EMPTY_STATEMENT);

        lr.insertAt(s, 0, null);
        System.out.println("MD: " + md.getName() + "\nList: " + lr.getOriginalList());

        ITextFileBufferManager bm = FileBuffers.getTextFileBufferManager();
        IPath path = compunit.getJavaElement().getPath();
        try {
            bm.connect(path, null, null);
            ITextFileBuffer textFileBuffer = bm.getTextFileBuffer(path, null);
            IDocument document = textFileBuffer.getDocument();
            TextEdit edits = rewriter.rewriteAST(document, null);
            edits.apply(document);
            textFileBuffer.commit(null, false);

        } catch (CoreException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (MalformedTreeException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (BadLocationException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } finally {
            try {
                bm.disconnect(path, null, null);
            } catch (CoreException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } // (4)
        }
        System.out
                .println(lr.getRewrittenList() + "\nPosition: " + position + "\nEdits: " + rewriter.toString());
    } catch (JavaModelException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } catch (CoreException e1) {
        // TODO Auto-generated catch block
        e1.printStackTrace();
    } catch (IOException e1) {
        // TODO Auto-generated catch block
        e1.printStackTrace();
    }

}

From source file:org.evosuite.eclipse.quickfixes.ResolutionMarkerTryBlock.java

License:Open Source License

@Override
public void run(IMarker marker) {
    // TODO Auto-generated method stub
    IResource res = marker.getResource();

    try {/*from w  w  w.j av  a  2s .c o m*/
        String markerMessage = (String) marker.getAttribute(IMarker.MESSAGE);
        String exception = markerMessage.split(" ")[0];
        String[] exceptionPackageArray = exception.split("\\.");
        String exceptionPackage = "";
        for (int i = 0; i < exceptionPackageArray.length - 1; i++) {
            exceptionPackage += exceptionPackageArray[i] + ".";
        }
        exception = exception.substring(exceptionPackage.length());

        System.out.println("Package: " + exceptionPackage + ", Exception: " + exception);

        ICompilationUnit icomp = CompilationUnitManager.getICompilationUnit(res);

        CompilationUnit compunit = CompilationUnitManager.getCompilationUnit(res);

        int position = marker.getAttribute(IMarker.CHAR_START, 0) + 1;
        int line = marker.getAttribute(IMarker.LINE_NUMBER, 0);
        if (position == 1) {
            position = compunit.getPosition(line, 0);
        }

        AST ast = compunit.getAST();
        ASTRewrite rewriter = ASTRewrite.create(ast);

        IJavaElement element = icomp.getElementAt(position);
        IJavaElement method = getMethod(element);

        // TypeDeclaration td = (TypeDeclaration) compunit.types().get(0);
        TypeDeclaration td = (TypeDeclaration) compunit.types().get(0);

        MethodDeclaration md = td.getMethods()[0];

        int counter = 1;
        while (!md.getName().getFullyQualifiedName().equals(method.getElementName())
                && counter < td.getMethods().length) {
            md = td.getMethods()[counter];
            System.out.println(md.getName().getFullyQualifiedName() + " " + method.getElementName());
            counter++;
        }

        Block block = md.getBody();

        ListRewrite lr = rewriter.getListRewrite(block, Block.STATEMENTS_PROPERTY);
        ImportDeclaration id = ast.newImportDeclaration();
        id.setName(ast.newName(exceptionPackage + exception));
        ListRewrite lrClass = rewriter.getListRewrite(compunit, CompilationUnit.TYPES_PROPERTY);
        lrClass.insertAt(id, 0, null);
        ASTNode currentNode = null;
        List<ASTNode> list = new ArrayList<ASTNode>();
        for (Object o : lr.getOriginalList()) {
            if (o instanceof ASTNode) {
                list.add((ASTNode) o);
            }
        }
        for (int i = 0; i < list.size(); i++) {
            ASTNode node = list.get(i);
            int nodeLine = compunit.getLineNumber(node.getStartPosition());
            System.out.println(line + " " + nodeLine);
            if (line == nodeLine) {
                currentNode = node;
                break;
            }
            List childrenList = node.structuralPropertiesForType();
            for (int j = 0; j < childrenList.size(); j++) {
                StructuralPropertyDescriptor curr = (StructuralPropertyDescriptor) childrenList.get(j);
                Object child = node.getStructuralProperty(curr);
                if (child instanceof List) {
                    for (Object ob : (List) child) {
                        if (ob instanceof ASTNode) {
                            list.add((ASTNode) ob);
                        }
                    }
                } else if (child instanceof ASTNode) {
                    list.add((ASTNode) child);
                }
            }
        }

        TryStatement ts = ast.newTryStatement();
        Statement emptyStatement = (Statement) rewriter.createStringPlaceholder("\n", ASTNode.EMPTY_STATEMENT);
        Statement emptyStatement2 = (Statement) rewriter.createStringPlaceholder("\n\t",
                ASTNode.EMPTY_STATEMENT);
        Block b2 = ast.newBlock();
        b2.statements().add(0, ASTNode.copySubtree(b2.getAST(), currentNode));
        b2.statements().add(1, emptyStatement);
        b2.statements().add(0, emptyStatement2);
        ts.setBody(b2);
        CatchClause cc = ast.newCatchClause();
        SingleVariableDeclaration svd = ast.newSingleVariableDeclaration();
        svd.setName(ast.newSimpleName("e"));
        Type type = ast.newSimpleType(ast.newName(exception));
        svd.setType(type);
        cc.setException(svd);
        Block b3 = ast.newBlock();
        Statement printStatement = (Statement) rewriter.createStringPlaceholder("e.printStackTrace();",
                ASTNode.EMPTY_STATEMENT);
        b3.statements().add(0, printStatement);
        cc.setBody(b3);
        ListRewrite parentList = rewriter.getListRewrite(currentNode.getParent(), Block.STATEMENTS_PROPERTY);
        parentList.replace(currentNode, ts, null);
        parentList.insertAfter(cc, ts, null);

        ITextFileBufferManager bm = FileBuffers.getTextFileBufferManager();
        IPath path = compunit.getJavaElement().getPath();
        try {
            bm.connect(path, null, null);
            ITextFileBuffer textFileBuffer = bm.getTextFileBuffer(path, null);
            IDocument document = textFileBuffer.getDocument();
            TextEdit edits = rewriter.rewriteAST(document, null);
            edits.apply(document);
            textFileBuffer.commit(null, false);

        } catch (CoreException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (MalformedTreeException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (BadLocationException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } finally {
            try {
                bm.disconnect(path, null, null);
            } catch (CoreException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } // (4)
        }
        marker.delete();
    } catch (JavaModelException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } catch (CoreException e1) {
        // TODO Auto-generated catch block
        e1.printStackTrace();
    } catch (IOException e1) {
        // TODO Auto-generated catch block
        e1.printStackTrace();
    }

}

From source file:org.evosuite.eclipse.quickfixes.TestGenerationTrigger.java

License:Open Source License

/**
 * Add a new test generation job to the job queue
 * //from  w  ww  .j a v  a 2 s  . c o m
 * @param target
 */
@Override
protected void addTestJob(final IResource target) {
    //TODO: Must do a merging instead of over writing entire test suite
    IJavaElement element = JavaCore.create(target);
    if (element == null) {
        return;
    }
    IJavaElement packageElement = element.getParent();

    String packageName = packageElement.getElementName();

    final String targetClass = (!packageName.isEmpty() ? packageName + "." : "")
            + target.getName().replace(".java", "").replace(File.separator, ".");
    System.out.println("Building new job for " + targetClass);
    job = new TestGenerationJob(shell, target, targetClass);
    job.setPriority(Job.DECORATE);
    job.schedule();
}

From source file:org.fastcode.popup.actions.easycreate.NewMemberCreateActionSupport.java

License:Open Source License

@Override
public void runAction(ICompilationUnit compUnit, final IJavaElement javaElement) throws Exception {
    this.preferenceStore = new ScopedPreferenceStore(new InstanceScope(), FAST_CODE_PLUGIN_ID);
    //final Map<Object, Map<String, Object>> commitMessage = new HashMap<Object, Map<String,Object>>();
    String placeHolder = EMPTY_STR;
    FastCodeField origField = null;//from   w  w w  .ja v  a 2s  .  c o  m
    boolean createFileAlone = false;
    boolean prjConfigured = false;
    this.createVariableData = getCreateVariableData(compUnit);
    if (this.createVariableData == null) {
        return;
    }
    if (this.createVariableData.isVariableModifyAction()) {
        placeHolder = PLACEHOLDER_MODIFY_FIELD;
        origField = new FastCodeField(
                compUnit.findPrimaryType().getField(this.createVariableData.getModifiedVarOrigName()));
        deleteVariableInClass(compUnit);
    } else {
        placeHolder = PLACEHOLDER_FIELDS;
    }

    if (this.createVariableData.isCreateClassSimple() || this.createVariableData.isCreateClassDetailed()) {
        final String prjURI = this.createVariableData.getPackageFragment().getResource().getLocationURI()
                .toString();
        final String path = prjURI.substring(prjURI.indexOf(COLON) + 1);
        final File newFileObj = new File(path + FILE_SEPARATOR + this.createVariableData.getClassName() + DOT
                + this.createVariableData.getCompUnitType());
        final RepositoryService svnrepo = new SVNRepositoryService();
        this.prjShared = !isEmpty(this.createVariableData.getPackageFragment().getResource().getProject()
                .getPersistentProperties());
        prjConfigured = !isEmpty(isPrjConfigured(
                this.createVariableData.getPackageFragment().getResource().getProject().getName()));
        if (this.autoCheckinEnabled && this.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")) {
                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;
                }
            }
        } else {
            createFileAlone = true;
        }
        //final FastCodeCheckinCache checkinCache = FastCodeCheckinCache.getInstance();
        addOrUpdateFileStatusInCache(newFileObj);
        //checkinCache.getFilesToCheckIn().add(new FastCodeFileForCheckin(INITIATED, newFileObj.getAbsolutePath()));
        compUnit = createClass(this.createVariableData);
        compUnit.becomeWorkingCopy(new NullProgressMonitor());
        final IEditorPart javaEditor = JavaUI.openInEditor(compUnit.findPrimaryType());
        JavaUI.revealInEditor(javaEditor, (IJavaElement) compUnit.findPrimaryType());

        //final File newFile = new File(compUnit.findPrimaryType().getResource().getLocationURI());
        if (!createFileAlone) {
            final IFile newFile = (IFile) compUnit.findPrimaryType().getResource(); //.getLocationURI());
            List<FastCodeEntityHolder> chngsForType = this.commitMessage.get(newFile);
            if (chngsForType == null) {
                chngsForType = new ArrayList<FastCodeEntityHolder>();
                chngsForType.add(new FastCodeEntityHolder(PLACEHOLDER_CLASS,
                        new FastCodeType(compUnit.findPrimaryType())));
            }
            this.commitMessage.put(newFile, chngsForType);
        }
        this.editorPart = javaEditor;
    } else {
        this.prjShared = !isEmpty(compUnit.getResource().getProject().getPersistentProperties());
        prjConfigured = !isEmpty(isPrjConfigured(compUnit.getResource().getProject().getName()));
        if (!(this.autoCheckinEnabled && this.prjShared && prjConfigured)) {
            createFileAlone = true;
        }
        /*if (!this.autoCheckinEnabled || !this.prjShared || !prjConfigured) {
           createFileAlone = true;
        }*/
        final FastCodeCheckinCache checkinCache = FastCodeCheckinCache.getInstance();
        addOrUpdateFileStatusInCache(new File(compUnit.findPrimaryType().getResource().getLocationURI()));
        //checkinCache.getFilesToCheckIn().add(new FastCodeFileForCheckin(INITIATED, new File(compUnit.findPrimaryType().getResource().getLocationURI()).getAbsolutePath()));
    }
    IType type = compUnit.findPrimaryType();
    //final File file = new File(compUnit.findPrimaryType().getResource().getLocationURI());
    final IFile file = (IFile) compUnit.findPrimaryType().getResource();

    if (javaElement instanceof IMember) {
        final IMember member = (IMember) javaElement;
        final IType declaringType = member.getDeclaringType();
        type = declaringType != null && declaringType.exists() ? declaringType : compUnit.findPrimaryType();
    }

    IField field = null;
    IMethod method = null;
    //final IType leftType = null, rightType = null;

    final boolean simpleType = isSimpleType();
    /*if (!simpleType) {
       leftType = compUnit.getJavaProject().findType(pair.getLeft());
       rightType = compUnit.getJavaProject().findType(pair.getRight());
            
       this.addImport(compUnit, leftType);
       this.addImport(compUnit, rightType);
    }*/

    /*if (paramTypes != null) {
       for (final IType paramType : paramTypes) {
    this.addImport(compUnit, paramType);
       }
    }*/

    for (final String importType : getEmptyListForNull(this.createVariableData.getImportTypes())) {
        final IType imprtType = compUnit.getJavaProject().findType(importType);
        final IImportDeclaration importDeclaration = createImport(compUnit, imprtType,
                compUnit.getResource().getFileExtension());
        //addImport(compUnit, compUnit.getJavaProject().findType(importType));
    }

    String fieldName = null;

    String fieldSrc = null;
    //final String defaultFieldName;

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

    /*if (simpleType) {
       defaultFieldName = createDefaultInstance(paramTypes[0].getElementName());
    } else {
       defaultFieldName = paramTypes != null && paramTypes.length > 0 ? makeName(paramTypes[paramTypes.length - 1], leftType) : MY_NEW + leftType.getElementName();
       //         fieldNames[0] = fieldName;
       //         fieldSrc = createFieldSourceWithParameter(new Pair<IType, IType>(leftType, rightType), paramTypes, fieldName, Flags.AccPrivate);
    }
    final InputDialog inputDialog = new InputDialog(shell, "Create Field", "Enter a name or names (space separated) for the field", defaultFieldName,
    new IInputValidator() {
       public String isValid(final String newText) {
    if (isEmpty(newText)) {
       return "Input cannot be blank";
    }
    return null;
       }
    });
            
    final int retCode = inputDialog.open();
    final String[] fieldNames = inputDialog.getValue().split("\\s+");
    if (retCode == Window.CANCEL || fieldNames == null || fieldNames.length == 0) {
       return;
    }*/
    boolean customFormat = false;
    String setterCustomFormat = EMPTY_STR;
    String getterCustomFormat = EMPTY_STR;
    if (this.preferenceStore.getString(P_GETTER_SETTER_FORMAT).equals("custom")) {
        customFormat = true;
        setterCustomFormat = this.preferenceStore.getString(P_SETTER_CUSTOM_FORMAT);
        getterCustomFormat = this.preferenceStore.getString(P_GETTER_CUSTOM_FORMAT);
    }
    int elementType = javaElement == null ? TYPE : javaElement.getElementType();
    if (simpleType) {
        elementType = TYPE;
    } else {
        if (elementType == METHOD) {
            final String[] choices = { "Create Snippet", "Create Field" };

            final String choice = getChoiceFromMultipleValues(shell, "You are inside a method",
                    "Would You Like To", choices);
            final int result = findInStringArray(choice, choices);
            if (result == 1) {
                elementType = TYPE;
            }
        }
    }
    final IJavaElement insertionPoint = this.createVariableData.getInsertionPoint();
    final String[] fieldNames = this.createVariableData.getFieldNames();
    switch (elementType) {
    case TYPE:
        /*
         * if (checkIfFieldExists(type, fieldName)) { return; } field =
         * type.createField(fieldSrc, null, false, null); break;
         */
    case FIELD:
        //final GETTER_SETTER createGetterSetter = this.createVariableData.getGetterSetter(); //
        //final GETTER_SETTER createGetterSetter = this.getGetterSetterChoice(simpleType);
        if (this.createVariableData.getGetterSetter() == null) {
            this.createVariableData.setGetterSetter(getGetterSetterChoice(isSimpleType()));
        }
        if (this.createVariableData.isBuilderReqd()) {
            this.createVariableData.setGetterSetter(GETTER_SETTER.GETTER_EXIST);
            type = compUnit.findPrimaryType();
        }
        for (int i = 0; i < fieldNames.length; i++) {

            if (doesFieldExistsInType(type, fieldNames[i])) {
                MessageDialog.openWarning(shell, "Warning",
                        "Field with name " + fieldNames[i] + " already exists.");
                continue;
            }

            final IJavaElement sibling = elementType == FIELD ? findNextElement(type, (IField) javaElement)
                    : null;
            //if (simpleType) {
            fieldSrc = this.fieldBuilderImpl.buildFieldSource(null, this.createVariableData, fieldNames[i]);
            // fieldSrc = "private " + paramTypes[0].getElementName() +
            // SPACE + fieldNames[i] + ";" + NEWLINE;
            //   } else {
            /*fieldSrc = createFieldSourceWithParameter(new Pair<IType, IType>(leftType, rightType), paramTypes, fieldNames[i], createGetterSetter,
             Flags.AccPrivate);*/
            //}
            /*final File fileObj = new File(type.getResource().getLocationURI().toString());
            final FastCodeCheckinCache checkinCache = FastCodeCheckinCache.getInstance();
            checkinCache.getFilesToCheckIn().add(new FastCodeFileForCheckin(INITIATED, fileObj.getAbsolutePath()));*/

            if (this.createVariableData.getStringInsertionPoint() != null) {
                if (this.createVariableData.getStringInsertionPoint().equals("First Member")) {
                    int posOfField = 0;
                    IJavaElement element = null;
                    if (insertionPoint != null) {
                        posOfField = type.getCompilationUnit().getSource()
                                .indexOf(insertionPoint.getElementName()) - 1;
                        element = compUnit.getElementAt(posOfField);
                    }

                    field = type.createField(fieldSrc, element, false, null);

                } else if (this.createVariableData.getStringInsertionPoint().equals("Last Member")) {
                    field = type.createField(fieldSrc, null, false, null);

                } else if (insertionPoint != null) {
                    field = type.createField(fieldSrc, insertionPoint, false, null);

                }
            } else {

                field = type.createField(fieldSrc, sibling, false, null);

            }
            List<FastCodeMethod> methods = null;
            if (customFormat) {
                methods = createGetterSettersWithCustomFormat(type, field, this.createVariableData,
                        setterCustomFormat, getterCustomFormat);
            } else {
                methods = createGetterSetters(type, field, this.createVariableData);
            }
            //createGetterSetters(type, field, paramTypes, createGetterSetter);
            fieldName = fieldNames[i];
            if (!createFileAlone) {
                FastCodeField fcField;
                if (this.createVariableData.isVariableModifyAction()) {
                    fcField = origField;
                } else {
                    fcField = new FastCodeField(field);
                }

                fcField.setGettersetter(
                        GETTER_SETTER.getFormattedValue(this.createVariableData.getGetterSetter().getValue()));
                //            ((List<Object>) fastCodeFieldList).add(fcField);
                fcField.setBuilderPattern(this.createVariableData.isBuilderReqd());
                List<FastCodeEntityHolder> chngesForType = this.commitMessage.get(file);
                if (chngesForType == null) {
                    chngesForType = new ArrayList<FastCodeEntityHolder>();
                    final List<Object> fastCodeFieldList = new ArrayList<Object>();
                    fastCodeFieldList.add(fcField);
                    chngesForType.add(new FastCodeEntityHolder(placeHolder, fastCodeFieldList));
                } else {
                    boolean isNew = true;
                    Object fastCodeFieldList = null;
                    for (final FastCodeEntityHolder fcEntityHolder : chngesForType) {
                        if (fcEntityHolder.getEntityName().equals(placeHolder)) {
                            fastCodeFieldList = fcEntityHolder.getFastCodeEntity();
                            isNew = false;
                            break;
                        }
                    }

                    if (isNew) {
                        fastCodeFieldList = new ArrayList<Object>();
                        ((List<Object>) fastCodeFieldList).add(fcField);
                        chngesForType.add(new FastCodeEntityHolder(placeHolder, fastCodeFieldList));
                    } else {
                        ((List<Object>) fastCodeFieldList).add(fcField);
                    }
                }
                this.commitMessage.put(file, chngesForType);
            }

            /*if (this.createVariableData.getGetterSetter() != null) {
               commitMessage.get(compUnit.findPrimaryType()).put(method, value)
            }*/
        }
        break;
    case METHOD:
        if (simpleType) {
            MessageDialog.openError(shell, "Error", "This feature does not work in a method. "
                    + "Please put the cursor on a field or the class name.");
            return;
        }
        fieldName = fieldNames[0];
        //fieldSrc = createFieldSourceWithParameter(new Pair<IType, IType>(leftType, rightType), paramTypes, fieldName, GETTER_SETTER.NONE, Flags.AccDefault);
        this.createVariableData.setAccessModifier(ACCESS_MODIFIER.DEFAULT);
        this.createVariableData.setGetterSetter(GETTER_SETTER.NONE);
        fieldSrc = this.fieldBuilderImpl.buildFieldSource(null, this.createVariableData, fieldNames[0]);
        method = (IMethod) javaElement;
        final ITextSelection selection = (ITextSelection) this.editorPart.getEditorSite().getSelectionProvider()
                .getSelection();

        if (!isOnEmpltyLine(selection, method.getDeclaringType().getCompilationUnit().getSource())) {
            if (!MessageDialog.openConfirm(this.editorPart.getSite().getShell(), "Selection Error",
                    "Your cursor may not be on an empty line. Yes to continue, No to bailout.")) {
                return;
            }
        }

        createNewTypedMemberInMethod(method, fieldSrc, selection.getOffset());

        if (this.autoCheckinEnabled && this.prjShared && prjConfigured) {
            final FastCodeReturn localVar = new FastCodeReturn(fieldName, null);
            List<FastCodeEntityHolder> chngesForType = this.commitMessage.get(file);
            if (chngesForType == null) {
                chngesForType = new ArrayList<FastCodeEntityHolder>();
                final List<Object> factCodeReturnList = new ArrayList<Object>();
                factCodeReturnList.add(localVar);
                chngesForType.add(new FastCodeEntityHolder(PLACEHOLDER_LOCALVARS, factCodeReturnList));
            } else {
                boolean isNew = true;
                Object factCodeReturnList = null;
                for (final FastCodeEntityHolder fcEntityHolder : chngesForType) {
                    if (fcEntityHolder.getEntityName().equals(PLACEHOLDER_LOCALVARS)) {
                        factCodeReturnList = fcEntityHolder.getFastCodeEntity();
                        isNew = false;
                        break;
                    }
                }

                if (isNew) {
                    factCodeReturnList = new ArrayList<Object>();
                    ((List<Object>) factCodeReturnList).add(localVar);
                    chngesForType.add(new FastCodeEntityHolder(PLACEHOLDER_LOCALVARS, factCodeReturnList));
                } else {
                    ((List<Object>) factCodeReturnList).add(localVar);
                }
            }
            this.commitMessage.put(file, chngesForType);
        }

        break;
    default:
        break;
    }

    if (field != null) {
        this.selection = new TextSelection(field.getNameRange().getOffset(),
                fieldName.equals(MY_NEW) ? MY_NEW.length() : fieldName.length());
    } else if (method != null) {
        final int start = ((ITextSelection) this.selection).getOffset() + fieldSrc.indexOf(fieldName);
        this.selection = new TextSelection(start,
                fieldName.equals(MY_NEW) ? MY_NEW.length() : fieldName.length());
    }
    if (this.selection != null) {
        this.editorPart.getEditorSite().getSelectionProvider().setSelection(this.selection);
    }
    if (this.createVariableData.isBuilderReqd()) {
        createBuilderMethods(type);
    }
    if (this.createVariableData.isCreateClassSimple() || this.createVariableData.isCreateClassDetailed()) {
        compUnit.commitWorkingCopy(false, null);
        compUnit.discardWorkingCopy();
        if (!this.commitMessage.isEmpty()) {
            final RepositoryService checkin = getRepositoryServiceClass();
            checkin.commitToRepository(this.commitMessage, false);
        }
    }
    this.createVariableData = null;
}

From source file:org.fastcode.popup.actions.OpenRequiredClassesAction.java

License:Open Source License

private boolean matchPattern(final IJavaElement javaElement, final String pattern) {
    final Pattern pattrn = Pattern.compile(pattern);
    System.out.println(javaElement.getElementName());
    final Matcher matcher = pattrn.matcher(javaElement.getElementName());
    return matcher.matches();

    //return javaElement.getElementName().matches(pattern);
}

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

License:Open Source License

/**
 * @param fastCodeContext/* w w w .  ja va2s  .c o  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.fastcode.util.SourceUtil.java

License:Open Source License

/**
 * @param workingJavaProject/*w ww .  j a  v  a  2s.  c  o m*/
 * @param pkgFrgmRoots
 * @param allPackages
 * @param defaultPath
 * @throws JavaModelException
 */
private static void getPackagesForFragment(final IJavaProject workingJavaProject,
        final IPackageFragmentRoot[] pkgFrgmRoots, final List<IPackageFragment> allPackages,
        final String defaultPath) throws JavaModelException {
    for (final IPackageFragmentRoot packageFragmentRoot : pkgFrgmRoots) {
        if (!packageFragmentRoot.isArchive()) {
            for (final IJavaElement pkg : packageFragmentRoot.getChildren()) {
                if (pkg != null && !isEmpty(pkg.getElementName()) && pkg instanceof IPackageFragment
                        && !(pkg instanceof IFolder)) {
                    final IClassFile classFile[] = ((IPackageFragment) pkg).getClassFiles();
                    final GlobalSettings globalSettings = getInstance();
                    //final String defaultPath = getDefaultPathFromProject(workingJavaProject);
                    /*String defaultPath = globalSettings.getSourcePathJava();
                    final String[][] entryNamesAndValues = getSourcePathsForProject(workingJavaProject.getElementName());
                    for (int i = 0; i < entryNamesAndValues.length; i++) {
                       if (!entryNamesAndValues[i][0].trim().equals(EMPTY_STR)) {
                          if (defaultPath.contains(entryNamesAndValues[i][0])) {
                             defaultPath = entryNamesAndValues[i][0];
                             break;
                            
                          }
                       }
                    }*/
                    if (globalSettings.isUseDefaultForPath()) {
                        if (((IPackageFragment) pkg).getPath().toString().contains(defaultPath)) {
                            allPackages.add((IPackageFragment) pkg);
                        }
                    } else {
                        allPackages.add((IPackageFragment) pkg);
                    }
                }
            }
        }
    }
}

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

License:Open Source License

/**
 * @param compilationUnit//from ww  w  . ja  va 2s .  c  om
 * @return
 * @throws Exception
 */
public static List<FastCodeReturn> getLocalVarFromCompUnit(final ICompilationUnit compilationUnit,
        final IEditorPart editorPart) throws Exception {
    final ASTParser parser = ASTParser.newParser(AST.JLS3);
    parser.setKind(ASTParser.K_COMPILATION_UNIT);
    parser.setSource(compilationUnit);
    parser.setResolveBindings(true);
    final IJavaElement currentMethod = findSelectedJavaElement(compilationUnit, editorPart);
    if (currentMethod == null) {
        return new ArrayList<FastCodeReturn>();
    }
    final CompilationUnit parse = (CompilationUnit) parser.createAST(null);
    final FastCodeVisitor methodVisitor = new FastCodeVisitor(currentMethod.getElementName(), compilationUnit);
    parse.accept(methodVisitor);
    final Shell parentShell = MessageUtil.getParentShell();
    final List<FastCodeReturn> variablesList = methodVisitor.getFastCodeReturns();
    for (final Object obj : methodVisitor.getMethodDecln().parameters()) {
        final VariableDeclaration variableDeclaration = (VariableDeclaration) obj;
        final String type = variableDeclaration.getStructuralProperty(SingleVariableDeclaration.TYPE_PROPERTY)
                .toString();
        final FastCodeReturn fastCodeReturn = new FastCodeReturn(variableDeclaration.getName().toString(),
                new FastCodeType(getFQNameFromFieldTypeName(type.toString(), compilationUnit)));
        variablesList.add(fastCodeReturn);
    }
    return variablesList;
}

From source file:org.fusesource.ide.jvmmonitor.internal.ui.actions.OpenDeclarationAction.java

License:Open Source License

/**
 * Gets the method name range.//from w  w w .  j  a  v a2 s .  co  m
 * 
 * @param javaElements
 *            The java elements
 * @param level
 *            The inner class level
 * @param sourceRanges
 *            The candidates of source range
 * @throws JavaModelException
 */
private void getMethodNameRange(IJavaElement[] javaElements, int level, LinkedList<ISourceRange> sourceRanges)
        throws JavaModelException {
    for (IJavaElement javaElement : javaElements) {
        if (!(javaElement instanceof IMethod)) {
            continue;
        }

        if (innterClassIndices.size() > level) {
            IJavaElement[] types = ((IMethod) javaElement).getChildren();
            if (types != null && types.length == 1 && types[0] instanceof IType) {
                getMethodNameRange(((IType) types[0]).getChildren(), level + 1, sourceRanges);
            }
            continue;
        }

        // check the method name
        if (!(methodName.equals(javaElement.getElementName()))) {
            continue;
        }

        // check the method arguments
        String[] paramTypes = ((IMethod) javaElement).getParameterTypes();
        String[] readableParamTypes = getReadableParamTypes(paramTypes);
        boolean isMatch = true;
        for (int i = 0; i < readableParamTypes.length; i++) {
            if (parameters.length == i) {
                break;
            }
            if (!readableParamTypes[i].equals(parameters[i])) {
                isMatch = false;

                // keep the similar method
                sourceRanges.addLast(((IMethod) javaElement).getNameRange());
                break;
            }
        }

        if (isMatch) {
            sourceRanges.addFirst(((IMethod) javaElement).getNameRange());
            break;
        }
    }
}

From source file:org.fusesource.ide.jvmmonitor.internal.ui.properties.cpu.actions.AddPackageDialog.java

License:Open Source License

/**
 * Adds the package.//from ww w .  j a v a2  s. c o  m
 * 
 * @param packageElements
 *            The package elements into which package is added
 * @param element
 *            The element which contains package element to be added
 * @throws JavaModelException
 */
private void addPackage(Set<String> packageElements, IJavaElement element) throws JavaModelException {

    // java source folder
    if (element instanceof IPackageFragmentRoot) {
        int kind = ((IPackageFragmentRoot) element).getKind();
        if (kind == IPackageFragmentRoot.K_SOURCE) {
            IJavaElement[] children = ((IPackageFragmentRoot) element).getChildren();
            for (IJavaElement child : children) {
                addPackage(packageElements, child);
            }
        }
    }

    // java package
    if (element instanceof IPackageFragment) {
        IJavaElement[] children = ((IPackageFragment) element).getChildren();
        for (IJavaElement child : children) {
            if (IJavaElement.COMPILATION_UNIT == child.getElementType()) {
                packageElements.add(element.getElementName());
                break;
            }
        }
    }
}