2012-11-13 2 views
7

다른 리팩터링 리팩토링을 호출하도록 Eclipse의 이름 바꾸기 리팩터링을 확장하려고합니다.완료 후 다른 리팩토링을 트리거하도록 Eclipse의 이름 바꾸기 리팩토링을 확장하는 방법

public class Person { 
    ... 
} 

public class PersonDAO { 
    public List<Person> getPersonByName(String name) { 
    ... 
    } 
} 

는 사용자에 Person 클래스의 이름을 변경 한 후, 나는 getPersonByName 같은 방법 getUserByName로 이름을 변경하고 싶습니다.

나는 RenameParticipant를 확장했으며 JDT 이름 바꾸기 리팩터링과 ASTRewrite를 모두 사용하여이 작업을 시도했습니다.

문제는 내가 만든 변경 사항이 원래 이름 변경 리팩토링 변경 사항과 충돌합니다.
postCreateChange을 사용할 수 없었습니다 (기본 프로세서가 null을 반환하는 것 같습니다). 이제 막혔습니다.

도움을 주시면 감사하겠습니다.

+0

원래 이름 변경 리팩터링 변경 사항으로 인해 변경된 사항은 무엇입니까? – reprogrammer

답변

1

메서드에서 정의 된 String "Person"을 리팩터링을 통해 새 값 "User"로 변경할 필요가 없습니다.

하지만 당신은 전체 작업 공간 필요한 문자열을 검색하고 새로운 가치로 교체 Ctrl 키 + H를 사용할 수 있습니다. 당신이 버튼을 바꾸기를 클릭하면

enter image description here

는, Eclipse는 당신에게 건네 줄 문자열을 raplace 할 새 값을 요청합니다.

1

더 나은 제안 :

1)를 사용하여 최대 절전 모드. 그런 다음 Criteria API를 사용할 것이고, "Person"을 중복해서 지정할 필요가 없으며 다른 제한/기준을 모듈 방식으로 첨부 할 수 있습니다. 목록/검색 페이지에 좋습니다.

2) API getByName()을 호출하십시오. List people = personDao.getPersonByName ("...")은 이미 중복 된 반복적 인 비트입니다.

모든 것이 이전 프로젝트에서 본 DAO, 데이터베이스 액세스 또는 지속성을 수행하는 '잘못된 방법'과 비슷하게 보입니다. 지나치게 말만하지만 유연하지 못한 & 유틸리티 기준이 낮은 조합은 90 년대 중반에 수동으로 작성된 지속성 또는 서비스를 나쁘게 생각 나게합니다.

관련 문제