+++ /dev/null
-package tim.prune.data;
-
-import java.io.File;
-
-/**
- * Class to represent a general media object for correlation.
- * Subclasses are currently Photo and AudioClip
- */
-public abstract class MediaObject
-{
- /** File where media is stored (if any) */
- protected File _file = null;
- /** Name of file */
- protected String _name = null;
- /** Cached data if downloaded */
- protected byte[] _data = null;
- /** URL if media came from net */
- protected String _url = null;
- /** Timestamp, if any */
- protected Timestamp _timestamp = null;
- /** Associated DataPoint if correlated */
- protected DataPoint _dataPoint = null;
- /** Status when loaded */
- private Status _originalStatus = Status.NOT_CONNECTED;
- /** Current status */
- private Status _currentStatus = Status.NOT_CONNECTED;
-
- /** Connection status */
- public enum Status
- {
- /** Media is not connected to any point */
- NOT_CONNECTED,
- /** Media has been connected to a point since it was loaded */
- TAGGED,
- /** Media is connected to a point */
- CONNECTED
- };
-
-
- /**
- * Constructor
- * @param inFile file object
- * @param inStamp timestamp object
- */
- public MediaObject(File inFile, Timestamp inStamp)
- {
- _file = inFile;
- _name = inFile.getName();
- _data = null;
- _timestamp = inStamp;
- }
-
- /**
- * Constructor for byte arrays
- * @param inData byte array containing data
- * @param inName name of object
- * @param inUrl source url of object or null
- */
- public MediaObject(byte[] inData, String inName, String inUrl)
- {
- _file = null;
- _data = inData;
- _name = inName;
- _url = inUrl;
- _timestamp = null;
- }
-
- /**
- * @return the file object
- */
- public File getFile() {
- return _file;
- }
-
- /** @return media name */
- public String getName() {
- return _name;
- }
-
- /**
- * @return the timestamp object
- */
- public Timestamp getTimestamp() {
- return _timestamp;
- }
-
- /**
- * @param inTimestamp Timestamp object
- */
- public void setTimestamp(Timestamp inTimestamp) {
- _timestamp = inTimestamp;
- }
-
- /**
- * @return byte data of media
- */
- public byte[] getByteData() {
- return _data;
- }
-
- /**
- * @return source Url (or null)
- */
- public String getUrl() {
- return _url;
- }
-
- /**
- * @return the full path to the media, either filename or url
- */
- public String getFullPath()
- {
- if (_file != null) return _file.getAbsolutePath();
- return getUrl();
- }
-
- /**
- * @return true if details are valid (might not have timestamp)
- */
- public boolean isValid()
- {
- return ((_file != null && _file.exists() && _file.canRead())
- || (_data != null && _data.length > 0));
- }
-
- /**
- * @return true if file has timestamp
- */
- public boolean hasTimestamp() {
- return _timestamp != null && _timestamp.isValid();
- }
-
- /**
- * Check if this object refers to the same object as another
- * @param inOther other MediaObject
- * @return true if the objects are the same
- */
- public boolean equals(MediaObject inOther)
- {
- if (_file != null)
- {
- // compare file objects
- return (inOther != null && inOther.getFile() != null && getFile() != null
- && inOther.getFile().equals(getFile()));
- }
- // compare data arrays
- return (inOther != null && _name != null && inOther._name != null && _name.equals(inOther._name)
- && _data != null && inOther._data != null && _data.length == inOther._data.length);
- }
-
- /**
- * Set the data point associated with the photo
- * @param inPoint DataPoint with coordinates etc
- */
- public void setDataPoint(DataPoint inPoint)
- {
- _dataPoint = inPoint;
- // set status according to point
- if (inPoint == null) {
- setCurrentStatus(Status.NOT_CONNECTED);
- }
- else {
- setCurrentStatus(Status.CONNECTED);
- }
- }
-
- /**
- * @return the DataPoint object
- */
- public DataPoint getDataPoint() {
- return _dataPoint;
- }
-
- /**
- * @param inStatus status of file when loaded
- */
- public void setOriginalStatus(Status inStatus)
- {
- _originalStatus = inStatus;
- _currentStatus = inStatus;
- }
-
- /**
- * @return status of file when it was loaded
- */
- public Status getOriginalStatus()
- {
- return _originalStatus;
- }
-
- /**
- * @return current status
- */
- public Status getCurrentStatus()
- {
- return _currentStatus;
- }
- /**
- * @param inStatus current status
- */
- public void setCurrentStatus(Status inStatus)
- {
- _currentStatus = inStatus;
- }
-
- /**
- * @return true if this object is connected to a point
- */
- public boolean isConnected()
- {
- return _currentStatus != Status.NOT_CONNECTED;
- }
-
- /**
- * @return true if status has changed since load
- */
- public boolean isModified()
- {
- return _currentStatus != _originalStatus;
- }
-
- /**
- * Reset any cached data (eg thumbnail)
- */
- public void resetCachedData() {}
-}