CCM NG/ccm-core: Some things for the Vaadin prototype

git-svn-id: https://svn.libreccm.org/ccm/ccm_ng@4829 8810af33-2d31-482b-a856-94f89814c4df

Former-commit-id: f26166ce41
pull/2/head
jensp 2017-07-01 09:54:55 +00:00
parent cd042145c3
commit ae5cd9ae53
8 changed files with 136 additions and 88 deletions

View File

@ -219,10 +219,10 @@ public class GroupDetails extends Window {
membersGridHeaderCell
.setComponent(new HorizontalLayout(addMemberButton));
final GroupMembersTableDataProvider dataProvider = cdiUtil
final GroupMembersTableDataProvider usersDataProvider = cdiUtil
.findBean(GroupMembersTableDataProvider.class);
dataProvider.setGroup(group);
membersGrid.setDataProvider(dataProvider);
usersDataProvider.setGroup(group);
membersGrid.setDataProvider(usersDataProvider);
final GroupRolesController rolesController = cdiUtil
.findBean(GroupRolesController.class);
@ -251,13 +251,35 @@ public class GroupDetails extends Window {
addRoleButton.setIcon(VaadinIcons.PLUS);
addRoleButton.setStyleName(ValoTheme.BUTTON_TINY);
addRoleButton.addClickListener(event -> {
final RoleSelector roleSelector = new RoleSelector(
"Select role(s) to add to group",
"Add selected role(s) to group",
usersGroupsRoles,
roleRepository.findByParty(group),
(selectedRoles -> {
selectedRoles.forEach(role -> {
rolesController.assignRoleToGroup(role, group);
rolesGrid.getDataProvider().refreshAll();
});
//ToDo Add roles grid
}));
roleSelector.center();
roleSelector.setWidth("80%");
UI.getCurrent().addWindow(roleSelector);
});
final HeaderCell rolesGridHeaderCell = rolesGridHeader
.join(COL_ROLE_NAME,
COL_ROLE_REMOVE);
rolesGridHeaderCell
.setComponent(new HorizontalLayout(addRoleButton));
final GroupRolesTableDataProvider rolesDataProvider = cdiUtil
.findBean(GroupRolesTableDataProvider.class);
rolesDataProvider.setGroup(group);
rolesGrid.setDataProvider(rolesDataProvider);
final TabSheet tabs = new TabSheet();
tabs.addTab(membersGrid, "Members");
tabs.addTab(new Label("Roles Placeholder"), "Roles");
tabs.addTab(rolesGrid, "Roles");
final VerticalLayout windowLayout = new VerticalLayout(propertiesPanel,
tabs);

View File

@ -20,7 +20,6 @@ package org.libreccm.admin.ui.usersgroupsroles;
import com.arsdigita.ui.admin.AdminUiConstants;
import com.vaadin.cdi.CDIUI;
import com.vaadin.icons.VaadinIcons;
import com.vaadin.ui.Button;
import com.vaadin.ui.Grid;
@ -46,6 +45,7 @@ public class RoleSelector extends Window {
private static final long serialVersionUID = -1437536052155383270L;
private static final String COL_NAME = "rolename";
private static final String COL_OTHER = "other";
private final RoleRepository roleRepo;
@ -82,6 +82,10 @@ public class RoleSelector extends Window {
.addColumn(Role::getName)
.setId(COL_NAME)
.setCaption("Role");
rolesGrid
.addColumn(role -> " ")
.setId(COL_OTHER)
.setCaption(" ");
rolesGrid.setSelectionMode(Grid.SelectionMode.MULTI);
rolesGrid.setWidth("100%");
@ -103,7 +107,8 @@ public class RoleSelector extends Window {
clearButton.setStyleName(ValoTheme.BUTTON_TINY);
final HeaderRow actions = rolesGrid.prependHeaderRow();
final HeaderCell actionsCell = actions.join(COL_NAME);
final HeaderCell actionsCell = actions.join(COL_NAME,
COL_OTHER);
actionsCell.setComponent(new HorizontalLayout(actionButton,
clearButton));
@ -116,4 +121,5 @@ public class RoleSelector extends Window {
setContent(rolesGrid);
}
}

View File

@ -118,6 +118,13 @@ import static org.libreccm.core.CoreConstants.DB_SCHEMA;
name = "Role.findRolesOfUser",
query = "SELECT r.role FROM RoleMembership r "
+ "WHERE r.member = :user")
,
@NamedQuery(
name = "Role.findByParty",
query = "SELECT r FROM Role r "
+ "JOIN r.memberships m "
+ "WHERE m.member = :member"
)
})
@NamedEntityGraphs({
@NamedEntityGraph(

View File

@ -95,6 +95,15 @@ public class RoleRepository extends AbstractEntityRepository<Long, Role> {
return query.getResultList();
}
@Transactional(Transactional.TxType.REQUIRED)
public List<Role> findByParty(final Party party) {
final TypedQuery<Role> query = getEntityManager()
.createNamedQuery("Role.findByParty", Role.class);
query.setParameter("member", party);
return query.getResultList();
}
@Transactional(Transactional.TxType.REQUIRED)
public List<Role> findByPrivilege(final String privilege) {
final TypedQuery<Role> query = getEntityManager().createNamedQuery(

View File

@ -610,3 +610,4 @@ ui.admin.importexport.import.status.import_active=An import process is active.
ui.admin.importexport.import.status.locked=This should not happen.
ui.admin.importexport.import.current_status=Import current status
ui.admin.importexport.import.report=Report from last import process
ui.groups.roles.remove=Remove

View File

@ -614,3 +614,4 @@ ui.admin.importexport.import.status.import_active=Ein Import-Prozess ist bereits
ui.admin.importexport.import.status.locked=This should not happen.
ui.admin.importexport.import.current_status=Aktueller Status des Import-Prozesses
ui.admin.importexport.import.report=Bericht des letzten Import-Prozesses
ui.groups.roles.remove=Entfernen

View File

@ -607,3 +607,4 @@ ui.admin.importexport.import.status.import_active=An import process is active.
ui.admin.importexport.import.status.locked=This should not happen.
ui.admin.importexport.import.current_status=Import current status
ui.admin.importexport.import.report=Report from last import process
ui.groups.roles.remove=Remove

View File

@ -598,3 +598,4 @@ ui.admin.importexport.import.status.import_active=An import process is active.
ui.admin.importexport.import.status.locked=This should not happen.
ui.admin.importexport.import.current_status=Import current status
ui.admin.importexport.import.report=Report from last import process
ui.groups.roles.remove=Remove