ACGroupDeleteUserEventHandler.java :  » Content-Management-System » webman » de » webman » acl » eventhandler » Java Open Source

Java Open Source » Content Management System » webman 
webman » de » webman » acl » eventhandler » ACGroupDeleteUserEventHandler.java
package de.webman.acl.eventhandler;

import java.util.*;

import com.teamkonzept.web.*;
import com.teamkonzept.lib.*;
import com.teamkonzept.webman.*;
import com.teamkonzept.webman.mainint.*;
import com.teamkonzept.webman.mainint.events.*;
import de.webman.acl.*;

/**
Updates a group definiton in the database
 * @author  $Author: alex $
 * @version $Revision: 1.3 $
 */
public class ACGroupDeleteUserEventHandler extends DefaultEventHandler implements ParameterTypes, DatabaseDefaults, FrameConstants
{
    private ACGroupDeleteUserEventHandler() {}

    private static ACGroupDeleteUserEventHandler instance = new ACGroupDeleteUserEventHandler();

    public static ACGroupDeleteUserEventHandler getInstance()
    {
  return instance;
    }

    public void handleEvent(TKEvent evt) throws TKException
    {
    try {
      WebManEvent.checkEvent(evt.getRemoteUser(), evt.getName(), ContextConstants.ACCESS_CONTROL);

      String groupId = evt.getParameter( PARAMETER, "GROUP_ID");
      String userId = evt.getParameter( PARAMETER, "USER_ID");

      if (groupId != null && groupId.length() > 0)
      {
        doGroup(evt);
      }
      else if (userId != null && userId.length() > 0)
      {
        doUser(evt);
      }
    } catch (Throwable e) {
      throw WebmanExceptionHandler.getException(e);
    }
    }

    /**
       returns true if this class handles the event
    */
    public boolean isHandler(TKEvent evt)
    {
  return evt.getName().equalsIgnoreCase( "AC_GROUP_DELETE_CHILD" );
    }


  /**
      entfernt logins aus einer Gruppe
   */
  private void doGroup(TKEvent evt) throws Throwable
  {
      String groupId = evt.getParameter( PARAMETER, "GROUP_ID");

      TKParams params = evt.getParams();
      if (groupId != null) {
        Profile theGroup = null;
        theGroup = ProfileFactory.getInstance().getProfile(new Integer(groupId));
        if (theGroup != null) {
          removeLogin(theGroup, params, "DEL_USER_ID");
          removeLogin(theGroup, params, "DEL_GROUP_ID");

        }
      }
      TKHTMLTemplate t = evt.getPrepHTMLTemplate( "f_ac_group.tmpl" );
      String editPage = evt.getParameter(PARAMETER, "EDIT_PAGE");
      t.set("EDIT_PAGE", (editPage == null ? "1" : editPage));
      HTMLUtils.fillFrameSet( t, LEFT_FRAME_WIDTH, "AC_GROUP_LIST", "AC_GROUP_EDIT" );
      t.set("GROUP_ID", new Integer(groupId));
      WebManEvent.fillEventsIntoTemplate(evt.getRemoteUser(), t, ACCESS_CONTROL);
      evt.finishTemplate( t );
  }

    /**
      entfernt logins aus einer Gruppe
  */
    private void removeLogin(Profile profile, TKParams params, String parameter) throws Exception
    {
    TKVector vec = new TKVector();
    if ( params.hasMultiple( PARAMETER, parameter ))
    {
      vec = params.getVector( PARAMETER, parameter );
    }
    else if ( params.get( PARAMETER, parameter ) != null )
    {
      vec.addElement( params.get( PARAMETER, parameter ));
    }
    Enumeration vecEnum = vec.elements();
    while (vecEnum.hasMoreElements()) 
    {
      String lId = (String)vecEnum.nextElement();
      Login login = LoginFactory.getInstance().getLogin(new Integer(lId));
      if (login != null) {
        profile.removeChild(login);
        ProfileFactory.getInstance().modifyProfile(profile);
      }
    }
    }

  /**
    entfernt einen Benutzer aus mehreren Gruppen
  */
  private void doUser(TKEvent evt) throws Throwable
  {
      String userId = evt.getParameter( PARAMETER, "USER_ID");

      TKParams params = evt.getParams();
      if (userId != null && userId.length() > 0) {
        Login theUser = null;
        theUser = LoginFactory.getInstance().getLogin(new Integer(userId));
        if (theUser != null) {
          removeLoginFromGroups(theUser, params, "DEL_GROUP_ID");
        }
      }
      TKHTMLTemplate t = evt.getPrepHTMLTemplate( "f_ac_user.tmpl" );
      String editPage = evt.getParameter(PARAMETER, "EDIT_PAGE");
      t.set("EDIT_PAGE", (editPage == null ? "1" : editPage));
      HTMLUtils.fillFrameSet( t, LEFT_FRAME_WIDTH, "AC_USER_LIST", "AC_USER_EDIT" );
      t.set("USER_ID", new Integer(userId));
      WebManEvent.fillEventsIntoTemplate(evt.getRemoteUser(), t, ACCESS_CONTROL);
      evt.finishTemplate( t );
  }

    /**
         entfernt den Benutzer aus verschiedene Gruppen 
    */
    private void removeLoginFromGroups(Login login, TKParams params, String parameter) throws Exception
    {
    TKVector vec = new TKVector();
    if ( params.hasMultiple( PARAMETER, parameter ))
    {
      vec = params.getVector( PARAMETER, parameter );
    }
    else if ( params.get( PARAMETER, parameter ) != null )
    {
      vec.addElement( params.get( PARAMETER, parameter ));
    }
    Enumeration vecEnum = vec.elements();
    while (vecEnum.hasMoreElements()) 
    {
      String lId = (String)vecEnum.nextElement();
      Profile profile = ProfileFactory.getInstance().getProfile(new Integer(lId));
      if (profile != null) {
        profile.removeChild(login);
        ProfileFactory.getInstance().modifyProfile(profile);
      }
    }
    }
}
java2s.com  | Contact Us | Privacy Policy
Copyright 2009 - 12 Demo Source and Support. All rights reserved.
All other trademarks are property of their respective owners.