2013-05-07 17 views
1

到fetchCompleteState是否有fetchCompleteState上versionableManager獲取的歷史文件中的數據的任何等同方法?我在與檢索以前的變更列表中添加文件的文件名的麻煩。下面是例子:等效方法在RTC的Java API平原

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 

而現在,當我試圖獲取文件名或變更表1文件的文件路徑,使用下面的代碼:

// change is IChange, versionableManager is IVersionableManager  
// method getFilePath retrieve file path using ancestors  
file = versionableManager.fetchCompleteState(change.afterState(), 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();  
} 

我得到的名稱和路徑改名文件。如何獲得它的老名稱和路徑?

回答

1

好找到了解決辦法:

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();  
} 

但仍然有解決文件路徑isses。不管怎麼說,這是一個很大的進步。