Sou novo no fórum e estou desenvolvendo uma aplicação em SWT, conforme código abaixo. O problema que ao criar nova solicitação (classe CmdCadSolicitacao) além de não executar trás a seguinte mensagem de erro:
Exception in thread “main” java.lang.IllegalArgumentException: Argument cannot be null
Sei que é um dúvida bem básica, mas não estou conseguindo resolver. O código é um pouco extenso. Desde já agradeço a atenção de todos.
import java.sql.SQLException;
import org.eclipse.swt.SWT;
import org.eclipse.swt.graphics.Image;
import org.eclipse.swt.graphics.Point;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.swt.graphics.Color;
import br.com.xxxxxx.siscof.cadastrosolicitacao.CadastroSolicitacao;
public class Principal
{
Display disPrincipal = Display.getDefault(); // @jve:decl-index=0:
Shell shlPrincipal = new Shell( disPrincipal, SWT.MIN | SWT.MAX | SWT.CLOSE );
Composite cpsPrincipal = new Composite( shlPrincipal, 0 );
/**
* This method initializes sShell
* @throws SQLException
*/
public void inicia() throws SQLException
{
shlPrincipal = new Shell();
shlPrincipal.setText( new Constantes().tituloAplicacao() );
shlPrincipal.setImage( new Image(Display.getCurrent(), getClass().getResourceAsStream( "/br/com/xxxxxx/siscof/icones/LogoPetro.PNG" )) );
shlPrincipal.setBackground( new Color( Display.getCurrent(), 172, 189, 208 ) );
shlPrincipal.setSize( new Point(300, 200) );
shlPrincipal.setMaximized( true );
shlPrincipal.setMenuBar( new TlbPrincipal().montarMenu( shlPrincipal, SWT.BAR ) );
shlPrincipal.setParent( cpsPrincipal );
shlPrincipal.open();
while ( !disPrincipal.isDisposed() )
{
if ( !disPrincipal.readAndDispatch() )
{
disPrincipal.sleep();
}
}
Display.getDefault().dispose();
}
}
import java.sql.SQLException;
import org.eclipse.swt.SWT;
import org.eclipse.swt.graphics.Image;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Menu;
import org.eclipse.swt.widgets.MenuItem;
import br.com.xxxxxx.siscof.comandos.CmdCadSolicitacao;
public class MnuSolicitacaoNova
{
public MnuSolicitacaoNova(Menu mnuSistemaNovo, int push) throws SQLException
{
boolean resultado = new CmdCadSolicitacao().verificaPermissao();
MenuItem mnuSolicitacaoNova = new MenuItem(mnuSistemaNovo, SWT.PUSH);
mnuSolicitacaoNova.setText("Chamado");
mnuSolicitacaoNova.setImage(new Image(Display.getCurrent(), getClass().getResourceAsStream("/br/com/xxxxxx/siscof/icones/tarefa.png")));
mnuSolicitacaoNova.addSelectionListener(new org.eclipse.swt.events.SelectionAdapter()
{
public void widgetSelected(org.eclipse.swt.events.SelectionEvent e)
{
try
{
new CmdCadSolicitacao().executaComando();
}
catch (SQLException e1)
{
e1.printStackTrace();
}
}
});
if (resultado == false)
{
mnuSolicitacaoNova.setEnabled(false);
}
}
}
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import org.eclipse.swt.SWT;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.MessageBox;
import org.eclipse.swt.widgets.Shell;
import br.com.xxxxxx.siscof.cadastrosolicitacao.CadastroSolicitacao;
import br.com.xxxxxx.siscof.conexaobd.ConexaoBd;
import br.com.xxxxxx.siscof.principal.Constantes;
public class CmdCadSolicitacao
{
/**
* Nome da ação a ser checada na base de dados
*/
public final String COMANDO = "cadastraSolicitacao";
/**
* SQL para busca da ação na base dados
*/
String sql = "Select Count(PK_PERM) From PERMISSOES" +
" Where ((PERM_DT_EXCLUSAO) Is Null) and FK_FUNC='" + COMANDO +
"' and PERM_CD_CHAVE_FAVORECIDO ='" + System.getProperty("user.name") + "'";
/**
* Resultado da checagem de permissão (falso ou verdadeiro)
*/
boolean resultado = false;
/**
* Faz checagem junto a base de dados da permissão de execução da classe
* retornará false ou true
*/
public boolean verificaPermissao() throws SQLException
{
Connection con = null;
Statement stm = null;
ResultSet rs = null;
try
{
new ConexaoBd();
con = ConexaoBd.getCon();
stm = con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_READ_ONLY);
rs = stm.executeQuery(sql);
rs.last();
if (rs.getRow() > 0)
{
resultado = true;
}
else
{
resultado = false;
}
}
catch (SQLException e)
{
e.printStackTrace();
}
finally
{
//Fecha conexão com a base de dados
rs.close();
stm.close();
//Utilizado null ao contrário de .close() devido a bug na JVM instalada na máquina do desenvolvedor
con = null;
}
return resultado;
}
/**
* Executa ação abrir nova solicitação caso haja permissão para isso
* retornará void
* @return
*/
public void executaComando( ) throws SQLException
{
Composite cpsPrincipal = null;
verificaPermissao();
if (resultado == true)
{
//Abre frame Cadastro de solicitação
new CadastroSolicitacao( cpsPrincipal, 0 );
}
else
{
//Retorna mensagem de falta de permissão para execução da ação
MessageBox msg = new MessageBox(new Shell(), SWT.ICON_ERROR | SWT.OK);
msg.setText(new Constantes().tituloAplicacao());
msg.setMessage(new Constantes().mensagemPermissao() + COMANDO +
new Constantes().contatoAdministrador());
msg.open();
}
}
}
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Decorations;
import org.eclipse.swt.graphics.Point;
import org.eclipse.swt.layout.FillLayout;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.SWT;
public class CadastroSolicitacao extends Composite
{
public CadastroSolicitacao( Composite cpsCadastroSolicitacao, int estilo )
{
super( cpsCadastroSolicitacao, 0 );
cpsCadastroSolicitacao.setParent( this );
initialize();
Decorations decCadastroSolicitacoes = new Decorations( cpsCadastroSolicitacao, SWT.MAX | SWT.MIN );
decCadastroSolicitacoes.setLayoutData( new GridData( GridData.FILL_BOTH ) );
decCadastroSolicitacoes.setLayout( new FillLayout() );
}
/**
* This method initializes this
*
*/
private void initialize()
{
this.setBackground( Display.getCurrent().getSystemColor( SWT.COLOR_WHITE ) );
this.setSize( new Point( 298, 258 ) );
}
}