/**
* Copyright 2010 the original author or authors.
*
* This file is part of Zksample2. http://zksample2.sourceforge.net/
*
* Zksample2 is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* Zksample2 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 General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with Zksample2. If not, see <http://www.gnu.org/licenses/gpl.html>.
*/
package de.forsthaus.webui.security.groupright;
import java.io.Serializable;
import java.util.HashMap;
import java.util.List;
import org.apache.log4j.Logger;
import org.springframework.dao.DataAccessException;
import org.zkoss.util.resource.Labels;
import org.zkoss.zk.ui.Executions;
import org.zkoss.zk.ui.Path;
import org.zkoss.zk.ui.event.Event;
import org.zkoss.zk.ui.event.Events;
import org.zkoss.zul.Borderlayout;
import org.zkoss.zul.Button;
import org.zkoss.zul.Checkbox;
import org.zkoss.zul.FieldComparator;
import org.zkoss.zul.Intbox;
import org.zkoss.zul.Listbox;
import org.zkoss.zul.Listcell;
import org.zkoss.zul.Listheader;
import org.zkoss.zul.Listitem;
import org.zkoss.zul.Paging;
import org.zkoss.zul.Panel;
import org.zkoss.zul.Tab;
import org.zkoss.zul.Window;
import com.trg.search.Filter;
import de.forsthaus.UserWorkspace;
import de.forsthaus.backend.model.SecGroup;
import de.forsthaus.backend.model.SecGroupright;
import de.forsthaus.backend.model.SecRight;
import de.forsthaus.backend.service.SecurityService;
import de.forsthaus.backend.util.HibernateSearchObject;
import de.forsthaus.webui.security.groupright.model.SecGrouprightDialogGroupListModelItemRenderer;
import de.forsthaus.webui.security.groupright.model.SecGrouprightRightListModelItemRenderer;
import de.forsthaus.webui.util.GFCBaseCtrl;
import de.forsthaus.webui.util.MultiLineMessageBox;
import de.forsthaus.webui.util.SelectionCtrl;
import de.forsthaus.webui.util.ZksampleMessageUtils;
import de.forsthaus.webui.util.pagging.PagedListWrapper;
/**
* ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++<br>
* This is the controller class for the
* /WEB-INF/pages/sec_groupright/secGroupright.zul file.<br>
* ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++<br>
* <br>
* This is the controller class for the Security GroupRight Page described in
* the secGroupright.zul file. <br>
* <br>
* This page allows the visual editing of three tables that represents<br>
* rights that belongs to groups. <br>
* <br>
* 1. Groups (table: secGroup) <br>
* 2. Rights (table: secRight) <br>
* 3. Group-Rights (table: secGroupright - The intersection of the two tables <br>
* <br>
* The right listbox [Granted Rights] shows the security rights(Table secRights)<br>
* and the granted rights (Table secGroupright). <br>
* By rendering all rights in the ItemRenderer class we look for each item
* (right) is there a corresponding record in the database with the
* <b>right-id</b> and <b>group-id</b><br>
* <br>
* In the listBox for the Granted Rights we can limited the showing entries by
* checking the various Filter Checkboxes for the secure type.
*
* @changes 05/15/2009: sge Migrating the list models for paging. <br>
* 07/24/2009: sge changes for clustering<br>
* 10/12/2009: sge changings in the saving routine.<br>
* 11/07/2009: bbr changed to extending from GFCBaseCtrl<br>
* (GenericForwardComposer) for spring-managed creation.<br>
* 03/09/2009: sge changed for allow repainting after resizing.<br>
* with the refresh button.<br>
*
* @author bbruhns
* @author sgerth
*/
public class SecGrouprightCtrl extends GFCBaseCtrl implements Serializable, SelectionCtrl<SecGroup> {
private static final long serialVersionUID = -546886879998950467L;
private static final Logger logger = Logger.getLogger(SecGrouprightCtrl.class);
/*
* ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
* All the components that are defined here and have a corresponding
* component with the same 'id' in the zul-file are getting autowired by our
* 'extends GFCBaseCtrl' GenericForwardComposer.
* ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
*/
protected Window secGroupRightWindow; // autowired
protected Panel panel_SecGroupRight; // autowired
protected Borderlayout borderlayoutSecGroupRight; // autowired
// listBox secGroup
protected Borderlayout borderLayout_Groups; // autowired
protected Paging paging_ListBoxSecGroup;// autowired
protected Listbox listBoxSecGroup;// autowired
protected Listheader listheader_SecGroupRight_grpShortdescription; // autowired
// area secGroupRights
protected Checkbox checkbox_SecGroupRight_All; // autowired
protected Checkbox checkbox_SecGroupRight_Pages; // autowired
protected Checkbox checkbox_SecGroupRight_Tabs; // autowired
protected Checkbox checkbox_SecGroupRight_MenuCat; // autowired
protected Checkbox checkbox_SecGroupRight_MenuItems; // autowired
protected Checkbox checkbox_SecGroupRight_Methods; // autowired
protected Checkbox checkbox_SecGroupRight_Domain; // autowired
protected Checkbox checkbox_SecGroupRight_Components; // autowired
// listBox secGroupRights
protected Tab tab_SecGroupRight_AllRights; // autowired
protected Borderlayout borderLayout_Rights;
protected Paging paging_ListBoxSecGroupRight; // autowired
protected Listbox listBoxSecGroupRight;// autowired
protected Listheader listheader_SecGroupRight_GrantedRight; // autowired
protected Listheader listheader_SecGroupRight_RightName; // autowired
protected Listheader listheader_SecGroupRight_Type; // autowired
// listBox secGroupRights on Tab Details
protected Tab tab_SecGroupRight_Details; // autowired
protected Borderlayout borderLayout_Rights_TabDetails; // autowired
protected Button button_GroupRight_NewGroupRight;// autowired
protected Paging paging_ListBoxSecGroupRight_Details;// autowired
protected Listbox listBoxSecGroupRight_Details; // autowired
protected Listheader listheader_SecGroupRight_Details_GrantedRight; // autowired
protected Listheader listheader_SecGroupRight_Details_RightName; // autowired
protected Listheader listheader_SecGroupRight_Details_Type; // autowired
// default CRUD buttons
protected Button btnSave;
protected Button btnClose;
// row count for listbox
private int countRowsGroup;
private int countRowsRight;
private int countRowsRightDetails;
public void setCountRowsRightDetails(int countRowsRightDetails) {
this.countRowsRightDetails = countRowsRightDetails;
}
private transient PagedListWrapper<SecGroup> plwSecGroups;
private transient PagedListWrapper<SecRight> plwSecRights;
private transient SecGroup selectedGroup;
// ServiceDAOs / Domain Classes
private transient SecurityService securityService;
/**
* default constructor.<br>
*/
public SecGrouprightCtrl() {
super();
}
/**
*
* @param event
* @throws Exception
*/
public void onCreate$secGroupRightWindow(Event event) throws Exception {
/* ++++ calculate the heights +++++ */
final int topHeader = 40;
final int btnTopArea = 45;
final int winTitle = 30;
/**
* Calculate how many rows have been place in the listbox. Get the
* currentDesktopHeight from a hidden Intbox from the index.zul that are
* filled by onClientInfo() in the indexCtroller
*/
int panelHeight = 25;
// TODO put the logic for working with panel in the ApplicationWorkspace
final boolean withPanel = false;
if (withPanel == false) {
panel_SecGroupRight.setVisible(false);
} else {
panel_SecGroupRight.setVisible(true);
panelHeight = 0;
}
final int menuOffset = UserWorkspace.getInstance().getMenuOffset();
int height = ((Intbox) Path.getComponent("/outerIndexWindow/currentDesktopHeight")).getValue().intValue();
height = height - menuOffset;
height = height + panelHeight;
final int maxListBoxHeight = height - topHeader - btnTopArea - winTitle;
setCountRowsGroup(Math.round(maxListBoxHeight / 21));
setCountRowsRight(Math.round(maxListBoxHeight / 31));
setCountRowsRightDetails(Math.round(maxListBoxHeight / 33));
// System.out.println("MaxListBoxHeight : " + maxListBoxHeight);
// System.out.println("==========> : " + getCountRowsGroup());
// System.out.println("==========> : " + getCountRowsRight());
// System.out.println("==========> : " + getCountRowsRightDetails());
/* set the PageSize */
paging_ListBoxSecGroup.setPageSize(getCountRowsGroup());
paging_ListBoxSecGroup.setDetailed(true);
paging_ListBoxSecGroupRight.setPageSize(getCountRowsRight());
paging_ListBoxSecGroupRight.setDetailed(true);
paging_ListBoxSecGroupRight_Details.setPageSize(getCountRowsRightDetails());
paging_ListBoxSecGroupRight_Details.setDetailed(true);
// main borderlayout height = window.height - (Panels Top)
borderlayoutSecGroupRight.setHeight(String.valueOf(maxListBoxHeight) + "px");
borderLayout_Groups.setHeight(String.valueOf(maxListBoxHeight - 5) + "px");
borderLayout_Rights.setHeight(String.valueOf(maxListBoxHeight - 5) + "px");
borderLayout_Rights_TabDetails.setHeight(String.valueOf(maxListBoxHeight - 5) + "px");
listBoxSecGroup.setHeight(String.valueOf(maxListBoxHeight - 98) + "px");
listBoxSecGroupRight.setHeight(String.valueOf(maxListBoxHeight - 125) + "px");
listBoxSecGroupRight_Details.setHeight(String.valueOf(maxListBoxHeight - 133) + "px");
/* Tab All */
// ++ create the searchObject and init sorting ++//
HibernateSearchObject<SecGroup> soSecGroup = new HibernateSearchObject<SecGroup>(SecGroup.class, getCountRowsGroup());
soSecGroup.addSort("grpShortdescription", false);
// Set the ListModel.
getPlwSecGroups().init(soSecGroup, listBoxSecGroup, paging_ListBoxSecGroup);
// set the itemRenderer
listBoxSecGroup.setItemRenderer(new SecGrouprightDialogGroupListModelItemRenderer());
// Before we set the ItemRenderer we select the first Item
// for init the rendering of the rights
setSelectedGroup((SecGroup) listBoxSecGroup.getModel().getElementAt(0));
listBoxSecGroup.setSelectedIndex(0);
// init, for displaying all rights entries in the table
// sets the ListModel for the 'listBoxSecGroupRight'
checkbox_SecGroupRight_All.setChecked(true);
filterTypeForShowingRights();
// not used listheaders must be declared like ->
// lh.setSortAscending(""); lh.setSortDescending("")
this.listheader_SecGroupRight_grpShortdescription.setSortAscending(new FieldComparator("grpShortdescription", true));
this.listheader_SecGroupRight_grpShortdescription.setSortDescending(new FieldComparator("grpShortdescription", false));
// Assign the Comparator for sorting GroupRights Listbox
listheader_SecGroupRight_RightName.setSortAscending(new FieldComparator("rigName", true));
listheader_SecGroupRight_RightName.setSortDescending(new FieldComparator("rigName", false));
listheader_SecGroupRight_Type.setSortAscending(new FieldComparator("rigType", true));
listheader_SecGroupRight_Type.setSortDescending(new FieldComparator("rigType", false));
// Assign the Comparator for sorting GroupRights Listbox on Tab
// "only granted rights"
listheader_SecGroupRight_Details_GrantedRight.setSortAscending("");
listheader_SecGroupRight_Details_GrantedRight.setSortDescending("");
listheader_SecGroupRight_Details_RightName.setSortAscending(new FieldComparator("rigName", true));
listheader_SecGroupRight_Details_RightName.setSortDescending(new FieldComparator("rigName", false));
listheader_SecGroupRight_Details_Type.setSortAscending(new FieldComparator("rigType", true));
listheader_SecGroupRight_Details_Type.setSortDescending(new FieldComparator("rigType", false));
listBoxSecGroupRight.setItemRenderer(new SecGrouprightRightListModelItemRenderer(this));
}
/**
* Analyze which type for filtering is checked and send the result list<br>
* to the DAO where with the values in the types-list <br>
* the select statement is dynamically build.<br>
*/
private void filterTypeForShowingRights() {
// ++ create the searchObject and init sorting ++//
HibernateSearchObject<SecRight> soSecRight = new HibernateSearchObject<SecRight>(SecRight.class, getCountRowsRight());
soSecRight.addSort("rigName", false);
if (checkbox_SecGroupRight_All.isChecked()) {
// nothing todo
}
if (checkbox_SecGroupRight_Pages.isChecked()) {
// list.add(0);
soSecRight.addFilter(new Filter("rigType", 0, Filter.OP_EQUAL));
}
if (checkbox_SecGroupRight_Tabs.isChecked()) {
// list.add(5);
soSecRight.addFilter(new Filter("rigType", 5, Filter.OP_EQUAL));
}
if (checkbox_SecGroupRight_MenuCat.isChecked()) {
// list.add(1);
soSecRight.addFilter(new Filter("rigType", 1, Filter.OP_EQUAL));
}
if (checkbox_SecGroupRight_MenuItems.isChecked()) {
// list.add(2);
soSecRight.addFilter(new Filter("rigType", 2, Filter.OP_EQUAL));
}
if (checkbox_SecGroupRight_Methods.isChecked()) {
// list.add(3);
soSecRight.addFilter(new Filter("rigType", 3, Filter.OP_EQUAL));
}
if (checkbox_SecGroupRight_Domain.isChecked()) {
// list.add(4);
soSecRight.addFilter(new Filter("rigType", 4, Filter.OP_EQUAL));
}
if (checkbox_SecGroupRight_Components.isChecked()) {
// list.add(6);
soSecRight.addFilter(new Filter("rigType", 6, Filter.OP_EQUAL));
}
// Set the ListModel.
getPlwSecRights().init(soSecRight, listBoxSecGroupRight, paging_ListBoxSecGroupRight);
}
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// +++++++++++++++++++++++ Components events +++++++++++++++++++++++
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
public void onCheck$checkbox_SecGroupRight_All(Event event) {
logger.debug(event.toString());
checkbox_SecGroupRight_Pages.setChecked(false);
checkbox_SecGroupRight_Tabs.setChecked(false);
checkbox_SecGroupRight_MenuCat.setChecked(false);
checkbox_SecGroupRight_MenuItems.setChecked(false);
checkbox_SecGroupRight_Methods.setChecked(false);
checkbox_SecGroupRight_Domain.setChecked(false);
checkbox_SecGroupRight_Components.setChecked(false);
filterTypeForShowingRights();
}
/**
* when the checkBox 'Pages' for filtering is checked.<br>
* Disables the 'all' checkBox.
*
* @param event
*/
public void onCheck$checkbox_SecGroupRight_Pages(Event event) {
checkbox_SecGroupRight_All.setChecked(false);
filterTypeForShowingRights();
}
/**
* when the checkBox 'Tabs' for filtering is checked.<br>
* Disables the 'all' checkBox.
*
* @param event
*/
public void onCheck$checkbox_SecGroupRight_Tabs(Event event) {
checkbox_SecGroupRight_All.setChecked(false);
filterTypeForShowingRights();
}
/**
* when the checkBox 'Menu Categories' for filtering is checked.<br>
* Disables the 'all' checkBox.
*
* @param event
*/
public void onCheck$checkbox_SecGroupRight_MenuCat(Event event) {
checkbox_SecGroupRight_All.setChecked(false);
filterTypeForShowingRights();
}
/**
* when the checkBox 'Menu Items' for filtering is checked.<br>
* Disables the 'all' checkBox.
*
* @param event
*/
public void onCheck$checkbox_SecGroupRight_MenuItems(Event event) {
checkbox_SecGroupRight_All.setChecked(false);
filterTypeForShowingRights();
}
/**
* when the checkBox 'Methods' for filtering is checked.<br>
* Disables the 'all' checkBox.
*
* @param event
*/
public void onCheck$checkbox_SecGroupRight_Methods(Event event) {
checkbox_SecGroupRight_All.setChecked(false);
filterTypeForShowingRights();
}
/**
* when the checkBox 'Domain/Properties' for filtering is checked.<br>
* Disables the 'all' checkBox.
*
* @param event
*/
public void onCheck$checkbox_SecGroupRight_Domain(Event event) {
checkbox_SecGroupRight_All.setChecked(false);
filterTypeForShowingRights();
}
/**
* when the checkBox 'Domain/Properties' for filtering is checked.<br>
* Disables the 'all' checkBox.
*
* @param event
*/
public void onCheck$checkbox_SecGroupRight_Components(Event event) {
checkbox_SecGroupRight_All.setChecked(false);
filterTypeForShowingRights();
}
/**
* when the "save" button is clicked. <br>
*
* @param event
* @throws InterruptedException
* @throws InterruptedException
*/
public void onClick$btnSave(Event event) throws InterruptedException {
// logger.debug(event.toString());
doSave();
}
/**
* when the "help" button is clicked. <br>
*
* @param event
* @throws InterruptedException
*/
public void onClick$btnHelp(Event event) throws InterruptedException {
// logger.debug(event.toString());
ZksampleMessageUtils.doShowNotImplementedMessage();
}
/**
* when the "refresh" button is clicked. <br>
* <br>
* Refreshes the view by calling the onCreate event manually.
*
* @param event
* @throws InterruptedException
*/
public void onClick$btnRefresh(Event event) throws InterruptedException {
// logger.debug(event.toString());
Events.postEvent("onCreate", this.secGroupRightWindow, event);
secGroupRightWindow.invalidate();
}
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// ++++++++++++++++++++++++ GUI operations +++++++++++++++++++++++++
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
/**
* if user select the tab for showing only rights for the group. <br>
*
* @param event
*/
public void onSelect$tab_SecGroupRight_Details(Event event) {
// logger.debug(event.toString());
// ++ create the searchObject and init sorting ++//
HibernateSearchObject<SecRight> soSecRightDetails = new HibernateSearchObject<SecRight>(SecRight.class, getCountRowsRightDetails());
soSecRightDetails.addSort("rigName", false);
soSecRightDetails.addFetch("secGrouprights");
soSecRightDetails.addFilter(new Filter("secGrouprights.secGroup", getSelectedGroup(), Filter.OP_EQUAL));
// Set the ListModel.
getPlwSecRights().init(soSecRightDetails, listBoxSecGroupRight_Details, this.paging_ListBoxSecGroupRight_Details);
// set the itemRenderer
listBoxSecGroupRight_Details.setItemRenderer(new SecGrouprightRightListModelItemRenderer(this));
}
/**
* if user select the tab for showing all rights and a <br>
* checkBox if the right is in the group. <br>
*
* @param event
*/
public void onSelect$tab_SecGroupRight_AllRights(Event event) {
// logger.debug(event.toString());
filterTypeForShowingRights();
}
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// +++++++++++++++++++++++++ crud operations +++++++++++++++++++++++
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
/**
* doSave(). This method saves the status of the checkboxed right-item.<br>
* <br>
* 1. we iterate over all items in the listbox <br>
* 2. for each 'checked item' we must check if it is 'newly' checked <br>
* 3. if newly than get a new object first and <b>save</b> it to DB. <br>
* 4. for each 'unchecked item' we must check if it newly unchecked <br>
* 5. if newly unchecked we must <b>delete</b> this item from DB. <br>
*
* @throws InterruptedException
*/
@SuppressWarnings("unchecked")
public void doSave() throws InterruptedException {
List<Listitem> li = null;
if (tab_SecGroupRight_AllRights.isSelected()) {
li = listBoxSecGroupRight.getItems();
} else if (tab_SecGroupRight_Details.isSelected()) {
li = listBoxSecGroupRight_Details.getItems();
}
for (Listitem listitem : li) {
Listcell lc = (Listcell) listitem.getFirstChild();
Checkbox cb = (Checkbox) lc.getFirstChild();
if (cb != null) {
if (cb.isChecked() == true) {
// Get the object by casting
SecRight right = (SecRight) listitem.getAttribute("data");
// get the group
SecGroup group = getSelectedGroup();
// check if the item is newly checked. If so we cannot found
// it in the SecGroupRight-table
SecGroupright groupRight = getSecurityService().getGroupRightByGroupAndRight(group, right);
// if new, we make a newly Object
if (groupRight == null) {
groupRight = getSecurityService().getNewSecGroupright();
groupRight.setSecGroup(group);
groupRight.setSecRight(right);
}
// save to DB
try {
getSecurityService().saveOrUpdate(groupRight);
} catch (DataAccessException e) {
ZksampleMessageUtils.showErrorMessage(e.getMostSpecificCause().toString());
}
} else if (cb.isChecked() == false) {
// Get the object by casting
SecRight right = (SecRight) listitem.getAttribute("data");
// get the group
SecGroup group = getSelectedGroup();
// check if the item is newly unChecked. If so we must found
// it in the SecGroupRight-table
SecGroupright groupRight = getSecurityService().getGroupRightByGroupAndRight(group, right);
if (groupRight != null) {
// delete from DB
getSecurityService().delete(groupRight);
}
}
}
}
}
public void onSelect$listBoxSecGroup(Event event) throws Exception {
// public void onGroupItemClicked(Event event) throws Exception {
// get the selected object
Listitem item = this.listBoxSecGroup.getSelectedItem();
// Casting
SecGroup aGroup = (SecGroup) item.getAttribute("data");
setSelectedGroup(aGroup);
if (tab_SecGroupRight_AllRights.isSelected()) {
filterTypeForShowingRights();
} else if (tab_SecGroupRight_Details.isSelected()) {
// ++ create the searchObject and init sorting ++//
HibernateSearchObject<SecRight> soSecRightDetails = new HibernateSearchObject<SecRight>(SecRight.class, getCountRowsRightDetails());
soSecRightDetails.addSort("rigName", false);
soSecRightDetails.addFetch("secGrouprights");
soSecRightDetails.addFilter(new Filter("secGrouprights.secGroup", getSelectedGroup(), Filter.OP_EQUAL));
// Set the ListModel.
getPlwSecRights().init(soSecRightDetails, listBoxSecGroupRight_Details, paging_ListBoxSecGroupRight_Details);
// set the itemRenderer
listBoxSecGroupRight_Details.setItemRenderer(new SecGrouprightRightListModelItemRenderer(this));
}
}
public void onClick$button_GroupRight_NewGroupRight(Event event) throws Exception {
// logger.debug(event.toString());
// get the selected object
Listitem item = listBoxSecGroup.getSelectedItem();
// CAST AND STORE THE SELECTED OBJECT
SecGroup aGroup = (SecGroup) item.getAttribute("data");
setSelectedGroup(aGroup);
if (aGroup != null) {
/*
* We can call our Dialog zul-file with parameters. So we can call
* them with a object of the selected item. For handed over these
* parameter only a Map is accepted. So we put the object in a
* HashMap.
*/
HashMap<String, Object> map = new HashMap<String, Object>();
map.put("group", aGroup);
/*
* we can additionally handed over the listBox, so we have in the
* dialog access to the listbox Listmodel. This is fine for
* syncronizing the data in the customerListbox from the dialog when
* we do a delete, edit or insert a customer.
*/
// call the zul-file with the parameters packed in a map
try {
Executions.createComponents("/WEB-INF/pages/sec_groupright/addGrouprightDialog.zul", null, map);
} catch (final Exception e) {
logger.error("onOpenWindow:: error opening window / " + e.getMessage());
// Show a error box
String msg = e.getMessage();
String title = Labels.getLabel("message.Error");
MultiLineMessageBox.doSetTemplate();
MultiLineMessageBox.show(msg, title, MultiLineMessageBox.OK, "ERROR", true);
}
}
}
// +++++++++++++++++++++++++++++++++++++++++++++++++ //
// ++++++++++++++++ Setter/Getter ++++++++++++++++++ //
// +++++++++++++++++++++++++++++++++++++++++++++++++ //
public int getCountRowsRightDetails() {
return this.countRowsRightDetails;
}
public int getCountRowsRight() {
return this.countRowsRight;
}
public void setCountRowsRight(int countRowsRight) {
this.countRowsRight = countRowsRight;
}
public int getCountRowsGroup() {
return this.countRowsGroup;
}
public void setCountRowsGroup(int countRowsGroup) {
this.countRowsGroup = countRowsGroup;
}
public void setSelectedGroup(SecGroup group) {
this.selectedGroup = group;
}
public SecGroup getSelectedGroup() {
return this.selectedGroup;
}
public SecurityService getSecurityService() {
return this.securityService;
}
public void setSecurityService(SecurityService securityService) {
this.securityService = securityService;
}
public void setPlwSecGroups(PagedListWrapper<SecGroup> plwSecGroups) {
this.plwSecGroups = plwSecGroups;
}
public PagedListWrapper<SecGroup> getPlwSecGroups() {
return this.plwSecGroups;
}
public void setPlwSecRights(PagedListWrapper<SecRight> plwSecRights) {
this.plwSecRights = plwSecRights;
}
public PagedListWrapper<SecRight> getPlwSecRights() {
return this.plwSecRights;
}
/*
* (non-Javadoc)
*
* @see de.forsthaus.webui.util.SelectionCtrl#getSelected()
*/
@Override
public SecGroup getSelected() {
return getSelectedGroup();
}
}