Skip to content
This repository has been archived by the owner on Nov 30, 2021. It is now read-only.

Commit

Permalink
Added default group id field to organizational unit management (parti…
Browse files Browse the repository at this point in the history
…al fix for BZ-1169622).
  • Loading branch information
jrenaat committed Jan 14, 2015
1 parent 9a234e8 commit e314dd4
Show file tree
Hide file tree
Showing 21 changed files with 503 additions and 44 deletions.
Expand Up @@ -18,6 +18,7 @@
import com.google.gwt.user.client.Command;
import org.guvnor.structure.organizationalunit.OrganizationalUnit;
import org.guvnor.structure.repositories.Repository;
import org.jboss.errai.common.client.api.RemoteCallback;

public interface OrganizationalUnitManagerPresenter {

Expand All @@ -28,12 +29,14 @@ public interface OrganizationalUnitManagerPresenter {
void addNewOrganizationalUnit();

void createNewOrganizationalUnit( final String organizationalUnitName,
final String organizationalUnitOwner );
final String organizationalUnitOwner,
final String defaultGroupId );

This comment has been minimized.

Copy link
@manstis

manstis Jan 15, 2015

Member

It might have been easier to overload the createNewOrganizationalUnit method; with parameters: String organizationalUnitName, String organizationalUnitOwner, String defaultGroupId and have the implementation of the 2 parameter version simply call the 3 parameter version with null as the defaultGroupId.. that way you wouldn't have had to change every AppSetup, only the OrganizationalUnitManagement screens (and we wouldn't need a magic "null" value in the method calls)... my 2c :)

This comment has been minimized.

Copy link
@jrenaat

jrenaat Jan 15, 2015

Author Contributor

I did consider that option, but i saw the changes in the other projects were small, and the fact of having to put a null default group id (which in the end leads to a default group id based on the organizational unit's name), inside showcase code is imo of minor importance. I though it to be more interesting to prevent anyone from being able to call the createXXX method without the required defaultGroupId parameter.


void editOrganizationalUnit( final OrganizationalUnit organizationalUnit );

void saveOrganizationalUnit( final String organizationalUnitName,
final String organizationalUnitOwner );
final String organizationalUnitOwner,
final String defaultGroupId );

void deleteOrganizationalUnit( final OrganizationalUnit organizationalUnit );

Expand All @@ -47,4 +50,7 @@ void checkIfOrganizationalUnitExists( final String organizationalUnitName,
final Command onSuccessCommand,
final Command onFailureCommand );

void checkValidGroupId( final String proposedGroupId, RemoteCallback<Boolean> callback );

void getSanitizedGroupId( final String proposedGroupId, RemoteCallback<String> callback );
}
Expand Up @@ -161,7 +161,8 @@ public void callback( final OrganizationalUnit organizationalUnit ) {

@Override
public void createNewOrganizationalUnit( final String organizationalUnitName,
final String organizationalUnitOwner ) {
final String organizationalUnitOwner,
final String defaultGroupId ) {
final Collection<Repository> repositories = new ArrayList<Repository>();
view.showBusyIndicator( OrganizationalUnitManagerConstants.INSTANCE.Wait() );
organizationalUnitService.call( new RemoteCallback<OrganizationalUnit>() {
Expand All @@ -174,6 +175,7 @@ public void callback( final OrganizationalUnit newOrganizationalUnit ) {
}
}, new HasBusyIndicatorDefaultErrorCallback( view ) ).createOrganizationalUnit( organizationalUnitName,
organizationalUnitOwner,
defaultGroupId,
repositories );
}

Expand All @@ -185,16 +187,18 @@ public void editOrganizationalUnit( final OrganizationalUnit organizationalUnit

@Override
public void saveOrganizationalUnit( final String organizationalUnitName,
final String organizationalUnitOwner ) {
final String organizationalUnitOwner,
final String defaultGroupId ) {
view.showBusyIndicator( OrganizationalUnitManagerConstants.INSTANCE.Wait() );
organizationalUnitService.call( new RemoteCallback<Void>() {
organizationalUnitService.call( new RemoteCallback<OrganizationalUnit>() {

@Override
public void callback( final Void response ) {
public void callback( final OrganizationalUnit response ) {
loadOrganizationalUnits();
}
}, new HasBusyIndicatorDefaultErrorCallback( view ) ).updateOrganizationalUnitOwner( organizationalUnitName,
organizationalUnitOwner );
}, new HasBusyIndicatorDefaultErrorCallback( view ) ).updateOrganizationalUnit( organizationalUnitName,
organizationalUnitOwner,
defaultGroupId);
}

@Override
Expand Down Expand Up @@ -242,6 +246,20 @@ public void callback( final Void v ) {
repository );
}

@Override
public void checkValidGroupId( final String proposedGroupId, RemoteCallback<Boolean> callback ) {
organizationalUnitService.call(
callback,
new HasBusyIndicatorDefaultErrorCallback( view ) ).isValidGroupId( proposedGroupId );
}

@Override
public void getSanitizedGroupId( String proposedGroupId, RemoteCallback<String> callback ) {
organizationalUnitService.call(
callback,
new HasBusyIndicatorDefaultErrorCallback( view ) ).getSanitizedDefaultGroupId( proposedGroupId );
}

public void onRepositoryAddedEvent( @Observes NewRepositoryEvent event ) {
onStartup();
}
Expand Down
Expand Up @@ -18,17 +18,22 @@

import com.github.gwtbootstrap.client.ui.ControlGroup;
import com.github.gwtbootstrap.client.ui.HelpInline;
import com.github.gwtbootstrap.client.ui.Icon;
import com.github.gwtbootstrap.client.ui.TextBox;
import com.github.gwtbootstrap.client.ui.constants.ControlGroupType;
import com.google.gwt.core.client.GWT;
import com.google.gwt.dom.client.Style;
import com.google.gwt.event.dom.client.KeyPressEvent;
import com.google.gwt.event.dom.client.KeyPressHandler;
import com.google.gwt.event.logical.shared.ValueChangeEvent;
import com.google.gwt.uibinder.client.UiBinder;
import com.google.gwt.uibinder.client.UiField;
import com.google.gwt.uibinder.client.UiHandler;
import com.google.gwt.user.client.Command;
import com.google.gwt.user.client.ui.Widget;
import org.guvnor.organizationalunit.manager.client.editor.OrganizationalUnitManagerPresenter;
import org.guvnor.organizationalunit.manager.client.resources.i18n.OrganizationalUnitManagerConstants;
import org.jboss.errai.common.client.api.RemoteCallback;
import org.uberfire.client.mvp.UberView;
import org.uberfire.ext.widgets.common.client.common.popups.BaseModal;
import org.uberfire.ext.widgets.common.client.common.popups.footers.ModalFooterOKCancelButtons;
Expand All @@ -52,6 +57,18 @@ interface AddOrganizationalUnitPopupBinder
@UiField
HelpInline nameHelpInline;

@UiField
ControlGroup defaultGroupIdGroup;

@UiField
TextBox defaultGroupIdTextBox;

@UiField
HelpInline defaultGroupIdHelpInline;

@UiField
Icon groupIdHelpIcon;

@UiField
TextBox ownerTextBox;

Expand All @@ -74,12 +91,17 @@ public void execute() {
private final ModalFooterOKCancelButtons footer = new ModalFooterOKCancelButtons( okCommand,
cancelCommand );

private boolean groupIdManuallyChanged = false;

public AddOrganizationalUnitPopup() {
setTitle( OrganizationalUnitManagerConstants.INSTANCE.AddOrganizationalUnitPopupTitle() );

add( uiBinder.createAndBindUi( this ) );
add( footer );

groupIdHelpIcon.getElement().getStyle().setPaddingLeft( 5, Style.Unit.PX );
groupIdHelpIcon.getElement().getStyle().setCursor( Style.Cursor.POINTER );

nameTextBox.addKeyPressHandler( new KeyPressHandler() {
@Override
public void onKeyPress( final KeyPressEvent event ) {
Expand All @@ -94,6 +116,33 @@ public void init( final OrganizationalUnitManagerPresenter presenter ) {
this.presenter = presenter;
}

@UiHandler("nameTextBox")
void nameChanged( final ValueChangeEvent<String> event ) {
// Only change the value of the default group id of it hasn't been modified manually already
if ( !groupIdManuallyChanged ) {
if ( nameTextBox.getText() == null || nameTextBox.getText().trim().isEmpty() ) {
defaultGroupIdTextBox.setText( "" );
} else {
presenter.getSanitizedGroupId( nameTextBox.getText(), new RemoteCallback<String>() {
@Override
public void callback( final String sanitizedGroupId ) {
defaultGroupIdTextBox.setText( sanitizedGroupId );
}
} );
}
}
}

@UiHandler("defaultGroupIdTextBox")
void groupIdChangedChanged( final ValueChangeEvent<String> event ) {
String input = defaultGroupIdTextBox.getText();
if ( input == null || input.trim().isEmpty() || input.trim().equals( nameTextBox.getText() ) ) {
groupIdManuallyChanged = false;
} else {
groupIdManuallyChanged = true;
}
}

private void onOKButtonClick() {
nameGroup.setType( ControlGroupType.NONE );
if ( nameTextBox.getText() == null || nameTextBox.getText().trim().isEmpty() ) {
Expand All @@ -102,27 +151,45 @@ private void onOKButtonClick() {
return;
}

presenter.checkIfOrganizationalUnitExists( nameTextBox.getText(),
new Command() {
@Override
public void execute() {
onOKSuccess();
}
},
new Command() {
@Override
public void execute() {
nameGroup.setType( ControlGroupType.ERROR );
nameHelpInline.setText( OrganizationalUnitManagerConstants.INSTANCE.OrganizationalUnitAlreadyExists() );
}

}
);
if ( defaultGroupIdTextBox.getText() == null || defaultGroupIdTextBox.getText().trim().isEmpty() ) {
defaultGroupIdGroup.setType( ControlGroupType.ERROR );
defaultGroupIdHelpInline.setText( OrganizationalUnitManagerConstants.INSTANCE.DefaultGroupIdIsMandatory() );
return;
} else {
presenter.checkValidGroupId( defaultGroupIdTextBox.getText(), new RemoteCallback<Boolean>() {
@Override
public void callback( Boolean valid ) {
if ( !valid ) {
defaultGroupIdGroup.setType( ControlGroupType.ERROR );
defaultGroupIdHelpInline.setText( OrganizationalUnitManagerConstants.INSTANCE.InvalidGroupId() );
return;
} else {
presenter.checkIfOrganizationalUnitExists( nameTextBox.getText(),
new Command() {
@Override
public void execute() {
onOKSuccess();
}
},
new Command() {
@Override
public void execute() {
nameGroup.setType( ControlGroupType.ERROR );
nameHelpInline.setText( OrganizationalUnitManagerConstants.INSTANCE.OrganizationalUnitAlreadyExists() );
}

}
);
}
}
} );
}
}

private void onOKSuccess() {
presenter.createNewOrganizationalUnit( nameTextBox.getText(),
ownerTextBox.getText() );
ownerTextBox.getText(),
defaultGroupIdTextBox.getText() );
hide();
}

Expand All @@ -131,6 +198,10 @@ public void show() {
nameTextBox.setText( "" );
nameGroup.setType( ControlGroupType.NONE );
nameHelpInline.setText( "" );
defaultGroupIdTextBox.setText( "" );
defaultGroupIdGroup.setType( ControlGroupType.NONE );
defaultGroupIdHelpInline.setText( "" );
this.groupIdManuallyChanged = false;
ownerTextBox.setText( "" );
super.show();
}
Expand Down
Expand Up @@ -35,6 +35,19 @@
<b:HelpInline ui:field="nameHelpInline"/>
</b:Controls>
</b:ControlGroup>
<b:ControlGroup ui:field="defaultGroupIdGroup">
<b:ControlLabel for="groupId">
<font color="red">*</font>
Default group ID
</b:ControlLabel>
<b:Controls>
<b:TextBox ui:field="defaultGroupIdTextBox" placeholder="Default Group Id..."/>
<b:HelpInline ui:field="defaultGroupIdHelpInline"/>
<b:Popover placement="LEFT" trigger="HOVER" text="{i18n.GroupIdInfo}">
<b:Icon ui:field="groupIdHelpIcon" type="QUESTION_SIGN"></b:Icon>
</b:Popover>
</b:Controls>
</b:ControlGroup>
<b:ControlGroup ui:field="ownerGroup">
<b:ControlLabel for="owner">
Owner
Expand Down

0 comments on commit e314dd4

Please sign in to comment.