2016-11-03 11 views
0

Я делаю проект, связанный с хранилищем данных Documentum. И я пытаюсь обновить все аКЛы имена, присвоенные подпапки папки с помощью следующей функции:подсчитайте, сколько объектов было обновлено в Documentum

try { 
     StringBuilder str = new StringBuilder(); 
     str.append(dirDestination); 
     str.append("/"); 
     str.append(companyName); 

     String query = "update dm_folder object set acl_name = '@acl_name' , set acl_domain ='@acl_domain' where folder ('@acl_dirPath',descend)"; 
     query = query.replace("@acl_name",newAclName); 
     query = query.replace("@acl_domain",inheritedAclDomain); 
     query = query.replace("@acl_dirPath",str.toString()); 



     IDfQuery ACLQuery = new DfQuery(); 
     ACLQuery.setDQL(query); 
     ACLQuery.execute(_session, IDfQuery.DF_EXEC_QUERY); 
     log.info("All the sub folders have received the new ACL."); 

}catch(Exception E){ 
    System.out.println(E.getLocalizedMessage()); 
} 

Функция работает прекрасно, но я хочу знать, сколько папок, был обновлены в результате используя эти строки кода. Один из способов будет использовать IDfCollections, который, кажется, не будет работать для этого DQL, как я написал следующее, и я получаю 1:

try{ 
    StringBuilder path = new StringBuilder(); 
    path.append(dirDestination); 
    path.append("/" + companyName); 
    String query = "update dm_folder object set acl_name = '@newAclName' , set acl_domain ='@newAclDomain' where folder ('@aclPath',descend)"; 
    query = query.replace("@newAclName" , newAclName); 
    query = query.replace("@newAclDomain" , inheritedAclDomain); 
    query = query.replace("@aclPath" , path); 
    IDfQuery ACLQuery = new DfQuery(); 
    ACLQuery.setDQL(query); 
    IDfCollection count = ACLQuery.execute(_session, IDfQuery.DF_EXEC_QUERY); 
    int counter = 0 ; 
    while (count.next()){ 
     counter++ ; 

    } 
    System.out.println("counter for sub folders ==> " + counter); 
    log.info("The ACl name for all the sub folders are updated ."); 
}catch(Exception E){ 
    System.out.println(E.getLocalizedMessage()); 
} 

Таким образом, вопросы, как я могу знать метаданные, сколько объекты обновлены? другой способ может быть проверен на основе даты изменения объектов. Но есть ли другой способ (более прямой)?

ответ

1

Вам просто нужно получить objects_updated вместо приращения переменной в цикле в то время как:

IDfCollection count = ACLQuery.execute(_session, IDfQuery.DF_EXEC_QUERY); 

int counter = 0 ; 
if (count.next()) { 
    counter = count.getInt("objects_updated"); 
} 

System.out.println("count of updated sub folders ==> " + counter );