//
//"This sample program is provided AS IS and may be used, executed, copied and modified without royalty payment by customer (a) for its own
//instruction and study, (b) in order to develop applications designed to run with an IBM WebSphere product, either for customer's own internal use
//or for redistribution by customer, as part of such an application, in customer's own products. "
//
//Product 5630-A36, (C) COPYRIGHT International Business Machines Corp., 2001,2003
//All Rights Reserved * Licensed Materials - Property of IBM
//
package com.emc.plants.service.impl;
import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.LockModeType;
import javax.persistence.PersistenceContext;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Repository;
import com.emc.plants.persistence.Customer;
import com.emc.plants.pojo.beans.CustomerInfo;
import com.emc.plants.service.interfaces.Login;
import com.emc.plants.utils.Util;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
/**
* LoginBean is the implementation class for the {@link Login} stateless session
* EJB. LoginBean implements each of the business methods in the <code>Login</code>
* EJB remote interface and each of the EJB lifecycle methods in the javax.ejb.SessionBean
* interface.
*
* @see Login
*/
//@Stateless (name="Login")
@Repository("login")
public class LoginBean implements Login
{
@Autowired
private EntityManagerFactory entityManagerFactory;
// private EntityManager em;
//
// public void setEntityManagerFactory(EntityManagerFactory entityManagerFactory) {
// this.entityManagerFactory =entityManagerFactory;
// }
/**
* Verify that the user exists and the password is value.
*
* @param customerID The customer ID
* @param password The password for the customer ID
* @return String with a results message.
*/
public String verifyUserAndPassword(String customerID, String password)
{
// Try to get customer.
String results = null;
Customer customer = null;
/*
CustomerHome customerHome = (CustomerHome)
Util.getEJBLocalHome("java:comp/env/ejb/Customer",
com.ibm.websphere.samples.pbwjpa.CustomerHome.class);
try
{
customer = customerHome.findByPrimaryKey(new CustomerKey(customerID));
}
catch (ObjectNotFoundException e) { }
}
catch (FinderException e) { e.printStackTrace(); }
*/
EntityManager em = entityManagerFactory.createEntityManager();
customer = em.find(Customer.class, customerID);
// Does customer exists?
if (customer != null)
{
if ( ! customer.verifyPassword(password) ) // Is password correct?
{
results = "\nPassword does not match for : " + customerID;
Util.debug("Password given does not match for userid=" + customerID);
}
}
else // Customer was not found.
{
results = "\nCould not find account for : " + customerID;
Util.debug("customer " + customerID + " NOT found");
}
return results;
}
/**
* Create a new user.
*
* @param customerID The new customer ID.
* @param password The password for the customer ID.
* @param firstName First name.
* @param lastName Last name.
* @param addr1 Address line 1.
* @param addr2 Address line 2.
* @param addrCity City address information.
* @param addrState State address information.
* @param addrZip Zip code address information.
* @param phone User's phone number.
* @return CustomerInfo
*/
//@Transactional
public CustomerInfo createNewUser(String customerID, String password, String firstName,
String lastName, String addr1, String addr2,
String addrCity, String addrState, String addrZip,
String phone)
{
CustomerInfo customerInfo = null;
/*
customerHome = (CustomerHome) Util.getEJBLocalHome("java:comp/env/ejb/Customer",
com.ibm.websphere.samples.pbwjpa.CustomerHome.class);
try
{
// Only create new user if it doesn't already exist.
customerHome.findByPrimaryKeyUpdate(customerID);
}
catch (ObjectNotFoundException onfe)
{
// Create customer and return true if all goes well.
Customer customer =
customerHome.create(new CustomerKey(customerID), password, firstName,
lastName, addr1, addr2, addrCity, addrState,
addrZip, phone);
if (customer != null)
customerInfo = new CustomerInfo(customer);
}
}
catch (FinderException e) { e.printStackTrace(); }
catch (CreateException e) { e.printStackTrace(); }
*/
Customer c = new Customer(customerID, password, firstName, lastName, addr1, addr2,
addrCity, addrState, addrZip, phone);
EntityManager em = entityManagerFactory.createEntityManager();
em.getTransaction().begin();
em.persist(c);
em.flush();
em.getTransaction().commit();
customerInfo = new CustomerInfo(c);
return customerInfo;
}
/**
* Update an existing user.
*
* @param customerID The customer ID.
* @param firstName First name.
* @param lastName Last name.
* @param addr1 Address line 1.
* @param addr2 Address line 2.
* @param addrCity City address information.
* @param addrState State address information.
* @param addrZip Zip code address information.
* @param phone User's phone number.
* @return CustomerInfo
*/
public CustomerInfo updateUser(String customerID, String firstName, String lastName,
String addr1, String addr2, String addrCity,
String addrState, String addrZip,String phone)
{
CustomerInfo customerInfo = null;
// TODO: lowp: no lock check is performed to see if cust data has changed since fetch!
/*
customerHome = (CustomerHome) Util.getEJBLocalHome("java:comp/env/ejb/Customer",
com.ibm.websphere.samples.pbwjpa.CustomerHome.class);
Customer customer = customerHome.findByPrimaryKeyUpdate(customerID);
customer.update(firstName, lastName, addr1, addr2, addrCity, addrState, addrZip, phone);
customerInfo = new CustomerInfo(customer);
*/
EntityManager em = entityManagerFactory.createEntityManager();
em.getTransaction().begin();
Customer c = em.find(Customer.class, customerID);
em.lock(c, LockModeType.WRITE);
em.refresh(c);
// TODO: lowp: test and set for update performance?
c.setFirstName(firstName);
c.setLastName(lastName);
c.setAddr1(addr1);
c.setAddr2(addr2);
c.setAddrCity(addrCity);
c.setAddrState(addrState);
c.setAddrZip(addrZip);
c.setPhone(phone);
customerInfo = new CustomerInfo(c);
em.getTransaction().commit();
return customerInfo;
}
/**
* Retrieve an existing user.
*
* @param customerID The customer ID.
* @return CustomerInfo
*/
public CustomerInfo getCustomerInfo(String customerID)
{
//EntityManager em = entityManagerFactory.createEntityManager();
CustomerInfo customerInfo = null;
/*
customerHome = (CustomerHome) Util.getEJBLocalHome("java:comp/env/ejb/Customer",
com.ibm.websphere.samples.pbwjpa.CustomerHome.class);
Customer customer = customerHome.findByPrimaryKey(new CustomerKey(customerID));
customerInfo = new CustomerInfo(customer);
*/
EntityManager em = entityManagerFactory.createEntityManager();
System.out.println(" Entity Manager :: "+em);
Customer c = em.find(Customer.class, customerID);
customerInfo = new CustomerInfo(c);
return customerInfo;
}
/* @PersistenceContext(unitName="PBW")
public void setEm(EntityManager em) {
this.em = em;
}*/
}