View Javadoc

1   package com.ozacc.mail.mock;
2   
3   import javax.mail.internet.InternetAddress;
4   
5   import com.ozacc.mail.Mail;
6   
7   /***
8    * ¥á¡¼¥?¤¬Æ±ÃͤǤ¢¤?¤³¤È¤òÄ´¤Ù¤?¥á¥½¥Ã¥É¤òÄó¶¡¡£
9    *
10   * @since 1.1
11   * 
12   * @author Tomohiro Otsuka
13   * @version $Id: EqualityCheck.java,v 1.2 2004/09/17 23:07:24 otsuka Exp $
14   */
15  public class EqualityCheck {
16  
17  	private EqualityCheck() {}
18  
19  	/***
20  	 * expected¤Èsent¤Î¥á¡¼¥?ÆâÍÆ¤¬Æ±°?¤Ç¤¢¤?¤«¤É¤¦¤«¤òȽÄꤷ¤Þ¤¹¡£<br>
21  	 * MultipartMail¤Î¥¤¥ó¥¹¥¿¥ó¥¹¤â»ØÄê¤Ç¤­¤Þ¤¹¡£Ã¢¤·¡¢ÅºÉÕ¥Õ¥¡¥¤¥?¤Ï¥Á¥§¥Ã¥¯¤µ¤?¤Þ¤»¤ó¡£
22  	 * 
23  	 * @param expected
24  	 * @param sent
25  	 * @return expected¤Èsent¤Î¥á¡¼¥?ÆâÍÆ¤¬Æ±°?¤Ç¤¢¤?¾?¹? true
26  	 */
27  	public static boolean equals(Mail expected, Mail sent) {
28  		boolean mockMode = false;
29  		if (expected instanceof MockMail) {
30  			mockMode = true;
31  		}
32  
33  		// ¥Þ¥?¥Á¥Ñ¡¼¥È¥á¡¼¥?¤Î¾?¹?
34  		if (expected.isMultipartMail()) {
35  
36  			// HTML
37  			if (!mockMode) {
38  				if ((expected.getHtmlText() == null && sent.getHtmlText() != null)
39  						|| (expected.getHtmlText() != null && sent.getHtmlText() == null)
40  						|| (!expected.getHtmlText().equals(sent.getHtmlText()))) {
41  					return false;
42  				}
43  			} else if (mockMode && expected.getHtmlText() != null) {
44  				if (!expected.getHtmlText().equals(sent.getHtmlText())) {
45  					return false;
46  				}
47  			}
48  		}
49  
50  		// Return-Path
51  		if (!mockMode || (mockMode && expected.getReturnPath() != null)) {
52  			if (expected.getReturnPath() != null && sent.getReturnPath() != null) {
53  				if (!expected.getReturnPath().equals(sent.getReturnPath())) {
54  					return false;
55  				}
56  			} else if ((expected.getReturnPath() != null && sent.getReturnPath() == null)
57  					|| (expected.getReturnPath() == null && sent.getReturnPath() != null)) {
58  				return false;
59  			}
60  		}
61  
62  		// to
63  		InternetAddress[] expectedAddresses = expected.getTo();
64  		InternetAddress[] sentAddresses = sent.getTo();
65  		if (!mockMode || (mockMode && expectedAddresses.length > 0)) {
66  			if (expectedAddresses.length != sentAddresses.length) {
67  				return false;
68  			}
69  			for (int i = 0; i < expectedAddresses.length; i++) {
70  				if (!expectedAddresses[i].equals(sentAddresses[i])) {
71  					return false;
72  				}
73  			}
74  		}
75  
76  		// cc
77  		expectedAddresses = expected.getCc();
78  		sentAddresses = sent.getCc();
79  		if (!mockMode || (mockMode && expectedAddresses.length > 0)) {
80  			if (expectedAddresses.length != sentAddresses.length) {
81  				return false;
82  			}
83  			for (int i = 0; i < expectedAddresses.length; i++) {
84  				if (!expectedAddresses[i].equals(sentAddresses[i])) {
85  					return false;
86  				}
87  			}
88  		}
89  
90  		// bcc
91  		expectedAddresses = expected.getBcc();
92  		sentAddresses = sent.getBcc();
93  		if (!mockMode || (mockMode && expectedAddresses.length > 0)) {
94  			if (expectedAddresses.length != sentAddresses.length) {
95  				return false;
96  			}
97  			for (int i = 0; i < expectedAddresses.length; i++) {
98  				if (!expectedAddresses[i].equals(sentAddresses[i])) {
99  					return false;
100 				}
101 			}
102 		}
103 
104 		// Reply-To
105 		if (!mockMode || (mockMode && expected.getReplyTo() != null)) {
106 			if (expected.getReplyTo() != null && sent.getReplyTo() != null) {
107 				if (!expected.getReplyTo().equals(sent.getReplyTo())) {
108 					return false;
109 				}
110 			} else if ((expected.getReplyTo() != null && sent.getReplyTo() == null)
111 					|| (expected.getReplyTo() == null && sent.getReplyTo() != null)) {
112 				return false;
113 			}
114 		}
115 
116 		// ·?̾
117 		if (!mockMode || (mockMode && expected.getSubject().length() > 0)) {
118 			if (!expected.getSubject().equals(sent.getSubject())) {
119 				return false;
120 			}
121 		}
122 
123 		// ËÜʸ
124 		if (!mockMode || (mockMode && expected.getText().length() > 0)) {
125 			if (!expected.getText().equals(sent.getText())) {
126 				return false;
127 			}
128 		}
129 
130 		return true;
131 	}
132 }