    001/*****************************************************************************
    002 * Copyright by The HDF Group.                                               *
    003 * Copyright by the Board of Trustees of the University of Illinois.         *
    004 * All rights reserved.                                                      *
    005 *                                                                           *
    006 * This file is part of the HDF Java Products distribution.                  *
    007 * The full copyright notice, including terms governing use, modification,   *
    008 * and redistribution, is contained in the files COPYING and Copyright.html. *
    009 * COPYING can be found at the root of the source code distribution tree.    *
    010 * Or, see https://support.hdfgroup.org/products/licenses.html               *
    011 * If you do not have access to either file, you may request a copy from     *
    012 * help@hdfgroup.org.                                                        *
    013 ****************************************************************************/
    014
    015package hdf.object.fits;
    016
    017import java.util.List;
    018
    019import hdf.object.FileFormat;
    020import hdf.object.Group;
    021
    022/**
    023 * An H5Group represents HDF5 group, inheriting from Group.
    024 * Every HDF5 object has at least one name. An HDF5 group is used to store
    025 * a set of the names together in one place, i.e. a group. The general
    026 * structure of a group is similar to that of the UNIX file system in
    027 * that the group may contain references to other groups or data objects
    028 * just as the UNIX directory may contain subdirectories or files.
    029 * <p>
    030 * @version 1.1 9/4/2007
    031 * @author Peter X. Cao
    032 */
    033public class FitsGroup extends Group
    034{
    035    private static final long serialVersionUID = 4993155577664991838L;
    036
    037    /**
    038     * The list of attributes of this data object. Members of the list are
    039     * instance of Attribute.
    040     */
    041    private List attributeList;
    042
    043    /** The default object ID for HDF5 objects */
    044    private static final long[] DEFAULT_OID = {0};
    045
    046    /**
    047     * Constructs an HDF5 group with specific name, path, and parent.
    048     * <p>
    049     * @param fileFormat the file which containing the group.
    050     * @param name the name of this group.
    051     * @param path the full path of this group.
    052     * @param parent the parent of this group.
    053     * @param theID the unique identifier of this data object.
    054     */
    055    public FitsGroup(FileFormat fileFormat, String name, String path, Group parent, long[] theID) {
    056        super (fileFormat, name, path, parent, ((theID == null) ? DEFAULT_OID : theID));
    057    }
    058
    059    /*
    060     * (non-Javadoc)
    061     * @see hdf.object.DataFormat#hasAttribute()
    062     */
    063    public boolean hasAttribute () { return false; }
    064
    065    // Implementing DataFormat
    066    public List getMetadata() throws Exception {
    067        if (!isRoot()) {
    068            return null; // there is only one group in the file: the root
    069        }
    070
    071        if (attributeList != null) {
    072            return attributeList;
    073        }
    074
    075        return attributeList;
    076    }
    077
    078    /**
    079     * Creates a new attribute and attached to this dataset if attribute does
    080     * not exist. Otherwise, just update the value of the attribute.
    081     *
    082     * @param info the atribute to attach
    083     */
    084    public void writeMetadata(Object info) throws Exception {
    085        // not supported
    086        throw new UnsupportedOperationException("Unsupported operation for FITS.");
    087    }
    088
    089    /**
    090     * Deletes an attribute from this dataset.
    091     * <p>
    092     * @param info the attribute to delete.
    093     */
    094    public void removeMetadata(Object info) throws Exception {
    095        // not supported
    096        throw new UnsupportedOperationException("Unsupported operation for FITS.");
    097    }
    098
    099    /*
    100     * (non-Javadoc)
    101     * @see hdf.object.DataFormat#updateMetadata(java.lang.Object)
    102     */
    103    public void updateMetadata(Object info) throws Exception {
    104        // not supported
    105        throw new UnsupportedOperationException("Unsupported operation for FITS.");
    106    }
    107
    108    // Implementing DataFormat
    109    @Override
    110    public long open() {
    111        // not supported
    112        throw new UnsupportedOperationException("Unsupported operation for FITS.");
    113    }
    114
    115    /** close group access */
    116    @Override
    117    public void close(long gid) {
    118        // not supported
    119        throw new UnsupportedOperationException("Unsupported operation for FITS.");
    120    }
    121
    122    /**
    123     * Creates a new group.
    124     * @param name the name of the group to create.
    125     * @param pgroup the parent group of the new group.
    126     *
    127     * @return the new group if successful. Otherwise returns null.
    128     *
    129     * @throws Exception
    130     *            if there is an error
    131     */
    132    public static FitsGroup create(String name, Group pgroup)
    133        throws Exception {
    134        // not supported
    135        throw new UnsupportedOperationException("Unsupported operation for FITS.");
    136    }
    137
    138    //Implementing DataFormat
    139    public List getMetadata(int... attrPropList) throws Exception {
    140        throw new UnsupportedOperationException("getMetadata(int... attrPropList) is not supported");
    141    }
    142
    143}