:arrow: isso que eu fiz eh prevayler???
tem alguma coisa importante que estou esquecendo???
bean
public class Conta implements Serializable {
private String nome;
private String senha;
public Conta( String nome, String senha ){
this.nome = nome;
this.senha = senha;
}
public Conta(){
this( "", "" );
}
public void setNome( String nome ){
this.nome = nome;
}
public String getNome(){
return nome;
}
public void setSenha( String senha ){
this.senha = senha;
}
public String getSenha(){
return senha;
}
}
transações
public class AdicionaConta implements Transaction {
private String nome;
private String senha;
public AdicionaConta( String nome, String senha ){
this.nome = nome;
this.senha = senha;
}
public void executeOn( Object system, Date data ){
Conta conta = null;
Sistema contas = (Sistema)system;
if( !contas.checkAdicionaConta( nome, senha ) )
throw new IllegalArgumentException( "Parametros de conta inválidos." );
conta = new Conta( nome, senha );
contas.addConta( conta );
}
}
public class RecuperaConta implements TransactionWithQuery {
private HashMap map;
private String nome;
public RecuperaConta( String nome ){
this.nome = nome;
}
public HashMap getMap(){
return map;
}
public Object executeAndQuery( Object system, Date data ) throws Exception {
Conta conta = null;
Sistema contas = (Sistema)system;
conta = contas.getConta( nome );
map = contas.getContas();
return conta;
}
}
Sistema
public class Sistema implements Serializable{
private final HashMap contas;
public Sistema(){
contas = new HashMap();
}
public Conta getConta( String nome ){
return (Conta)contas.get( nome );
}
public HashMap getContas(){
return contas;
}
public void addConta( Conta conta ){
contas.put( conta.getNome(), conta );
}
public boolean checkAdicionaConta( String nome, String senha ){
if( senha == null || senha.trim().equals( "" ) ) return false;
if( nome == null || nome.trim().equals( "" ) ) return false;
if( getConta( nome ) != null ) return false;
return true;
}
}
agora minhas telas em swing
public class Main extends JFrame implements ActionListener {
private JLabel labelNome;
private JLabel labelSenha;
private JTextField txtNome;
private JPasswordField txtSenha;
private JButton bntCriaConta;
private JButton bntMostraContas;
private JButton bntOk;
private JButton bntCancel;
public static Prevayler prevayler;
public Main(){
super( "Prevayler test..." );
setContentPane( new JPanel ( new GridBagLayout() ) );
setSize( 200, 130 );
initComponents();
initPrevayler();
show();
}
private void initPrevayler(){
try{
prevayler = PrevaylerFactory.createPrevayler( new Sistema() );
}
catch( ClassNotFoundException e ){
e.printStackTrace();
}
catch( IOException e ){
e.printStackTrace();
}
}
public void finalizePrevayler(){
try {
prevayler.takeSnapshot();
}
catch( IOException e ){
e.printStackTrace();
}
}
private void initComponents(){
JPanel panel = (JPanel)getContentPane();
GridBagLayout layout = (GridBagLayout)panel.getLayout();
GridBagConstraints gbConstraints = new GridBagConstraints();
gbConstraints.fill = GridBagConstraints.HORIZONTAL;
labelNome = new JLabel( "Nome: " );
gbConstraints.gridx = 0; gbConstraints.gridy = 0;
layout.setConstraints( labelNome, gbConstraints );
panel.add( labelNome );
txtNome = new JTextField( 8 );
gbConstraints.gridx = 1; gbConstraints.gridy = 0;
layout.setConstraints( txtNome, gbConstraints );
panel.add( txtNome );
labelSenha = new JLabel( "Senha: " );
gbConstraints.gridx = 0; gbConstraints.gridy = 1;
layout.setConstraints( labelSenha, gbConstraints );
panel.add( labelSenha );
txtSenha = new JPasswordField( 8 );
gbConstraints.gridx = 1; gbConstraints.gridy = 1;
layout.setConstraints( txtSenha, gbConstraints );
panel.add( txtSenha );
bntCriaConta = new JButton( "Cria conta" );
bntCriaConta.setPreferredSize( new Dimension( 90, 20 ) );
bntCriaConta.addActionListener( this );
gbConstraints.gridx = 0; gbConstraints.gridy = 3;
layout.setConstraints( bntCriaConta, gbConstraints );
panel.add( bntCriaConta );
bntMostraContas = new JButton( "Mostra contas" );
bntMostraContas.setPreferredSize( new Dimension( 90, 20 ) );
bntMostraContas.addActionListener( this );
gbConstraints.gridx = 1; gbConstraints.gridy = 3;
layout.setConstraints( bntMostraContas, gbConstraints );
panel.add( bntMostraContas );
bntOk = new JButton( "Ok" );
bntOk.setPreferredSize( new Dimension( 90, 20 ) );
bntOk.addActionListener( this );
gbConstraints.gridx = 0; gbConstraints.gridy = 2;
layout.setConstraints( bntOk, gbConstraints );
panel.add( bntOk );
bntCancel = new JButton( "Cancel" );
bntCancel.setPreferredSize( new Dimension( 90, 20 ) );
bntCancel.addActionListener( this );
gbConstraints.gridx = 1; gbConstraints.gridy = 2;
layout.setConstraints( bntCancel, gbConstraints );
panel.add( bntCancel );
}
public void actionPerformed( ActionEvent e ){
if( e.getSource() == bntCriaConta )
new CriaConta( this );
else if( e.getSource() == bntOk )
confirma();
else if( e.getSource() == bntCancel )
limpa();
else if( e.getSource() == bntMostraContas )
mostraContas();
}
private void mostraContas(){
HashMap map = null;
RecuperaConta transaction = new RecuperaConta( "" );
try{
Main.prevayler.execute( transaction );
map = transaction.getMap();
}
catch( Exception e ){
e.printStackTrace();
}
Collection nomes = map.values();
Conta conta = null;
String output = "";
for( Iterator i = nomes.iterator(); i.hasNext(); ){
conta = (Conta)i.next();
output += "Nome: " + conta.getNome() + "
";
}
JOptionPane.showMessageDialog( this, output, "Mostra contas", JOptionPane.OK_OPTION );
}
private void confirma(){
Conta conta = null;
String nome = txtNome.getText().trim();
String senha = new String( txtSenha.getPassword() ).trim();
RecuperaConta transaction = new RecuperaConta( nome );
try{
conta = (Conta)Main.prevayler.execute( transaction );
}
catch( Exception e ){
e.printStackTrace();
}
if( conta == null || !nome.equals( conta.getNome() ) || !senha.equals( conta.getSenha() ) )
JOptionPane.showMessageDialog( this, "Senha invalida", "Senha invalida", JOptionPane.OK_OPTION );
else JOptionPane.showMessageDialog( this, "Senha correta!", "Senha correta!", JOptionPane.OK_OPTION );
limpa();
}
private void limpa(){
txtNome.setText( "" );
txtSenha.setText( "" );
}
public static void main( String[] args ) {
new Main();
}
}
public class CriaConta extends JDialog implements ActionListener{
private JLabel labelNome;
private JLabel labelSenha;
private JTextField txtNome;
private JPasswordField txtSenha;
private JButton bntCancel;
private JButton bntOk;
public CriaConta( Frame owner ){
super( owner, "Cria conta" );
setDefaultCloseOperation( JDialog.DISPOSE_ON_CLOSE );
setContentPane( new JPanel( new GridBagLayout() ) );
setSize( 200, 100 );
initComponents();
show();
}
private void initComponents(){
JPanel panel = (JPanel)getContentPane();
GridBagLayout layout = (GridBagLayout)panel.getLayout();
GridBagConstraints gbConstraints = new GridBagConstraints();
gbConstraints.fill = GridBagConstraints.HORIZONTAL;
labelNome = new JLabel( "Nome: " );
gbConstraints.gridx = 0; gbConstraints.gridy = 0;
layout.setConstraints( labelNome, gbConstraints );
panel.add( labelNome );
txtNome = new JTextField( 8 );
gbConstraints.gridx = 1; gbConstraints.gridy = 0;
layout.setConstraints( txtNome, gbConstraints );
panel.add( txtNome );
labelSenha = new JLabel( "Senha: " );
gbConstraints.gridx = 0; gbConstraints.gridy = 1;
layout.setConstraints( labelSenha, gbConstraints );
panel.add( labelSenha );
txtSenha = new JPasswordField( 8 );
gbConstraints.gridx = 1; gbConstraints.gridy = 1;
layout.setConstraints( txtSenha, gbConstraints );
panel.add( txtSenha );
bntOk = new JButton( "ok" );
bntOk.setPreferredSize( new Dimension( 90, 20 ) );
bntOk.addActionListener( this );
gbConstraints.gridx = 0; gbConstraints.gridy = 2;
layout.setConstraints( bntOk, gbConstraints );
panel.add( bntOk );
bntCancel = new JButton( "cancel" );
bntCancel.setPreferredSize( new Dimension( 90, 20 ) );
bntCancel.addActionListener( this );
gbConstraints.gridx = 1; gbConstraints.gridy = 2;
layout.setConstraints( bntCancel, gbConstraints );
panel.add( bntCancel );
}
public void actionPerformed( ActionEvent e ){
if( e.getSource() == bntCancel )
dispose();
else if( e.getSource() == bntOk )
criaConta();
}
private void criaConta(){
AdicionaConta transaction = new AdicionaConta( txtNome.getText(), new String( txtSenha.getPassword() ) );
Main.prevayler.execute( transaction );
dispose();
}
}
:arrow: prevayler da pra fazer esses tipo de programas???
:arrow: Caso eu queria deleta uma Conta… tem como eu deleta a conta que eu quero?