summaryrefslogtreecommitdiffstats
path: root/src/main/java/com/gitblit/models/Mailing.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/com/gitblit/models/Mailing.java')
-rw-r--r--src/main/java/com/gitblit/models/Mailing.java111
1 files changed, 111 insertions, 0 deletions
diff --git a/src/main/java/com/gitblit/models/Mailing.java b/src/main/java/com/gitblit/models/Mailing.java
new file mode 100644
index 00000000..9c0ff906
--- /dev/null
+++ b/src/main/java/com/gitblit/models/Mailing.java
@@ -0,0 +1,111 @@
+/*
+ * Copyright 2014 gitblit.com.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.gitblit.models;
+
+import java.io.File;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.List;
+import java.util.Set;
+import java.util.TreeSet;
+
+/**
+ * Encapsulates an email notification.
+ *
+ * @author James Moger
+ *
+ */
+public class Mailing {
+
+ public enum Type {
+ plain, html
+ }
+
+ public final Type type;
+ public final Set<String> toAddresses;
+ public final Set<String> ccAddresses;
+ public final List<File> attachments;
+
+ public String from;
+ public String subject;
+ public String content;
+ public String id;
+
+ public static Mailing newHtml() {
+ return new Mailing(Type.html);
+ }
+
+ public static Mailing newPlain() {
+ return new Mailing(Type.plain);
+ }
+
+ private Mailing(Type type) {
+ this.type = type;
+ this.toAddresses = new TreeSet<String>();
+ this.ccAddresses = new TreeSet<String>();
+ this.attachments = new ArrayList<File>();
+ }
+
+ public boolean hasRecipients() {
+ return toAddresses.size() > 0;
+ }
+
+ public void setRecipients(String... addrs) {
+ setRecipients(Arrays.asList(addrs));
+ }
+
+ public void setRecipients(Collection<String> addrs) {
+ toAddresses.clear();
+ for (String addr : addrs) {
+ toAddresses.add(addr.toLowerCase());
+ }
+ cleanup();
+ }
+
+ public boolean hasCCs() {
+ return ccAddresses.size() > 0;
+ }
+
+ public void setCCs(String... addrs) {
+ setCCs(Arrays.asList(addrs));
+ }
+
+ public void setCCs(Collection<String> addrs) {
+ ccAddresses.clear();
+ for (String addr : addrs) {
+ ccAddresses.add(addr.toLowerCase());
+ }
+ cleanup();
+ }
+
+ private void cleanup() {
+ ccAddresses.removeAll(toAddresses);
+ }
+
+ public boolean hasAttachments() {
+ return attachments.size() > 0;
+ }
+
+ public void addAttachment(File file) {
+ attachments.add(file);
+ }
+
+ @Override
+ public String toString() {
+ return subject + "\n\n" + content;
+ }
+} \ No newline at end of file