1 /****************************************************************
2 * Licensed to the Apache Software Foundation (ASF) under one *
3 * or more contributor license agreements. See the NOTICE file *
4 * distributed with this work for additional information *
5 * regarding copyright ownership. The ASF licenses this file *
6 * to you under the Apache License, Version 2.0 (the *
7 * "License"); you may not use this file except in compliance *
8 * with the License. You may obtain a copy of the License at *
9 * *
10 * http://www.apache.org/licenses/LICENSE-2.0 *
11 * *
12 * Unless required by applicable law or agreed to in writing, *
13 * software distributed under the License is distributed on an *
14 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY *
15 * KIND, either express or implied. See the License for the *
16 * specific language governing permissions and limitations *
17 * under the License. *
18 ****************************************************************/
19
20 package org.apache.jsieve.mailet.mdn;
21
22 /**
23 * Class <code>Disposition</code> encapsulating
24 * disposition information as defined by RFC 2298.
25 */
26 public class Disposition
27 {
28 private DispositionActionMode fieldActionMode;
29 private DispositionSendingMode fieldSendingMode;
30 private DispositionType fieldDispositionType;
31 private DispositionModifier[] fieldDispositionModifiers;
32
33 /**
34 * Default Construcor
35 */
36 private Disposition()
37 {
38 super();
39 }
40
41 /**
42 * Constructor.
43 *
44 * @param actionMode
45 * @param sendingMode
46 * @param type
47 */
48 public Disposition(DispositionActionMode actionMode, DispositionSendingMode sendingMode, DispositionType type)
49 {
50 this();
51 setActionMode(actionMode);
52 setSendingMode(sendingMode);
53 setDispositionType(type);
54 }
55
56 /**
57 * Constructor.
58 *
59 * @param actionMode
60 * @param sendingMode
61 * @param type
62 * @param modifiers
63 */
64 public Disposition(DispositionActionMode actionMode, DispositionSendingMode sendingMode, DispositionType type,
65 DispositionModifier[] modifiers)
66 {
67 this(actionMode, sendingMode, type);
68 setDispositionModifiers(modifiers);
69 }
70
71 /**
72 * Answer the Disposition Mode.
73 *
74 * @return Returns the dispostionMode.
75 */
76 protected DispositionActionMode getActionMode()
77 {
78 return fieldActionMode;
79 }
80
81 /**
82 * Set the Disposition Mode.
83 *
84 * @param dispostionMode The dispostionMode to set.
85 */
86 protected void setActionMode(DispositionActionMode dispostionMode)
87 {
88 fieldActionMode = dispostionMode;
89 }
90
91 /**
92 * Answer the Disposition Modifiers.
93 *
94 * @return Returns the dispostionModifiers.
95 */
96 protected DispositionModifier[] getDispositionModifiers()
97 {
98 return fieldDispositionModifiers;
99 }
100
101 /**
102 * Set the Disposition Modifiers.
103 *
104 * @param dispostionModifiers The dispostionModifiers to set.
105 */
106 protected void setDispositionModifiers(DispositionModifier[] dispostionModifiers)
107 {
108 fieldDispositionModifiers = dispostionModifiers;
109 }
110
111 /**
112 * Answer the Disposition Type.
113 *
114 * @return Returns the dispostionType.
115 */
116 protected DispositionType getDispositionType()
117 {
118 return fieldDispositionType;
119 }
120
121 /**
122 * Set the Disposition Type.
123 *
124 * @param dispostionType The dispostionType to set.
125 */
126 protected void setDispositionType(DispositionType dispostionType)
127 {
128 fieldDispositionType = dispostionType;
129 }
130
131 /**
132 * @see java.lang.Object#toString()
133 */
134 public String toString()
135 {
136 StringBuilder builder = new StringBuilder(64);
137 builder.append("Disposition: ");
138 builder.append(getActionMode() == null ? "" : getActionMode().toString());
139 builder.append('/');
140 builder.append(getSendingMode() == null ? "" : getSendingMode().toString());
141 builder.append(';');
142 builder.append(getDispositionType() == null ? "" : getDispositionType().toString());
143 if (null != getDispositionModifiers()
144 && getDispositionModifiers().length > 0)
145 {
146 builder.append('/');
147 for (int i = 0; i < getDispositionModifiers().length; i++)
148 {
149 if (i > 0)
150 builder.append(',');
151 builder.append(getDispositionModifiers()[i]);
152 }
153 }
154 return builder.toString();
155 }
156
157 /**
158 * Answer the Sending Mode.
159 *
160 * @return Returns the sendingMode.
161 */
162 protected DispositionSendingMode getSendingMode()
163 {
164 return fieldSendingMode;
165 }
166
167 /**
168 * Set the Sending Mode.
169 *
170 * @param sendingMode The sendingMode to set.
171 */
172 protected void setSendingMode(DispositionSendingMode sendingMode)
173 {
174 fieldSendingMode = sendingMode;
175 }
176 }