Additional Blogs by Members
cancel
Showing results for 
Search instead for 
Did you mean: 
Former Member
0 Kudos

Introduction


In this weblog i am going to present a Dynpage that display content assigned to a user in a nice htmlb tree display.



Jar files required


com.sap.portal.usermanagementapi.jar,com.sap.portal.pcd.glserviceapi.jar,com.sap.portal.pcmbuilderserviceapi.jar



Step1

Create a Dynpage project using NWDS or Eclipse wizard. Add the following source code to your

dynpage

component.




package com.ust.browserole;

/* Built By: Prakash Singh

  • Universal System Technologies, Inc

  • M 407-474-2216

*/

import java.util.Hashtable;

import java.util.Iterator;

import javax.naming.Context;

import javax.naming.NameClassPair;

import javax.naming.NamingEnumeration;

import com.sap.ip.portal.service.ume.IUserManagementEngine;

import com.sap.security.api.IRole;

import com.sap.security.api.IUser;

import com.sap.security.api.UMException;

import com.sap.security.api.UMFactory;

import com.sap.security.api.srvUser.IServiceUserFactory;

import com.sapportals.htmlb.Button;

import com.sapportals.htmlb.Form;

import com.sapportals.htmlb.GridLayout;

import com.sapportals.htmlb.Group;

import com.sapportals.htmlb.InputField;

import com.sapportals.htmlb.Label;

import com.sapportals.htmlb.Tree;

import com.sapportals.htmlb.TreeNode;

import com.sapportals.htmlb.enum.GroupDesign;

import com.sapportals.htmlb.event.Event;

import com.sapportals.htmlb.page.DynPage;

import com.sapportals.htmlb.page.PageException;

import com.sapportals.portal.htmlb.page.PageProcessorComponent;

import com.sapportals.portal.pcd.gl.IPcdContext;

import com.sapportals.portal.pcd.pcm.builder.IPcmEditObject;

import com.sapportals.portal.pcd.pcm.builder.IPcmObjectBuilder;

import com.sapportals.portal.pcd.pcm.builder.IPcmObjectService;

import com.sapportals.portal.prt.component.IPortalComponentRequest;

import com.sapportals.portal.prt.component.IPortalComponentResponse;

import com.sapportals.portal.prt.runtime.PortalRuntime;

public class display extends PageProcessorComponent {

     public DynPage getPage() {

          return new displayDynPage();

     }

     public static class displayDynPage extends DynPage {

          /**

          

  • Initialization code executed once per user.

           */

          String userid;

          public void doInitialization() {

               userid = "";

          }

          /**

          

  • Input handling code. In general called the first time with the second page request from the user.

           */

          public void doProcessAfterInput() throws PageException {

          }

          /**

          

  • Create output. Called once per request.

           */

          public void doProcessBeforeOutput() throws PageException {

               Form myForm = this.getForm(); // get the form from DynPage

               // create your GUI here....     

               Group myGroup = new Group();

               myForm.addComponent(myGroup);

               myGroup.setWidth("350");

               myGroup.setDesign(GroupDesign.SAPCOLOR);

               myGroup.setTitle("Browse assigned content for a user");

               GridLayout gl = new GridLayout();

               myGroup.addComponent(gl);

               gl.setCellSpacing(5);

               GridLayout gl1 = new GridLayout();

               gl.addComponent(1, 1, gl1);

               Label lbluserid = new Label("Userid");

               gl1.addComponent(1, 1, lbluserid);

               InputField inpuserid = new InputField("userid");

               inpuserid.setValue(userid);

               gl1.addComponent(1, 2, inpuserid);

               Button buttondisplay = new Button("Display");

               buttondisplay.setText("Display");

               buttondisplay.setOnClick("Display");

               gl1.addComponent(2, 1, buttondisplay);

               if (!userid.equals("")) {

                    Tree tree = new Tree("S_Tree", "");

                    tree.setRootNodeIsVisible(false);

                    TreeNode root = new TreeNode("e_root", "Role Content");

                    root.setOpen(true);

                    tree.setRootNode(root);

                    IPortalComponentResponse response =

                         (IPortalComponentResponse) this.getResponse();

                    IPortalComponentRequest request =

                         (IPortalComponentRequest) this.getRequest();

                    IPcmObjectService pcdFactory =

                         (IPcmObjectService) PortalRuntime

                              .getRuntimeResources()

                              .getService(

                              IPcmObjectService.KEY);

                    Hashtable env = new Hashtable();

                    env.put(

                         Context.INITIAL_CONTEXT_FACTORY,

                         IPcdContext.PCD_INITIAL_CONTEXT_FACTORY);

                    env.put(

                         Context.SECURITY_PRINCIPAL,

                         this.getServiceUser("pcd_service"));

                    try {

                         IUser user =

                              UMFactory.getUserFactory().getUserByLogonID(userid);

                         Iterator role = user.getRoles(true);

                         String roleroot;

                         String imgrolepath =

                              request.getWebResourcePath() + "/images/role.gif";

                         while (role.hasNext()) {

                              String rolestr = (String) role.next();

                              IRole r = UMFactory.getRoleFactory().getRole(rolestr);

                              roleroot = r.getUniqueName();

                              String text =

                                   "!!"

                                        + r.getDescription();

                              TreeNode name =

                                   new TreeNode(r.getDisplayName(), text, root);

                              name.setEncode(false);

                              recursive_role_content(

                                   roleroot,

                                   pcdFactory,

                                   env,

                                   name,

                                   request);

                         }

                    } catch (Exception e) {

                         response.write(e.getMessage());

                    }

                    gl.addComponent(2, 1, tree);

               }

          }

          public void onDisplay(Event event) throws PageException {

               InputField useridfld = (InputField) getComponentByName("userid");

               userid = useridfld.getValueAsDataType().toString().toUpperCase();

          }

          public void recursive_role_content(

               String root,

               IPcmObjectService pcdFactory,

               Hashtable env,

               TreeNode name,

               IPortalComponentRequest request)

               throws Exception {

               IPcmObjectBuilder pcmSrv = pcdFactory.getInitialContext(env);

               NamingEnumeration names = pcmSrv.list(root);

               while (names.hasMore()) {

                    NameClassPair nameclass = (NameClassPair) names.next();

                    String pcdurl = root + "/" + nameclass.getName();

                    IPcmEditObject pcmObj = (IPcmEditObject) pcmSrv.lookup(pcdurl);

                    String img = "";

                    if (pcmObj

                         .getObjectClassName()

                         .equals("com.sapportals.portal.workset"))

                         img = request.getWebResourcePath() + "/images/workset.gif";

                    else if (

                         pcmObj.getObjectClassName().equals(

                              "com.sapportals.portal.rolefolder"))

                         img = request.getWebResourcePath() + "/images/folder.gif";

                    else if (

                         pcmObj.getObjectClassName().equals(

                              "com.sapportals.portal.page"))

                         img = request.getWebResourcePath() + "/images/page.gif";

                    else if (

                         pcmObj.getObjectClassName().equals(

                              "com.sapportals.portal.iview"))

                         img = request.getWebResourcePath() + "/images/iView.gif";

                    else if (

                         pcmObj.getObjectClassName().equals(

                              "com.sapportals.portal.layout"))

                         img =

                              request.getWebResourcePath()

                                   + "/images/page_layout.gif";

                    String text = "!!" + pcmObj.getTitle();

                    TreeNode name1 = new TreeNode(pcmObj.getTitle(), text, name);

                    name1.setEncode(false);

                    NamingEnumeration newnames = pcmSrv.list(pcdurl);

                    if (newnames.hasMore()) {

                         recursive_role_content(

                              pcdurl,

                              pcdFactory,

                              env,

                              name1,

                              request);

                    }

               }

          }

          public IUser getServiceUser(String username) {

               IPortalComponentResponse response =

                    (IPortalComponentResponse) this.getResponse();

               IUser serviceUser = null;

               IUserManagementEngine ume =

                    (IUserManagementEngine) PortalRuntime

                         .getRuntimeResources()

                         .getService(

                         IUserManagementEngine.KEY);

               IServiceUserFactory sufactory = ume.getServiceUserFactory();

               try {

                    serviceUser = sufactory.getServiceUser(username);

               } catch (UMException e) {

                    response.write(e.getMessage());

               }

               return serviceUser;

          }

     }

}



Step2

Step 3

Save the following images and add it to your

dist->images

folder.

!https://weblogs.sdn.sap.com/weblogs/images/11062/role.gif|height=16|alt=image|width=16|src=https://w...!


Step 4

Deploy your application in your portal. h5. BAM! you got yourself a nice utility iView that display all the content assigned to a user.

15 Comments