package fi.otavanopisto.pyramus.dao.base;
import javax.ejb.Stateless;
import javax.persistence.EntityManager;
import fi.otavanopisto.pyramus.dao.PyramusEntityDAO;
import fi.otavanopisto.pyramus.domainmodel.base.Address;
import fi.otavanopisto.pyramus.domainmodel.base.ContactInfo;
import fi.otavanopisto.pyramus.domainmodel.base.ContactType;
@Stateless
public class AddressDAO extends PyramusEntityDAO<Address> {
public Address create(ContactInfo contactInfo, ContactType contactType, String name, String streetAddress, String postalCode, String city,
String country, Boolean defaultAddress) {
EntityManager entityManager = getEntityManager();
Address address = new Address();
address.setContactInfo(contactInfo);
address.setContactType(contactType);
address.setName(name);
address.setStreetAddress(streetAddress);
address.setPostalCode(postalCode);
address.setCity(city);
address.setCountry(country);
address.setDefaultAddress(defaultAddress);
entityManager.persist(address);
contactInfo.addAddress(address);
entityManager.persist(contactInfo);
return address;
}
/**
* Updates and returns the given address.
*
* @param address
* The address to update
* @param defaultAddress
* Default address
* @param contactType
* Contact type
* @param name
* Name
* @param streetAddress
* Street address
* @param postalCode
* Postal code
* @param city
* City
* @param country
* Country
*
* @return The updated address
*/
public Address update(Address address, Boolean defaultAddress, ContactType contactType, String name, String streetAddress, String postalCode,
String city, String country) {
EntityManager entityManager = getEntityManager();
address.setDefaultAddress(defaultAddress);
address.setContactType(contactType);
address.setName(name);
address.setStreetAddress(streetAddress);
address.setPostalCode(postalCode);
address.setCity(city);
address.setCountry(country);
entityManager.persist(address);
return address;
}
@Override
public void delete(Address address) {
if (address.getContactInfo() != null) {
address.getContactInfo().removeAddress(address);
}
super.delete(address);
}
}