package com.github.wicketoracle.app.ucp.panel; import oracle.ucp.UniversalConnectionPoolException; import org.apache.wicket.Localizer; import org.apache.wicket.markup.html.form.Form; import org.apache.wicket.markup.html.form.Radio; import org.apache.wicket.markup.html.form.RadioGroup; import org.apache.wicket.markup.html.panel.Panel; import org.apache.wicket.model.Model; import org.apache.wicket.model.PropertyModel; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import com.github.wicketoracle.oracle.ucp.UCPMgr; public class UCPStateMgrPanel extends Panel { private static final long serialVersionUID = 1L; private static final Logger LOGGER = LoggerFactory.getLogger( UCPStateMgrPanel.class ); private UCPStateMgrForm ucpStateMgrForm = new UCPStateMgrForm( "ucpStateMgrForm" ); public UCPStateMgrPanel( final String pId ) { super( pId ); add( ucpStateMgrForm ); } private final class UCPStateMgrForm extends Form<UCPStateChoice> { private static final long serialVersionUID = 1L; private UCPStateChoice ucpStateBean = new UCPStateChoice(); private final RadioGroup<UCPState> ucpStateRadioGroup = new RadioGroup<UCPState>( "ucpStateRadioGroup" , new PropertyModel<UCPState>( ucpStateBean , "ucpState" ) ); private final Radio<UCPState> purgeRadio = new Radio<UCPState>( "purgeRadio" , new Model<UCPState>( UCPState.PURGE ) ); private final Radio<UCPState> recycleRadio = new Radio<UCPState>( "recycleRadio" , new Model<UCPState>( UCPState.RECYCLE ) ); private final Radio<UCPState> refreshRadio = new Radio<UCPState>( "refreshRadio" , new Model<UCPState>( UCPState.REFRESH ) ); public UCPStateMgrForm( final String pId ) { super( pId ); ucpStateRadioGroup.add( purgeRadio ); ucpStateRadioGroup.add( recycleRadio ); ucpStateRadioGroup.add( refreshRadio ); add( ucpStateRadioGroup ); } public void onSubmit() { final Localizer localiser = getLocalizer(); try { switch( ucpStateBean.getUcpState() ) { case PURGE: UCPMgr.getUCPPoolMgr().purgeConnectionPool( UCPMgr.getUCPDataSource().getConnectionPoolName() ); case REFRESH: UCPMgr.getUCPPoolMgr().refreshConnectionPool( UCPMgr.getUCPDataSource().getConnectionPoolName() ); case RECYCLE: UCPMgr.getUCPPoolMgr().recycleConnectionPool( UCPMgr.getUCPDataSource().getConnectionPoolName() ); default: assert ( false ); } info( localiser.getString( "MessageSuccess" , this ) ); } catch ( UniversalConnectionPoolException ucpe ) { LOGGER.error ( "Universal Connection Pool Exception when changing the UCP state -> {} ; error message -> {} ; error code -> {}" , new Object[] { ucpe.getMessage() , ucpe.getErrorCode() } ); info( localiser.getString( "MessageUnexpectedError" , this ) ); } } } }