// This software is released into the Public Domain. See copying.txt for details. package org.openstreetmap.osmosis.core.domain.common; import java.util.Date; import org.openstreetmap.osmosis.core.OsmosisRuntimeException; /** * A timestamp container implementation that holds a timestamp in textual form. * * @author Brett Henderson */ public class UnparsedTimestampContainer implements TimestampContainer { private TimestampFormat managedTimestampFormat; private String timestampString; private Date timestamp; /** * Creates a new instance. * * @param timestampFormat * The format to use for parsing the timestamp string. * @param timestampString * The timestamp in unparsed string form. */ public UnparsedTimestampContainer(TimestampFormat timestampFormat, String timestampString) { this.managedTimestampFormat = timestampFormat; this.timestampString = timestampString; if (timestampString == null) { throw new OsmosisRuntimeException("The entity timestamp attribute is missing."); } } /** * {@inheritDoc} */ @Override public String getFormattedTimestamp(TimestampFormat timestampFormat) { if (timestampString != null && managedTimestampFormat.isEquivalent(timestampFormat)) { return timestampString; } // Ensure the timestamp has been parsed. getTimestamp(); if (timestamp != null) { return timestampFormat.formatTimestamp(timestamp); } else { return ""; } } /** * {@inheritDoc} */ @Override public Date getTimestamp() { if (timestamp == null && timestampString != null && timestampString.length() > 0) { timestamp = managedTimestampFormat.parseTimestamp(timestampString); } return timestamp; } }