/** * */ package org.inbio.m3s.service.impl; import java.util.ArrayList; import java.util.List; import org.apache.log4j.Logger; import org.inbio.m3s.dao.core.KeywordDAO; import org.inbio.m3s.dao.core.MediaCategoryDAO; import org.inbio.m3s.dao.core.MediaTypeDAO; import org.inbio.m3s.dao.core.MediaUseDAO; import org.inbio.m3s.dao.core.ProjectDAO; import org.inbio.m3s.dao.core.TextTranslationDAO; import org.inbio.m3s.dao.core.UsePolicyDAO; import org.inbio.m3s.dto.message.KeywordDTO; import org.inbio.m3s.dto.message.MediaCategoryDTO; import org.inbio.m3s.dto.message.MediaTypeDTO; import org.inbio.m3s.dto.message.ProjectDTO; import org.inbio.m3s.dto.message.ProjectDTOFactory; import org.inbio.m3s.dto.metadata.UsePolicyDTO; import org.inbio.m3s.dto.metadata.util.AssociatedToEntity; import org.inbio.m3s.dto.metadata.util.OwnerEntity; import org.inbio.m3s.dto.util.KeyValueDTO; import org.inbio.m3s.exception.KeywordNotFoundException; import org.inbio.m3s.exception.MediaTypeNotFoundException; import org.inbio.m3s.exception.ProjectNotFoundException; import org.inbio.m3s.exception.UsePolicyNotFoundException; import org.inbio.m3s.model.core.Keyword; import org.inbio.m3s.model.core.MediaCategory; import org.inbio.m3s.model.core.MediaType; import org.inbio.m3s.model.core.Project; import org.inbio.m3s.model.core.TextTranslation; import org.inbio.m3s.model.core.UsePolicy; import org.inbio.m3s.service.MessageManager; import org.inbio.m3s.service.util.ImportFromFile; import org.inbio.m3s.util.StringUtil; /** * @author jgutierrez * */ public class MessageManagerImpl implements MessageManager { private KeywordDAO keywordDAO; private TextTranslationDAO textTranslationDAO; private MediaTypeDAO mediaTypeDAO; private UsePolicyDAO usePolicyDAO; private MediaCategoryDAO mediaCategoryDAO; private ProjectDAO projectDAO; private MediaUseDAO mediaUseDAO; //dto Factory private ProjectDTOFactory projectDTOFactory; private static Logger logger = Logger.getLogger(ImportFromFile.class); /* * (non-Javadoc) * @see org.inbio.m3s.service.MessageManager#getKeywordLite(java.lang.String, java.lang.String) */ public KeywordDTO getKeywordLite(String keywordName, String locale) throws KeywordNotFoundException { KeywordDTO klDTO = keywordDAO.getKeywordLite(keywordName, locale); if(klDTO==null) throw new KeywordNotFoundException("The keyword ["+keywordName+"] cannot be found the database", null, keywordName); return new KeywordDTO(klDTO.getKeywordKey(), klDTO.getName()); } /* (non-Javadoc) * @see org.inbio.m3s.service.MessageManager#getAllKeywordLite(java.lang.String) */ public List<KeywordDTO> getAllKeywordLite(String locale) throws IllegalArgumentException { List<KeywordDTO> kDTOList = new ArrayList<KeywordDTO>(); List<Keyword> kList = keywordDAO.findAll(Keyword.class); TextTranslation tt; for(Keyword k : kList){ tt = textTranslationDAO.finByIdAndLanguage(k.getNameTextId(), locale); if(tt!=null) kDTOList.add(new KeywordDTO(String.valueOf(k.getKeywordId()), tt.getName())); } return kDTOList; } /** * Parsea el texto que viene del archivo excell, que tiene una estructura de * valores separados por ';' y devuelve una lista de objetos TextInfo. * * @param textualKeywords * String values separated by the default delimiter. (probably ';') * @return */ public List<KeywordDTO> getKeywordsFromStringList(String textualKeywords) throws KeywordNotFoundException { KeywordDTO klDTO; List<KeywordDTO> klDTOList = new ArrayList<KeywordDTO>(); List<Object> separatedValues = StringUtil.getIndividualItems(textualKeywords,java.lang.String.class); for(Object elem : separatedValues){ klDTO = getKeywordLite((String)elem, MessageManager.DEFAULT_LOCALE); klDTOList.add(klDTO); } return klDTOList; } public List<UsePolicyDTO> getAllUsePolicies() throws IllegalArgumentException { List<UsePolicyDTO> upDTOList = new ArrayList<UsePolicyDTO>(); List<UsePolicy> upList = usePolicyDAO.findAll(UsePolicy.class); TextTranslation tt; for(UsePolicy up : upList){ tt = textTranslationDAO.finByIdAndLanguage(((UsePolicy) up).getTextByNameTextId(), MessageManager.DEFAULT_LOCALE); upDTOList.add(new UsePolicyDTO(((UsePolicy) up).getUsePolicyId().toString(), tt.getName())); } return upDTOList; } /* * (non-Javadoc) * @see org.inbio.m3s.service.MessageManager#getUsePolicy(java.lang.String) */ public UsePolicyDTO getUsePolicy(String usePolicyKey) throws IllegalArgumentException { UsePolicy up = (UsePolicy) usePolicyDAO.findById(UsePolicy.class, Integer.valueOf(usePolicyKey)); TextTranslation tt; tt = textTranslationDAO.finByIdAndLanguage(((UsePolicy) up).getTextByNameTextId(), MessageManager.DEFAULT_LOCALE); return new UsePolicyDTO(usePolicyKey, tt.getName()); } /* * (non-Javadoc) * @see org.inbio.m3s.service.MessageManager#getUsePolicyByName(java.lang.String) */ public UsePolicyDTO getUsePolicyByName(String usePolicyName) throws UsePolicyNotFoundException { UsePolicy up = (UsePolicy) usePolicyDAO.findByName(usePolicyName); if(up==null) throw new UsePolicyNotFoundException("The use policy ["+usePolicyName+"] cannot be found the database", null, usePolicyName); //TextTranslation tt; //tt = textTranslationDAO.finByIdAndLanguage(((UsePolicy) up).getTextByNameTextId().getTextId(), MessageManager.DEFAULT_LOCALE); return new UsePolicyDTO(up.getUsePolicyId() , usePolicyName); } public List<MediaCategoryDTO> getAllMediaCategories() { List<MediaCategoryDTO> mcDTOList = new ArrayList<MediaCategoryDTO>(); List<MediaCategory> mcList = mediaCategoryDAO.findAll(MediaCategory.class); TextTranslation tt; for(MediaCategory mc : mcList){ tt = textTranslationDAO.finByIdAndLanguage(((MediaCategory) mc).getTextByNameTextId(), MessageManager.DEFAULT_LOCALE); mcDTOList.add(new MediaCategoryDTO(((MediaCategory) mc).getMediaCategoryId().toString(), tt.getName())); } return mcDTOList; } public MediaCategoryDTO getMediaCategoryByType(String mediaTypeKey) { MediaType mt = (MediaType) mediaTypeDAO.findById(MediaType.class, Integer.valueOf(mediaTypeKey)); MediaCategory mc = (MediaCategory) mediaCategoryDAO.findById(MediaCategory.class, mt.getMediaCategoryId()); TextTranslation tt; tt = textTranslationDAO.finByIdAndLanguage(((MediaCategory) mc).getTextByNameTextId(), MessageManager.DEFAULT_LOCALE); return new MediaCategoryDTO(String.valueOf(mt.getMediaCategoryId()), tt.getName()); } public MediaCategoryDTO getMediaCategory(String mediaCategoryKey) throws IllegalArgumentException { MediaCategory mc = (MediaCategory) mediaCategoryDAO.findById(MediaCategory.class, Integer.valueOf(mediaCategoryKey)); TextTranslation tt; tt = textTranslationDAO.finByIdAndLanguage(((MediaCategory) mc).getTextByNameTextId(), MessageManager.DEFAULT_LOCALE); return new MediaCategoryDTO(mediaCategoryKey, tt.getName()); } public List<MediaTypeDTO> getAllMediaTypes() { List<MediaTypeDTO> mtDTOList = new ArrayList<MediaTypeDTO>(); List<MediaType> mtList = mediaTypeDAO.findAll(MediaType.class); TextTranslation tt; for(MediaType mt : mtList){ tt = textTranslationDAO.finByIdAndLanguage(mt.getMediaTypeNameTextId(), MessageManager.DEFAULT_LOCALE); mtDTOList.add(new MediaTypeDTO(mt.getMediaTypeId(), tt.getName())); } return mtDTOList; } public MediaTypeDTO getMediaType(String mediaTypeKey) throws IllegalArgumentException { MediaType mt = mediaTypeDAO.findById(MediaType.class, Integer.valueOf(mediaTypeKey)); TextTranslation tt; tt = textTranslationDAO.finByIdAndLanguage(mt.getMediaTypeNameTextId(), MessageManager.DEFAULT_LOCALE); return new MediaTypeDTO(mediaTypeKey, tt.getName()); } public MediaTypeDTO getMediaTypeByName(String mediaTypeName) throws MediaTypeNotFoundException { MediaType mt = (MediaType) mediaTypeDAO.findByName(mediaTypeName); if(mt==null) throw new MediaTypeNotFoundException("The media type ["+mediaTypeName+"] cannot be found the database", null, mediaTypeName); //TextTranslation tt; //tt = textTranslationDAO.finByIdAndLanguage(((MediaType) mt).getTextByNameTextId().getTextId(), MessageManager.DEFAULT_LOCALE); return new MediaTypeDTO(mt.getMediaTypeId(), mediaTypeName); } public List<ProjectDTO> getAllProjects() { List<ProjectDTO> pDTOList = new ArrayList<ProjectDTO>(); List<Project> pList = projectDAO.findAll(Project.class); for(Project project : pList) pDTOList.add((ProjectDTO) projectDTOFactory.createDTO(project)); return pDTOList; } public ProjectDTO getProjectById(String projectKey) { Project project = projectDAO.findById(Project.class, Integer.valueOf(projectKey)); return (ProjectDTO) projectDTOFactory.createDTO(project); } public ProjectDTO getProjectByName(String projectName) throws ProjectNotFoundException{ Project project = (Project) projectDAO.findByName(projectName); if(project==null) throw new ProjectNotFoundException("The project ["+projectName+"] cannot be found the database", null, projectName); return (ProjectDTO) projectDTOFactory.createDTO(project); } /** * * @param projects * @return */ public List<ProjectDTO> getProjectsFromStringList(String projects) { List<Object> projectsTextualNameList = StringUtil.getIndividualItems(projects, String.class); List<ProjectDTO> projectsList = new ArrayList<ProjectDTO>(); logger.debug("Translating GMTV to DBValues... [" + projectsTextualNameList.size() + "] projects found"); for(Object projectName : projectsTextualNameList){ projectsList.add(getProjectByName((String)projectName)); logger.debug("Translating GMTV to DBValues... adding project name: '" + (String)projectName + "'."); } return projectsList; } /* public MediaUseDTO getMediaUseByNameAndLanguage(String mediaUseName, String languageKey) throws MediaUseNotFoundException { MediaUseDTO muDTO = mediaUseDAO.findByNameAndLanguage(mediaUseName, languageKey); if(muDTO==null) throw new MediaUseNotFoundException("The media use ["+mediaUseName+"] cannot be found the database", null, mediaUseName); return muDTO; } */ /** * @param keywordDAO the keywordDAO to set */ public void setKeywordDAO(KeywordDAO keywordDAO) { this.keywordDAO = keywordDAO; } /** * @return the keywordDAO */ public KeywordDAO getKeywordDAO() { return keywordDAO; } /** * @param textTranslationDAO the textTranslationDAO to set */ public void setTextTranslationDAO(TextTranslationDAO textTranslationDAO) { this.textTranslationDAO = textTranslationDAO; } /** * @return the textTranslationDAO */ public TextTranslationDAO getTextTranslationDAO() { return textTranslationDAO; } /** * @return the usePolicyDAO */ public UsePolicyDAO getUsePolicyDAO() { return usePolicyDAO; } /** * @param usePolicyDAO the usePolicyDAO to set */ public void setUsePolicyDAO(UsePolicyDAO usePolicyDAO) { this.usePolicyDAO = usePolicyDAO; } /** * @param mediaCategoryDAO the mediaCategoryDAO to set */ public void setMediaCategoryDAO(MediaCategoryDAO mediaCategoryDAO) { this.mediaCategoryDAO = mediaCategoryDAO; } /** * @return the mediaCategoryDAO */ public MediaCategoryDAO getMediaCategoryDAO() { return mediaCategoryDAO; } /** * @param projectDAO the projectDAO to set */ public void setProjectDAO(ProjectDAO projectDAO) { this.projectDAO = projectDAO; } /** * @return the projectDAO */ public ProjectDAO getProjectDAO() { return projectDAO; } /** * @param projectDTOFactory the projectDTOFactory to set */ public void setProjectDTOFactory(ProjectDTOFactory projectDTOFactory) { this.projectDTOFactory = projectDTOFactory; } /** * @return the projectDTOFactory */ public ProjectDTOFactory getProjectDTOFactory() { return projectDTOFactory; } /** * @param mediaUseDAO the mediaUseDAO to set */ public void setMediaUseDAO(MediaUseDAO mediaUseDAO) { this.mediaUseDAO = mediaUseDAO; } /** * @return the mediaUseDAO */ public MediaUseDAO getMediaUseDAO() { return mediaUseDAO; } /** * */ public List<KeyValueDTO> getAllAssociatedToValues() { List<KeyValueDTO> atDTOList = new ArrayList<KeyValueDTO>(); AssociatedToEntity[] associatedToEntities = AssociatedToEntity.values(); for(AssociatedToEntity ate : associatedToEntities) atDTOList.add(new KeyValueDTO(String.valueOf(ate.getId()), ate.getNameKey())); return atDTOList; } /** * */ public List<KeyValueDTO> getAllMediaOwnerValues() { List<KeyValueDTO> atDTOList = new ArrayList<KeyValueDTO>(); OwnerEntity[] ownerEntities = OwnerEntity.values(); for(OwnerEntity oe : ownerEntities) atDTOList.add(new KeyValueDTO(String.valueOf(oe.getId()), oe.getNameKey())); return atDTOList; } /** * @return the mediaTypeDAO */ public MediaTypeDAO getMediaTypeDAO() { return mediaTypeDAO; } /** * @param mediaTypeDAO the mediaTypeDAO to set */ public void setMediaTypeDAO(MediaTypeDAO mediaTypeDAO) { this.mediaTypeDAO = mediaTypeDAO; } }