I suggest we add a high-level factory for header fields. I would like
to simply call it Fields. Here is an outline that illustrates the
design for the Date field:
public class Fields {
public static DateTimeField date(String fieldValue) {
return date("Date", fieldValue);
}
public static DateTimeField date(String fieldName, String fieldValue) {
return (DateTimeField) Field.parse(fieldName + ": " + fieldValue);
}
public static DateTimeField date(String fieldName, Date date,
TimeZone zone) {
DateFormat df = RFC822_DATE_FORMAT.get();
if (zone != null) {
df.setTimeZone(zone);
}
return date(fieldName, df.format(date));
}
....
}
Obviously that class would need to have a lot of methods for the
various header fields.
It should also be possible to automatically use encoded words when
creating a Subject field, for example. This could help with MIME4J-69.
In Message I would also like to add convenience methods that use the
Fields factory. Again an outline for the Date field:
public class Message extends Entity implements Body {
...
public Date getDate() {
Header header = getHeader();
if (header == null)
return null;
DateTimeField dateField = (DateTimeField) header.getField("Date");
if (dateField == null)
return null;
return dateField.getDate();
}
public void setDate(Date date) {
setDate(date, null);
}
public void setDate(Date date, TimeZone zone) {
Header header = getOrCreateHeader();
if (date == null) {
header.removeFields("Date");
} else {
header.setField(Fields.date("Date", date, zone));
}
}
....
}
Any objections?
Markus
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]