From: Ole Streicher <olebole@debian.org>
Date: Tue, 10 Jan 2017 22:24:15 +0100
Subject: Remove HDS references

---
 build.xml                                          | 35 ++++++------------
 .../starlink/datanode/factory/DataNodeFactory.java | 15 --------
 .../datanode/factory/FileDataNodeBuilder.java      | 22 ------------
 .../ac/starlink/datanode/nodes/FileDataNode.java   | 38 --------------------
 .../uk/ac/starlink/datanode/nodes/NodeUtil.java    |  3 +-
 .../starlink/datanode/tree/TableNodeChooser.java   |  4 ---
 .../ac/starlink/datanode/viewers/ArrayBrowser.java | 41 ----------------------
 7 files changed, 11 insertions(+), 147 deletions(-)

diff --git a/build.xml b/build.xml
index a62ab4e..546c3a3 100644
--- a/build.xml
+++ b/build.xml
@@ -210,12 +210,6 @@
     <!-- FITS -->
     <pathelement location="${star.jar.dir}/fits/fits.jar"/>
 
-    <!-- JNIHDS -->
-    <pathelement location="${star.jar.dir}/jnihds/hds.jar"/>
-
-    <!-- HDS -->
-    <pathelement location="${star.jar.dir}/hds/hds.jar"/>
-
     <!-- NDX -->
     <pathelement location="${star.jar.dir}/ndx/ndx.jar"/>
 
@@ -240,10 +234,6 @@
        location="${star.build.dir}/table/lib/table/table.jar"/>
     <pathelement
        location="${star.build.dir}/tamfits/lib/tamfits/tamfits.jar"/>
-    <pathelement
-       location="${star.build.dir}/jnihds/lib/jnihds/jnihds.jar"/>
-    <pathelement
-       location="${star.build.dir}/hds/lib/hds/hds.jar"/>
     <pathelement
        location="${star.build.dir}/ndx/lib/ndx/ndx.jar"/>
     <pathelement
@@ -408,19 +398,6 @@
                classname="uk.ac.starlink.fits.MappedFile"/>
     <fail message="No FITS available" unless="fits.present"/>
 
-
-    <!-- Need JNIHDS -->
-    <available property="jnihds.present"
-               classpathref="classpath"
-               classname="uk.ac.starlink.hds.HDSObject"/>
-    <fail message="No JNIHDS available" unless="jnihds.present"/>
-
-    <!-- Need HDS -->
-    <available property="hds.present"
-               classpathref="classpath"
-               classname="uk.ac.starlink.hds.ArrayStructure"/>
-    <fail message="No HDS available" unless="hds.present"/>
-
     <!-- Need NDX -->
     <available property="ndx.present"
                classpathref="classpath"
@@ -498,6 +475,11 @@
       <exclude name="uk/ac/starlink/datanode/nodes/FrameDataNode.java"/>
       <exclude name="uk/ac/starlink/datanode/viewers/AstTextShower.java"/>
       <exclude name="uk/ac/starlink/datanode/viewers/AstFITSShower.java"/>
+      <exclude name="uk/ac/starlink/datanode/nodes/ARYDataNode.java"/>
+      <exclude name="uk/ac/starlink/datanode/nodes/HDSDataNode.java"/>
+      <exclude name="uk/ac/starlink/datanode/nodes/HDXDataNode.java"/>
+      <exclude name="uk/ac/starlink/datanode/nodes/HistoryDataNode.java"/>
+      <exclude name="uk/ac/starlink/datanode/nodes/NDFDataNode.java"/>
     </javac>
 
     <!-- Copy extra files that should live with packages classes
@@ -596,8 +578,6 @@
          <extension name="TABLE" href="table.jnlp"/>
          <extension name="TAMFITS" href="tamfits.jnlp"/>
          <extension name="FITS" href="fits.jnlp"/>
-         <extension name="JNIHDS" href="jnihds.jnlp"/>
-         <extension name="HDS" href="hds.jnlp"/>
          <extension name="NDX" href="ndx.jnlp"/>
          <extension name="VOTABLE" href="votable.jnlp"/>
          <extension name="CONNECT" href="connect.jnlp"/>
@@ -1010,6 +990,11 @@
 	 <exclude name="uk/ac/starlink/datanode/nodes/FrameDataNode.java"/>
 	 <exclude name="uk/ac/starlink/datanode/viewers/AstTextShower.java"/>
 	 <exclude name="uk/ac/starlink/datanode/viewers/AstFITSShower.java"/>
+	 <exclude name="uk/ac/starlink/datanode/nodes/ARYDataNode.java"/>
+	 <exclude name="uk/ac/starlink/datanode/nodes/HDSDataNode.java"/>
+	 <exclude name="uk/ac/starlink/datanode/nodes/HDXDataNode.java"/>
+	 <exclude name="uk/ac/starlink/datanode/nodes/HistoryDataNode.java"/>
+	 <exclude name="uk/ac/starlink/datanode/nodes/NDFDataNode.java"/>
       </fileset>
 
       <!-- Link to the full Java API at SUNs website -->
diff --git a/src/main/uk/ac/starlink/datanode/factory/DataNodeFactory.java b/src/main/uk/ac/starlink/datanode/factory/DataNodeFactory.java
index 15c7c79..9b1f4c5 100644
--- a/src/main/uk/ac/starlink/datanode/factory/DataNodeFactory.java
+++ b/src/main/uk/ac/starlink/datanode/factory/DataNodeFactory.java
@@ -14,7 +14,6 @@ import java.util.regex.Matcher;
 import java.util.regex.Pattern;
 import javax.xml.transform.dom.DOMSource;
 import org.w3c.dom.Node;
-import uk.ac.starlink.datanode.nodes.ARYDataNode;
 import uk.ac.starlink.datanode.nodes.BranchDataNode;
 import uk.ac.starlink.datanode.nodes.CompressedDataNode;
 import uk.ac.starlink.datanode.nodes.DataNode;
@@ -25,12 +24,9 @@ import uk.ac.starlink.datanode.nodes.FITSStreamDataNode;
 import uk.ac.starlink.datanode.nodes.FileDataNode;
 import uk.ac.starlink.datanode.nodes.FtpDirectoryDataNode;
 import uk.ac.starlink.datanode.nodes.FtpLocation;
-import uk.ac.starlink.datanode.nodes.HDSDataNode;
 import uk.ac.starlink.datanode.nodes.HDXDataNode;
-import uk.ac.starlink.datanode.nodes.HistoryDataNode;
 import uk.ac.starlink.datanode.nodes.JDBCDataNode;
 import uk.ac.starlink.datanode.nodes.NDArrayDataNode;
-import uk.ac.starlink.datanode.nodes.NDFDataNode;
 import uk.ac.starlink.datanode.nodes.NdxDataNode;
 import uk.ac.starlink.datanode.nodes.NoSuchDataException;
 import uk.ac.starlink.datanode.nodes.NodeUtil;
@@ -58,7 +54,6 @@ import uk.ac.starlink.util.FileDataSource;
  * <li> {@link uk.ac.starlink.datanode.nodes.NDFDataNode}
  * <li> {@link uk.ac.starlink.datanode.nodes.WCSDataNode}
  * <li> {@link uk.ac.starlink.datanode.nodes.ARYDataNode}
- * <li> {@link uk.ac.starlink.datanode.nodes.HistoryDataNode}
  * <li> {@link uk.ac.starlink.datanode.nodes.HDSDataNode}
  * <li> {@link uk.ac.starlink.datanode.nodes.FITSFileDataNode}
  * <li> {@link uk.ac.starlink.datanode.nodes.NdxDataNode}
@@ -664,10 +659,6 @@ public class DataNodeFactory {
 
             /* Assemble a list of the names of known DataNode classes. */
             List classNameList = new ArrayList( Arrays.asList( new String[] {
-                NDFDataNode.class.getName(),
-                ARYDataNode.class.getName(),
-                HistoryDataNode.class.getName(),
-                HDSDataNode.class.getName(),
                 FITSFileDataNode.class.getName(),
                 TfitsDataNode.class.getName(),
                 NdxDataNode.class.getName(),
@@ -694,12 +685,6 @@ public class DataNodeFactory {
              * AST subsystems available, which may not be the case if the
              * corresponding native libraries are not present.  Remove classes
              * we know that we will not be able to deal with. */
-            if ( ! NodeUtil.hasHDS() ) {
-                classNameList.remove( NDFDataNode.class.getName() );
-                classNameList.remove( ARYDataNode.class.getName() );
-                classNameList.remove( HistoryDataNode.class.getName() );
-                classNameList.remove( HDSDataNode.class.getName() );
-            }
             if ( ! NodeUtil.hasTAMFITS() ) {
                 classNameList.remove( FITSFileDataNode.class.getName() );
                 classNameList.remove( FITSStreamDataNode.class.getName() );
diff --git a/src/main/uk/ac/starlink/datanode/factory/FileDataNodeBuilder.java b/src/main/uk/ac/starlink/datanode/factory/FileDataNodeBuilder.java
index 734e57a..a0d5ded 100644
--- a/src/main/uk/ac/starlink/datanode/factory/FileDataNodeBuilder.java
+++ b/src/main/uk/ac/starlink/datanode/factory/FileDataNodeBuilder.java
@@ -4,10 +4,8 @@ import java.io.File;
 import java.io.FileNotFoundException;
 import java.io.IOException;
 import uk.ac.starlink.datanode.nodes.DataNode;
-import uk.ac.starlink.datanode.nodes.HDSDataNode;
 import uk.ac.starlink.datanode.nodes.FITSFileDataNode;
 import uk.ac.starlink.datanode.nodes.FileDataNode;
-import uk.ac.starlink.datanode.nodes.NDFDataNode;
 import uk.ac.starlink.datanode.nodes.NodeUtil;
 import uk.ac.starlink.datanode.nodes.NoSuchDataException;
 import uk.ac.starlink.datanode.nodes.TarStreamDataNode;
@@ -15,9 +13,6 @@ import uk.ac.starlink.datanode.nodes.TfitsDataNode;
 import uk.ac.starlink.datanode.nodes.XMLDocument;
 import uk.ac.starlink.datanode.nodes.ZipArchiveDataNode;
 import uk.ac.starlink.datanode.nodes.ZipFileDataNode;
-import uk.ac.starlink.hds.HDSException;
-import uk.ac.starlink.hds.HDSObject;
-import uk.ac.starlink.hds.HDSReference;
 import uk.ac.starlink.fits.FitsUtil;
 import uk.ac.starlink.util.Compression;
 import uk.ac.starlink.util.DataSource;
@@ -102,23 +97,6 @@ public class FileDataNodeBuilder extends DataNodeBuilder {
             /* If it's an HDS file, make it an NDF (if it is one) 
              * or an HDS node. */
             String fname = file.getName();
-            if ( ( fname.endsWith( ".sdf" ) || fname.endsWith( ".SDF" ) ) &&
-                 NodeUtil.hasHDS() && 
-                 HDSDataNode.isMagic( magic ) ) {
-                HDSObject hobj = null;
-                try {
-                    hobj = new HDSReference( file ).getObject( "READ" );
-                    try {
-                        return new NDFDataNode( hobj );
-                    }
-                    catch ( NoSuchDataException e ) {
-                        return new HDSDataNode( hobj );
-                    }
-                }
-                catch ( HDSException e ) {
-                    throw new NoSuchDataException( e );
-                }
-            }
 
             /* Zip/jar file? */
             if ( ZipArchiveDataNode.isMagic( magic ) ) {
diff --git a/src/main/uk/ac/starlink/datanode/nodes/FileDataNode.java b/src/main/uk/ac/starlink/datanode/nodes/FileDataNode.java
index e0ee26b..2cd9e5c 100644
--- a/src/main/uk/ac/starlink/datanode/nodes/FileDataNode.java
+++ b/src/main/uk/ac/starlink/datanode/nodes/FileDataNode.java
@@ -19,8 +19,6 @@ import java.util.Set;
 import javax.swing.JComponent;
 import javax.swing.JPanel;
 import uk.ac.starlink.datanode.viewers.TextViewer;
-import uk.ac.starlink.hds.HDSException;
-import uk.ac.starlink.hds.HDSObject;
 import uk.ac.starlink.util.Compression;
 import uk.ac.starlink.util.DataSource;
 import uk.ac.starlink.util.FileDataSource;
@@ -78,15 +76,6 @@ public class FileDataNode extends DefaultDataNode {
         }
     }
 
-    /**
-     * Initialises a <code>FileDataNode</code> from a top-level HDSObject.
-     *
-     * @param  hobj  an HDSObject at the top of its container file
-     * @throws  NoSuchDataException  if <tt>hobj</tt> is not at top level
-     */
-    public FileDataNode( HDSObject hobj ) throws NoSuchDataException {
-        this( getTopLevelFile( hobj ) );
-    }
 
     public boolean allowsChildren() {
         return file.isDirectory() && file.canRead();
@@ -246,31 +235,4 @@ public class FileDataNode extends DefaultDataNode {
         }
     }
 
-    /**
-     * Gets the container file in which a given HDSObject is the 
-     * top level item.
-     *
-     * @param  hobj  an HDSObject at the top of its container file
-     * @throws  NoSuchDataException  if <tt>hobj</tt> is not at top level
-     */
-    private static File getTopLevelFile( HDSObject hobj )
-            throws NoSuchDataException {
-
-        /* Get the container file name and path. */
-        String[] trace = new String[ 2 ];
-        int level; 
-        try {
-            level = hobj.hdsTrace( trace );
-        }
-        catch ( HDSException e ) {
-            throw new NoSuchDataException( e );
-        }
-
-        /* See if there is a parent. */
-        if ( level > 1 ) {
-            throw new NoSuchDataException( 
-                          "HDSObject is not at the top of container file" );
-        }
-        return new File( trace[ 1 ] );
-    }
 }
diff --git a/src/main/uk/ac/starlink/datanode/nodes/NodeUtil.java b/src/main/uk/ac/starlink/datanode/nodes/NodeUtil.java
index 52c88ca..c4ff1bf 100644
--- a/src/main/uk/ac/starlink/datanode/nodes/NodeUtil.java
+++ b/src/main/uk/ac/starlink/datanode/nodes/NodeUtil.java
@@ -7,7 +7,6 @@ import java.util.List;
 import java.util.logging.Logger;
 import uk.ac.starlink.datanode.factory.CreationState;
 import uk.ac.starlink.datanode.factory.TamFitsUtil;
-import uk.ac.starlink.hds.HDSPackage;
 
 /**
  * Miscellaneous utilities.
@@ -63,7 +62,7 @@ public class NodeUtil {
      */
     public static boolean hasHDS() {
         if ( hasHDS_ == null ) {
-            hasHDS_ = Boolean.valueOf( HDSPackage.isAvailable() );
+            hasHDS_ = Boolean.valueOf( false );
         }
         return hasHDS_.booleanValue();
     }
diff --git a/src/main/uk/ac/starlink/datanode/tree/TableNodeChooser.java b/src/main/uk/ac/starlink/datanode/tree/TableNodeChooser.java
index 9a218cc..5727f09 100644
--- a/src/main/uk/ac/starlink/datanode/tree/TableNodeChooser.java
+++ b/src/main/uk/ac/starlink/datanode/tree/TableNodeChooser.java
@@ -15,10 +15,8 @@ import uk.ac.starlink.datanode.factory.DataNodeFactory;
 import uk.ac.starlink.datanode.nodes.CompressedDataNode;
 import uk.ac.starlink.datanode.nodes.DataNode;
 import uk.ac.starlink.datanode.nodes.DataObjectException;
-import uk.ac.starlink.datanode.nodes.HDSDataNode;
 import uk.ac.starlink.datanode.nodes.DataType;
 import uk.ac.starlink.datanode.nodes.NDArrayDataNode;
-import uk.ac.starlink.datanode.nodes.NDFDataNode;
 import uk.ac.starlink.datanode.nodes.NdxDataNode;
 
 /**
@@ -171,8 +169,6 @@ public class TableNodeChooser extends TreeNodeChooser {
             String[] shunned = new String[] {
                 CompressedDataNode.class.getName(),
                 NdxDataNode.class.getName(),
-                NDFDataNode.class.getName(),
-                HDSDataNode.class.getName(),
                 NDArrayDataNode.class.getName(),
             };
             List classes = new ArrayList();
diff --git a/src/main/uk/ac/starlink/datanode/viewers/ArrayBrowser.java b/src/main/uk/ac/starlink/datanode/viewers/ArrayBrowser.java
index 2201c75..0cd1a6d 100644
--- a/src/main/uk/ac/starlink/datanode/viewers/ArrayBrowser.java
+++ b/src/main/uk/ac/starlink/datanode/viewers/ArrayBrowser.java
@@ -26,10 +26,6 @@ import uk.ac.starlink.array.NDShape;
 import uk.ac.starlink.array.Order;
 import uk.ac.starlink.array.OrderedNDShape;
 import uk.ac.starlink.array.Type;
-import uk.ac.starlink.hds.ArrayStructure;
-import uk.ac.starlink.hds.HDSException;
-import uk.ac.starlink.hds.HDSObject;
-import uk.ac.starlink.hds.HDSType;
 import uk.ac.starlink.table.gui.NumericCellRenderer;
 import uk.ac.starlink.table.gui.StarJTable;
 
@@ -53,16 +49,6 @@ public class ArrayBrowser extends JPanel {
         this( makeCellGetter( nda ), nda.getShape() );
     }
 
-    /**
-     * Constructs an ArrayBrowser from an ArrayStructure.
-     *
-     * @param   ary  the ArrayStructure to browse
-     * @throws  HDSException if there is some trouble reading <tt>ary</tt>
-     */
-    public ArrayBrowser( ArrayStructure ary ) throws HDSException {
-        this( makeCellGetter( ary ), ary.getShape() );
-    }
-
     /**
      * Makes an ArrayBrowser from a CellGetter object and an associated
      * pixel sequence (ordered shape).
@@ -329,33 +315,6 @@ public class ArrayBrowser extends JPanel {
         return cg;
     }
 
-    private static CellGetter makeCellGetter( ArrayStructure ary )
-            throws HDSException {
-        final HDSObject datobj = ary.getData();
-        final OrderedNDShape dshape =
-            new OrderedNDShape( datobj.datShape(), Order.COLUMN_MAJOR );
-        HDSType htype = ary.getType();
-        final Class clazz = ( htype == null )
-                          ? Object.class 
-                          : getWrapperClass( ary.getType().getJavaType() );
-        CellGetter cg = new CellGetter() {
-            public Object getValueAt( int index ) {
-                try {
-                    long[] pos = dshape.offsetToPosition( (long) index );
-                    HDSObject cellobj = datobj.datCell( pos );
-                    return cellobj.datGet0c();
-                }
-                catch ( HDSException e ) {
-                    e.printStackTrace();
-                    return BAD_CELL;
-                }
-            }
-            public Class getContentClass() {
-                return clazz;
-            }
-        };
-        return cg;
-    }
 
     private static Class getWrapperClass( Type type ) {
         return Array.get( type.newArray( 1 ), 0 ).getClass();
