/**
* 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";
}
}