diff --git a/ccm-cms/src/main/java/com/arsdigita/cms/ui/role/MemberTableModelBuilder.java b/ccm-cms/src/main/java/com/arsdigita/cms/ui/role/MemberTableModelBuilder.java new file mode 100755 index 000000000..b5fd2f488 --- /dev/null +++ b/ccm-cms/src/main/java/com/arsdigita/cms/ui/role/MemberTableModelBuilder.java @@ -0,0 +1,123 @@ +/* + * Copyright (C) 2003-2004 Red Hat Inc. All Rights Reserved. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public License + * as published by the Free Software Foundation; either version 2.1 of + * the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * + */ +package com.arsdigita.cms.ui.role; + +import com.arsdigita.bebop.PageState; +import com.arsdigita.bebop.Table; +import com.arsdigita.bebop.table.AbstractTableModelBuilder; +import com.arsdigita.bebop.table.TableModel; +import com.arsdigita.ui.admin.GlobalizationUtil; +import org.apache.log4j.Logger; +import org.libreccm.cdi.utils.CdiUtil; +import org.libreccm.core.EmailAddress; +import org.libreccm.security.Party; +import org.libreccm.security.PartyRepository; +import org.libreccm.security.Role; +import org.libreccm.security.RoleManager; + +import java.util.Collection; +import java.util.HashSet; +import java.util.Iterator; +import java.util.stream.Collectors; + +/** + * TODO Needs a description. + * + * @author Yannick Bülter + * @author Justin Ross <jross@redhat.com> + * @version $Id: MemberTableModelBuilder.java 287 2005-02-22 00:29:02Z sskracic $ + */ +class MemberTableModelBuilder extends AbstractTableModelBuilder { + + private static final Logger s_log = Logger.getLogger + (MemberTableModelBuilder.class); + + private final RoleRequestLocal m_role; + + MemberTableModelBuilder(final RoleRequestLocal role) { + m_role = role; + } + + public final TableModel makeModel(final Table table, + final PageState state) { + final Role role = m_role.getRole(state); + + //FIXME Dirty hack, needs to be filtered in the database. + final CdiUtil cdiUtil = CdiUtil.createCdiUtil(); + final PartyRepository partyRepository = cdiUtil.findBean(PartyRepository.class); + final RoleManager roleManager = cdiUtil.findBean(RoleManager.class); + Collection parties = partyRepository.findAll().stream() + .filter(x -> roleManager.hasRole(x, role)) + .collect(Collectors.toCollection(HashSet::new)); + + return new Model(parties); + } + + private static class Model implements TableModel { + private Party m_party; + private final Collection m_parties; + private final Iterator iterator; + + Model(final Collection parties) { + m_parties = parties; + iterator = m_parties.iterator(); + } + + public final int getColumnCount() { + return 3; + } + + public final boolean nextRow() { + if (iterator.hasNext()) { + m_party = iterator.next(); + return true; + } else { + return false; + } + } + + public final Object getKeyAt(final int column) { + return m_party.getPartyId(); + } + + public final Object getElementAt(final int column) { + switch (column) { + case 0: + return m_party.getName(); + case 1: + //FIXME Party does not have a field for emails anymore. + final EmailAddress email = null; + + if (email == null) { + return lz("cms.ui.none"); + } else { + return email.toString(); + } + case 2: + return lz("cms.ui.role.member.remove"); + default: + throw new IllegalStateException(); + } + } + } + + protected final static String lz(final String key) { + return (String) GlobalizationUtil.globalize(key).localize(); + } +}