public class GbinObjectReader
extends java.lang.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(java.lang.Object gbinReaderObj)
Constructor.
|
Modifier and Type | Method and Description |
---|---|
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.
|
static void |
logError(java.util.logging.Level level,
java.lang.String msg,
java.lang.Throwable error)
Write a logging message including an exception.
|
java.lang.Object |
next()
Reads the next record.
|
public GbinObjectReader(java.lang.Object gbinReaderObj)
gbinReaderObj
- object implementing
gaia.cu1.tools.dal.gbin.GbinReader
java.lang.IllegalArgumentException
- if gbinReaderObj
doesn't appear to be a GbinReaderpublic boolean hasNext() throws java.io.IOException
next
java.io.IOException
public java.lang.Object next() throws java.io.IOException
gaia.cu1.tools.dm.GaiaRoot
java.io.IOException
public static GbinObjectReader createReader(java.io.InputStream in) throws java.io.IOException
in
- input stream containing a GBIN filejava.io.IOException
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 java.lang.Object createGbinReaderObject(java.io.InputStream in) throws java.io.IOException
gaia.cu1.tools.dal.gbin.GbinFactory.getGbinReader()
.in
- input stream assumed to contain a GBIN filegaia.cu1.tools.dal.gbin.GbinReader
interfacejava.io.IOException
- with informative message if something goes wrong,
including reflection troublepublic static void logError(java.util.logging.Level level, java.lang.String msg, java.lang.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
- exception