/** * */ package net.agef.jobexchange.webservice.adapter; import net.agef.jobexchange.domain.LanguageSkill; import net.agef.jobexchange.domain.LanguageSkillsEnum; import net.agef.jobexchange.domain.Languages; import net.agef.jobexchange.exceptions.EnumValueNotFoundException; import net.agef.jobexchange.exceptions.LanguageNotFoundException; import net.agef.jobexchange.integration.LanguagesDAO; import net.agef.jobexchange.webservice.entities.LanguageSkillDTO; /** * @author AGEF * */ public class LanguageSkillAssemblerWorker implements LanguageSkillAssembler{ private LanguagesDAO languagesDAO; public LanguageSkillAssemblerWorker(LanguagesDAO languagesDAO){ this.languagesDAO = languagesDAO; } @Override public LanguageSkillDTO createDTO(LanguageSkill language) { LanguageSkillDTO dto = new LanguageSkillDTO(); if(language!=null){ if(language.getName()!=null) dto.setName(language.getName().getIsoNameShort()); if(language.getLevel()!=null) dto.setLevel(language.getLevel().toString()); } return dto; } @Override public LanguageSkill createDomainObj(LanguageSkillDTO dto) throws LanguageNotFoundException, EnumValueNotFoundException { LanguageSkill languageSkill = new LanguageSkill(); Languages language; if(dto!=null){ //if language is provided by short iso name if(dto.getName()!=null && !dto.getName().equals("")){ if(dto.getName().length()==2){ language = languagesDAO.findLanguageByISOName(dto.getName()); } else // else if language is provided by name { language = languagesDAO.findLanguageByName(dto.getName()); } if(language==null) throw new LanguageNotFoundException(); languageSkill.setName(language); } else throw new LanguageNotFoundException(); if(dto.getLevel()!= null && !dto.getLevel().equals("")){ languageSkill.setLevel(LanguageSkillsEnum.fromValue(dto.getLevel())); } else languageSkill.setLevel(null); } return languageSkill; } @Override public LanguageSkill updateDomainObj(LanguageSkillDTO dto, LanguageSkill existingLanguage) throws LanguageNotFoundException, EnumValueNotFoundException { LanguageSkill languageSkill = existingLanguage; Languages language; if(dto!=null){ //if language is provided by short iso name if(dto.getName()!=null && !dto.getName().equals("")){ if(dto.getName().length()==2){ language = languagesDAO.findLanguageByISOName(dto.getName()); } else // else if language is provided by name { language = languagesDAO.findLanguageByName(dto.getName()); } if(language==null) throw new LanguageNotFoundException(); languageSkill.setName(language); } else throw new LanguageNotFoundException(); if(dto.getLevel()!= null && !dto.getLevel().equals("")){ languageSkill.setLevel(LanguageSkillsEnum.fromValue(dto.getLevel())); } else languageSkill.setLevel(null); } return languageSkill; } }