Saturday, February 5, 2011

قراءة ملف نصي لتحديث بيانات مستخدمي OIM

لقراءة ملف من اجل تحديث مستخدمي OIM قمت بكتابة الكود التالي لتنفيذ scheduled task بها خاصية attribute لتحديد اسم الملف.

الملف به اسم المستخدم ورقم الهاتف (على هيئة رقم من جزئين بينهما فاصلة).

 import java.io.BufferedReader;  
 import java.io.FileReader;  
 import java.util.HashMap;  
 import com.thortech.util.logging.Logger;  
 import Thor.API.tcResultSet;  
 import Thor.API.Operations.tcUserOperationsIntf;  
 import com.thortech.xl.scheduler.tasks.SchedulerBaseTask;  
 public class PhoneOperation extends SchedulerBaseTask  
 {  
   private static Logger logger = Logger.getLogger(“MYSCHTASKS”);  
   private tcUserOperationsIntf userIntf = null;  
   private static final String strClass = “PhoneOperation”;  
   private String username, phone ;  
   private String[] splitarr = new String[3];  
   public void init()  
   {  
     logger.info(“Starting Phone Reconciliation”);  
     final String strMethod = “Init()”;  
     try  
     {  
       userIntf =  
       (tcUserOperationsIntf)getUtility(“Thor.API.Operations.tcUserOperationsIntf”);  
     }  
     catch (Exception ex)  
     {  
       logger.error(“Exception in ” + strClass + “.” + strMethod + “: “, ex);  
     }  
   }  
   public void execute()  
   {  
     try  
     {  
       BufferedReader readbuffer = new BufferedReader(new FileReader(getAttribute(“File name”)));  
       String strRead;  
       while ((strRead=readbuffer.readLine())!= null)  
       {  
         try  
         {  
           splitarr = strRead.split(“,”);  
           if (splitarr[0]== null || splitarr[1]== null || splitarr[2] == null) continue;  
           username = splitarr[0];  
           phone = splitarr[1].concat(splitarr[2]);  
           phone = phone.replaceAll(“x”, “”);  
           phone = phone.replaceAll(“\\s+”, “”).trim();  
           HashMap userHash = new HashMap();  
           userHash.put(“Users.User ID”, username);  
           tcResultSet usrSet = userIntf.findUsers(userHash);  
           for (int j = 0 ; j < usrSet.getRowCount() ; j ++ )  
           {  
             usrSet.goToRow(j);  
             if (! “Deleted”.equals(usrSet.getStringValue(“Users.Status”)))  
             {  
               HashMap userdata = new HashMap();  
               userdata.put(“USR_UDF_PHONE”, phone);  
               userIntf.updateUser(usrSet,userdata);  
               logger.debug(“Successfully reconciled phone number for user \’” + username + “\’”);  
             }  
           }  
         }  
         catch (Exception e)  
         {  
           logger.error(“Error in PhoneOperation/execute: “, e);  
           continue;  
         }  
       }  
       readbuffer.close();  
     }  
     catch (Exception e)  
     {  
       logger.error(“Error in PhoneOperation/execute: “, e);  
     }  
   }  
 }  

No comments:

Post a Comment