2016-10-13 7 views
0

Documentumデータストレージに接続されたJavaFxプロジェクトを作成しています。そして、私はフォルダ(それをFolder1と呼ぶことができます)をFolder2(それをFolder2と呼ぶことができます)に置いたフォルダ(それをfolder11と呼ぶことができます)を移動する方法を設定しようとしています。両方のフォルダが同じキャビネットにあることに言及する価値はあります。My Folder MigrationがDFCを使用してDocumentumで失敗し続ける

package application; 

import com.documentum.com.DfClientX; 
import com.documentum.com.IDfClientX; 
import com.documentum.fc.client.DfClient; 
import com.documentum.fc.client.IDfDocument; 
import com.documentum.fc.client.IDfFolder; 
import com.documentum.fc.client.IDfSession; 
import com.documentum.fc.common.DfException; 
import com.documentum.fc.common.DfId; 
import com.documentum.operations.IDfMoveNode; 
import com.documentum.operations.IDfMoveOperation; 

public class Migrate { 
    public Migrate(){} 
    public String move (IDfSession mySession,String docId, String destination){ 
     String str =""; 
     try{ 

       IDfClientX clientx = new DfClientX(); 

       IDfMoveOperation mo = clientx . getMoveOperation(); 


       IDfFolder destinationDirectory = mySession . getFolderByPath(destination); 


       mo.setDestinationFolderId(destinationDirectory . getObjectId()); 


       IDfFolder doc = (IDfFolder) mySession . getObject(new DfId(docId)); 

       //System.out.println(doc); The output is : [email protected] 
       //System.out.println(mo.execute); output is : true 
       IDfMoveNode node = (IDfMoveNode)mo.add(doc); 
      // System.out.println(node); the output : [email protected] 
       //System.out.println(mo.execute); output is : false 

       if (!mo.execute()) { 
        str= "Move operation faild . "; 
        } 
        else { 
        str = "Move operation success . "; 
        } 
     }catch(DfException e){ 
      System.out.println(e.getLocalizedMessage()); 
     }catch(Exception e){ 

      System.out.println(e.getLocalizedMessage()); 
     } 


    return str; 


    } 


    } 

そして、ここでは、私はそれを呼び出す方法です:私は、次のクラス実装した

Migrate test = new Migrate(); 
System.out.println(test.move(_session, "0b01b66980028599" ,"Cabinet/LEXOPEDIA/Sateri/Hong Kong")); 

をしかし、問題は常にfalseを返し何mo.execute関係なくはありませんし、移行が常に失敗します。誰が私のミスがどこにあるか知っていますか? :)

答えて

1

あなたはそのアクションに対して適切な/適切な権限を持っていますか? setSourceFolderId()に電話をしていないようです。見てみな。

また、エラーをチェックするために、このconceptを使用しよう:

private void doMoveOp(ArrayList objList, IDfFolder fromFolder, IDfFolder toFolder) { 

    try { 

    // #1 - manufacture an operation 
    IDfMoveOperation moveOpObj = cx.getMoveOperation(); 

    // #2 - add objects to the operation for processing 
    for (IDfSysObject sObj : objList) { 
     moveOpObj.add(sObj); 
    } 

    // #3 - set the source and target folder 
    moveOpObj.setDestinationFolderId(toFolder.getObjectId()); 
    moveOpObj.setSourceFolderId(fromFolder.getObjectId()); 

    // #4 - execute the operation 
    boolean result = moveOpObj.execute(); 

    // #5 - check for errors 
    if (!result) { 
     IDfList errors = moveOpObj.getErrors(); 
     for (int i=0; i<errors.getCount(); i++) { 
     IDfOperationError err = (IDfOperationError) errors.get(i); 
     System.out.println("Error in Move operation: " + err.getErrorCode() + " - " + err.getMessage()); 
     } 
    } else { 
     // #6 - get new obj ids 
     IDfList newObjs = moveOpObj.getObjects(); 
     for (int i=0; i<newObjs.getCount(); i++) { 
      IDfSysObject sObj = (IDfSysObject) newObjs.get(i); 
      System.out.println("\tmoved object " + sObj.getObjectId().toString()); 
     } 
    } 

    } catch(Exception e) { 
    System.out.println("Exception in Move operation: " + e.getMessage()); 
    e.printStackTrace(); 
    } 

} 
+0

だけデバッグ目的のために私は質問を更新しましたが、私はあなたが権限を持っていますという意味ではありませんスーパーユーザーXD –

+0

だと考えていますフォルダに書き込む;) – Miki

+0

Javaで(IDfSysObject sObj:objList) "'のようなループを定義することが可能かどうか疑問に思っていました。私は他の言語でそれを見てきました。しかし、私はそれは 'Java'の権利で動作しないと思う? –

関連する問題