package org.agnitas.emm.springws.endpoint.mailing; import java.util.Collection; import java.util.List; import org.agnitas.beans.Mailing; import org.agnitas.beans.MediatypeEmail; import org.agnitas.emm.core.mailing.service.MailingModel; import org.agnitas.emm.core.mailing.service.MailingModel.Format; import org.agnitas.emm.springws.jaxb.ObjectFactory; import org.apache.log4j.Logger; public class ResponseBuilder { private static Logger logger = Logger.getLogger(ResponseBuilder.class); private final ObjectFactory objectFactory; public ResponseBuilder(ObjectFactory objectFactory) { this.objectFactory = objectFactory; } public org.agnitas.emm.springws.jaxb.Mailing createResponse(Mailing mailing) { org.agnitas.emm.springws.jaxb.Mailing responseMailing = objectFactory.createMailing(); responseMailing.setMailingID(mailing.getId()); responseMailing.setShortname(mailing.getShortname()); responseMailing.setDescription(mailing.getDescription()); responseMailing.setMailinglistID(mailing.getMailinglistID()); Collection<Integer> targetGroups = mailing.getTargetGroups(); if (targetGroups != null) { org.agnitas.emm.springws.jaxb.Mailing.TargetIDList targetIDList = objectFactory.createMailingTargetIDList(); for (Integer targetID : targetGroups) { targetIDList.getTargetID().add(targetID); } responseMailing.setTargetIDList(targetIDList); } try { responseMailing.setMailingType(MailingModel.getMailingType(mailing.getMailingType()).getName()); } catch (RuntimeException e) { responseMailing.setMailingType("Unknown"); } MediatypeEmail emailParam = null; try { emailParam = mailing.getEmailParam(); } catch (ClassCastException e) { logger.warn("Unable to retrieve emailParam from mailing[mailingId="+mailing.getId()+"]", e); } if (emailParam != null) { responseMailing.setSubject(emailParam.getSubject()); responseMailing.setSenderName(emailParam.getFromFullname()); responseMailing.setSenderAddress(emailParam.getFromEmail()); responseMailing.setReplyToName(emailParam.getReplyFullname()); responseMailing.setReplyToAddress(emailParam.getReplyEmail()); responseMailing.setCharset(emailParam.getCharset()); responseMailing.setLinefeed(emailParam.getLinefeed()); List<Format> formatList = MailingModel.getFormatList(emailParam.getMailFormat()); org.agnitas.emm.springws.jaxb.Mailing.Formats formats = objectFactory.createMailingFormats(); for (Format format : formatList) { formats.getFormat().add(format.getName()); } responseMailing.setFormats(formats); responseMailing.setOnePixel(emailParam.getOnepixel()); } responseMailing.setAutoUpdate(mailing.getUseDynamicTemplate()); return responseMailing; } public org.agnitas.emm.springws.jaxb.Template createTemplateResponse(Mailing mailing) { org.agnitas.emm.springws.jaxb.Template responseTemplate = objectFactory.createTemplate(); responseTemplate.setTemplateID(mailing.getId()); responseTemplate.setShortname(mailing.getShortname()); responseTemplate.setDescription(mailing.getDescription()); responseTemplate.setMailinglistID(mailing.getMailinglistID()); Collection<Integer> targetGroups = mailing.getTargetGroups(); if (targetGroups != null) { org.agnitas.emm.springws.jaxb.Template.TargetIDList targetIDList = objectFactory.createTemplateTargetIDList(); for (Integer targetID : targetGroups) { targetIDList.getTargetID().add(targetID); } responseTemplate.setTargetIDList(targetIDList); } try { responseTemplate.setMailingType(MailingModel.getMailingType(mailing.getMailingType()).getName()); } catch (RuntimeException e) { responseTemplate.setMailingType("Unknown"); } MediatypeEmail emailParam = null; try { emailParam = mailing.getEmailParam(); } catch (ClassCastException e) { logger.warn("Unable to retrieve emailParam from template[mailingId="+mailing.getId()+"]", e); } catch (NullPointerException e) { logger.warn("Unable to retrieve emailParam from template[mailingId="+mailing.getId()+"]", e); } if (emailParam != null) { responseTemplate.setSubject(emailParam.getSubject()); responseTemplate.setSenderName(emailParam.getFromFullname()); responseTemplate.setSenderAddress(emailParam.getFromEmail()); responseTemplate.setReplyToName(emailParam.getReplyFullname()); responseTemplate.setReplyToAddress(emailParam.getReplyEmail()); responseTemplate.setCharset(emailParam.getCharset()); responseTemplate.setLinefeed(emailParam.getLinefeed()); List<Format> formatList = MailingModel.getFormatList(emailParam.getMailFormat()); org.agnitas.emm.springws.jaxb.Template.Formats formats = objectFactory.createTemplateFormats(); for (Format format : formatList) { formats.getFormat().add(format.getName()); } responseTemplate.setFormats(formats); responseTemplate.setOnePixel(emailParam.getOnepixel()); } responseTemplate.setAutoUpdate(mailing.getUseDynamicTemplate()); return responseTemplate; } }