uk.ac.starlink.gbin
Class GbinObjectReader

java.lang.Object
  extended by uk.ac.starlink.gbin.GbinObjectReader

public class GbinObjectReader
extends java.lang.Object

Provides read services for an object implementing the gaia.cu1.tools.dal.gbin.GbinReader interface. This object can read the elements stored in a GBIN file.

Access is via reflection, so I don't need GaiaTools on the classpath at build time, for several reasons:

Since:
13 Aug 2014

Constructor Summary
GbinObjectReader(java.lang.Object gbinReaderObj)
          Constructor.
 
Method Summary
static java.lang.Object createGbinReaderObject(java.io.InputStream in)
          Constructs a GbinReader from a given input stream.
static GbinObjectReader createReader(java.io.InputStream in)
          Attempts to construct a GbinObjectReader that can read records from a given input stream.
 boolean hasNext()
          Indicates whether this reader can read another element.
static void initGaiaTools()
          Performs GaiaTools setup required before GbinReaders are used etc.
static boolean isMagic(byte[] intro)
          Indicates whether a buffer containing the first few bytes of a file look like a GBIN magic number.
 java.lang.Object next()
          Reads the next record.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

GbinObjectReader

public GbinObjectReader(java.lang.Object gbinReaderObj)
Constructor.

Parameters:
gbinReaderObj - object implementing gaia.cu1.tools.dal.gbin.GbinReader
Throws:
java.lang.IllegalArgumentException - if gbinReaderObj doesn't appear to be a GbinReader
Method Detail

hasNext

public boolean hasNext()
                throws java.io.IOException
Indicates whether this reader can read another element.

Returns:
true if another record will be returned by next
Throws:
java.io.IOException

next

public java.lang.Object next()
                      throws java.io.IOException
Reads the next record.

Returns:
object implementing gaia.cu1.tools.dm.GaiaRoot
Throws:
java.io.IOException

createReader

public static GbinObjectReader createReader(java.io.InputStream in)
                                     throws java.io.IOException
Attempts to construct a GbinObjectReader that can read records from a given input stream.

Parameters:
in - input stream containing a GBIN file
Returns:
gbin object reader
Throws:
java.io.IOException

isMagic

public static boolean isMagic(byte[] intro)
Indicates whether a buffer containing the first few bytes of a file look like a GBIN magic number.

Note this has not been exhaustively tested with all known GBIN variants.

Parameters:
intro - first few bytes to test
Returns:
true if buffer looks like it could be the start of a GBIN file

initGaiaTools

public static void initGaiaTools()
Performs GaiaTools setup required before GbinReaders are used etc. Called by createReader. Calls after the first one do nothing, but are harmless and cheap. Uses reflection.


createGbinReaderObject

public static java.lang.Object createGbinReaderObject(java.io.InputStream in)
                                               throws java.io.IOException
Constructs a GbinReader from a given input stream. Uses reflection to invoke gaia.cu1.tools.dal.gbin.GbinFactory.getGbinReader().

Parameters:
in - input stream assumed to contain a GBIN file
Returns:
object implementing gaia.cu1.tools.dal.gbin.GbinReader interface
Throws:
java.io.IOException - with informative message if something goes wrong, including reflection trouble

Copyright © 2004 CLRC: Central Laboratory of the Research Councils. All rights reserved.