/** * Mule Constant Contact Connector * * Copyright (c) MuleSoft, Inc. All rights reserved. http://www.mulesoft.com * * The software in this package is published under the terms of the CPAL v1.0 * license, a copy of which has been included with this distribution in the * LICENSE.txt file. */ package org.mule.modules.constantcontact; import java.util.List; public class CampaignRequestBuilder { private StringBuilder request; public CampaignRequestBuilder() { request = new StringBuilder(500); request.append("<?xml version='1.0' encoding='UTF-8'?>\n" + "<entry xmlns=\"http://www.w3.org/2005/Atom\">\n" + " <link href=\"/ws/customers/joesflowers/campaigns\" rel=\"edit\" />\n" + " <id>http://api.constantcontact.com/ws/customers/joesflowers/campaigns</id>\n" + " <title type=\"text\">API Test Email</title>\n" + " <updated>2009-10-19T18:34:53.105Z</updated>\n" + " <author>\n" + " <name>Constant Contact</name>\n" + " </author>\n" + " <content type=\"application/vnd.ctct+xml\">\n" + " <Campaign xmlns=\"http://ws.constantcontact.com/ns/1.0/\"\n" + "id=\"http://api.constantcontact.com/ws/customers/joesflowers/campaigns/1100546096289\">\n"); request.append(" <Name>API Test Email</Name>\n" + " <Status>Draft</Status>\n" + " <Date>2009-10-19T18:34:53.105Z</Date>\n" + " <Subject>Enter email subject here</Subject>\n" + " <FromName>joesflowers@example.com</FromName>\n" + " <ViewAsWebpage>NO</ViewAsWebpage>\n" + " <ViewAsWebpageLinkText></ViewAsWebpageLinkText>\n" + " <ViewAsWebpageText></ViewAsWebpageText>\n" + " <PermissionReminder>YES</PermissionReminder>\n" + " <PermissionReminderText>You're receiving this email because of your relationship with ctct. \n" + "Please <ConfirmOptin><a style=\"color:#0000ff;\">confirm</a></ConfirmOptin> \n" + "your continued interest in receiving email from us.</PermissionReminderText>\n" + " <GreetingSalutation>Dear</GreetingSalutation>\n" + " <GreetingName>FirstName</GreetingName>\n" + " <GreetingString>Greetings!</GreetingString>\n" + " <OrganizationName>ctct</OrganizationName>\n" + " <OrganizationAddress1>123 wsw st</OrganizationAddress1>\n" + " <OrganizationAddress2></OrganizationAddress2>\n" + " <OrganizationAddress3></OrganizationAddress3>\n" + " <OrganizationCity>Ashland</OrganizationCity>\n" + " <OrganizationState>MA</OrganizationState>\n" + " <OrganizationInternationalState></OrganizationInternationalState>\n" + " <OrganizationCountry>us</OrganizationCountry>\n" + " <OrganizationPostalCode>32423</OrganizationPostalCode>\n" + " <IncludeForwardEmail>NO</IncludeForwardEmail>\n" + " <ForwardEmailLinkText></ForwardEmailLinkText>\n" + " <IncludeSubscribeLink>NO</IncludeSubscribeLink>\n" + " <SubscribeLinkText></SubscribeLinkText>\n" + " <EmailContentFormat>HTML</EmailContentFormat>\n" + " <EmailContent><html lang=\"en\" xml:lang=\"en\" xmlns=\"http://www.w3.org/1999/xhtml\" \n" + "xmlns:cctd=\"http://www.constantcontact.com/cctd\">\n" + "<body><CopyRight>Copyright (c) 1996-2009 Constant Contact. All rights reserved. Except as permitted under a\n" + "separate\n" + "written agreement with Constant Contact, neither the Constant Contact software, nor any content that appears on any\n" + "Constant Contact site,\n" + "including but not limited to, web pages, newsletters, or templates may be reproduced, republished, repurposed, or\n" + "distributed without the\n" + "prior written permission of Constant Contact. For inquiries regarding reproduction or distribution of any Constant\n" + "Contact material, please\n" + "contact joesflowers@example.com.</CopyRight>\n" + "<OpenTracking/>\n" + "<!-- Do NOT delete previous line if you want to get statistics on the number of opened emails -->\n" + "<CustomBlock name=\"letter.intro\" title=\"Personalization\">\n" + " <Greeting/>\n" + "</CustomBlock>\n" + "</body>\n" + "</html></EmailContent>\n" + " <EmailTextContent><Text>This is the text version.</Text></EmailTextContent>\n" + " <StyleSheet></StyleSheet>\n" + " <ContactLists>\n" + " <ContactList id=\"http://api.constantcontact.com/ws/customers/joesflowers/lists/1\">\n" + " <link xmlns=\"http://www.w3.org/2005/Atom\" href=\"/ws/customers/joesflowers/lists/1\" rel=\"self\" />\n" + " </ContactList>\n" + " </ContactLists>\n" + " <FromEmail>\n" + " <Email id=\"http://api.constantcontact.com/ws/customers/joesflowers/settings/emailaddresses/1\">\n" + " <link xmlns=\"http://www.w3.org/2005/Atom\" href=\"/ws/customers/joesflowers/settings/emailaddresses/1\"\n" + " rel=\"self\" />\n" + " </Email>\n" + " <EmailAddress>joesflowers@example.com</EmailAddress>\n" + " </FromEmail>\n" + " <ReplyToEmail>\n" + " <Email id=\"http://api.constantcontact.com/ws/customers/joesflowers/settings/emailaddresses/1\">\n" + " <link xmlns=\"http://www.w3.org/2005/Atom\" href=\"/ws/customers/joesflowers/settings/emailaddresses/1\"\n" + " rel=\"self\" />\n" + " </Email>\n" + " <EmailAddress>joesflowers@example.com</EmailAddress>\n" + " </ReplyToEmail>\n"); } public String build() { request.append(" </Campaign>\n" + " </content>\n" + " <source>\n" + " <id>http://api.constantcontact.com/ws/customers/joesflowers/campaigns</id>\n" + " <title type=\"text\">Campaigns for customer: joesflowers</title>\n" + " <link href=\"campaigns\" />\n" + " <link href=\"campaigns\" rel=\"self\" />\n" + " <author>\n" + " <name>joesflowers</name>\n" + " </author>\n" + " <updated>2009-10-19T19:36:12.622Z</updated>\n" + " </source>\n" + "</entry>"); return request.toString(); } public CampaignRequestBuilder setName(String name) { if (name != null) { request.append("<Name>").append(name).append("</Name>"); } return this; } public CampaignRequestBuilder setSubject(String subject) { if (subject != null) { request.append("<Subject>").append(subject).append("</Subject>"); } return this; } public CampaignRequestBuilder setFromName(String fromName) { if (fromName != null) { request.append("<FromName>").append(fromName).append("</FromName>"); } return this; } public CampaignRequestBuilder setFromEmail(String fromEmailEntry) { if (fromEmailEntry != null) { request.append("<FromEmail>").append(fromEmailEntry).append("</FromEmail>"); } return this; } public CampaignRequestBuilder setReplyToEmail(String replyToEmailEntry) { if (replyToEmailEntry != null) { request.append("<ReplyToEmail>").append(replyToEmailEntry).append("</ReplyToEmail>"); } return this; } public CampaignRequestBuilder setViewAsWebPage(Boolean viewAsWebPage) { if (viewAsWebPage != null) { request.append("<ViewAsWebpage>").append(convertToYesOrNo(viewAsWebPage)).append("</ViewAsWebpage>"); } return this; } public CampaignRequestBuilder setViewAsWebpageLinkText(String viewAsWebpageLinkText) { if (viewAsWebpageLinkText != null) { request.append("<ViewAsWebpageLinkText>").append(viewAsWebpageLinkText).append("</ViewAsWebpageLinkText>"); } return this; } public CampaignRequestBuilder setViewAsWebageText(String viewAsWebageText) { if (viewAsWebageText != null) { request.append("<ViewAsWebpageText>").append(viewAsWebageText).append("</ViewAsWebpageText>"); } return this; } public CampaignRequestBuilder setPermissionReminder(Boolean permissionReminder) { if (permissionReminder != null) { request.append("<viewAsWebageText>").append(convertToYesOrNo(permissionReminder)).append("</viewAsWebageText>"); } return this; } public CampaignRequestBuilder setPermissionReminderText(String permissionReminderText) { if (permissionReminderText != null) { request.append("<PermissionReminderText>").append(permissionReminderText).append("</PermissionReminderText>"); } return this; } public CampaignRequestBuilder setGreetingSalutation(String greetingSalutation) { if (greetingSalutation != null) { request.append("<GreetingSalutation>").append(greetingSalutation).append("</GreetingSalutation>"); } return this; } public CampaignRequestBuilder setGreetingName(GreetingName greetingName) { if (greetingName != null) { request.append("<GreetingName>").append(greetingName).append("</GreetingName>"); } return this; } public CampaignRequestBuilder setGreetingString(String greetingString) { if (greetingString != null) { request.append("<GreetingString>").append(greetingString).append("</GreetingString>"); } return this; } public CampaignRequestBuilder setOrganizationName(String organizationName) { if (organizationName != null) { request.append("<OrganizationName>").append(organizationName).append("</OrganizationName>"); } return this; } public CampaignRequestBuilder setOrganizationAddress1(String organizationAddress1) { if (organizationAddress1 != null) { request.append("<OrganizationAddress1>").append(organizationAddress1).append("</OrganizationAddress1>"); } return this; } public CampaignRequestBuilder setOrganizationAddress2(String organizationAddress2) { if (organizationAddress2 != null) { request.append("<OrganizationAddress2>").append(organizationAddress2).append("</OrganizationAddress2>"); } return this; } public CampaignRequestBuilder setOrganizationAddress3(String organizationAddress3) { if (organizationAddress3 != null) { request.append("<OrganizationAddress3>").append(organizationAddress3).append("</OrganizationAddress3>"); } return this; } public CampaignRequestBuilder setOrganizationCity(String organizationCity) { if (organizationCity != null) { request.append("<OrganizationCity>").append(organizationCity).append("</OrganizationCity>"); } return this; } public CampaignRequestBuilder setOrganizationState(String organizationState) { if (organizationState != null) { request.append("<OrganizationState>").append(organizationState).append("</OrganizationState>"); } return this; } public CampaignRequestBuilder setOrganizationInternationalState(String organizationInternationalState) { if (organizationInternationalState != null) { request.append("<OrganizationInternationalState>").append(organizationInternationalState).append("</OrganizationInternationalState>"); } return this; } public CampaignRequestBuilder setOrganizationPostalCode(String organizationPostalCode) { if (organizationPostalCode != null) { request.append("<OrganizationPostalCode>").append(organizationPostalCode).append("</OrganizationPostalCode>"); } return this; } public CampaignRequestBuilder setOrganizationCountry(String organizationCountry) { if (organizationCountry != null) { request.append("<OrganizationCountry>").append(organizationCountry).append("</OrganizationCountry>"); } return this; } public CampaignRequestBuilder setIncludeForwardEmail(Boolean includeForwardEmail) { if (includeForwardEmail != null) { request.append("<IncludeForwardEmail>").append(convertToYesOrNo(includeForwardEmail)).append("</IncludeForwardEmail>"); } return this; } public CampaignRequestBuilder setForwardEmailLinkText(String forwardEmailLinkText) { if (forwardEmailLinkText != null) { request.append("<ForwardEmailLinkText>").append(forwardEmailLinkText).append("</ForwardEmailLinkText>"); } return this; } public CampaignRequestBuilder setIncludeSubscribeLink(Boolean includeSubscribeLink) { if (includeSubscribeLink != null) { request.append("<IncludeSubscribeLink>").append(convertToYesOrNo(includeSubscribeLink)).append("</IncludeSubscribeLink>"); } return this; } public CampaignRequestBuilder setSubscribeLinkText(String subscribeLinkText) { if (subscribeLinkText != null) { request.append("<SubscribeLinkText>").append(subscribeLinkText).append("</SubscribeLinkText>"); } return this; } public CampaignRequestBuilder setEmailContentFormat(EmailContentFormat emailContentFormat) { if (emailContentFormat != null) { request.append("<EmailContentFormat>").append(emailContentFormat).append("</EmailContentFormat>"); } return this; } public CampaignRequestBuilder setEmailContent(String emailContent) { if (emailContent != null) { request.append("<EmailContent>").append(emailContent).append("</EmailContent>"); } return this; } public CampaignRequestBuilder setEmailTextContent(String emailTextContent) { if (emailTextContent != null) { request.append("<EmailTextContent>").append(emailTextContent).append("</EmailTextContent>"); } return this; } public CampaignRequestBuilder setStyleSheet(String styleSheet) { if (styleSheet != null) { request.append("<StyleSheet>").append(styleSheet).append("</StyleSheet>"); } return this; } public CampaignRequestBuilder setContactLists(List<String> contactLists) { if (contactLists != null) { request.append("<ContactLists>"); for (String contactList : contactLists) { request.append("<ContactList id=\"").append(contactList).append("\"/>"); } request.append("</ContactLists>"); } return this; } private String convertToYesOrNo(Boolean value) { return value ? "YES" : "NO"; } }