All Downloads are FREE. Search and download functionalities are using the official Maven repository.

us.jts.commander.panel.PermSearchModalPanel Maven / Gradle / Ivy

There is a newer version: 1.0-RC35
Show newest version
package us.jts.commander.panel;

import java.util.List;

import org.apache.log4j.Logger;
import org.apache.wicket.ajax.AjaxRequestTarget;
import org.apache.wicket.ajax.markup.html.AjaxLink;
import org.apache.wicket.ajax.markup.html.navigation.paging.AjaxPagingNavigator;
import org.apache.wicket.extensions.ajax.markup.html.modal.ModalWindow;
import org.apache.wicket.markup.html.basic.Label;
import org.apache.wicket.markup.html.list.ListItem;
import org.apache.wicket.markup.html.list.PageableListView;
import org.apache.wicket.markup.html.panel.Panel;
import org.apache.wicket.model.LoadableDetachableModel;
import org.apache.wicket.model.PropertyModel;
import org.apache.wicket.spring.injection.annot.SpringBean;
import us.jts.commander.GlobalUtils;
import us.jts.fortress.ReviewMgr;
import us.jts.fortress.rbac.Permission;

/**
 *
 * @author Shawn McKinney
 * @version $Rev$
 */
public class PermSearchModalPanel extends Panel
{
    @SpringBean
    private ReviewMgr reviewMgr;
    private static final Logger LOG = Logger.getLogger(PermSearchModalPanel.class.getName());
    private ModalWindow window;
    private Permission permSelection;
    private String objectSearchVal;
    private String opSearchVal;
    private boolean isAdmin;

    /**
     * @param id
     */
    public PermSearchModalPanel( String id, ModalWindow window, final boolean isAdmin )
    {
        super( id );
        this.reviewMgr.setAdmin( GlobalUtils.getRbacSession( this ) );
        this.isAdmin = isAdmin;
        this.window = window;
        loadPanel();
    }

    public void loadPanel()
    {
        LoadableDetachableModel requests = getListViewModel();
        PageableListView ouView = createListView( requests );
        add( ouView );
        add( new AjaxPagingNavigator( "navigator", ouView ) );
    }

    private PageableListView createListView( final LoadableDetachableModel requests )
    {
        final PageableListView listView = new PageableListView( "dataview", requests, 16 )
        {
            @Override
            protected void populateItem( final ListItem item )
            {
                final Permission modelObject = ( Permission ) item.getModelObject();
                item.add( new AjaxLink( "select" )
                {
                    private static final long serialVersionUID = 1L;

                    @Override
                    public void onClick(AjaxRequestTarget target)
                    {
                        permSelection = modelObject;
                        window.close( target );
                    }
                } );
                item.add( new Label( "objectName", new PropertyModel( item.getModel(), "objectName" ) ) );
                item.add( new Label( "objectId", new PropertyModel( item.getModel(), "objectId" ) ) );
                item.add( new Label( "opName", new PropertyModel( item.getModel(), "opName" ) ) );
                item.add( new Label( "type", new PropertyModel( item.getModel(), "type" ) ) );
                item.add( new Label( "admin", new PropertyModel( item.getModel(), "admin" ) ) );
            }
        };
        return listView;
    }

    private LoadableDetachableModel getListViewModel()
    {
        final LoadableDetachableModel ret = new LoadableDetachableModel()
        {
            @Override
            protected Object load()
            {
                List objects = null;
                try
                {
                    permSelection = null;
                    if(objectSearchVal == null)
                        objectSearchVal = "";

                    Permission permission = new Permission( objectSearchVal, "" );
                    permission.setAdmin( isAdmin );
                    objects = reviewMgr.findPermissions( permission );
                }
                catch ( us.jts.fortress.SecurityException se )
                {
                    String error = "getListViewModel caught SecurityException=" + se;
                    LOG.error( error );
                }
                return objects;
            }
        };
        return ret;
    }

    public void setAdmin( boolean admin )
    {
        isAdmin = admin;
    }

    public Permission getSelection()
    {
        return permSelection;
    }

    public void setSearchVal( String objectSearchVal )
    {
        this.objectSearchVal = objectSearchVal;
    }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy