package com.revolsys.ui.html.fields;
import java.sql.Timestamp;
import java.util.Date;
import javax.servlet.http.HttpServletRequest;
import com.revolsys.datatype.DataTypes;
import com.revolsys.record.io.format.xml.XmlWriter;
import com.revolsys.ui.html.form.Form;
import com.revolsys.util.Dates;
import com.revolsys.util.HtmlAttr;
import com.revolsys.util.HtmlElem;
import com.revolsys.util.Property;
public class TimestampField extends Field {
private String inputValue;
public TimestampField(final String name, final boolean required, final Object defaultValue) {
super(name, required);
setInitialValue(defaultValue);
setValue(defaultValue);
setDefaultInstructions("Enter Timestamp in format yyyy-MM-dd HH:mm:ss.SSS");
}
@Override
public void initialize(final Form form, final HttpServletRequest request) {
this.inputValue = request.getParameter(getName());
if (this.inputValue == null) {
setValue(getInitialValue(request));
final Timestamp date = getValue();
if (date != null) {
this.inputValue = Dates.toTimestampString(date);
}
}
}
@Override
public boolean isValid() {
boolean valid = true;
if (!super.isValid()) {
valid = false;
} else if (hasValue()) {
if (valid) {
try {
final Date date = Dates.getDate(this.inputValue);
setValue(date);
} catch (final Throwable e) {
addValidationError("Invalid Timestamp");
valid = false;
}
}
}
return valid;
}
@Override
public void serializeElement(final XmlWriter out) {
out.startTag(HtmlElem.INPUT);
out.attribute(HtmlAttr.NAME, getName());
out.attribute(HtmlAttr.TYPE, "text");
out.attribute(HtmlAttr.CLASS, "form-control input-sm");
if (Property.hasValue(this.inputValue)) {
out.attribute(HtmlAttr.VALUE, this.inputValue);
}
out.attribute(HtmlAttr.SIZE, 34);
if (isRequired()) {
out.attribute(HtmlAttr.REQUIRED, true);
}
out.endTag(HtmlElem.INPUT);
}
@Override
public void setValue(final Object value) {
super.setValue(value);
if (value != null) {
this.inputValue = DataTypes.toString(value);
} else {
this.inputValue = null;
}
}
}