How to get path of file which isn't in newest version but is a part of previous changelist in RTC scm.
All I could achieve so far is this:
IFileItemHandle fileItemHandle = (IFileItemHandle) IFileItem.ITEM_TYPE.createItemHandle(change.afterState().getItemId(), change.afterState().getStateId());
file = versionableManager.fetchCompleteState(fileItemHandle, monitor);
if (file instanceof IFolder) {         
    IFolder folder = (IFolder) file;         
    relativePath = getFilePath(file, workspaceConnection.configuration(changeSet.getComponent()), monitor);
    fileName = folder.getName();      
} else {
    relativePath = getFilePath(file, workspaceConnection.configuration(changeSet.getComponent()), monitor);    
    fileName = ((FileItem) file).getName();     
}
Where getFilePath is:
private String getFilePath(IVersionableHandle folder, IConfiguration config, IProgressMonitor monitor, Boolean searchInHistory) throws TeamRepositoryException {
    List lst = new ArrayList<IVersionableHandle>(), ancestors;
    lst.add(folder);
    if (searchInHistory) {
        ancestors = config.determineAncestorsInHistory(lst, monitor);
    } else {
        ancestors = config.locateAncestors(lst, monitor);
    }
    return getFullPath(ancestors);
}
private String getFullPath(List ancestor) throws TeamRepositoryException {
    String directoryPath = "";
    for (Object ancestorObj : ancestor) {
        IAncestorReport ancestorImpl = (IAncestorReport) ancestorObj;
        for (Object nameItemPairObj : ancestorImpl.getNameItemPairs()) {
            INameItemPair nameItemPair = (INameItemPair) nameItemPairObj;
            String pathName = nameItemPair.getName();
            if (pathName != null && !pathName.equals("")) {
                directoryPath = directoryPath + "\\" + pathName;
            }
        }
    }
    return directoryPath;
}
Unfortunately it doesn't work perfectly. If filename is changed in following changelists like on this example:
Changelist 1:     
add file: src/newFile.java
Changelist 2:     
modify file: src/newFile.java
Changelist 3:     
rename file: src/newFile.java -> src/newFile_rename.java
The relative path resolved in first changelist would be:
src/newFile_rename.java
instead of
src/newFile.java
How to make it works good?
 
     
    