/**
*
*/
package net.agef.jobexchange.webservice.adapter;
import net.agef.jobexchange.domain.DecisionYesNoEnum;
import net.agef.jobexchange.domain.WorkExperience;
import net.agef.jobexchange.exceptions.EnumValueNotFoundException;
import net.agef.jobexchange.exceptions.IndustrySectorNotFoundException;
import net.agef.jobexchange.webservice.adapter.util.DateUtil;
import net.agef.jobexchange.webservice.entities.WorkExperienceDTO;
/**
* @author AGEF
*
*/
public class WorkExperienceAssemblerWorker implements WorkExperienceAssembler{
private OccupationalFieldAssembler oa;
private IndustrySectorAssembler ia;
public WorkExperienceAssemblerWorker(IndustrySectorAssembler industrySectorAssembler, OccupationalFieldAssembler occupationalFieldAssembler){
this.oa = occupationalFieldAssembler;
this.ia = industrySectorAssembler;
}
@Override
public WorkExperienceDTO createDTO(WorkExperience work) {
WorkExperienceDTO dto = new WorkExperienceDTO();
if(work!= null){
dto.setCompany(work.getCompany());
dto.setHomepage(work.getHomepage());
dto.setFinished(DateUtil.date2Calendar(work.getFinished()));
if(work.getUntilToday() != null){
dto.setUntilToday(work.getUntilToday().value());
}
dto.setJobDescription(work.getJobDescription());
dto.setJobTitle(work.getJobTitle());
dto.setSector(ia.createDTO(work.getSector()));
dto.setStarted(DateUtil.date2Calendar(work.getStarted()));
if(work.getManagementExperience() != null){
dto.setManagementExperience(work.getManagementExperience().value());
}
if(work.getOccupationalField()!=null){
if(work.getOccupationalField().getParentFieldId()!=0) {
dto.setOccupationalSubField(work.getOccupationalField().getFieldId().toString());
dto.setOccupationalField(work.getOccupationalField().getParentFieldId().toString());
} else {
dto.setOccupationalField(oa.createDTO(work.getOccupationalField()));
}
}
}
return dto;
}
@Override
public WorkExperience createDomainObj(WorkExperienceDTO dto) throws IndustrySectorNotFoundException, EnumValueNotFoundException {
WorkExperience work = new WorkExperience();
if(dto != null){
//System.out.println("DTOGetFineshed: "+dto.getFinished()+" WorkGetFinished: " + work.getFinished());
work.setJobDescription(dto.getJobDescription());
work.setJobTitle(dto.getJobTitle());
work.setSector(ia.getDomainObj(dto.getSector()));
work.setStarted(DateUtil.calendar2Date(dto.getStarted()));
work.setFinished(DateUtil.calendar2Date(dto.getFinished()));
if(dto.getUntilToday() != null)
work.setUntilToday(DecisionYesNoEnum.valueOf(dto.getUntilToday()));
work.setCompany(dto.getCompany());
work.setHomepage(dto.getHomepage());
if(dto.getManagementExperience() != null){
work.setManagementExperience(DecisionYesNoEnum.fromValue(dto.getManagementExperience()));
}
//System.out.println("DTOGetStarted: "+dto.getStarted()+" WorkGetStarted: "+ work.getStarted());
//Es wird jeweils nur die Unterkategorie gespeichert, da sich die Oberkategorie hieraus ableiten laesst
if(dto.getOccupationalField()!=null){
if(dto.getOccupationalSubField()!=null){
work.setOccupationalField(oa.getDomainObj(dto.getOccupationalSubField()));
} else work.setOccupationalField(oa.getDomainObj(dto.getOccupationalField()));
}
}
return work;
}
@Override
public WorkExperience updateDomainObj(WorkExperienceDTO dto, WorkExperience existingWorkExperience) throws IndustrySectorNotFoundException, EnumValueNotFoundException {
return createDomainObj(dto);
// WorkExperience work = existingWorkExperience;
//
// if(dto != null){
// work.setJobDescription(dto.getJobDescription());
// work.setJobTitle(dto.getJobTitle());
// work.setSector(ia.getDomainObj(dto.getSector()));
// work.setStarted(DateUtil.calendar2Date(dto.getStarted()));
// work.setFinished(DateUtil.calendar2Date(dto.getFinished()));
//
// work.setUntilToday(DecisionYesNoEnum.valueOf(dto.getUntilToday()));
// work.setCompany(dto.getCompany());
// work.setHomepage(dto.getHomepage());
// work.setManagementExperience(DecisionYesNoEnum.fromValue(dto.getManagementExperience()));
//
// //Es wird jeweils nur die Unterkategorie gespeichert, da sich die Oberkategorie hieraus ableiten laesst
// if(dto.getOccupationalField()!=null){
// if(dto.getOccupationalSubField()!=null){
// work.setOccupationalField(oa.getDomainObj(dto.getOccupationalSubField()));
// } else work.setOccupationalField(oa.getDomainObj(dto.getOccupationalField()));
// }
//
// }
//
// return work;
}
}