Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Code Block
JAVA
JAVA
borderStylesolid
titleAccountClient.java
package sample.jpa.appclient;

import java.util.List;

import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.Persistence;
import javax.persistence.Query;
import javax.persistence.EntityTransaction;

public class AccountClient {

    private EntityManager em;

    public AccountClient() {

        EntityManagerFactory emf = Persistence.createEntityManagerFactory("JPA-App-Client");
        if (emf == null) {
            throw new IllegalStateException("EntityManagerFactory is unavailable");
        }

        em = emf.createEntityManager();
        if (em == null) {
            throw new IllegalStateException("EntityManager is unavailable");
        }
    }

    public static void main(String[] args) {

        AccountClient client = new AccountClient();

        String opt = args[0];
        if ("create".equals(opt)) {
            if (args.length != 6) {
                System.err.println("No values for accountNo, name, address, branchCode and balance. Exiting.");
                System.exit(0);
            } else {
                int accNo = Integer.parseInt(args[1]);
                String name = args[2];
                String address = args[3];
                int branchCode = Integer.parseInt(args[4]);
                double balance = Double.parseDouble(args[5]);
                client.createAccount(accNo, name, address, branchCode, balance);
            }
        } else if ("list".equals(opt)) {
            List<Account> accounts = client.listAccounts();
            for (Account account: accounts) {
                System.out.println("_________________________________");
                System.out.println(account.getAccountNo());
                System.out.println(account.getName());
                System.out.println(account.getAddress());
                System.out.println(account.getBranchCode());
                System.out.println(account.getBalance());
                System.out.println("____________________________________________");
                System.out.println("");
            }
        } else if ("update".equals(opt)) {
            if (args.length != 3) {
                System.out.println("No values for accountNo and new balace value. Exiting.");
                System.exit(0);
            } else {
                int accNo = Integer.parseInt(args[1]);
                double newbalance = Double.parseDouble(args[2]);
                client.updateAccountBalance(accNo, newbalance);
            }
        } else if (opt.equals("delete")) {
            if (args.length != 2) {
                System.out.println("No values for accountNo for delete. Exiting.");
                System.exit(0);
            } else {
                int accNo = Integer.parseInt(args[1]);
                client.deleteAccount(accNo);
            }
        }
        else {
            System.err.println("Unknown option (" + opt + ") selected");
        }

    }

    public Account createAccount(int accNo, String name, String address, int branchCode, double balance) {

        Account acc1 = em.find(Account.class, accNo);
        if (acc1 != null) {
            throw new IllegalArgumentException("Account already exists - account Number (" + accNo + ")");
        }
        Account acc = new Account();
        acc.setAccountNo(accNo);
        acc.setAddress(address);
        acc.setBalance(balance);
        acc.setBranchCode(branchCode);
        acc.setName(name);
        System.out.println("Persisting account entity (accNo = " + accNo + ")");
        EntityTransaction et = em.getTransaction();
        et.begin();
        em.persist(acc);
        et.commit();
        System.out.println("Persisted successfully account entity (accNo = " + accNo + ")");
        return acc;

    }

    @SuppressWarnings("unchecked")
    public List<Account> listAccounts() {
        Query q = em.createQuery("SELECT a FROM Account a");
        List<Account> currList = q.getResultList();
        return currList;
    }

    public Account updateAccountBalance(int accNo, double newBalance) {
        Account acc = em.find(Account.class, accNo);
        if (acc == null) {
            throw new IllegalArgumentException("Account not found : Account Number (" + accNo + ")");
        }
        acc.setBalance(newBalance EntityTransaction et = em.getTransaction();
        emet.merge(accbegin();
        acc.setBalance(newBalance);
        et.commit();
        return acc;

    }

    public void deleteAccount(int accNo) {
        EntityTransaction et = em.getTransaction();
        et.begin();
        em.remove(em.getReference(Account.class, accNo));
        et.commit();
    }
}

Preparing Deployment Descriptors and Deployment Plans

...