2016-10-13 10 views
0

Я работаю над проектом JavaFx, связанным с хранилищем данных Documentum. И я пытаюсь настроить, как перемещать папку (позволяет вызвать ее folder11), помещенную в папку (позволяет вызывать ее Folder1) в другую папку (позволяет называть Folder2). Стоит отметить, что обе папки находятся в одном шкафу. Я реализовал следующий класс:My Folder Migration продолжает сбой в Documentum с использованием DFC

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")); 

Но проблема в том, независимо от того, что 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 определить такие циклы, как ('' for (IDfSysObject sObj: objList) "'). Я видел это на других языках. Но я думаю, что он не будет работать в «Java» правильно? –

 Смежные вопросы

  • Нет связанных вопросов^_^