001/*-
002 *******************************************************************************
003 * Copyright (c) 2011, 2016 Diamond Light Source Ltd.
004 * All rights reserved. This program and the accompanying materials
005 * are made available under the terms of the Eclipse Public License v1.0
006 * which accompanies this distribution, and is available at
007 * http://www.eclipse.org/legal/epl-v10.html
008 *
009 * Contributors:
010 *    Peter Chang - initial API and implementation and/or initial documentation
011 *******************************************************************************/
012
013package org.eclipse.january.metadata;
014
015
016import java.io.File;
017import java.util.Date;
018
019/**
020 * This is an interface that has been designed to add information about a file in addition to
021 * information which has been implemented in IMetadata.
022 * <p>
023 * It is intended that implementations of this interface will be through an adapter
024 */
025public interface IExtendedMetadata extends IMetadata {
026
027        /**
028         * Initialize with a file
029         * @param f file
030         */
031        public void initialize(File f);
032
033        /**
034         * This should be the timestamp of when the experiment or measurement took place which should
035         * be recorded in the header of the file, if applicable
036         * 
037         * @return a date object to represent when the data was created
038         */
039        public Date getCreation();
040
041        /**
042         * @return a date object that indicated when the data was last modified
043         */
044        public Date getLastModified();
045
046        /**
047         * @return a string representing the user who created the file
048         */
049        public String getCreator();
050
051        /**
052         * @return a string containing the filename
053         */
054        public String getFileName();
055
056        /**
057         * @return the owner of the file
058         */
059        public String getFileOwner();
060
061        /**
062         * @return a long representing the size of the file in bytes
063         */
064        public long getFileSize();
065
066        /**
067         * @return the full path string of the file
068         */
069        public String getFullPath();
070
071        /**
072         * @return The scan command as a string that was used to generate the data. This can be null as not always
073         *         applicable
074         */
075        public String getScanCommand();
076
077}