view 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 source

/*

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;
		}
	}

}