Package com.pnfsoftware.jeb.core.units
Class AbstractUnitIdentifier
java.lang.Object
com.pnfsoftware.jeb.core.AbstractPlugin
com.pnfsoftware.jeb.core.units.AbstractUnitIdentifier
- All Implemented Interfaces:
IPlugin
,IUnitIdentifier
,IUnitPlugin
Skeleton implementation for an
IUnitIdentifier
class (aka, a Parser). It is recommended
parsers extend this class (or one of the its many subclasses) instead of implementing
IUnitIdentifier.-
Field Summary
FieldsModifier and TypeFieldDescriptionprotected IPropertyDefinitionManager
protected IPropertyManager
protected double
protected String
Fields inherited from interface com.pnfsoftware.jeb.core.units.IUnitIdentifier
KEY_FAILURE_REASON
-
Constructor Summary
ConstructorsConstructorDescriptionAbstractUnitIdentifier
(String type, double priority) Create a new unit identifier. -
Method Summary
Modifier and TypeMethodDescriptionboolean
The default implementation returns false.static boolean
checkBytes
(byte[] data, int offset, boolean caseSensitive, byte... marker) Convenience method used to check for expected bytes at a specific offset within the provided data buffer.static boolean
checkBytes
(byte[] data, int offset, boolean caseSensitive, int... marker) static boolean
checkBytes
(byte[] data, int offset, byte... marker) static boolean
checkBytes
(byte[] data, int offset, int... marker) static boolean
checkBytes
(IInput input, int offset, byte... marker) static boolean
checkBytes
(IInput input, int offset, int... marker) static boolean
checkBytes
(IInput input, int offset, String header) protected final void
createPDM
(IPropertyDefinitionManager parentPdm, String pdmDescription, int pdmFlags) Retrieve the identity of the unit type.static byte[]
getNonWhitespaceHeader
(IInput input, int size, boolean trim, char... extraWhitespaceCharacters) Returns the header with at least n significant bytes after the initial whitespace.static byte[]
getNonWhitespaceHeader
(IInput input, int size, char... extraWhitespaceCharacters) Returns the header with at least n significant bytes after the initial whitespace.double
Get the identifier priority.Retrieve the property definition manager (PDM) used by this plugin.protected static int
getTextFirstIndex
(byte[] data, int i, char... extraWhitespaceCharacters) The type-id provider for this type of units.void
initialize
(IPropertyDefinitionManager parentPdm) The default implementation creates a basic PDM attached to the provided parent.static int
readHeaderByte
(IInput input, int offset) Read a single header byte.Methods inherited from class com.pnfsoftware.jeb.core.AbstractPlugin
dispose, getData, setData
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
Methods inherited from interface com.pnfsoftware.jeb.core.IPlugin
dispose, getData, getPluginInformation, setData
Methods inherited from interface com.pnfsoftware.jeb.core.units.IUnitIdentifier
canIdentify, canIdentify, prepare, prepare
-
Field Details
-
type
-
priority
protected double priority -
pdm
-
pm
-
-
Constructor Details
-
AbstractUnitIdentifier
Create a new unit identifier.- Parameters:
type
- mandatory type, which will be used as the sub-region type when the identifier isinitialized
. The type should be a valid region name, please seePropertyDefinitionManager
priority
- mandatory priority
-
-
Method Details
-
initialize
The default implementation creates a basic PDM attached to the provided parent.- Specified by:
initialize
in interfaceIUnitPlugin
- Parameters:
parentPdm
- the parent PDM
-
createPDM
protected final void createPDM(IPropertyDefinitionManager parentPdm, String pdmDescription, int pdmFlags) -
getPropertyDefinitionManager
Description copied from interface:IUnitPlugin
Retrieve the property definition manager (PDM) used by this plugin.- Specified by:
getPropertyDefinitionManager
in interfaceIUnitPlugin
- Returns:
- the PDM
-
getFormatType
Description copied from interface:IUnitPlugin
Retrieve the identity of the unit type. The type should be unique across all units.- Specified by:
getFormatType
in interfaceIUnitPlugin
- Returns:
- the non-null type
-
getPriority
public double getPriority()Description copied from interface:IUnitPlugin
Get the identifier priority. Priority can be negative. Priorities are used by identifier managers (eg,Processors
) to ensure that identifiers are called in a (partially) predictable order, if need be. The higher the number, the higher the priority.Recommendation: typical priority is zero. Relying on priority for proper identification should be used as a last resort measure.
- Specified by:
getPriority
in interfaceIUnitPlugin
- Returns:
- the identifier priority
-
getTypeIdProvider
Description copied from interface:IUnitPlugin
The type-id provider for this type of units. Currently, This method is not intended to use by third-party clients.- Specified by:
getTypeIdProvider
in interfaceIUnitPlugin
- Returns:
- a type-id provider, null if none
-
checkBytes
public static boolean checkBytes(byte[] data, int offset, byte... marker) -
checkBytes
public static boolean checkBytes(byte[] data, int offset, boolean caseSensitive, byte... marker) Convenience method used to check for expected bytes at a specific offset within the provided data buffer.- Parameters:
data
- the input data bufferoffset
- the offsetcaseSensitive
- indicate if [a-z] should be considered as case sensitive. While insensitive case, marker must receive lower case characters. Default value is TRUE.marker
- the bytes to check for- Returns:
- true if the bytes at &data[offset] are equals to the provided bytes
-
checkBytes
public static boolean checkBytes(byte[] data, int offset, int... marker) - See Also:
-
checkBytes
public static boolean checkBytes(byte[] data, int offset, boolean caseSensitive, int... marker) - See Also:
-
checkBytes
-
checkBytes
-
checkBytes
- Parameters:
header
- converted to byte[] usingStrings.encodeUTF8(String)
- See Also:
-
readHeaderByte
Read a single header byte.- Parameters:
input
-offset
- offset within theIInput.getHeader()
- Returns:
- the byte value, -1 on error (eg, the offset is outside the header)
-
getNonWhitespaceHeader
public static byte[] getNonWhitespaceHeader(IInput input, int size, char... extraWhitespaceCharacters) Returns the header with at least n significant bytes after the initial whitespace. To be used for text documents which can potentially contain lot of whitespace characters before text. May return trimmed data (when header is not enough) or non-trimmed data (when header is enough).- Parameters:
input
-size
-extraWhitespaceCharacters
-- Returns:
-
getNonWhitespaceHeader
public static byte[] getNonWhitespaceHeader(IInput input, int size, boolean trim, char... extraWhitespaceCharacters) Returns the header with at least n significant bytes after the initial whitespace. To be used for text documents which can potentially contain lot of whitespace characters before text.- Parameters:
input
-IInput
size
- minimum data size requiredtrim
- when true, any BOM + any whitespace will be skippedextraWhitespaceCharacters
- additional characters considered as whitespace- Returns:
- an array with at least minimum size. If there is not enough available bytes, the array size will be smaller. May return null in case of error or when file only contains whitespaces.
-
getTextFirstIndex
protected static int getTextFirstIndex(byte[] data, int i, char... extraWhitespaceCharacters) -
acceptAnyInputBytes
public boolean acceptAnyInputBytes()The default implementation returns false.- Specified by:
acceptAnyInputBytes
in interfaceIUnitIdentifier
- Returns:
- true if the input data may not be readily identified as of a specific format
-