[jboss-cvs] jboss-seam/examples/seampay/src/org/jboss/seam/example/seampay ...

Norman Richards norman.richards at jboss.com
Fri Oct 20 12:51:27 EDT 2006


  User: nrichards
  Date: 06/10/20 12:51:27

  Added:       examples/seampay/src/org/jboss/seam/example/seampay    
                        Account.java Payment.java PaymentController.java
                        PaymentProcessor.java
  Log:
  initial checkin
  
  Revision  Changes    Path
  1.1      date: 2006/10/20 16:51:26;  author: nrichards;  state: Exp;jboss-seam/examples/seampay/src/org/jboss/seam/example/seampay/Account.java
  
  Index: Account.java
  ===================================================================
  package org.jboss.seam.example.seampay;
  
  import java.util.ArrayList;
  import java.util.List;
  import java.io.Serializable;
  
  import javax.persistence.*;
  import org.hibernate.validator.Length;
  
  @Entity
  public class Account
      implements Serializable
  {
      @Id @GeneratedValue 
      private Long id;
  
      float  balance;
      String accountNumber;
      //String login;
      //String password;
         
      @OneToMany(mappedBy="account", cascade=CascadeType.REMOVE)
      //@OrderBy("paymentDate")
      private List<Payment> payments;
     
      public Long getId()
      {
          return id;
      }
      public void setId(Long id)
      {
          this.id = id;
      }
  
      public String getAccountNumber()
      {
          return accountNumber;
      }
      public void setAccountNumber(String accountNumber)
      {
          this.accountNumber = accountNumber;
      }
  
  
      public float getBalance()
      {
          return balance;
      }
  
      public float adjustBalance(float amount) {
          balance += amount;
          return balance;
      }
  
      public List<Payment> getPayments() 
      {
          return payments;
      }
  }
  
  
  
  1.1      date: 2006/10/20 16:51:26;  author: nrichards;  state: Exp;jboss-seam/examples/seampay/src/org/jboss/seam/example/seampay/Payment.java
  
  Index: Payment.java
  ===================================================================
  package org.jboss.seam.example.seampay;
  
  import javax.persistence.*;
  import org.hibernate.validator.*;
  
  import java.io.Serializable;
  import java.util.Date;
  
  @Entity
  public class Payment
      implements Serializable
  {
      @Id @GeneratedValue 
      private Long id;
  
      // neither @Min or @Pattern work here
      private float amount;
      @NotNull @Length(min=1)
      private String payee;
  
      @NotNull @ManyToOne
      private Account account;
     
      @NotNull
      private Date paymentDate;
      @NotNull
      private Date createdDate;
  
      private boolean paid = false;
  
  
      public Long getId()
      {
          return id;
      }
      
      public float getAmount()
      {
          return amount;
      }
      public void setAmount(float amount)
      {
          this.amount = amount;
      }
      
      public String getPayee()
      {
          return payee;
      }
  
      public void setPayee(String payee)
      {
          this.payee = payee;
      }
  
      public Account getAccount()
      {
          return account;
      }
      
      public void setAccount(Account account)
      {
          this.account = account;
          account.getPayments().add(this);
      }
  
      public Date getPaymentDate()
      {
          return paymentDate;
      }
      public void setPaymentDate(Date paymentDate)
      {
          this.paymentDate = paymentDate;
      }  
  
      public Date getCreatedDate()
      {
          return createdDate;
      }    
      public void setCreatedDate(Date createdDate)
      {
          this.createdDate = createdDate;
      }  
          
      public boolean getPaid() { return paid;} 
      public void setPaid(boolean paid) { this.paid = paid; }
  }
  
  
  
  1.1      date: 2006/10/20 16:51:26;  author: nrichards;  state: Exp;jboss-seam/examples/seampay/src/org/jboss/seam/example/seampay/PaymentController.java
  
  Index: PaymentController.java
  ===================================================================
  package org.jboss.seam.example.seampay;
  
  import org.jboss.seam.annotations.*;
  import org.jboss.seam.annotations.timer.*;
  import org.jboss.seam.framework.*;
  import org.jboss.seam.core.Expressions;
  import org.jboss.seam.core.Expressions.ValueBinding;
  import org.jboss.seam.log.Log;
  
  import javax.persistence.*;
  
  import java.util.Date;
  import javax.ejb.Timer;
  
  
  public class PaymentController 
      extends EntityHome<Payment>
  {
      @In(create=true) PaymentProcessor processor;
  
      @Logger Log log;
  
      public String saveAndSchedule()
      {
          String result = persist();
          
          Payment payment = getInstance();
          log.info("scheduling instance #0", payment);
          processor.schedulePayment(payment.getPaymentDate(), payment);
  
          return result;
      }
  }
  
  
  
  1.1      date: 2006/10/20 16:51:26;  author: nrichards;  state: Exp;jboss-seam/examples/seampay/src/org/jboss/seam/example/seampay/PaymentProcessor.java
  
  Index: PaymentProcessor.java
  ===================================================================
  package org.jboss.seam.example.seampay;
  
  import org.jboss.seam.annotations.*;
  import org.jboss.seam.annotations.timer.*;
  
  import java.util.Date;
  import javax.persistence.*;
  import javax.ejb.Timer;
  
  @Name("processor")
  public class PaymentProcessor {
      @In(create=true) EntityManager entityManager;
  
      @Asynchronous
      @Transactional
      public Timer schedulePayment(@Expiration Date when, Payment payment) { 
          payment = entityManager.merge(payment);
  
          System.out.println("[" + System.currentTimeMillis() + "] Processing  " + payment); 
  
          if (!payment.getPaid()) {
              float balance = payment.getAccount().adjustBalance(-payment.getAmount());
              System.out.println(":: balance is now " + balance);
              payment.setPaid(true);
          }
  
          return null;
      }
  }
  
  
  



More information about the jboss-cvs-commits mailing list