Skip to Content

Roles, Groups and User information from the Enterprise portal 7.0 using Webdynpro JAVA

Hello Friends,

The purpose of this document is to explain

How to get Roles, Groups and User information from the Enterprise portal 7.0 and Generate 3 different file (Role.txt, Groups.txt and Users.txt). After creation of these 3 files will receives a mail.

For Example

Roles: name of the role

Which groups the role has

Which users the role has

2.JPG

3.JPG

Groups: name of the group

Which users the group has

Which roles the group has

4.JPG

5.JPG

Users: name of the user

Which groups the user has

Which roles the user is has

6.JPG

7.JPG

WebDynpro JAVA Application Development Steps:

UI in View:-

                         9.JPG         

Context in Component Controller and View

                         8.JPG

Methods in View

                         10.JPG

Method in Component Controller:-

                           11.JPG

Code in View:-

package sap.corp.view.v_generateugrfile.com;

import sap.corp.view.v_generateugrfile.com.wdp.IPrivateV_GenerateUGRFile;

import java.util.Properties;

import javax.activation.DataSource;

import javax.activation.FileDataSource;

import java.text.SimpleDateFormat;

import java.io.BufferedWriter;

import java.io.File;

import java.io.FileWriter;

import java.io.IOException;

import java.util.Date;

import javax.activation.DataHandler;

import java.text.DecimalFormat;

import java.text.NumberFormat;

import javax.mail.BodyPart;

import javax.mail.Message;

import javax.mail.MessagingException;

import javax.mail.Multipart;

import javax.mail.Session;

import javax.mail.Transport;

import javax.mail.internet.InternetAddress;

import javax.mail.internet.MimeBodyPart;

import javax.mail.internet.MimeMessage;

import javax.mail.internet.MimeMultipart;

import com.sap.tc.webdynpro.progmodel.api.IWDMessageManager;

import com.sap.tc.webdynpro.progmodel.repository.IWDControllerInfo;

import com.sap.tc.webdynpro.progmodel.repository.IWDEventHandlerInfo;

import com.sap.tc.webdynpro.services.session.api.IWDConfirmationDialog;

public class V_GenerateUGRFile

  /**

   * Logging location.

   */

  private static final com.sap.tc.logging.Location logger =

  com.sap.tc.logging.Location.getLocation(V_GenerateUGRFile.class);

  static

   //@@begin id

  String id = “$Id$”;

   //@@end

  com.sap.tc.logging.Location.getLocation(“ID.com.sap.tc.webdynpro”).infoT(id);

  /**

   * Private access to the generated Web Dynpro counterpart

   * for this controller class.  </p>

   *

   * Use <code>wdThis</code> to gain typed access to the context,

   * to trigger navigation via outbound plugs, to get and enable/disable

   * actions, fire declared events, and access used controllers and/or

   * component usages.

   *

   * @see sap.corp.view.v_generateugrfile.com.wdp.IPrivateV_GenerateUGRFile for more details

   */

  private final IPrivateV_GenerateUGRFile wdThis;

  /**

   * Root node of this controller’s context. </p>

   *

   * Provides typed access not only to the elements of the root node

   * but also to all nodes in the context (methods node<i>XYZ</i>())

   * and their currently selected element (methods current<i>XYZ</i>Element()).

   * It also facilitates the creation of new elements for all nodes

   * (methods create<i>XYZ</i>Element()). </p>

   *

   * @see sap.corp.view.v_generateugrfile.com.wdp.IPrivateV_GenerateUGRFile.IContextNode for more details.

   */

  private final IPrivateV_GenerateUGRFile.IContextNode wdContext;

  /**

   * A shortcut for <code>wdThis.wdGetAPI()</code>. </p>

   *

   * Represents the generic API of the generic Web Dynpro counterpart

   * for this controller. </p>

   */

  private final com.sap.tc.webdynpro.progmodel.api.IWDViewController wdControllerAPI;

  /**

   * A shortcut for <code>wdThis.wdGetAPI().getComponent()</code>. </p>

   *

   * Represents the generic API of the Web Dynpro component this controller

   * belongs to. Can be used to access the message manager, the window manager,

   * to add/remove event handlers and so on. </p>

   */

  private final com.sap.tc.webdynpro.progmodel.api.IWDComponent wdComponentAPI;

  public V_GenerateUGRFile(IPrivateV_GenerateUGRFile wdThis)

   this.wdThis = wdThis;

   this.wdContext = wdThis.wdGetContext();

   this.wdControllerAPI = wdThis.wdGetAPI();

   this.wdComponentAPI = wdThis.wdGetAPI().getComponent();

  //@@begin javadoc:wdDoInit()

  /** Hook method called to initialize controller. */

  //@@end

  public void wdDoInit()

   //@@begin wdDoInit()

   //@@end

  //@@begin javadoc:wdDoExit()

  /** Hook method called to clean up controller. */

  //@@end

  public void wdDoExit()

   //@@begin wdDoExit()

   //@@end

  //@@begin javadoc:wdDoModifyView

  /**

   * Hook method called to modify a view just before rendering.

   * This method conceptually belongs to the view itself, not to the

   * controller (cf. MVC pattern).

   * It is made static to discourage a way of programming that

   * routinely stores references to UI elements in instance fields

   * for access by the view controller’s event handlers, and so on.

   * The Web Dynpro programming model recommends that UI elements can

   * only be accessed by code executed within the call to this hook method.

   *

   * @param wdThis Generated private interface of the view’s controller, as

   *   provided by Web Dynpro. Provides access to the view controller’s

   *   outgoing controller usages, etc.

   * @param wdContext Generated interface of the view’s context, as provided

   *   by Web Dynpro. Provides access to the view’s data.

   * @param view The view’s generic API, as provided by Web Dynpro.

   *   Provides access to UI elements.

   * @param firstTime Indicates whether the hook is called for the first time

   *   during the lifetime of the view.

   */

 //@@end

  public static void wdDoModifyView(IPrivateV_GenerateUGRFile wdThis, IPrivateV_GenerateUGRFile.IContextNode wdContext, com.sap.tc.webdynpro.progmodel.api.IWDView view, boolean firstTime)

   //@@begin wdDoModifyView

   //@@end

  //@@begin javadoc:sendMail()

  /** Declared method. */

  //@@end

  public void sendMail( java.lang.String bodyText, java.lang.String subject )

   //@@begin sendMail()

Properties properties = new Properties();

  // Setup mail server

properties.setProperty(“mail.smtp.host”, host);

  // Get the default Session object.

Session session = Session.getInstance(properties, null);

  try{

  // Create a default MimeMessage object.

MimeMessage message = new MimeMessage(session);

  // Set From: header field of the header.

message.setFrom(new InternetAddress(emailFrom));

  // Set To: header field of the header.

message.setRecipient(Message.RecipientType.TO,new InternetAddress(emailTO));

  // Set Subject: header field

  // Now set the actual message

  // Send message

} catch (MessagingException mex) {

wdComponentAPI.getMessageManager().reportException(“Exception In sendMail():”+mex.getMessage(), false);

   //@@end

  //@@begin javadoc:sendEmailAttachment()

  /** Declared method. */

  //@@end

  public void sendEmailAttachment( java.lang.String bodytxt, java.lang.String subject )

   //@@begin sendEmailAttachment()

  // Setup mail server

properties.setProperty(“mail.smtp.host”, host);

  // Get the default Session object.

  try{

  // Create a default MimeMessage object.

MimeMessage message = new MimeMessage(session);

  // Set From: header field of the header.

message.setFrom(new InternetAddress(emailFrom));

  // Set To: header field of the header.

message.addRecipient(Message.RecipientType.TO, new InternetAddress(emailTO));

  // Set Subject: header field

message.setSubject(“This is the Subject Line!”);

  // Create the message part

BodyPart messageBodyPart = new MimeBodyPart();

  // Fill the message

messageBodyPart.setText(“This is message body”);

  // Create a multipar message

Multipart multipart = new MimeMultipart();

  // Set text message part

  // Part two is attachment

messageBodyPart = new MimeBodyPart();

  // String filename = “D://Work//error.log”

DataSource source = new FileDataSource(errorLog);

messageBodyPart.setDataHandler(new DataHandler(source));

  // Send the complete message parts

  // Send message

} catch (MessagingException mex) {

wdComponentAPI.getMessageManager().reportException(“Exception In sendEmailAttachment():”+mex.getMessage(), false);

   //@@end

  //@@begin javadoc:onActiongenerateUGRfile(ServerEvent)

  /** Declared validating event handler. */

  //@@end

  public void onActiongenerateUGRfile(com.sap.tc.webdynpro.progmodel.api.IWDCustomEvent wdEvent )

   //@@begin onActiongenerateUGRfile(ServerEvent)

if(wdContext.currentContextElement().getEmail()==null ||(emailTO == null || emailTO.trim().length() == 0)){

wdComponentAPI.getMessageManager().reportException(“Please set the E-Mail before Before Start the Script”,true);

} else

IWDEventHandlerInfo evtHndlr = controllerInfo.findInEventHandlers(“Start_Script_Canceled”);

String confTextBody = “You are about to Create New” +“sqlStatement”+ “File, Are you sure?”;

IWDConfirmationDialog confDialog = wdComponentAPI.getWindowManager().createConfirmationWindow(confTextBody,evtHndlr,“No, Cancel”);

evtHndlr = controllerInfo.findInEventHandlers(“Start_Script_Confirmed”);

confDialog.addChoice(evtHndlr, “Yes, Confirm”);

confDialog.setTitle(“Start_Script_Confirmed Confirmation?”);

   //@@end

  //@@begin javadoc:onActionsetEmail(ServerEvent)

  /** Declared validating event handler. */

  //@@end

  public void onActionsetEmail(com.sap.tc.webdynpro.progmodel.api.IWDCustomEvent wdEvent )

   //@@begin onActionsetEmail(ServerEvent)

if (emailTO == null || emailTO.trim().length() == 0) {

wdComponentAPI.getMessageManager().reportException(“Please Set the Email”,false);

} else {

if (emailTO.matches(“^[_A-Za-z0-9-]+(\\.[_A-Za-z0-9-]+)”+“@sap.com)) {

wdComponentAPI.getMessageManager().reportSuccess(“Email Successfully Updated.”);

} else {

wdComponentAPI.getMessageManager().reportWarning(“Email Address is not Valid.”);

   //@@end

  //@@begin javadoc:Start_Script_Canceled(ServerEvent)

  /** Declared validating event handler. */

  //@@end

  public void Start_Script_Canceled(com.sap.tc.webdynpro.progmodel.api.IWDCustomEvent wdEvent )

   //@@begin Start_Script_Canceled(ServerEvent)

   //@@end

  //@@begin javadoc:Crawl_Resources(ServerEvent)

  /** Declared validating event handler. */

  //@@end

  public void Crawl_Resources(com.sap.tc.webdynpro.progmodel.api.IWDCustomEvent wdEvent )

   //@@begin Crawl_Resources(ServerEvent)

BufferedWriter logFile =null;

NumberFormat formatter = new DecimalFormat(“#0.00000”);

long endTime = System.currentTimeMillis();

String mailSub = “Generated Users,Group & Roles Files Script”;

String mailBody = “Dear User,\n\n”

+ “New Script has saved under path c:\\Users_Group_Roles\\ \n\n”

+ “Total Number of Users in Portal:” +wdContext.nodeUserTable().size()+“\n”

+ “Total Number of Groups in Portal:”+wdContext.nodeGroupTable().size()+“\n”

+ “Total Number of Roles in Portal:”+wdContext.nodeRoleTable().size()+“\n\n”

+“Total Processing Time is: “ + formatter.format((endTime – startTime) / 1000d) + ” seconds\n\n”

+ “Note: This is an automated notification, please do not reply.”;

//long endTime = System.currentTimeMillis();

//NumberFormat formatter = new DecimalFormat(“#0.00000”);

wdComponentAPI.getMessageManager().reportSuccess(“Total Processing Time is: “ + formatter.format((endTime – startTime) / 1000d) + ” seconds”);

   //@@end

  //@@begin javadoc:Start_Script_Confirmed(ServerEvent)

  /** Declared validating event handler. */

  //@@end

  public void Start_Script_Confirmed(com.sap.tc.webdynpro.progmodel.api.IWDCustomEvent wdEvent )

   //@@begin Start_Script_Confirmed(ServerEvent)

try {

IWDEventHandlerInfo evtHndlr = controllerInfo.findInEventHandlers(“Crawl_Resources”);

String confTextBody = “New Import Script has created Successfully.\n\n”

+“After you select OK the script will begin the script will take approximate 2 hours or more to complete.\n\n”

+“When it is completed you will receive an email.”;

IWDConfirmationDialog confDialog = wdComponentAPI.getWindowManager().createConfirmationWindow(confTextBody,evtHndlr,“Ok”);

confDialog.setTitle(“Start Script ?”);

catch (Exception um) {

// TODO Auto-generated catch block

wdComponentAPI.getMessageManager().reportException(“Exception In Start_Script_Confirmed():”+um.getMessage(), false);

   //@@end

  /*

  //@@begin others

String host = “sap.com”;

String emailFrom = tech.support@sap.com;

File errorLog = new File(“c:\\Users_Group_Roles\\error_”+ new SimpleDateFormat(“MM-dd-yyyy HHmm”).format(new Date())+ “.log”);

IWDMessageManager msgMgr = null;

long startTime = System.currentTimeMillis();

  //@@end

Code in Component Controller:-

package sap.corp.comp.co_generateugrfile.com;

import java.io.BufferedWriter;

import java.io.File;

import java.io.FileWriter;

import java.io.IOException;

import java.text.SimpleDateFormat;

import java.util.Date;

import java.util.Iterator;

import com.sap.security.api.IGroup;

import com.sap.security.api.IGroupFactory;

import com.sap.security.api.IGroupSearchFilter;

import com.sap.security.api.IRole;

import com.sap.security.api.IRoleFactory;

import com.sap.security.api.IRoleSearchFilter;

import com.sap.security.api.ISearchAttribute;

import com.sap.security.api.ISearchResult;

import com.sap.security.api.IUser;

import com.sap.security.api.IUserFactory;

import com.sap.security.api.IUserSearchFilter;

import com.sap.security.api.UMFactory;

import com.sap.tc.webdynpro.progmodel.api.IWDMessageManager;

import sap.corp.comp.co_generateugrfile.com.wdp.IPrivateCO_GenerateUGRFile;

public class CO_GenerateUGRFile

  /**

   * Logging location.

   */

  private static final com.sap.tc.logging.Location logger =

  com.sap.tc.logging.Location.getLocation(CO_GenerateUGRFile.class);

  static

   //@@begin id

  String id = “$Id$”;

   //@@end

  com.sap.tc.logging.Location.getLocation(“ID.com.sap.tc.webdynpro”).infoT(id);

  /**

   * Private access to the generated Web Dynpro counterpart

   * for this controller class.  </p>

   *

   * Use <code>wdThis</code> to gain typed access to the context,

   * to trigger navigation via outbound plugs, to get and enable/disable

   * actions, fire declared events, and access used controllers and/or

   * component usages.

   *

   * @see sap.corp.comp.co_generateugrfile.com.wdp.IPrivateCO_GenerateUGRFile for more details

   */

  private final IPrivateCO_GenerateUGRFile wdThis;

  /**

   * Root node of this controller’s context. </p>

   *

   * Provides typed access not only to the elements of the root node

   * but also to all nodes in the context (methods node<i>XYZ</i>())

   * and their currently selected element (methods current<i>XYZ</i>Element()).

   * It also facilitates the creation of new elements for all nodes

   * (methods create<i>XYZ</i>Element()). </p>

   *

   * @see sap.corp.comp.co_generateugrfile.com.wdp.IPrivateCO_GenerateUGRFile.IContextNode for more details.

   */

  private final IPrivateCO_GenerateUGRFile.IContextNode wdContext;

  /**

   * A shortcut for <code>wdThis.wdGetAPI()</code>. </p>

   *

   * Represents the generic API of the generic Web Dynpro counterpart

   * for this controller. </p>

   */

  private final com.sap.tc.webdynpro.progmodel.api.IWDComponent wdControllerAPI;

  /**

   * A shortcut for <code>wdThis.wdGetAPI().getComponent()</code>. </p>

   *

   * Represents the generic API of the Web Dynpro component this controller

   * belongs to. Can be used to access the message manager, the window manager,

   * to add/remove event handlers and so on. </p>

   */

  private final com.sap.tc.webdynpro.progmodel.api.IWDComponent wdComponentAPI;

  public CO_GenerateUGRFile(IPrivateCO_GenerateUGRFile wdThis)

   this.wdThis = wdThis;

   this.wdContext = wdThis.wdGetContext();

   this.wdControllerAPI = wdThis.wdGetAPI();

   this.wdComponentAPI = wdThis.wdGetAPI().getComponent();

  //@@begin javadoc:wdDoInit()

  /** Hook method called to initialize controller. */

  //@@end

  public void wdDoInit()

   //@@begin wdDoInit()

   //@@end

  //@@begin javadoc:wdDoExit()

  /** Hook method called to clean up controller. */

  //@@end

  public void wdDoExit()

   //@@begin wdDoExit()

   //@@end

  //@@begin javadoc:wdDoPostProcessing()

  /**

   * Hook called to handle data retrieval errors before rendering.

   *

   * After doModifyView(), the Web Dynpro Framework gets all context data needed

   * for rendering by validating the contexts (which in turn calls the supply

   * functions and supplying relation roles). In this hook, the application

   * should handle the errors which occurred during validation of the contexts.

   *

   * Using preorder depthfirst traversal, this hook is called for all component

   * controllers starting with the current root component.

   *

   * Permitted operations:

   * Flushing model queue

   * Creating messages

   * Reading context and model data

   *

   * Forbidden operations:

   * Invalidating model data

   * Manipulating the context

   * Firing outbound plugs

   * Creating components

   *

   *

   * @param isCurrentRoot true if this is the root of the current request

   */

  //@@end

  public void wdDoPostProcessing(boolean isCurrentRoot)

   //@@begin wdDoPostProcessing()

   //@@end

  //@@begin javadoc:wdDoBeforeNavigation()

  /**

   * Hook before the navigation phase starts.

   *

   * This hook allows you to flush the model queue and handle any

   * errors that occur. Firing outbound plugs is allowed in this hook.

   *

   * Using preorder depthfirst traversal, this hook is called for all component

   * controllers starting with the current root component.

   *

   * @param isCurrentRoot true if this is the root of the current request

   */

  //@@end

  public void wdDoBeforeNavigation(boolean isCurrentRoot)

   //@@begin wdDoBeforeNavigation()

   //@@end

  //@@begin javadoc:wdDoApplicationStateChange()

  /**

   * Hook that informs the application about a state change.

   * <p>

   * This hook is called e.g. to tell the application that will be

   * <ul>

   *  <li>left via a suspend plug and therefore should go into a suspend/sleep

   *   mode with minimal need of resources. errors that occur. Firing

   *   outbound plugs is allowed in this hook.

   *  <li>left due to a timeout and could write it’s state to a data base if the

   *   user comes back later on

   * </ul>

   *

   * The concrete reason is available via IWDApplicationStateChangeInfo

   * <p>

   * <b>Important</b>: This hook is called for the top level component only!

   *

   * @param stateChangeInfo contains the information about the nature of the state change

   * @param stateChangeReturn allows the application to ask for a different state change.

   *   The framework is allowed to ignore it considering i.e. the current resources situation.

   */

  //@@end

  public void wdDoApplicationStateChange(com.sap.tc.webdynpro.progmodel.api.IWDApplicationStateChangeInfo stateChangeInfo, com.sap.tc.webdynpro.progmodel.api.IWDApplicationStateChangeReturn stateChangeReturn)

   //@@begin wdDoApplicationStateChange()

   //@@end

  //@@begin javadoc:generate_User_Group_Role_Scriptfile()

  /** Declared method. */

  //@@end

  public void generate_User_Group_Role_Scriptfile( java.io.BufferedWriter logFile )

   //@@begin generate_User_Group_Role_Scriptfile()

  String schCriteriaText =“*”;

if (schCriteriaText == null || schCriteriaText.trim().length() == 0) {

schCriteriaText = “*”;

  try

groupFilt.setUniqueName(schCriteriaText.trim(), ISearchAttribute.LIKE_OPERATOR, false);

//String grpId = “”;

//String grpDesc = “”;

//String grpRole = “”;

if (result.size() > 0)

if(result.getState() == ISearchResult.SEARCH_RESULT_OK)

File dir = new File(“c:\\Users_Group_Roles”);

File file = new File(“c:\\Users_Group_Roles\\”+“Groups”+“_”+ new SimpleDateFormat(“MM-dd-yyyy HHmm”).format(new Date())+ “.log”);

FileWriter fw = new FileWriter(file,true);

logFile = new BufferedWriter(fw);

while(result.hasNext())

StringBuffer getGroupID =new StringBuffer();

StringBuffer getGroupDesc =new StringBuffer();

StringBuffer getGroupUser =new StringBuffer();

StringBuffer getGroupRole=new StringBuffer();

//grpTable.setDisplayName(thisGroup.getDisplayName());

//getGroupDesc.append(thisGroup.getDescription());

if(grpDesc!=null)

}else{

getGroupDesc.append(“”);

//wdComponentAPI.getMessageManager().reportSuccess(“—getGroupID—-:”+getGroupID);

//wdComponentAPI.getMessageManager().reportSuccess(“—getGroupDesc—-:”+getGroupDesc);

//grpTable.setUniqueID(thisGroup.getUniqueID());

//Iterator itrUserName = thisGroup.getUserMembers(true);

Iterator itrUserName = thisGroup.getUserMembers(true);

Iterator itrRoleName = thisGroup.getRoles(true);

while(itrUserName.hasNext())

//grpTable.setUserInfo(itrUserName.next().toString());

int lindex=str.lastIndexOf(“:”);

getGroupUser.append(str+“,”);

//getGroupUser.append(itrUserName.next().toString()+”,”);

//wdComponentAPI.getMessageManager().reportSuccess(“—getGroupUser—-:”+getGroupUser);

int GroupUserindex=getGroupUser.lastIndexOf(“,”);

String grpUserBuffer=“”;

String grpUser = “”;

if(GroupUserindex!=-1)

while(itrRoleName.hasNext())

//grpTable.setRoleInfo(irole.getUniqueName());

if(!irole.getUniqueName().equalsIgnoreCase(“”))

int lindex=str.lastIndexOf(“/rl”);

//wdComponentAPI.getMessageManager().reportSuccess(“—str—-:”+str);

getGroupRole.append(str+“,”);

//getGroupRole.append(irole.getUniqueName()+”,”);

//StringBuffer buffer=getGroupRole;

int GroupRoleindex=getGroupRole.lastIndexOf(“,”);

String grpRoleBuffer=“”;

if(GroupRoleindex!=-1)

//wdComponentAPI.getMessageManager().reportSuccess(“—role—-:”+index);

//wdContext.nodeGroupTable().addElement(grpTable);

String sqlGroupStatement = “”;

String newLine = System.getProperty(“line.separator”);//This will retrieve line separator dependent on OS.

sqlGroupStatement += “INSERT INTO TableName(GID, DESCRIPTION) VALUES “;

sqlGroupStatement += “(‘”+getGroupID+ “‘, ‘”+getGroupDesc+“‘);”+newLine+“”;

String delimiter = “,”;

if(grpUserBuffer.equalsIgnoreCase(“”))

}else

for(int i=0; i<groupUserParts.length;i++)

//grpUser = parts[i];

//wdComponentAPI.getMessageManager().reportSuccess(“—grpUser—-:”+grpUser);

//wdComponentAPI.getMessageManager().reportSuccess(“—parts—-:”+parts[i].length());

sqlGroupStatement += “INSERT INTO TableName(GID, UID) VALUES”;

sqlGroupStatement += “(‘”+getGroupID+“‘, ‘”+groupUserParts[i]+“‘);”+newLine+“”;

if(grpRoleBuffer.equalsIgnoreCase(“”))

else

for(int i=0; i<roleParts.length;i++)

sqlGroupStatement += “INSERT INTO TableName(GID, RID) VALUES “;

sqlGroupStatement += “(‘”+ getGroupID + “‘, ‘”+roleParts[i]+ “‘ );”+newLine+“”;

long srtTime = System.currentTimeMillis();

if (!dir.exists())

try

//logFile.write(“[group]”+newLine); 

//wdThis.generate_User_Group_Role_Scriptfile(logFile);

catch(IOException ex)

wdComponentAPI.getMessageManager().reportException(“Exception In Roles():”+ex.getMessage(), false);

}else

msgMgr.reportWarning(“No element found.”);

roleSrcFilter.setUniqueName(schCriteriaText.trim(),ISearchAttribute.LIKE_OPERATOR,false);

if (srhResults.size() > 0){

if(srhResults.getState() == ISearchResult.SEARCH_RESULT_OK) {

File dir = new File(“c:\\Users_Group_Roles”);

File file = new File(“c:\\Users_Group_Roles\\”+“Roles”+“_”+ new SimpleDateFormat(“MM-dd-yyyy HHmm”).format(new Date())+ “.log”);

FileWriter fw = new FileWriter(file,true);

logFile = new BufferedWriter(fw);

while(srhResults.hasNext()) {

StringBuffer getRoleID=new StringBuffer();

StringBuffer getRoleDesc=new StringBuffer();

StringBuffer getRoleGroup =new StringBuffer();

StringBuffer getRoleUser =new StringBuffer();

//getRoleDesc.append(thisRole.getDescription());

if(roleDesc!=null){

}else{

getRoleDesc.append(“”);

Iterator itrUserName = thisRole.getUserMembers(true);

Iterator itrGroupName = thisRole.getGroupMembers(true);

while(itrUserName.hasNext())

//rTable.setUserInfo(itrUserName.next().toString());

int lindex=str.lastIndexOf(“:”);

getRoleUser.append(str+“,”);

//getRoleUser.append(itrUserName.next().toString()+”,”);

//wdComponentAPI.getMessageManager().reportSuccess(“—itrUserName.hasNext()—-:”+itrUserName.next());

int roleUserindex=getRoleUser.lastIndexOf(“,”);

String roleUserBuffer=“”;

if(roleUserindex!=-1)

while(itrGroupName.hasNext())

  //rTable.setGroupInfo(itrGroupName.next().toString());

//getRoleGroup.append(itrGroupName.next().toString()+”,”);

int lindex=str.lastIndexOf(“:”);

getRoleGroup.append(str+“,”);

//wdComponentAPI.getMessageManager().reportSuccess(“—itrGroupName.hasNext()—-:”+itrGroupName.next());

int roleGroupindex=getRoleGroup.lastIndexOf(“,”);

String roleGroupBuffer=“”;

if(roleGroupindex!=-1)

//wdContext.nodeRoleTable().addElement(rTable);

String sqlRoleStatement = “”;

String newLine = System.getProperty(“line.separator”);//This will retrieve line separator dependent on OS.

sqlRoleStatement += “INSERT INTO TableName(RID, DESCRIPTION) VALUES”;

sqlRoleStatement += “(‘”+ getRoleID +“‘, ‘”+ getRoleDesc +“‘);”+newLine+“”;

String delimiter = “,”;

if(roleGroupBuffer.equalsIgnoreCase(“”))

}else

for(int i=0; i<roleGroupParts.length;i++)

sqlRoleStatement += “INSERT INTO TableName(RID, GID) VALUES”;

sqlRoleStatement += “(‘”+getRoleID+ “‘, ‘”+roleGroupParts[i]+ “‘ );”+newLine+“”;

if(roleUserBuffer.equalsIgnoreCase(“”))

}else{

for(int i=0; i<roleUserParts.length;i++)

sqlRoleStatement += “INSERT INTO TableName(RID, UID) VALUES “;

sqlRoleStatement += “(‘”+ getRoleID + “‘, ‘”+roleUserParts[i]+ “‘ );”+newLine+“”;

long srtTime = System.currentTimeMillis();

if (!dir.exists())

try

//logFile.write(“[role]”+newLine); 

//wdThis.generate_User_Group_Role_Scriptfile(logFile);

catch(IOException ex)

wdComponentAPI.getMessageManager().reportException(“Exception In Roles():”+ex.getMessage(), false);

} else {

wdComponentAPI.getMessageManager().reportWarning(“No element found.”);

usrSrchFilter.setUniqueName(schCriteriaText.trim(),ISearchAttribute.LIKE_OPERATOR,false);

if (srchResluts.size() >0){

if(srchResluts.getState() == ISearchResult.SEARCH_RESULT_OK) {

File dir = new File(“c:\\Users_Group_Roles”);

File file = new File(“c:\\Users_Group_Roles\\”+“User”+“_”+ new SimpleDateFormat(“MM-dd-yyyy HHmm”).format(new Date())+ “.log”);

FileWriter fw = new FileWriter(file,true);

logFile = new BufferedWriter(fw);

while (srchResluts.hasNext()){

StringBuffer getuserID =new StringBuffer();

StringBuffer getlastName =new StringBuffer();

StringBuffer getfirstName =new StringBuffer();

StringBuffer getemailID =new StringBuffer();

StringBuffer getRoleInfo=new StringBuffer();

StringBuffer getGroupInfo =new StringBuffer();

if(lastName!=null){

}else{

getlastName.append(“”);

if(firstName!=null){

}else{

getfirstName.append(“”);

if(eMail!=null){

}else{

getemailID.append(“”);

//String getLogonID = sapUser.getUserAccounts()[0].getLogonUid();

//usrTable.setUserNames(sapUser.getLastName()+’,’+” “+sapUser.getFirstName());

//wdComponentAPI.getMessageManager().reportSuccess(“—UserID—-:”+getLogonID);

Iterator itrRoleName = sapUser.getRoles(true);

Iterator itrGroupName = sapUser.getParentGroups(true);

while(itrRoleName.hasNext())

//IRole roleId = itrRoleName.next();

//wdComponentAPI.getMessageManager().reportSuccess(“—roleId—-:”+irole.getUniqueName());

//wdComponentAPI.getMessageManager().reportSuccess(“—itrRoleName—-:”+irole.getDescription());

//String roletext = roleId.getUniqueName();

//usrTable.setRoleInfo(irole.getUniqueName());

//wdComponentAPI.getMessageManager().reportSuccess(“—roleId—-:”+irole.getUniqueID());

int lindex=str.lastIndexOf(“/rl”);

//wdComponentAPI.getMessageManager().reportSuccess(“—str—-:”+str);

getRoleInfo.append(str+“,”);

//getRoleInfo.append(irole.getUniqueName()+”,”);

// wdComponentAPI.getMessageManager().reportSuccess(“—roleId—-:”+getRoleInfo);

int userRoleindex=getRoleInfo.lastIndexOf(“,”);

String userRoleBuffer=“”;

if(userRoleindex!=-1)

while(itrGroupName.hasNext())

//usrTable.setGroupInfo(itrGroupName.next().toString());

//getGroupInfo.append(itrGroupName.next().toString()+”,”);

int lindex=str.lastIndexOf(“:”);

getGroupInfo.append(str+“,”);

//wdComponentAPI.getMessageManager().reportSuccess(“—itrGroupName.hasNext()—-:”+getGroupInfo);

int userGroupindex=getGroupInfo.lastIndexOf(“,”);

String userGroupBuffer=“”;

if(userGroupindex!=-1)

String sqlUserStatement = “”;

String newLine = System.getProperty(“line.separator”);//This will retrieve line separator dependent on OS.

sqlUserStatement += “INSERT INTO TableName(UID, LASTNAME, FIRSTNAME, EMAIL) VALUES “;

sqlUserStatement += “(‘”+ getuserID +“‘, ‘”+ getlastName + “‘, ‘”+ getfirstName + “‘, ‘”+ getemailID + “‘);”+newLine+“”;

String delimiter = “,”;

if(userRoleBuffer.equalsIgnoreCase(“”))

}else{

for(int i=0; i<userRoleParts.length;i++)

sqlUserStatement += “INSERT INTO TableName(UID, GID) VALUES”;

sqlUserStatement += “(‘”+ getuserID + “‘, ‘”+ userRoleParts[i] + “‘ );”+newLine+“”;

if(userGroupBuffer.equalsIgnoreCase(“”))

}else{

for(int i=0; i<userGroupParts.length;i++)

sqlUserStatement += “INSERT INTO TableName(UID, RID) VALUES “;

sqlUserStatement += “(‘”+ getuserID + “‘, ‘”+ userGroupParts[i] + “‘ );”+newLine+“”;

//wdComponentAPI.getMessageManager().reportSuccess(“—sqlStatement—-:”+sqlStatement);

long srtTime = System.currentTimeMillis();

if (!dir.exists())

try

// logFile.write(“[User]”+newLine);

//wdThis.generate_User_Group_Role_Scriptfile(logFile);

catch(IOException ex)

wdComponentAPI.getMessageManager().reportException(“Exception In Users:”+ex.getMessage(), false);

} else {

wdComponentAPI.getMessageManager().reportWarning(“No element found.”);

//wdComponentAPI.getMessageManager().reportSuccess(“—Group Node Size—-:”+wdContext.nodeGroupTable().size());

//wdComponentAPI.getMessageManager().reportSuccess(“—Role Node Size—-:”+wdContext.nodeRoleTable().size());

//wdComponentAPI.getMessageManager().reportSuccess(“—User Node Size—-:”+wdContext.nodeUserTable().size());

}catch(Exception ex){

//wdComponentAPI.getMessageManager().reportSuccess(“—Exception—-:”+ex.getLocalizedMessage());

   //@@end

  /*

  //@@begin others

  IWDMessageManager msgMgr = null;



Finally the OUTPUT will generate like this

USER Example

[User]

uid=AAAAAA

last_name=B

first_name=A

email_address=AAAAAA@sap.com

role=

group=New_Portal User;Guest;

GROUP Example

[group]

gid=10

gdesc=xyz

user=Vijay,Ram.

role=??

Roles Example

[role]

rid=Administrator

rdesc=Administrator

user=Vijay,ram

group=Administrator

After creation of these 3 files will receives a mail


For Example:-

12.JPG



Thank you


Regards

Vijay Kalluri

Be the first to leave a comment
You must be Logged on to comment or reply to a post.