[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