Class LdifReader
- java.lang.Object
-
- org.apache.directory.api.ldap.model.ldif.LdifReader
-
- All Implemented Interfaces:
Closeable
,AutoCloseable
,Iterable<LdifEntry>
- Direct Known Subclasses:
LdifAttributesReader
public class LdifReader extends Object implements Iterable<LdifEntry>, Closeable
<ldif-file> ::= "version:" <fill> <number> <seps> <dn-spec> <sep> <ldif-content-change> <ldif-content-change> ::= <number> <oid> <options-e> <value-spec> <sep> <attrval-specs-e> <ldif-attrval-record-e> | <alpha> <chars-e> <options-e> <value-spec> <sep> <attrval-specs-e> <ldif-attrval-record-e> | "control:" <fill> <number> <oid> <spaces-e> <criticality> <value-spec-e> <sep> <controls-e> "changetype:" <fill> <changerecord-type> <ldif-change-record-e> | "changetype:" <fill> <changerecord-type> <ldif-change-record-e> <ldif-attrval-record-e> ::= <seps> <dn-spec> <sep> <attributeType> <options-e> <value-spec> <sep> <attrval-specs-e> <ldif-attrval-record-e> | e <ldif-change-record-e> ::= <seps> <dn-spec> <sep> <controls-e> "changetype:" <fill> <changerecord-type> <ldif-change-record-e> | e <dn-spec> ::= "dn:" <fill> <safe-string> | "dn::" <fill> <base64-string> <controls-e> ::= "control:" <fill> <number> <oid> <spaces-e> <criticality> <value-spec-e> <sep> <controls-e> | e <criticality> ::= "true" | "false" | e <oid> ::= '.' <number> <oid> | e <attrval-specs-e> ::= <number> <oid> <options-e> <value-spec> <sep> <attrval-specs-e> | <alpha> <chars-e> <options-e> <value-spec> <sep> <attrval-specs-e> | e <value-spec-e> ::= <value-spec> | e <value-spec> ::= ':' <fill> <safe-string-e> | "::" <fill> <base64-chars> | ":<" <fill> <url> <attributeType> ::= <number> <oid> | <alpha> <chars-e> <options-e> ::= ';' <char> <chars-e> <options-e> |e <chars-e> ::= <char> <chars-e> | e <changerecord-type> ::= "add" <sep> <attributeType> <options-e> <value-spec> <sep> <attrval-specs-e> | "delete" <sep> | "modify" <sep> <mod-type> <fill> <attributeType> <options-e> <sep> <attrval-specs-e> <sep> '-' <sep> <mod-specs-e> | "moddn" <sep> <newrdn> <sep> "deleteoldrdn:" <fill> <0-1> <sep> <newsuperior-e> <sep> | "modrdn" <sep> <newrdn> <sep> "deleteoldrdn:" <fill> <0-1> <sep> <newsuperior-e> <sep> <newrdn> ::= ':' <fill> <safe-string> | "::" <fill> <base64-chars> <newsuperior-e> ::= "newsuperior" <newrdn> | e <mod-specs-e> ::= <mod-type> <fill> <attributeType> <options-e> <sep> <attrval-specs-e> <sep> '-' <sep> <mod-specs-e> | e <mod-type> ::= "add:" | "delete:" | "replace:" <url> ::= <a Uniform Resource Locator, as defined in [6]> LEXICAL ------- <fill> ::= ' ' <fill> | e <char> ::= <alpha> | <digit> | '-' <number> ::= <digit> <digits> <0-1> ::= '0' | '1' <digits> ::= <digit> <digits> | e <digit> ::= '0' | '1' | '2' | '3' | '4' | '5' | '6' | '7' | '8' | '9' <seps> ::= <sep> <seps-e> <seps-e> ::= <sep> <seps-e> | e <sep> ::= 0x0D 0x0A | 0x0A <spaces> ::= ' ' <spaces-e> <spaces-e> ::= ' ' <spaces-e> | e <safe-string-e> ::= <safe-string> | e <safe-string> ::= <safe-init-char> <safe-chars> <safe-init-char> ::= [0x01-0x09] | 0x0B | 0x0C | [0x0E-0x1F] | [0x21-0x39] | 0x3B | [0x3D-0x7F] <safe-chars> ::= <safe-char> <safe-chars> | e <safe-char> ::= [0x01-0x09] | 0x0B | 0x0C | [0x0E-0x7F] <base64-string> ::= <base64-char> <base64-chars> <base64-chars> ::= <base64-char> <base64-chars> | e <base64-char> ::= 0x2B | 0x2F | [0x30-0x39] | 0x3D | [0x41-9x5A] | [0x61-0x7A] <alpha> ::= [0x41-0x5A] | [0x61-0x7A] COMMENTS -------- - The ldap-oid VN is not correct in the RFC-2849. It has been changed from 1*DIGIT 0*1("." 1*DIGIT) to DIGIT+ ("." DIGIT+)* - The mod-spec lacks a sep between *attrval-spec and "-". - The BASE64-UTF8-STRING should be BASE64-CHAR BASE64-STRING - The ValueSpec rule must accept multilines values. In this case, we have a LF followed by a single space before the continued value.
The relaxed mode is used when a SchemaManager is injected.- Author:
- Apache Directory Project
-
-
Constructor Summary
Constructors Constructor Description LdifReader()
ConstructorsLdifReader(File file)
A constructor which takes a File.LdifReader(File file, SchemaManager schemaManager)
A constructor which takes a File and a SchemaManager.LdifReader(InputStream in)
A constructor which takes an InputStream.LdifReader(Reader in)
A constructor which takes a Reader.LdifReader(String ldifFileName)
A constructor which takes a file name.LdifReader(SchemaManager schemaManager)
Creates a Schema aware reader
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description void
close()
boolean
containsEntries()
LdifEntry
fetch()
Gets the current entry, but don't move forward.Exception
getError()
int
getLineNumber()
long
getSizeLimit()
int
getVersion()
boolean
hasError()
boolean
hasNext()
Tests to see if another LDIF is on the input channel.void
init()
Initialize the LdifReaderboolean
isValidateDn()
Iterator<LdifEntry>
iterator()
LdifEntry
next()
Gets the next LDIF on the channel.static Attribute
parseAttributeValue(String line)
Parse an AttributeType/AttributeValuevoid
parseAttributeValue(LdifEntry entry, String line, String lowerLine)
Parse an AttributeType/AttributeValueList<LdifEntry>
parseLdif(BufferedReader reader)
The main entry point of the LdifParser.List<LdifEntry>
parseLdif(String ldif)
A method which parses a ldif string and returns a list of entries.List<LdifEntry>
parseLdifFile(String fileName)
Parse a ldif file (using the default encoding).List<LdifEntry>
parseLdifFile(String fileName, String encoding)
Parse a ldif file, decoding it using the given charset encodingvoid
remove()
Always throws UnsupportedOperationException!void
setSchemaManager(SchemaManager schemaManager)
void
setSizeLimit(long sizeLimit)
Set the maximum file size that can be accepted for an attribute valuevoid
setValidateDn(boolean validateDn)
Turns on/off the DN validation-
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
-
Methods inherited from interface java.lang.Iterable
forEach, spliterator
-
-
-
-
Constructor Detail
-
LdifReader
public LdifReader()
Constructors
-
LdifReader
public LdifReader(SchemaManager schemaManager)
Creates a Schema aware reader- Parameters:
schemaManager
- The SchemaManager
-
LdifReader
public LdifReader(String ldifFileName) throws LdapLdifException
A constructor which takes a file name. Default charset is used.- Parameters:
ldifFileName
- A file name containing ldif formated input- Throws:
LdapLdifException
- If the file cannot be processed or if the format is incorrect
-
LdifReader
public LdifReader(Reader in) throws LdapException
A constructor which takes a Reader.- Parameters:
in
- A Reader containing ldif formated input- Throws:
LdapException
- If the file cannot be processed or if the format is incorrect
-
LdifReader
public LdifReader(InputStream in) throws LdapException
A constructor which takes an InputStream. Default charset is used.- Parameters:
in
- An InputStream containing ldif formated input- Throws:
LdapException
- If the file cannot be processed or if the format is incorrect
-
LdifReader
public LdifReader(File file) throws LdapLdifException
A constructor which takes a File. Default charset is used.- Parameters:
file
- A File containing ldif formated input- Throws:
LdapLdifException
- If the file cannot be processed or if the format is incorrect
-
LdifReader
public LdifReader(File file, SchemaManager schemaManager) throws LdapLdifException
A constructor which takes a File and a SchemaManager. Default charset is used.- Parameters:
file
- A File containing ldif formated inputschemaManager
- The SchemaManager instance to use- Throws:
LdapLdifException
- If the file cannot be processed or if the format is incorrect
-
-
Method Detail
-
init
public void init() throws LdapException
Initialize the LdifReader- Throws:
LdapException
- If the initialization failed
-
getVersion
public int getVersion()
- Returns:
- The ldif file version
-
getSizeLimit
public long getSizeLimit()
- Returns:
- The maximum size of a file which is used into an attribute value.
-
setSizeLimit
public void setSizeLimit(long sizeLimit)
Set the maximum file size that can be accepted for an attribute value- Parameters:
sizeLimit
- The size in bytes
-
parseAttributeValue
public static Attribute parseAttributeValue(String line)
Parse an AttributeType/AttributeValue- Parameters:
line
- The line to parse- Returns:
- the parsed Attribute
-
parseAttributeValue
public void parseAttributeValue(LdifEntry entry, String line, String lowerLine) throws LdapException
Parse an AttributeType/AttributeValue- Parameters:
entry
- The entry where to store the valueline
- The line to parselowerLine
- The same line, lowercased- Throws:
LdapException
- If anything goes wrong
-
parseLdifFile
public List<LdifEntry> parseLdifFile(String fileName) throws LdapLdifException
Parse a ldif file (using the default encoding).- Parameters:
fileName
- The ldif file- Returns:
- A list of entries
- Throws:
LdapLdifException
- If the parsing fails
-
parseLdifFile
public List<LdifEntry> parseLdifFile(String fileName, String encoding) throws LdapLdifException
Parse a ldif file, decoding it using the given charset encoding- Parameters:
fileName
- The ldif fileencoding
- The charset encoding to use- Returns:
- A list of entries
- Throws:
LdapLdifException
- If the parsing fails
-
parseLdif
public List<LdifEntry> parseLdif(String ldif) throws LdapLdifException
A method which parses a ldif string and returns a list of entries.- Parameters:
ldif
- The ldif string- Returns:
- A list of entries, or an empty List
- Throws:
LdapLdifException
- If something went wrong
-
fetch
public LdifEntry fetch()
Gets the current entry, but don't move forward.- Returns:
- the pre-fetched entry
-
hasNext
public boolean hasNext()
Tests to see if another LDIF is on the input channel.- Returns:
- true if another LDIF is available false otherwise.
-
remove
public void remove()
Always throws UnsupportedOperationException!- See Also:
Iterator.remove()
-
hasError
public boolean hasError()
- Returns:
- True if an error occurred during parsing
-
parseLdif
public List<LdifEntry> parseLdif(BufferedReader reader) throws LdapException
The main entry point of the LdifParser. It reads a buffer and returns a List of entries.- Parameters:
reader
- The buffer being processed- Returns:
- A list of entries
- Throws:
LdapException
- If something went wrong
-
containsEntries
public boolean containsEntries()
- Returns:
- True if the ldif file contains entries, fals if it contains changes
-
getLineNumber
public int getLineNumber()
- Returns:
- the current line that is being processed by the reader
-
isValidateDn
public boolean isValidateDn()
- Returns:
- true if the DN validation is turned on
-
setValidateDn
public void setValidateDn(boolean validateDn)
Turns on/off the DN validation- Parameters:
validateDn
- the boolean flag
-
setSchemaManager
public void setSchemaManager(SchemaManager schemaManager)
- Parameters:
schemaManager
- the schemaManager to set
-
close
public void close() throws IOException
- Specified by:
close
in interfaceAutoCloseable
- Specified by:
close
in interfaceCloseable
- Throws:
IOException
-
-