package org.bonitasoft.console.client.admin.profile.view; import static org.bonitasoft.web.toolkit.client.common.i18n.AbstractI18n._; import java.util.ArrayList; import java.util.List; import java.util.Map; import org.bonitasoft.console.client.admin.organization.users.action.AddMembershipAction; import org.bonitasoft.web.rest.model.identity.GroupDefinition; import org.bonitasoft.web.rest.model.identity.GroupItem; import org.bonitasoft.web.rest.model.identity.MembershipItem; import org.bonitasoft.web.rest.model.identity.RoleDefinition; import org.bonitasoft.web.rest.model.identity.RoleItem; import org.bonitasoft.web.rest.model.portal.profile.ProfileDefinition; import org.bonitasoft.web.rest.model.portal.profile.ProfileItem; import org.bonitasoft.web.rest.model.portal.profile.ProfileMemberDefinition; import org.bonitasoft.web.rest.model.portal.profile.ProfileMemberItem; import org.bonitasoft.web.toolkit.client.common.json.JSonItemReader; import org.bonitasoft.web.toolkit.client.data.APIID; import org.bonitasoft.web.toolkit.client.data.api.APICaller; import org.bonitasoft.web.toolkit.client.data.api.callback.APICallback; import org.bonitasoft.web.toolkit.client.data.item.Definitions; import org.bonitasoft.web.toolkit.client.data.item.attribute.validator.MandatoryValidator; import org.bonitasoft.web.toolkit.client.ui.JsId; import org.bonitasoft.web.toolkit.client.ui.Page; import org.bonitasoft.web.toolkit.client.ui.component.Strong; import org.bonitasoft.web.toolkit.client.ui.component.form.Form; public class AddMembershipToProfileMemberPage extends Page { /** * */ private static final String PARAMETER_PROFILE_ID = "profileId"; /** * the token of this page */ public static final String TOKEN = "addMembershipToProfileMember"; public static final List<String> PRIVILEGES = new ArrayList<String>(); static { PRIVILEGES.add(ProfileListingPage.TOKEN); } public AddMembershipToProfileMemberPage() { } public AddMembershipToProfileMemberPage(APIID profileId) { addParameter(PARAMETER_PROFILE_ID, profileId.toString()); } @Override public void defineTitle() { this.setTitle(""); new APICaller(ProfileDefinition.get()).get(this.getParameter(PARAMETER_PROFILE_ID), new APICallback() { @Override public void onSuccess(final int httpStatusCode, final String response, final Map<String, String> headers) { final ProfileItem item = (ProfileItem) new JSonItemReader().getItem(response, Definitions.get(ProfileDefinition.TOKEN)); final String profileName = item.getAttributeValue(ProfileItem.ATTRIBUTE_NAME); setTitle(_("Add a membership to profile %%"), new Strong(_(profileName))); } }); } @Override public String defineToken() { return TOKEN; } @Override public void buildView() { final JsId groupJsId = new JsId(MembershipItem.ATTRIBUTE_GROUP_ID); final JsId roleJsId = new JsId(MembershipItem.ATTRIBUTE_ROLE_ID); final String profileId = this.getParameter(PARAMETER_PROFILE_ID); addBody(new Form(new JsId("addmembership")) .addHiddenEntry(ProfileMemberItem.ATTRIBUTE_PROFILE_ID, profileId) .addAutoCompleteEntry( groupJsId, _("Group"), _("Select a group to set to this profile"), Definitions.get(GroupDefinition.TOKEN), GroupItem.ATTRIBUTE_DISPLAY_NAME, GroupItem.ATTRIBUTE_ID ) .addAutoCompleteEntry( roleJsId, _("Role"), _("Select the role of this profile in the selected group"), Definitions.get(RoleDefinition.TOKEN), RoleItem.ATTRIBUTE_DISPLAY_NAME, RoleItem.ATTRIBUTE_ID ) .addValidator(groupJsId, new MandatoryValidator()) .addValidator(roleJsId, new MandatoryValidator()) .addButton(new JsId("add"), _("Add"), _("Add this membership"), new AddMembershipAction(ProfileMemberDefinition.get())) .addCancelButton()); } }