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

---
 build.xml                                          |  18 ++--
 .../starlink/datanode/factory/DataNodeFactory.java |   9 --
 .../datanode/factory/DocumentDataNodeBuilder.java  |  10 +-
 .../datanode/factory/FileDataNodeBuilder.java      |   3 +-
 .../datanode/factory/XMLDataNodeBuilder.java       |  10 +-
 .../uk/ac/starlink/datanode/nodes/DataType.java    |   7 --
 .../starlink/datanode/nodes/ImageHDUDataNode.java  |  33 -------
 .../datanode/tree/DataNodeTransferable.java        | 107 ---------------------
 .../starlink/datanode/tree/TableNodeChooser.java   |   4 -
 9 files changed, 9 insertions(+), 192 deletions(-)

diff --git a/build.xml b/build.xml
index 546c3a3..5b09e8a 100644
--- a/build.xml
+++ b/build.xml
@@ -210,9 +210,6 @@
     <!-- FITS -->
     <pathelement location="${star.jar.dir}/fits/fits.jar"/>
 
-    <!-- NDX -->
-    <pathelement location="${star.jar.dir}/ndx/ndx.jar"/>
-
     <!-- VOTable -->
     <pathelement location="${star.jar.dir}/votable/votable.jar"/>
 
@@ -234,8 +231,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}/ndx/lib/ndx/ndx.jar"/>
     <pathelement
        location="${star.build.dir}/votable/lib/votable/votable.jar"/>
     <pathelement
@@ -398,12 +393,6 @@
                classname="uk.ac.starlink.fits.MappedFile"/>
     <fail message="No FITS available" unless="fits.present"/>
 
-    <!-- Need NDX -->
-    <available property="ndx.present"
-               classpathref="classpath"
-               classname="uk.ac.starlink.ndx.Ndx"/>
-    <fail message="No NDX available" unless="ndx.present"/>
-
     <!-- Need VOTable -->
     <available property="votable.present"
                classpathref="classpath"
@@ -480,6 +469,9 @@
       <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"/>
+      <exclude name="uk/ac/starlink/datanode/nodes/NDArrayDataNode.java"/>
+      <exclude name="uk/ac/starlink/datanode/nodes/NdxDataNode.java"/>
+      <exclude name="uk/ac/starlink/datanode/tree/NdxNodeChooser.java"/>
     </javac>
 
     <!-- Copy extra files that should live with packages classes
@@ -578,7 +570,6 @@
          <extension name="TABLE" href="table.jnlp"/>
          <extension name="TAMFITS" href="tamfits.jnlp"/>
          <extension name="FITS" href="fits.jnlp"/>
-         <extension name="NDX" href="ndx.jnlp"/>
          <extension name="VOTABLE" href="votable.jnlp"/>
          <extension name="CONNECT" href="connect.jnlp"/>
          <extension name="ASTROGRID" href="astrogrid.jnlp"/>
@@ -995,6 +986,9 @@
 	 <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"/>
+	 <exclude name="uk/ac/starlink/datanode/nodes/NDArrayDataNode.java"/>
+	 <exclude name="uk/ac/starlink/datanode/nodes/NdxDataNode.java"/>
+	 <exclude name="uk/ac/starlink/datanode/tree/NdxNodeChooser.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 c959939..d501013 100644
--- a/src/main/uk/ac/starlink/datanode/factory/DataNodeFactory.java
+++ b/src/main/uk/ac/starlink/datanode/factory/DataNodeFactory.java
@@ -24,10 +24,7 @@ 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.HDXDataNode;
 import uk.ac.starlink.datanode.nodes.JDBCDataNode;
-import uk.ac.starlink.datanode.nodes.NDArrayDataNode;
-import uk.ac.starlink.datanode.nodes.NdxDataNode;
 import uk.ac.starlink.datanode.nodes.NoSuchDataException;
 import uk.ac.starlink.datanode.nodes.NodeUtil;
 import uk.ac.starlink.datanode.nodes.PlainDataNode;
@@ -55,15 +52,12 @@ import uk.ac.starlink.util.FileDataSource;
  * <li> {@link uk.ac.starlink.datanode.nodes.ARYDataNode}
  * <li> {@link uk.ac.starlink.datanode.nodes.HDSDataNode}
  * <li> {@link uk.ac.starlink.datanode.nodes.FITSFileDataNode}
- * <li> {@link uk.ac.starlink.datanode.nodes.NdxDataNode}
  * <li> {@link uk.ac.starlink.datanode.nodes.VOTableDataNode}
  * <li> {@link uk.ac.starlink.datanode.nodes.ZipFileDataNode}
  * <li> {@link uk.ac.starlink.datanode.nodes.TarStreamDataNode}
- * <li> {@link uk.ac.starlink.datanode.nodes.NDArrayDataNode}
  * <li> {@link uk.ac.starlink.datanode.nodes.FITSStreamDataNode}
  * <li> {@link uk.ac.starlink.datanode.nodes.JDBCDataNode}
  * <li> {@link uk.ac.starlink.datanode.nodes.StarTableDataNode}
- * <li> {@link uk.ac.starlink.datanode.nodes.HDXDataNode}
  * <li> {@link uk.ac.starlink.datanode.nodes.DocumentDataNode}
  * <li> {@link uk.ac.starlink.datanode.nodes.XMLDataNode}
  * <li> {@link uk.ac.starlink.datanode.nodes.CompressedDataNode}
@@ -659,15 +653,12 @@ public class DataNodeFactory {
             /* Assemble a list of the names of known DataNode classes. */
             List classNameList = new ArrayList( Arrays.asList( new String[] {
                 FITSFileDataNode.class.getName(),
-                NdxDataNode.class.getName(),
                 VOTableDataNode.class.getName(),
                 ZipFileDataNode.class.getName(),
                 TarStreamDataNode.class.getName(),
-                NDArrayDataNode.class.getName(),
                 FITSStreamDataNode.class.getName(),
                 JDBCDataNode.class.getName(),
                 StarTableDataNode.class.getName(),
-                HDXDataNode.class.getName(),
                 DocumentDataNode.class.getName(),
                 XMLDataNode.class.getName(),
                 VOTableTableDataNode.class.getName(),
diff --git a/src/main/uk/ac/starlink/datanode/factory/DocumentDataNodeBuilder.java b/src/main/uk/ac/starlink/datanode/factory/DocumentDataNodeBuilder.java
index 3cca150..bc5bd13 100644
--- a/src/main/uk/ac/starlink/datanode/factory/DocumentDataNodeBuilder.java
+++ b/src/main/uk/ac/starlink/datanode/factory/DocumentDataNodeBuilder.java
@@ -2,8 +2,6 @@ package uk.ac.starlink.datanode.factory;
 
 import uk.ac.starlink.datanode.nodes.DataNode;
 import uk.ac.starlink.datanode.nodes.DocumentDataNode;
-import uk.ac.starlink.datanode.nodes.HDXDataNode;
-import uk.ac.starlink.datanode.nodes.NdxDataNode;
 import uk.ac.starlink.datanode.nodes.NoSuchDataException;
 import uk.ac.starlink.datanode.nodes.VOTableDataNode;
 import uk.ac.starlink.datanode.nodes.XMLDocument;
@@ -43,13 +41,7 @@ public class DocumentDataNodeBuilder extends DataNodeBuilder {
 
         /* If this suggests that it is a DataNode that we know about, 
          * pass it to the appropriate constructor. */
-        if ( elname.equals( "hdx" ) ) {
-            return new HDXDataNode( xdoc );
-        }
-        else if ( elname.equals( "ndx" ) ) {
-            return new NdxDataNode( xdoc );
-        }
-        else if ( elName.equals( "VOTABLE" ) ) {
+        if ( elName.equals( "VOTABLE" ) ) {
             return new VOTableDataNode( xdoc );
         }
 
diff --git a/src/main/uk/ac/starlink/datanode/factory/FileDataNodeBuilder.java b/src/main/uk/ac/starlink/datanode/factory/FileDataNodeBuilder.java
index 88d08d8..a5eab95 100644
--- a/src/main/uk/ac/starlink/datanode/factory/FileDataNodeBuilder.java
+++ b/src/main/uk/ac/starlink/datanode/factory/FileDataNodeBuilder.java
@@ -14,7 +14,6 @@ import uk.ac.starlink.datanode.nodes.DataNode;
 import uk.ac.starlink.datanode.nodes.FITSDataNode;
 import uk.ac.starlink.datanode.nodes.FITSFileDataNode;
 import uk.ac.starlink.datanode.nodes.FileDataNode;
-import uk.ac.starlink.datanode.nodes.NdxDataNode;
 import uk.ac.starlink.datanode.nodes.NodeUtil;
 import uk.ac.starlink.datanode.nodes.NoSuchDataException;
 import uk.ac.starlink.datanode.nodes.TarStreamDataNode;
@@ -102,7 +101,7 @@ public class FileDataNodeBuilder extends DataNodeBuilder {
                     istrm = new BufferedDataInputStream( strm1 );
                     Header hdr = new Header( istrm );
                     if ( hdr.containsKey( "NDX_XML" ) ) {
-                        return new NdxDataNode( file );
+                        return new FITSFileDataNode( file );
                     }
                     else {
                         return new FITSFileDataNode( file );
diff --git a/src/main/uk/ac/starlink/datanode/factory/XMLDataNodeBuilder.java b/src/main/uk/ac/starlink/datanode/factory/XMLDataNodeBuilder.java
index a2649e2..0a777c8 100644
--- a/src/main/uk/ac/starlink/datanode/factory/XMLDataNodeBuilder.java
+++ b/src/main/uk/ac/starlink/datanode/factory/XMLDataNodeBuilder.java
@@ -4,8 +4,6 @@ import javax.xml.transform.Source;
 import javax.xml.transform.TransformerException;
 import org.w3c.dom.Element;
 import uk.ac.starlink.datanode.nodes.DataNode;
-import uk.ac.starlink.datanode.nodes.HDXDataNode;
-import uk.ac.starlink.datanode.nodes.NdxDataNode;
 import uk.ac.starlink.datanode.nodes.NoSuchDataException;
 import uk.ac.starlink.datanode.nodes.VOComponentDataNode;
 import uk.ac.starlink.datanode.nodes.XMLDataNode;
@@ -58,13 +56,7 @@ public class XMLDataNodeBuilder extends DataNodeBuilder {
         
         /* If this suggests that it is a DataNode that we know about, 
          * pass it to the appropriate constructor. */
-        if ( elname.equals( "hdx" ) ) {
-            return new HDXDataNode( xsrc );
-        }
-        else if ( elname.equals( "ndx" ) ) {
-            return new NdxDataNode( xsrc );
-        }
-        else if ( elName.equals( "VOTABLE" ) ) {
+        if ( elName.equals( "VOTABLE" ) ) {
             return new VOComponentDataNode( xsrc );
         }
 
diff --git a/src/main/uk/ac/starlink/datanode/nodes/DataType.java b/src/main/uk/ac/starlink/datanode/nodes/DataType.java
index 4848672..780f450 100644
--- a/src/main/uk/ac/starlink/datanode/nodes/DataType.java
+++ b/src/main/uk/ac/starlink/datanode/nodes/DataType.java
@@ -1,7 +1,6 @@
 package uk.ac.starlink.datanode.nodes;
 
 import uk.ac.starlink.array.NDArray;
-import uk.ac.starlink.ndx.Ndx;
 import uk.ac.starlink.table.StarTable;
 import uk.ac.starlink.util.DataSource;
 
@@ -27,12 +26,6 @@ public class DataType {
     public static final DataType TABLE = 
         new DataType( "TABLE", StarTable.class );
 
-    /**
-     * DataType representing a {@link uk.ac.starlink.ndx.Ndx} object.
-     */
-    public static final DataType NDX =
-        new DataType( "NDX", Ndx.class );
-
     /**
      * DataType representing a {@link uk.ac.starlink.util.DataSource} object.
      */
diff --git a/src/main/uk/ac/starlink/datanode/nodes/ImageHDUDataNode.java b/src/main/uk/ac/starlink/datanode/nodes/ImageHDUDataNode.java
index 15eefeb..6204827 100644
--- a/src/main/uk/ac/starlink/datanode/nodes/ImageHDUDataNode.java
+++ b/src/main/uk/ac/starlink/datanode/nodes/ImageHDUDataNode.java
@@ -16,11 +16,8 @@ import uk.ac.starlink.array.BridgeNDArray;
 import uk.ac.starlink.array.MouldArrayImpl;
 import uk.ac.starlink.array.NDArray;
 import uk.ac.starlink.array.NDShape;
-import uk.ac.starlink.fits.FitsArrayBuilder;
 import uk.ac.starlink.fits.FitsConstants;
 import uk.ac.starlink.fits.MappedFile;
-import uk.ac.starlink.ndx.DefaultMutableNdx;
-import uk.ac.starlink.ndx.Ndx;
 
 /**
  * An implementation of the {@link DataNode} interface for
@@ -191,41 +188,11 @@ public class ImageHDUDataNode extends HDUDataNode {
     }
 
     public boolean hasDataObject( DataType dtype ) {
-        if ( dtype == DataType.NDX ) {
-            return shape != null;
-        }
-        else {
             return super.hasDataObject( dtype );
-        }
     }
 
     public Object getDataObject( DataType dtype ) throws DataObjectException {
-        if ( hasDataObject( dtype ) && dtype == DataType.NDX ) {
-            try {
-                return getNdx();
-            }
-            catch ( IOException e ) {
-                throw new DataObjectException( e );
-            }
-        }
-        else {
             return super.getDataObject( dtype );
-        }
     }
 
-    private synchronized Ndx getNdx() throws IOException {
-        if ( ndx == null ) {
-            ArrayDataInput data = hdudata.getArrayData();
-            NDArray nda = FitsArrayBuilder.getInstance()
-                         .makeNDArray( data, AccessMode.READ );
-            if ( ! nda.getShape().equals( shape ) ) {
-                nda = new BridgeNDArray( new MouldArrayImpl( nda, shape ) );
-            }
-            ndx = new DefaultMutableNdx( nda );
-            if ( wcs != null ) {
-                ((DefaultMutableNdx) ndx).setWCS( wcs );
-            }
-        }
-        return ndx;
-    }
 }
diff --git a/src/main/uk/ac/starlink/datanode/tree/DataNodeTransferable.java b/src/main/uk/ac/starlink/datanode/tree/DataNodeTransferable.java
index 60b275c..fe78069 100644
--- a/src/main/uk/ac/starlink/datanode/tree/DataNodeTransferable.java
+++ b/src/main/uk/ac/starlink/datanode/tree/DataNodeTransferable.java
@@ -10,7 +10,6 @@ import java.net.MalformedURLException;
 import javax.xml.transform.Source;
 import nom.tam.util.ArrayDataOutput;
 import nom.tam.util.BufferedDataOutputStream;
-import uk.ac.starlink.fits.FitsNdxHandler;
 import uk.ac.starlink.table.StarTable;
 import uk.ac.starlink.util.DataSource;
 import uk.ac.starlink.votable.DataFormat;
@@ -18,8 +17,6 @@ import uk.ac.starlink.votable.VOTableWriter;
 import uk.ac.starlink.datanode.nodes.DataNode;
 import uk.ac.starlink.datanode.nodes.DataObjectException;
 import uk.ac.starlink.datanode.nodes.DataType;
-import uk.ac.starlink.hdx.HdxException;
-import uk.ac.starlink.ndx.Ndx;
 import uk.ac.starlink.util.SourceReader;
 
 /**
@@ -52,27 +49,6 @@ public class DataNodeTransferable extends BasicTransferable {
             }
         }
 
-        /* If the node can supply an NDX, add a suitable data source. */
-        if ( node.hasDataObject( DataType.NDX ) ) {
-            try {
-                Ndx ndx = (Ndx) node.getDataObject( DataType.NDX );
-
-                /* If it's persistent we can serialize it to XML. */
-                if ( ndx.isPersistent() ) {
-                    addDataSource( new XmlNdxDataSource( ndx ),
-                                   "application/xml" );
-                }
-
-                /* In any case, we can squirt the whole lot as a FITS file
-                 * with data inline. */
-                addDataSource( new FitsNdxDataSource( ndx ),
-                               "application/fits" );
-            }
-            catch ( DataObjectException e ) {
-                e.printStackTrace();
-            }
-        }
-
         /* Try to identify a URL. */
         URL url = getURL( node );
         if ( url != null ) {
@@ -173,87 +149,4 @@ public class DataNodeTransferable extends BasicTransferable {
         }
     }
 
-    /**
-     * DataSource which provides an XML stream representing an NDX.
-     */
-    private static class XmlNdxDataSource extends DataSource {
-
-        final Ndx ndx_;
-
-        XmlNdxDataSource( Ndx ndx ) {
-            ndx_ = ndx;
-        }
-
-        public InputStream getRawInputStream() throws IOException {
-            try {
-                Source xsrc = ndx_.getHdxFacade().getSource( null );
-                return new SourceReader().getXMLStream( xsrc );
-            }
-            catch ( HdxException e ) {
-                throw (IOException) new IOException( e.getMessage() )
-                                   .initCause( e );
-            }
-        }
-
-        public String getName() {
-            return ndx_.hasTitle() ? ndx_.getTitle() : "NDX";
-        }
-
-        public URL getURL() {
-            return null;
-        }
-    }
-
-    /**
-     * DataSource which provides a FITS stream representing an NDX.
-     */
-    private static class FitsNdxDataSource extends DataSource {
-
-        final Ndx ndx_;
- 
-        FitsNdxDataSource( Ndx ndx ) {
-            ndx_ = ndx;
-        }
-
-        public InputStream getRawInputStream() throws IOException {
-            final PipedOutputStream ostrm = new PipedOutputStream();
-            InputStream istrm = new PipedInputStream( ostrm );
-            new Thread() {
-                public void run() {
-                    try {
-                        URL dummyUrl = new URL( "file://localhost/dummy" );
-                        ArrayDataOutput strm =
-                            new BufferedDataOutputStream( ostrm );
-                        FitsNdxHandler.getInstance()
-                                      .outputNdx( strm, dummyUrl, ndx_ );
-                        strm.close();
-                    }
-                    catch ( MalformedURLException e ) {
-                        throw new AssertionError( e );
-                    }
-                    catch ( IOException e ) {
-                        // May well catch an exception here if not all
-                        // the output is consumed
-                    }
-                    finally {
-                        try {
-                            ostrm.close();
-                        }
-                        catch ( IOException e ) {
-                        }
-                    }
-                }
-            }.start();
-            return istrm;
-        }
-
-        public String getName() {
-            return ndx_.hasTitle() ? ndx_.getTitle() : "NDX";
-        }
-
-        public URL getURL() {
-            return null;
-        }
-    }
-       
 }
diff --git a/src/main/uk/ac/starlink/datanode/tree/TableNodeChooser.java b/src/main/uk/ac/starlink/datanode/tree/TableNodeChooser.java
index 5727f09..ee0f2d6 100644
--- a/src/main/uk/ac/starlink/datanode/tree/TableNodeChooser.java
+++ b/src/main/uk/ac/starlink/datanode/tree/TableNodeChooser.java
@@ -16,8 +16,6 @@ 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.DataType;
-import uk.ac.starlink.datanode.nodes.NDArrayDataNode;
-import uk.ac.starlink.datanode.nodes.NdxDataNode;
 
 /**
  * TreeNodeChooser subclass designed to return 
@@ -168,8 +166,6 @@ public class TableNodeChooser extends TreeNodeChooser {
         if ( shunnedClassList == null ) {
             String[] shunned = new String[] {
                 CompressedDataNode.class.getName(),
-                NdxDataNode.class.getName(),
-                NDArrayDataNode.class.getName(),
             };
             List classes = new ArrayList();
             for ( int i = 0; i < shunned.length; i++ ) {
