package com.github.wicketoracle.app.report.securitymodel;
import java.sql.SQLException;
import javax.swing.tree.DefaultMutableTreeNode;
import javax.swing.tree.TreeModel;
import org.apache.wicket.authorization.strategies.role.annotations.AuthorizeInstantiation;
import org.apache.wicket.markup.html.WebMarkupContainer;
import org.apache.wicket.markup.html.panel.Panel;
import org.apache.wicket.markup.html.tree.LinkTree;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import com.github.wicketoracle.html.page.StandardPage;
import com.github.wicketoracle.html.panel.TreeControlPanel;
import com.github.wicketoracle.html.panel.menu.PostLoginMenuPanelFactory;
import com.github.wicketoracle.session.Session;
@AuthorizeInstantiation( RequiredRoles.ROLE_SECURITY_MODEL_REPORT )
public class SecurityModelReportPage extends StandardPage
{
private static final Logger LOGGER = LoggerFactory.getLogger( SecurityModelReportPage.class );
private final Panel menuPanel = PostLoginMenuPanelFactory.getPostLoginMenuPanel();
private final ReportTreeView reportTreeView = new ReportTreeView( "ViewReportTree" );
/**
*
*/
public SecurityModelReportPage()
{
add( menuPanel );
add( reportTreeView );
}
/**
*
* @author Andrew Hall
*
*/
private class ReportTreeView extends WebMarkupContainer
{
private static final long serialVersionUID = 1L;
private final LinkTree reportTree = getReportTree();
private final TreeControlPanel treeControlPanel = new TreeControlPanel( "PanelTreeControl" , reportTree );
/**
*
* @return
*/
private LinkTree getReportTree()
{
final Session session = ( Session ) getSession();
SecurityModelReportDAO dataService = null;
TreeModel reportTreeModel = null;
try
{
dataService = new SecurityModelReportDAO( session.getUsername() , session.getPassword() );
reportTreeModel = dataService.getSecurityTree( new DefaultMutableTreeNode( getLocalizer().getString( "LabelReportTreeRootNode" , this ) ) );
}
catch ( SQLException sqle )
{
LOGGER.error
(
"SQL Exception when constructing security model tree -> {}; error code -> {}; sql state -> {}"
, new Object [ ]
{
sqle.getMessage()
, sqle.getErrorCode()
, sqle.getSQLState()
}
);
error( getLocalizer().getString( "MessageUnexpectedError" , this ) );
}
finally
{
if ( ! dataService.closeConnection() )
{
final String errmsg = getLocalizer().getString( "MessageUnexpectedError" , this );
error( errmsg );
}
}
return new LinkTree( "TreeReport" , reportTreeModel );
}
/**
*
* @param pId
*/
public ReportTreeView( final String pId )
{
super( pId );
reportTree.setRootLess( true );
reportTree.getTreeState().collapseAll();
add( reportTree );
add( treeControlPanel );
}
}
}