diff src/nabble/model/ModelException.java @ 0:7ecd1a4ef557

add content
author Franklin Schmidt <fschmidt@gmail.com>
date Thu, 21 Mar 2019 19:15:52 -0600
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/nabble/model/ModelException.java	Thu Mar 21 19:15:52 2019 -0600
@@ -0,0 +1,188 @@
+/*
+
+Copyright (C) 2003  Franklin Schmidt <frank@gustos.com>
+
+*/
+
+package nabble.model;
+
+import nabble.naml.namespaces.TemplateException;
+import java.net.MalformedURLException;
+
+
+public class ModelException extends TemplateException {
+
+	protected ModelException(Name name) {
+		super(name);
+	}
+
+	protected ModelException(Name name,String msg) {
+		super(name,msg);
+	}
+
+	protected ModelException(Name name,String msg,Exception e) {
+		super(name,msg,e);
+	}
+
+	protected ModelException(Name name,Exception e) {
+		super(name,e);
+	}
+
+	public static ModelException newInstance(String name,String msg) {
+		return new ModelException(name(name),msg);
+	}
+
+	public static ModelException newInstance(String name,Exception cause) {
+		return new ModelException(name(name),cause);
+	}
+
+	public static ModelException newInstance(String name,String msg,Exception cause) {
+		return new ModelException(name(name),msg,cause);
+	}
+
+
+	public static final class TooManyPosts extends ModelException {
+		TooManyPosts() {
+			super(name("too_many_posts"),"You have made too many posts in a short time. Please try again later.");
+		}
+	}
+
+	public static final class NodeLoop extends ModelException {
+		NodeLoop(Node node) {
+			super(name("node_loop"),"setParent creates loop " + node);
+		}
+//		protected NodeLoop() {}
+	}
+
+	public static final class RequiredSubject extends ModelException {
+		RequiredSubject() {
+			super(name("required_subject"),"The subject is required.");
+		}
+	}
+
+
+	public static final class RequiredName extends ModelException {
+		RequiredName() {
+			super(name("required_name"),"You must provide a user name.");
+		}
+	}
+
+	public static final class InvalidPermalink extends ModelException {
+		public InvalidPermalink() {
+			super(name("invalid_permalink"));
+		}
+	}
+
+	public static final class ReadOnly extends ModelException {
+		ReadOnly() {
+			super(name("read_only"),"Unauthorized to post here.");
+		}
+	}
+
+	public static final class NoAnonymous extends ModelException {
+		public final Node authorizingNode;
+
+		NoAnonymous(Node authorizingNode) {
+			super(name("no_anonymous"),"Anonymous users may not post here.");
+			this.authorizingNode = authorizingNode;
+		}
+	}
+
+	public static final class AlreadyMember extends ModelException {
+		AlreadyMember() {
+			super(name("already_member"),"User is already a member.");
+		}
+	}
+
+	public static final class InvalidRecaptcha extends ModelException {
+		public InvalidRecaptcha() {
+			super(name("invalid_recaptcha"),"Please verify that you are not a robot.");
+		}
+	}
+
+	public static final class InvalidDate extends ModelException {
+		public InvalidDate(String date) {
+			super(name("invalid_date"),"invalid date format: " + date);
+		}
+	}
+
+	// Spam Handling --------------------------------------------------------------
+
+	public static abstract class SpamException extends ModelException {
+		public final String badText;
+
+		public SpamException(Name name, String badText, String msg) {
+			super(name, msg);
+			this.badText = badText;
+		}
+	}
+
+	public static final class SubjectContainsInvalidWord extends SpamException {
+		public SubjectContainsInvalidWord(String badText) {
+			super(name("subject_contains_invalid_spam_word"),badText,"Subject cannot contain \"" + badText + '"');
+		}
+	}
+
+	public static final class MessageContainsInvalidWord extends SpamException {
+		public MessageContainsInvalidWord(String badText) {
+			super(name("message_contains_invalid_spam_word"),badText,"Message cannot contain \"" + badText + '"');
+		}
+	}
+
+	public static final class MessageContainsManyInvalidWords extends SpamException {
+		public MessageContainsManyInvalidWords(String badText) {
+			super(name("message_contains_many_invalid_spam_words"),badText,"Too many words: \"" + badText + '"');
+		}
+	}
+
+	public static final class SubjectContainsCommonSpamWords extends SpamException {
+		public SubjectContainsCommonSpamWords(String subject) {
+			super(name("subject_contains_common_spam_words"),subject,"Subject contains common spam words: \"" + subject + '"');
+		}
+	}
+
+	public static final class MessageContainsCommonSpamWords extends SpamException {
+		public MessageContainsCommonSpamWords(String message) {
+			super(name("message_contains_common_spam_words"),message,"Message contains common spam words: \"" + message + '"');
+		}
+	}
+
+
+
+	public static final class EmailFormat extends ModelException {
+		public final String badEmail;
+
+		public EmailFormat(String badEmail) {
+			super(name("invalid_email"),"Invalid email address: '" + badEmail + "'");
+			this.badEmail = badEmail;
+		}
+	}
+
+	public static final class UrlFormat extends ModelException {
+		public final String badUrl;
+
+		UrlFormat(String badUrl,MalformedURLException e) {
+			super(name("url_format"),"Invalid URL: '" + badUrl + "'",e);
+			this.badUrl = badUrl;
+		}
+	}
+
+	public static class InvalidFile extends ModelException {
+		public final String fileName;
+
+		public InvalidFile(String fileName) {
+			super(name("invalid_file_exception"));
+			this.fileName = fileName;
+		}
+	}
+
+	public static class InvalidImage extends ModelException {
+		public final String fileName;
+
+		public InvalidImage(String fileName) {
+			super(name("invalid_image_exception"));
+			this.fileName = fileName;
+		}
+	}
+
+}