1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 package org.jboss.netty.handler.codec.http.multipart;
17
18 import org.jboss.netty.buffer.ChannelBuffer;
19 import org.jboss.netty.buffer.ChannelBuffers;
20 import org.jboss.netty.handler.codec.http.HttpConstants;
21
22 import java.io.IOException;
23
24
25
26
27 public class DiskAttribute extends AbstractDiskHttpData implements Attribute {
28 public static String baseDirectory;
29
30 public static boolean deleteOnExitTemporaryFile = true;
31
32 public static final String prefix = "Attr_";
33
34 public static final String postfix = ".att";
35
36
37
38
39 public DiskAttribute(String name) {
40 super(name, HttpConstants.DEFAULT_CHARSET, 0);
41 }
42 public DiskAttribute(String name, String value) throws IOException {
43 super(name, HttpConstants.DEFAULT_CHARSET, 0);
44 setValue(value);
45 }
46
47 public HttpDataType getHttpDataType() {
48 return HttpDataType.Attribute;
49 }
50
51 public String getValue() throws IOException {
52 byte [] bytes = get();
53 return new String(bytes, charset.name());
54 }
55
56 public void setValue(String value) throws IOException {
57 if (value == null) {
58 throw new NullPointerException("value");
59 }
60 byte [] bytes = value.getBytes(charset.name());
61 checkSize(bytes.length);
62 ChannelBuffer buffer = ChannelBuffers.wrappedBuffer(bytes);
63 if (definedSize > 0) {
64 definedSize = buffer.readableBytes();
65 }
66 setContent(buffer);
67 }
68
69 @Override
70 public void addContent(ChannelBuffer buffer, boolean last) throws IOException {
71 int localsize = buffer.readableBytes();
72 checkSize(size + localsize);
73 if (definedSize > 0 && definedSize < size + localsize) {
74 definedSize = size + localsize;
75 }
76 super.addContent(buffer, last);
77 }
78 @Override
79 public int hashCode() {
80 return getName().hashCode();
81 }
82
83 @Override
84 public boolean equals(Object o) {
85 if (!(o instanceof Attribute)) {
86 return false;
87 }
88 Attribute attribute = (Attribute) o;
89 return getName().equalsIgnoreCase(attribute.getName());
90 }
91
92 public int compareTo(InterfaceHttpData o) {
93 if (!(o instanceof Attribute)) {
94 throw new ClassCastException("Cannot compare " + getHttpDataType() +
95 " with " + o.getHttpDataType());
96 }
97 return compareTo((Attribute) o);
98 }
99
100 public int compareTo(Attribute o) {
101 return getName().compareToIgnoreCase(o.getName());
102 }
103
104 @Override
105 public String toString() {
106 try {
107 return getName() + '=' + getValue();
108 } catch (IOException e) {
109 return getName() + "=IoException";
110 }
111 }
112
113 @Override
114 protected boolean deleteOnExit() {
115 return deleteOnExitTemporaryFile;
116 }
117
118 @Override
119 protected String getBaseDirectory() {
120 return baseDirectory;
121 }
122
123 @Override
124 protected String getDiskFilename() {
125 return getName() + postfix;
126 }
127
128 @Override
129 protected String getPostfix() {
130 return postfix;
131 }
132
133 @Override
134 protected String getPrefix() {
135 return prefix;
136 }
137 }