in src/main/java/org/apache/directory/fortress/web/panel/GroupDetailPanel.java [203:691]
private void addGroupButtons()
{
add( new SecureIndicatingAjaxButton( GlobalIds.ADD, GlobalIds.GROUP_MGR, "add" )
{
/** Default serialVersionUID */
private static final long serialVersionUID = 1L;
@Override
protected void onSubmit( AjaxRequestTarget target )
{
LOG.debug( ".onSubmit Add" );
Group group = ( Group ) getForm().getModel().getObject();
String msg = null;
if ( !StringUtils.isNotBlank( memberAssign ) && !CollectionUtils.isNotEmpty( group.getMembers() ) )
{
msg = "Group name: " + group.getName() + " cannot be added without a member";
}
else
{
try
{
if ( StringUtils.isNotBlank( memberAssign ) )
{
group.setMember( memberAssign );
}
group.setMemberDn( true );
group = groupMgr.add( group );
component = editForm;
SaveModelEvent.send( getPage(), this, group, target, SaveModelEvent.Operations.ADD );
msg = "Group name: " + group.getName() + " has been added";
}
catch ( org.apache.directory.fortress.core.SecurityException se )
{
String error = ".onSubmit caught SecurityException=" + se;
LOG.error( error );
display.setMessage( error );
}
}
display.setMessage( msg );
}
@Override
public void onError( AjaxRequestTarget target )
{
LOG.info( "GroupDetailPanel.add.onError caught" );
target.add();
}
@Override
protected void updateAjaxAttributes( AjaxRequestAttributes attributes )
{
super.updateAjaxAttributes( attributes );
AjaxCallListener ajaxCallListener = new AjaxCallListener()
{
/** Default serialVersionUID */
private static final long serialVersionUID = 1L;
@Override
public CharSequence getFailureHandler( Component component )
{
return GlobalIds.WINDOW_LOCATION_REPLACE_COMMANDER_HOME_HTML;
}
};
attributes.getAjaxCallListeners().add( ajaxCallListener );
}
} );
add( new SecureIndicatingAjaxButton( GlobalIds.COMMIT, GlobalIds.GROUP_MGR, "update" )
{
/** Default serialVersionUID */
private static final long serialVersionUID = 1L;
@Override
protected void onSubmit( AjaxRequestTarget target )
{
LOG.debug( ".onSubmit Commit" );
Group group = ( Group ) getForm().getModel().getObject();
try
{
group = groupMgr.update( group );
String msg = "Group name: " + group.getName() + " has been updated";
SaveModelEvent.send( getPage(), this, group, target, SaveModelEvent.Operations.UPDATE );
component = editForm;
display.setMessage( msg );
}
catch ( org.apache.directory.fortress.core.SecurityException se )
{
String error = ".onSubmit caught SecurityException=" + se;
LOG.error( error );
display.setMessage( error );
}
}
@Override
public void onError( AjaxRequestTarget target )
{
LOG.warn( "GroupDetailPanel.commit.onError" );
}
@Override
protected void updateAjaxAttributes( AjaxRequestAttributes attributes )
{
super.updateAjaxAttributes( attributes );
AjaxCallListener ajaxCallListener = new AjaxCallListener()
{
/** Default serialVersionUID */
private static final long serialVersionUID = 1L;
@Override
public CharSequence getFailureHandler( Component component )
{
return GlobalIds.WINDOW_LOCATION_REPLACE_COMMANDER_HOME_HTML;
}
};
attributes.getAjaxCallListeners().add( ajaxCallListener );
}
} );
add( new SecureIndicatingAjaxButton( GlobalIds.DELETE, GlobalIds.GROUP_MGR, "delete" )
{
/** Default serialVersionUID */
private static final long serialVersionUID = 1L;
@Override
protected void onSubmit( AjaxRequestTarget target )
{
LOG.debug( ".onSubmit Commit" );
Group group = ( Group ) getForm().getModel().getObject();
try
{
groupMgr.delete( group );
clearDetailFields( "Group name: " + group.getName() + " has been deleted", target, getForm() );
SaveModelEvent.send( getPage(), this, group, target, SaveModelEvent.Operations.DELETE );
}
catch ( org.apache.directory.fortress.core.SecurityException se )
{
String error = ".onSubmit caught SecurityException=" + se;
LOG.error( error );
display.setMessage( error );
}
}
@Override
public void onError( AjaxRequestTarget target )
{
LOG.warn( "GroupDetailPanel.delete.onError" );
}
@Override
protected void updateAjaxAttributes( AjaxRequestAttributes attributes )
{
super.updateAjaxAttributes( attributes );
AjaxCallListener ajaxCallListener = new AjaxCallListener()
{
/** Default serialVersionUID */
private static final long serialVersionUID = 1L;
@Override
public CharSequence getFailureHandler( Component component )
{
return GlobalIds.WINDOW_LOCATION_REPLACE_COMMANDER_HOME_HTML;
}
};
attributes.getAjaxCallListeners().add( ajaxCallListener );
}
} );
add( new AjaxSubmitLink( GlobalIds.CANCEL )
{
/** Default serialVersionUID */
private static final long serialVersionUID = 1L;
@Override
protected void onSubmit( AjaxRequestTarget target )
{
clearDetailFields( "Group cancelled input form", target, getForm() );
}
@Override
public void onError( AjaxRequestTarget target )
{
LOG.warn( "GroupDetailPanel.cancel.onError" );
}
@Override
protected void updateAjaxAttributes( AjaxRequestAttributes attributes )
{
super.updateAjaxAttributes( attributes );
AjaxCallListener ajaxCallListener = new AjaxCallListener()
{
/** Default serialVersionUID */
private static final long serialVersionUID = 1L;
@Override
public CharSequence getFailureHandler( Component component )
{
return GlobalIds.WINDOW_LOCATION_REPLACE_COMMANDER_HOME_HTML;
}
};
attributes.getAjaxCallListeners().add( ajaxCallListener );
}
} );
add( new SecureIndicatingAjaxButton( "memberProps.add", GlobalIds.GROUP_MGR, "addProperty" )
{
private static final long serialVersionUID = 1L;
@Override
protected void onSubmit( AjaxRequestTarget target )
{
String msg = "clicked on memberProps.add";
if ( StringUtils.isNotBlank( memberPropsSelection ) )
{
msg += " selection:" + memberPropsSelection;
Group group = ( Group ) getForm().getModel().getObject();
int idx = memberPropsSelection.indexOf( '=' );
if ( idx != -1 )
{
String key = memberPropsSelection.substring( 0, idx );
String val = memberPropsSelection.substring( idx + 1 );
try
{
Group newGroup = groupMgr.add( group, key, val );
group.setProperties( newGroup.getProperties() );
memberPropsCB = new ComboBox<>( "memberProps", new PropertyModel<String>( getForm(),
"memberPropsSelection" ), group.getPropList() );
getForm().addOrReplace( memberPropsCB );
}
catch ( org.apache.directory.fortress.core.SecurityException se )
{
String error = "Failed add property: " + memberPropsSelection + ", SecurityException="
+ se;
LOG.warn( error );
display.setMessage( error );
}
}
memberPropsSelection = "";
component = editForm;
msg += ", was added";
}
else
{
msg += ", no action taken because property selection is empty";
}
display.setMessage( msg );
LOG.debug( msg );
}
@Override
protected void updateAjaxAttributes( AjaxRequestAttributes attributes )
{
super.updateAjaxAttributes( attributes );
AjaxCallListener ajaxCallListener = new AjaxCallListener()
{
/** Default serialVersionUID */
private static final long serialVersionUID = 1L;
@Override
public CharSequence getFailureHandler( Component component )
{
return GlobalIds.WINDOW_LOCATION_REPLACE_COMMANDER_HOME_HTML;
}
};
attributes.getAjaxCallListeners().add( ajaxCallListener );
}
} );
add( new SecureIndicatingAjaxButton( "memberProps.delete", GlobalIds.GROUP_MGR, "deleteProperty" )
{
private static final long serialVersionUID = 1L;
@Override
protected void onSubmit( AjaxRequestTarget target )
{
String msg = "clicked on memberProps.delete";
if ( StringUtils.isNotBlank( memberPropsSelection ) )
{
msg += " selection:" + memberPropsSelection;
Group group = ( Group ) getForm().getModel().getObject();
if ( group.getProperties() != null )
{
int idx = memberPropsSelection.indexOf( '=' );
if ( idx != -1 )
{
String key = memberPropsSelection.substring( 0, idx );
String val = memberPropsSelection.substring( idx + 1 );
try
{
Group newGroup = groupMgr.delete( group, key, val );
group.setProperties( newGroup.getProperties() );
memberPropsCB = new ComboBox<>( "memberProps", new PropertyModel<String>(
getForm(), "memberPropsSelection" ), group.getPropList() );
getForm().addOrReplace( memberPropsCB );
}
catch ( org.apache.directory.fortress.core.SecurityException se )
{
String error = "Failed delete property: " + memberPropsSelection
+ ", SecurityException=" + se;
LOG.warn( error );
display.setMessage( error );
}
}
memberPropsSelection = "";
component = editForm;
msg += ", was removed";
}
else
{
msg += ", no action taken because group does not have properties set";
}
}
else
{
msg += ", no action taken because property selection is empty";
}
display.setMessage( msg );
LOG.debug( msg );
}
@Override
protected void updateAjaxAttributes( AjaxRequestAttributes attributes )
{
super.updateAjaxAttributes( attributes );
AjaxCallListener ajaxCallListener = new AjaxCallListener()
{
/** Default serialVersionUID */
private static final long serialVersionUID = 1L;
@Override
public CharSequence getFailureHandler( Component component )
{
return GlobalIds.WINDOW_LOCATION_REPLACE_COMMANDER_HOME_HTML;
}
};
attributes.getAjaxCallListeners().add( ajaxCallListener );
}
} );
add( new SecureIndicatingAjaxButton( "member.assign", GlobalIds.GROUP_MGR, "assign" )
{
private static final long serialVersionUID = 1L;
@Override
protected void onSubmit( AjaxRequestTarget target )
{
Group group = ( Group ) getForm().getModel().getObject();
if ( StringUtils.isNotBlank( memberAssign ) )
{
try
{
String userId = getUserId( memberAssign );
if( userId != null )
{
Group newGroup = groupMgr.assign( group, userId );
group.setMembers( newGroup.getMembers() );
String msg = "Group: " + group.getName() + ", member: " + memberAssign
+ ", has been assigned";
memberAssign = "";
getForm().add( memberAssignTF );
display.setMessage( msg );
LOG.debug( msg );
createDataTable( newGroup.getMembers() );
}
}
catch ( org.apache.directory.fortress.core.SecurityException se )
{
String error = "Failed assign user: " + memberAssign + ", SecurityException=" + se;
LOG.warn( error );
display.setMessage( error );
}
}
else
{
String msg = "Group: " + group.getName()
+ ", assign op ignored, no value entered for assignment";
display.setMessage( msg );
LOG.debug( msg );
}
component = editForm;
}
@Override
protected void updateAjaxAttributes( AjaxRequestAttributes attributes )
{
super.updateAjaxAttributes( attributes );
AjaxCallListener ajaxCallListener = new AjaxCallListener()
{
/** Default serialVersionUID */
private static final long serialVersionUID = 1L;
@Override
public CharSequence getFailureHandler( Component component )
{
return GlobalIds.WINDOW_LOCATION_REPLACE_COMMANDER_HOME_HTML;
}
};
attributes.getAjaxCallListeners().add( ajaxCallListener );
}
} );
add( new SecureIndicatingAjaxButton( "member.deassign", GlobalIds.GROUP_MGR, "deassign" )
{
private static final long serialVersionUID = 1L;
@Override
protected void onSubmit( AjaxRequestTarget target )
{
Group group = ( Group ) getForm().getModel().getObject();
if ( StringUtils.isNotBlank( memberAssign ) )
{
try
{
// TODO: figure out how to get the table to refresh its values here:
String userId = getUserId( memberAssign );
if( userId != null )
{
Group newGroup = groupMgr.deassign( group, userId );
group.setMembers( newGroup.getMembers() );
String msg = "Group: " + group.getName() + ", member: " + memberAssign
+ ", has been deassigned";
memberAssign = "";
getForm().add( memberAssignTF );
display.setMessage( msg );
LOG.debug( msg );
createDataTable( newGroup.getMembers() );
}
}
catch ( org.apache.directory.fortress.core.SecurityException se )
{
String error = "Failed assign user: " + memberAssign + ", SecurityException=" + se;
LOG.warn( error );
display.setMessage( error );
}
}
else
{
String msg = "Group: " + group.getName()
+ ", assign op ignored, no value entered for deassignment";
display.setMessage( msg );
LOG.debug( msg );
}
component = editForm;
}
@Override
protected void updateAjaxAttributes( AjaxRequestAttributes attributes )
{
super.updateAjaxAttributes( attributes );
AjaxCallListener ajaxCallListener = new AjaxCallListener()
{
/** Default serialVersionUID */
private static final long serialVersionUID = 1L;
@Override
public CharSequence getFailureHandler( Component component )
{
return GlobalIds.WINDOW_LOCATION_REPLACE_COMMANDER_HOME_HTML;
}
};
attributes.getAjaxCallListeners().add( ajaxCallListener );
}
} );
}