diff --git a/org.ntlab.refactoring.decouplingClasses/src/org/ntlab/refactoring/decouplingClasses/DecoupleClassesRefactoringProcessor.java b/org.ntlab.refactoring.decouplingClasses/src/org/ntlab/refactoring/decouplingClasses/DecoupleClassesRefactoringProcessor.java index b9efdf4..6f3f647 100644 --- a/org.ntlab.refactoring.decouplingClasses/src/org/ntlab/refactoring/decouplingClasses/DecoupleClassesRefactoringProcessor.java +++ b/org.ntlab.refactoring.decouplingClasses/src/org/ntlab/refactoring/decouplingClasses/DecoupleClassesRefactoringProcessor.java @@ -230,19 +230,19 @@ String newSource = document.get(); workingCopy.getBuffer().setContents(newSource); - change.add(new CreateNewClassChange(cu, document.get())); +// change.add(new CreateNewClassChange(cu, document.get())); workingCopy.discardWorkingCopy(); // TODO: �SCfrom�ɂ����Ő��������N���X��import����lj� // add refactor -// for(Node refactor : refactoringTasks) { -// RefactoringApplication app = (RefactoringApplication)refactor; -// app.setWrapperClass(typeDeclaration); -// app.setTargetClass(descriptor.getTargetType()); -// change.add(app); -// } + for(Node refactor : refactoringTasks) { + RefactoringApplication app = (RefactoringApplication)refactor; + app.setWrapperClass(typeDeclaration); + app.setTargetClass(descriptor.getTargetType()); + change.add(app); + } return change; } diff --git a/org.ntlab.refactoring.decouplingClasses/src/org/ntlab/refactoring/decouplingClasses/refactoringApplication/ReturnWholeObject.java b/org.ntlab.refactoring.decouplingClasses/src/org/ntlab/refactoring/decouplingClasses/refactoringApplication/ReturnWholeObject.java index 19ee282..f2fe54b 100644 --- a/org.ntlab.refactoring.decouplingClasses/src/org/ntlab/refactoring/decouplingClasses/refactoringApplication/ReturnWholeObject.java +++ b/org.ntlab.refactoring.decouplingClasses/src/org/ntlab/refactoring/decouplingClasses/refactoringApplication/ReturnWholeObject.java @@ -76,85 +76,85 @@ System.out.println("node: " + getNode().toString()); System.out.println("return type: " + methodDecl.getReturnType2()); -// IPath path = cu.getJavaElement().getPath(); -//// Document document = new Document(cu.toString()); -// ASTRewrite rewrite = ASTRewrite.create(cu.getAST()); -//// cu.recordModifications(); -// // results.add(ast.newSimpleType(ast.newSimpleName(typeBinding.getName()))); // Type�ݒ�T���v�� -// // fieldDeclaration.setType(results.get(0)); -// ASTNode node = getNode(); -// AST ast = methodDecl.getAST(); -// -// Type t = ast.newSimpleType(ast.newSimpleName(wrapperClass.getName().toString())); -// rewrite.set(methodDecl, MethodDeclaration.RETURN_TYPE2_PROPERTY, t, null); -// -// IMethodBinding methodBinding = methodDecl.resolveBinding(); -// IMethod iMethod = (IMethod) methodBinding.getJavaElement(); -// IType tt = iMethod.getDeclaringType(); -// -// TargetOccurenceSearchEngine searchEngine = new TargetOccurenceSearchEngine(); -// HashMap> clients = searchEngine.searchMethodInvocationAsts(tt, iMethod); -// -//// Type t = ast.newSimpleType(ast.newSimpleName("String")); // Type�ݒ�T���v�� -//// methodDecl.setReturnType2(t); -// -// // return������getCTarget����菜���Ė߂�l�̌^��CNew�ɕύX -// MyReturnStatementVisitorForReturnWholeObject visitor = new MyReturnStatementVisitorForReturnWholeObject(rewrite, getNode()); -// cu.accept(visitor); -// ASTNode removedInvocation = visitor.getRemovedInvocation(); -// try { -// ITextFileBufferManager bufferManager = FileBuffers.getTextFileBufferManager(); -// bufferManager.connect(path, null); -// ITextFileBuffer textFileBuffer = bufferManager.getTextFileBuffer(path); -// IDocument document = textFileBuffer.getDocument(); -// TextEdit edit = rewrite.rewriteAST(document, null); -// edit.apply(document); -// textFileBuffer.commit(null /* ProgressMonitor */, true /* Overwrite */); -// } catch (MalformedTreeException e) { -// // TODO Auto-generated catch block -// e.printStackTrace(); -// } catch (BadLocationException e) { -// // TODO Auto-generated catch block -// e.printStackTrace(); -// } catch (CoreException e) { -// // TODO Auto-generated catch block -// e.printStackTrace(); -// } -// -// -// // CompilationUnit���Ƃ�getCTarget�̕t�^�����Ă��� -// for(CompilationUnit cu : clients.keySet()) { -// IPath cupath = cu.getJavaElement().getPath(); -// ArrayList nodes = clients.get(cu); -// ASTRewrite rewrite2 = ASTRewrite.create(cu.getAST()); -// for(MethodInvocation invocation : nodes) { -// MethodInvocation copiedNode = (MethodInvocation) ASTNode.copySubtree(invocation.getAST(), invocation); -// AST ast2 = copiedNode.getAST(); -// // getCTarget�̕t�^ -// MethodInvocation newInvocation = ast2.newMethodInvocation(); -// newInvocation.setExpression(copiedNode); -// newInvocation.setName(ast2.newSimpleName(removedInvocation.toString())); -// rewrite2.replace(invocation, newInvocation, null); -// } -// try { -// ITextFileBufferManager bufferManager = FileBuffers.getTextFileBufferManager(); -// bufferManager.connect(cupath, null); -// ITextFileBuffer textFileBuffer = bufferManager.getTextFileBuffer(cupath); -// IDocument document = textFileBuffer.getDocument(); -// TextEdit edit = rewrite2.rewriteAST(document, null); -// edit.apply(document); -// textFileBuffer.commit(null /* ProgressMonitor */, true /* Overwrite */); -// } catch (MalformedTreeException e) { -// // TODO Auto-generated catch block -// e.printStackTrace(); -// } catch (BadLocationException e) { -// // TODO Auto-generated catch block -// e.printStackTrace(); -// } catch (CoreException e) { -// // TODO Auto-generated catch block -// e.printStackTrace(); -// } -// } + IPath path = cu.getJavaElement().getPath(); +// Document document = new Document(cu.toString()); + ASTRewrite rewrite = ASTRewrite.create(cu.getAST()); +// cu.recordModifications(); + // results.add(ast.newSimpleType(ast.newSimpleName(typeBinding.getName()))); // Type�ݒ�T���v�� + // fieldDeclaration.setType(results.get(0)); + ASTNode node = getNode(); + AST ast = methodDecl.getAST(); + + Type t = ast.newSimpleType(ast.newSimpleName(wrapperClass.getName().toString())); + rewrite.set(methodDecl, MethodDeclaration.RETURN_TYPE2_PROPERTY, t, null); + + IMethodBinding methodBinding = methodDecl.resolveBinding(); + IMethod iMethod = (IMethod) methodBinding.getJavaElement(); + IType tt = iMethod.getDeclaringType(); + + TargetOccurenceSearchEngine searchEngine = new TargetOccurenceSearchEngine(); + HashMap> clients = searchEngine.searchMethodInvocationAsts(tt, iMethod); + +// Type t = ast.newSimpleType(ast.newSimpleName("String")); // Type�ݒ�T���v�� +// methodDecl.setReturnType2(t); + + // return������getCTarget����菜���Ė߂�l�̌^��CNew�ɕύX + MyReturnStatementVisitorForReturnWholeObject visitor = new MyReturnStatementVisitorForReturnWholeObject(rewrite, getNode()); + cu.accept(visitor); + ASTNode removedInvocation = visitor.getRemovedInvocation(); + try { + ITextFileBufferManager bufferManager = FileBuffers.getTextFileBufferManager(); + bufferManager.connect(path, null); + ITextFileBuffer textFileBuffer = bufferManager.getTextFileBuffer(path); + IDocument document = textFileBuffer.getDocument(); + TextEdit edit = rewrite.rewriteAST(document, null); + edit.apply(document); + textFileBuffer.commit(null /* ProgressMonitor */, true /* Overwrite */); + } catch (MalformedTreeException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } catch (BadLocationException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } catch (CoreException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + + + // CompilationUnit���Ƃ�getCTarget�̕t�^�����Ă��� + for(CompilationUnit cu : clients.keySet()) { + IPath cupath = cu.getJavaElement().getPath(); + ArrayList nodes = clients.get(cu); + ASTRewrite rewrite2 = ASTRewrite.create(cu.getAST()); + for(MethodInvocation invocation : nodes) { + MethodInvocation copiedNode = (MethodInvocation) ASTNode.copySubtree(invocation.getAST(), invocation); + AST ast2 = copiedNode.getAST(); + // getCTarget�̕t�^ + MethodInvocation newInvocation = ast2.newMethodInvocation(); + newInvocation.setExpression(copiedNode); + newInvocation.setName(ast2.newSimpleName(removedInvocation.toString())); + rewrite2.replace(invocation, newInvocation, null); + } + try { + ITextFileBufferManager bufferManager = FileBuffers.getTextFileBufferManager(); + bufferManager.connect(cupath, null); + ITextFileBuffer textFileBuffer = bufferManager.getTextFileBuffer(cupath); + IDocument document = textFileBuffer.getDocument(); + TextEdit edit = rewrite2.rewriteAST(document, null); + edit.apply(document); + textFileBuffer.commit(null /* ProgressMonitor */, true /* Overwrite */); + } catch (MalformedTreeException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } catch (BadLocationException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } catch (CoreException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + } System.out.println(""); return null; }