/**
* Copyright (c) 2009 Juwi MacMillan Group GmbH
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
// license-header java merge-point
/**
* This is only generated once! It will never be overwritten.
* You can (and have to!) safely modify it by hand.
*/
package de.juwimm.cms.components.model;
import java.util.Arrays;
import java.util.Collection;
import java.util.Date;
import java.util.Map;
import org.apache.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
import org.tizzit.util.XercesHelper;
import org.w3c.dom.Element;
import de.juwimm.cms.components.vo.PersonValue;
import de.juwimm.cms.model.SequenceHbmDao;
import de.juwimm.cms.model.UnitHbm;
/**
* @see de.juwimm.cms.components.model.PersonHbm
* @author <a href="mailto:carsten.schalm@juwimm.com">Carsten Schalm</a> ,
* Juwi|MacMillan Group Gmbh, Walsrode, Germany
* @version $Id$
*/
public class PersonHbmDaoImpl extends PersonHbmDaoBase {
private static Logger log = Logger.getLogger(PersonHbmDaoImpl.class);
@Autowired
private SequenceHbmDao sequenceHbmDao;
/*
* (non-Javadoc)
*
* @see de.juwimm.cms.components.model.PersonHbmDaoBase#create(de.juwimm.cms.components.model.PersonHbm)
*/
@Override
public PersonHbm create(PersonHbm personHbm) {
if (personHbm.getPersonId() == null) {
try {
personHbm.setPersonId(new Long(sequenceHbmDao.getNextSequenceNumber("person.person_id").longValue()));
} catch (Exception e) {
log.error("Error creating primary key", e);
}
}
personHbm.setLastModifiedDate(new Date().getTime());
return super.create(personHbm);
}
/*
* (non-Javadoc)
*
* @see de.juwimm.cms.components.model.PersonHbmDaoBase#update(de.juwimm.cms.components.model.PersonHbm)
*/
@Override
public void update(PersonHbm personHbm) {
personHbm.setLastModifiedDate(new Date().getTime());
super.update(personHbm);
}
@Override
protected Long handleCreate() throws Exception {
PersonHbm person = PersonHbm.Factory.newInstance();
return this.create(person).getPersonId();
}
@Override
protected Long handleCreate(PersonValue value) throws Exception {
PersonHbm p = PersonHbm.Factory.newInstance();
p.setAddresses(Arrays.asList(value.getAddresses()));
p.setBirthDay(value.getBirthDay());
p.setCountryJob(value.getCountryJob());
if (value.getDepartmentId() != null) {
// TODO - AddressHbm <-> DepartmentDao
// setDepartments
}
p.setExternalId(value.getExternalId());
p.setFirstname(value.getFirstname());
p.setImageId(value.getImageId());
p.setJob(value.getJob());
p.setJobTitle(value.getJobTitle());
p.setLastModifiedDate(value.getLastModifiedDate());
p.setLastname(value.getLastname());
p.setLinkMedicalAssociation(value.getLinkMedicalAssociation());
p.setMedicalAssociation(value.getMedicalAssociation());
if (value.getPersonId() != null) {
p.setPersonId(value.getPersonId());
} else {
try {
Integer id = sequenceHbmDao.getNextSequenceNumber("person.person_id");
p.setPersonId(new Long(id));
} catch (Exception e) {
log.error("Error creating primary key", e);
}
}
p.setPosition(value.getPosition());
p.setSalutation(value.getSalutation());
p.setSex(value.getSex());
p.setTalktimes(Arrays.asList(value.getTalktimes()));
p.setTitle(value.getTitle());
// TODO AddressHbm <-> UnitDao
// p.setUnits(value.getUnitId())
getHibernateTemplate().save(p);
return p.getPersonId();
}
@Override
protected Long handleCreate(Element ael, boolean useNewId, Map mappingPersons, Map mappingAddresses, Map mappingTalktime) throws Exception {
Long pid = new Long(ael.getAttribute("id"));
PersonHbm person = PersonHbm.Factory.newInstance();
if (useNewId) {
try {
Integer id = sequenceHbmDao.getNextSequenceNumber("person.person_id");
person.setPersonId(new Long(id));
} catch (Exception e) {
log.error("Error creating primary key", e);
}
mappingPersons.put(pid, person.getPersonId());
} else {
try {
PersonHbm pl = super.load(pid);
log.warn("Removing existing Person while creating a new one with Name " + pl.getLastname());
super.remove(pid);
} catch (Exception exe) {
log.error("An error occurred: " + exe.getMessage(), exe);
} finally {
person.setPersonId(pid);
}
}
try {
person.setImageId(new Integer(ael.getAttribute("imageid")));
} catch (Exception exe) {
}
try {
person.setBirthDay(getNVal(ael, "birthDay"));
} catch (Exception exe) {
log.error("An error occurred: " + exe.getMessage(), exe);
}
try {
person.setCountryJob(getNVal(ael, "countryJob"));
person.setFirstname(getNVal(ael, "firstname"));
person.setJob(getNVal(ael, "job"));
person.setJobTitle(getNVal(ael, "jobTitle"));
person.setLastname(getNVal(ael, "lastname"));
person.setLinkMedicalAssociation(getNVal(ael, "linkMedicalAssociation"));
person.setMedicalAssociation(getNVal(ael, "medicalAssociation"));
person.setPosition(new Byte(getNVal(ael, "position")).byteValue());
person.setSalutation(getNVal(ael, "salutation"));
person.setSex(new Byte(getNVal(ael, "sex")).byteValue());
person.setTitle(getNVal(ael, "title"));
person.setExternalId(getNVal(ael, "externalId"));
person.setLastModifiedDate(new Date().getTime());
} catch (Exception exe) {
log.warn("Error setting values: ", exe);
}
return person.getPersonId();
}
private String getNVal(Element ael, String nodeName) {
String tmp = XercesHelper.getNodeValue(ael, "./" + nodeName);
if (tmp.equals("null") || tmp.equals("")) { return null; }
return tmp;
}
@Override
protected Long handleCreate(Element ael, boolean useNewId, Map mappingPersons, Map mappingAddresses, Map mappingTalktime, Map mappingPics) throws Exception {
Long pid = new Long(ael.getAttribute("id"));
PersonHbm person = PersonHbm.Factory.newInstance();
if (useNewId) {
try {
Integer id = sequenceHbmDao.getNextSequenceNumber("person.person_id");
person.setPersonId(new Long(id));
} catch (Exception e) {
log.error("Error creating primary key", e);
}
mappingPersons.put(pid, person.getPersonId());
} else {
try {
PersonHbm pl = load(pid);
log.warn("Removing existing Person while creating a new one with Name " + pl.getLastname());
remove(pid);
} catch (Exception exe) {
} finally {
person.setPersonId(pid);
}
}
Integer oldPicId = null;
try {
oldPicId = new Integer(ael.getAttribute("imageid"));
} catch (Exception e) {
}
if (!useNewId) {
try {
person.setImageId(oldPicId);
} catch (Exception exe) {
log.error("An error occurred: " + exe.getMessage(), exe);
}
} else {
Object o = null;
if (oldPicId != null) o = mappingPics.get(oldPicId);
if (o != null) {
Integer newPicId = (Integer) o;
person.setImageId(newPicId);
} else {
log.warn("Person " + person.getPersonId() + ": New ImageId for oldId " + oldPicId + " not found! Perhaps Image is located in a different Unit?");
}
}
try {
person.setBirthDay(getNVal(ael, "birthDay"));
} catch (Exception exe) {
}
try {
person.setCountryJob(getNVal(ael, "countryJob"));
person.setFirstname(getNVal(ael, "firstname"));
person.setJob(getNVal(ael, "job"));
person.setJobTitle(getNVal(ael, "jobTitle"));
person.setLastname(getNVal(ael, "lastname"));
person.setLinkMedicalAssociation(getNVal(ael, "linkMedicalAssociation"));
person.setMedicalAssociation(getNVal(ael, "medicalAssociation"));
person.setPosition(new Byte(getNVal(ael, "position")).byteValue());
person.setSalutation(getNVal(ael, "salutation"));
person.setSex(new Byte(getNVal(ael, "sex")).byteValue());
person.setTitle(getNVal(ael, "title"));
person.setExternalId(getNVal(ael, "externalId"));
person.setLastModifiedDate(new Date().getTime());
} catch (Exception exe) {
log.warn("Error setting values: ", exe);
}
return person.getPersonId();
}
@SuppressWarnings("unchecked")
public java.util.Collection findAll(final int transform) {
return this.findAll(transform, "from de.juwimm.cms.components.model.PersonHbm as personHbm");
}
@SuppressWarnings("unchecked")
public java.util.Collection findAll(final int transform, final java.lang.Integer siteId) {
return this.findAll(transform, "select p from de.juwimm.cms.components.model.PersonHbm p inner join fetch p.units u where u.site.siteId = ?", siteId);
}
@SuppressWarnings("unchecked")
public java.util.Collection findByNameAndUnit(final int transform, final java.lang.Integer unitId, final java.lang.String firstName, final java.lang.String lastName) {
return this.findByNameAndUnit(transform, "select p from de.juwimm.cms.components.model.PersonHbm p inner join fetch p.units u where u.unitId = ? and p.firstname like ? and p.lastname like ?", unitId, firstName, lastName);
}
@SuppressWarnings("unchecked")
public java.util.Collection findByName(final int transform, final java.lang.Integer siteId, final java.lang.String firstName, final java.lang.String lastName) {
return this.findByName(transform, "select p from de.juwimm.cms.components.model.PersonHbm p inner join fetch p.units u where u.site.siteId = ? and p.firstname like ? and p.lastname like ?", siteId, firstName, lastName);
}
public java.lang.Object findByExternalId(final int transform, final java.lang.String externalId) {
return this.findByExternalId(transform, "from de.juwimm.cms.components.model.PersonHbm p where p.externalId = ?", externalId);
}
@SuppressWarnings("unchecked")
public java.util.Collection findByUnit(final int transform, final java.lang.Integer unitId) {
return this.findByUnit(transform, "select p from de.juwimm.cms.components.model.PersonHbm p inner join p.units n where n.unitId = ?", unitId);
}
@Override
protected PersonHbm handleClonePerson(PersonHbm oldPerson, UnitHbm unit, Integer pictureId) throws Exception {
PersonHbm person = PersonHbm.Factory.newInstance();
try {
Integer id = sequenceHbmDao.getNextSequenceNumber("person.person_id");
person.setPersonId(new Long(id));
} catch (Exception e) {
if (log.isDebugEnabled()) log.error("Error creating primary key", e);
}
if (pictureId != null) {
person.setImageId(pictureId);
}
person.setCountryJob(oldPerson.getCountryJob());
person.setFirstname(oldPerson.getFirstname());
person.setJob(oldPerson.getJob());
person.setJobTitle(oldPerson.getJobTitle());
person.setLastname(oldPerson.getLastname());
person.setLinkMedicalAssociation(oldPerson.getLinkMedicalAssociation());
person.setMedicalAssociation(oldPerson.getMedicalAssociation());
person.setPosition(oldPerson.getPosition());
person.setSalutation(oldPerson.getSalutation());
person.setSex(oldPerson.getSex());
person.setTitle(oldPerson.getTitle());
person.setExternalId(oldPerson.getExternalId());
person.setLastModifiedDate(new Date().getTime());
try {
person.setBirthDay(oldPerson.getBirthDay());
} catch (Exception exe) {
}
Collection<TalktimeHbm> talktimes = oldPerson.getTalktimes();
for (TalktimeHbm talktimeHbm : talktimes) {
TalktimeHbm talktime = getTalktimeHbmDao().cloneTalkTime(talktimeHbm);
person.addTalktime(talktime);
}
Collection<AddressHbm> addresses = oldPerson.getAddresses();
for (AddressHbm addressHbm : addresses) {
AddressHbm address = getAddressHbmDao().cloneAddress(addressHbm);
person.addAddress(address);
}
person.getUnits().add(unit);
person = create(person);
return person;
}
}