public class GbinObjectReader extends Object
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:
Constructor and Description |
---|
GbinObjectReader(Object gbinReaderObj)
Constructor.
|
Modifier and Type | Method and Description |
---|---|
static Object |
createGbinReaderObject(InputStream in)
Constructs a GbinReader from a given input stream.
|
static GbinObjectReader |
createReader(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.
|
static void |
logError(Level level,
String msg,
Throwable error)
Write a logging message including an exception.
|
Object |
next()
Reads the next record.
|
public GbinObjectReader(Object gbinReaderObj)
gbinReaderObj
- object implementing
gaia.cu1.tools.dal.gbin.GbinReader
IllegalArgumentException
- if gbinReaderObj
doesn't appear to be a GbinReaderpublic boolean hasNext() throws IOException
next
IOException
public Object next() throws IOException
gaia.cu1.tools.dm.GaiaRoot
IOException
public static GbinObjectReader createReader(InputStream in) throws IOException
in
- input stream containing a GBIN fileIOException
public static boolean isMagic(byte[] intro)
Note this has not been exhaustively tested with all known GBIN variants.
intro
- first few bytes to testpublic static void initGaiaTools()
createReader
.
Calls after the first one do nothing, but are harmless and cheap.
Uses reflection.public static Object createGbinReaderObject(InputStream in) throws IOException
gaia.cu1.tools.dal.gbin.GbinFactory.getGbinReader()
.in
- input stream assumed to contain a GBIN filegaia.cu1.tools.dal.gbin.GbinReader
interfaceIOException
- with informative message if something goes wrong,
including reflection troublepublic static void logError(Level level, String msg, Throwable error)
Logger.log(java.util.logging.Level,
String, Throwable)
;
it's required because loading the GaiaTools classes seems
to mess up the system configuration done by stilts/topcat on startup,
so this implementation includes the actual exception stringification
in the log message itself, as well as passing the exception
itself to the logging system (which seems to get ignored after loading
GaiaTools, even with stilts -debug).
Exception text is also unlikely to frighten GBIN-competent users.level
- logging levelmsg
- basic log messageerror
- exceptionCopyright © 2024 Central Laboratory of the Research Councils. All Rights Reserved.