Hi All,
I am trying the below code to remove a user (who has already been deleted from Documentum) from all the ACL's in which he is present.
I am getting the error
Exception in thread "main" java.lang.ClassCastException: com.documentum.fc.common.DfList cannot be cast to com.documentum.fc.client.IDfPermit
at test_2013.RemoveUser.revokeuser(RemoveUser.java:137)
at test_2013.RemoveUser.main(RemoveUser.java:82)
When i run the code as i am trying to cast an integer result to IdfPermit object. Below is my code please look into it and help me to proceed.
package test_2013;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Properties;
import java.text.MessageFormat;
import java.util.ArrayList;
import java.util.List;
import com.csvreader.CsvReader;
import com.csvreader.CsvWriter;
import com.documentum.com.DfClientX;
import com.documentum.com.IDfClientX;
import com.documentum.fc.client.IDfACL;
import com.documentum.fc.client.IDfClient;
import com.documentum.fc.client.IDfFolder;
import com.documentum.fc.client.IDfPermit;
import com.documentum.fc.client.IDfSession;
import com.documentum.fc.client.IDfSessionManager;
import com.documentum.fc.common.DfException;
import com.documentum.fc.common.DfId;
import com.documentum.fc.common.IDfId;
import com.documentum.fc.common.IDfList;
import com.documentum.fc.common.IDfLoginInfo;
import com.documentum.fc.client.IDfPersistentObject;
import com.documentum.fc.client.DfQuery;
import com.documentum.fc.client.IDfCollection;
import com.documentum.fc.common.DfLoginInfo;
import com.documentum.fc.client.IDfQuery;
import com.documentum.fc.client.IDfSession;
public class RemoveUser{
private static String docBase;
private static String userName;
private static String password;
public static String dateNow;
public static IDfSession idfsession = null;
public static String logpath;
public static String folderpath;
public static String foldername;
public static void main(String[] args) throws DfException, IOException {
Calendar currentDate = Calendar.getInstance();
SimpleDateFormat dFormat= new SimpleDateFormat("dd-MMM-yyyy");
dateNow = dFormat.format(currentDate.getTime());
System.out.println(dateNow);
Properties p = new Properties();
try {
p.load(new FileInputStream("data.properties"));
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
docBase = (String) p.get("DOCBASE");
userName = (String) p.get("USERNAME");
password = (String) p.get("PASSWORD");
logpath = (String) p.get("logpath");
createsession();
revokeuser();
}
public static IDfSession createsession() {
IDfSessionManager sMgr = null;
try {
IDfClientX clientx = new DfClientX();
IDfClient client = clientx.getLocalClient();
sMgr = client.newSessionManager();
IDfLoginInfo loginInfoObj = clientx.getLoginInfo();
loginInfoObj.setUser(userName); //provide user ID
loginInfoObj.setPassword(password); //provide password
loginInfoObj.setDomain(null);
sMgr.setIdentity(docBase, loginInfoObj); //provide docbase name
idfsession = sMgr.getSession(docBase); //provide docbase name
System.out.println("Inside Doc base hit");
System.out.println("Session"+idfsession);
//Log("\n Inside DocBase hit");
} catch (Exception e) {
e.printStackTrace();
}
return idfsession;
}
public static void revokeuser() throws DfException, IOException {
IDfSessionManager sMgr = idfsession.getSessionManager();
IDfSession dfsession = idfsession;
IDfCollection coll1 =null;
IDfCollection coll2 =null;
IDfList list=null;
IDfId id;
try {
CsvReader products = new CsvReader("C:\\Documentum_Utilities\\RemovalOfUsersFromAcl\\input\\input.csv",',');
products.readHeaders();
while (products.readRecord())
{
String name = products.get("Username");
IDfQuery dfQuery = new DfQuery("SELECT r_object_id FROM dm_acl WHERE ANY r_accessor_name = '" + name + "'");
System.out.println(name);
coll1 = dfQuery.execute(idfsession, IDfQuery.DF_READ_QUERY);
try{
while (coll1.next()) {
id=(IDfId)coll1.getId("r_object_id");
System.out.println(id);
IDfACL dfACL = (IDfACL) idfsession.getObject(id);
for (int i = 0, cpt = dfACL.getAccessorCount(); i < cpt; i++) {
if(dfACL.getAccessorName(i).equals(name)){
IDfPermit dfPermit = (IDfPermit)dfACL.getAccessorPermit(i);
dfACL.revokePermit(dfPermit);
}
}
dfACL.save();
}
}
catch (DfException e) {
e.printStackTrace();
}
}
}
catch (DfException e) {
e.printStackTrace();
}finally {
coll1.close();
}
sMgr.release(idfsession);
}
}