|
||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||
java.lang.Objectorg.apache.directory.shared.ldap.ldif.LdifReader
public class LdifReader
<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.
| Nested Class Summary | |
|---|---|
class |
LdifReader.Position
A private class to track the current position in a line |
| Field Summary | |
|---|---|
protected static int |
ATTRVAL_SPEC
|
protected static int |
ATTRVAL_SPEC_OR_SEP
|
protected static int |
CHANGE
|
protected boolean |
containsChanges
A flag set if the ldif contains changes |
protected boolean |
containsEntries
A flag set if the ldif contains entries |
protected static int |
DEFAULT_VERSION
The ldif file version default value |
protected java.lang.Exception |
error
An Exception to handle error message, has Iterator.next() can't throw exceptions |
protected java.io.Reader |
in
The ldif Reader |
protected static int |
LDIF_ENTRY
Type of element read |
protected java.util.List<java.lang.String> |
lines
A list of read lines |
protected static int |
MOD_SPEC
State values for the modify operation |
protected LdifReader.Position |
position
The current position |
protected LdifEntry |
prefetched
Iterator prefetched entry |
protected static long |
SIZE_LIMIT_DEFAULT
The default size limit : 1Mo |
protected long |
sizeLimit
Size limit for file contained values |
protected static int |
UNKNOWN
|
protected int |
version
The ldif version |
| Constructor Summary | |
|---|---|
LdifReader()
Constructors |
|
LdifReader(java.io.BufferedReader in)
A constructor which takes a BufferedReader |
|
LdifReader(java.io.File in)
A constructor which takes a File |
|
LdifReader(java.io.InputStream in)
A constructor which takes an InputStream |
|
LdifReader(java.io.Reader in)
A constructor which takes a Reader |
|
LdifReader(java.lang.String ldifFileName)
A constructor which takes a file name |
|
| Method Summary | |
|---|---|
boolean |
containsEntries()
|
java.lang.Exception |
getError()
|
long |
getSizeLimit()
|
int |
getVersion()
|
boolean |
hasError()
|
boolean |
hasNext()
Tests to see if another LDIF is on the input channel. |
java.util.Iterator<LdifEntry> |
iterator()
|
LdifEntry |
next()
Gets the next LDIF on the channel. |
void |
parseAttributeValue(LdifEntry entry,
java.lang.String line,
java.lang.String lowerLine)
Parse an AttributeType/AttributeValue |
static javax.naming.directory.Attribute |
parseAttributeValue(java.lang.String line)
Parse an AttributeType/AttributeValue |
java.util.List<LdifEntry> |
parseLdif(java.io.BufferedReader inf)
The main entry point of the LdifParser. |
java.util.List<LdifEntry> |
parseLdif(java.lang.String ldif)
A method which parses a ldif string and returns a list of entries. |
java.util.List<LdifEntry> |
parseLdifFile(java.lang.String fileName)
Parse a ldif file (using the default encoding). |
java.util.List<LdifEntry> |
parseLdifFile(java.lang.String fileName,
java.lang.String encoding)
Parse a ldif file, decoding it using the given charset encoding |
protected static java.lang.Object |
parseSimpleValue(java.lang.String line,
int pos)
Parse the value part. |
protected java.lang.Object |
parseValue(java.lang.String line,
int pos)
Parse the value part. |
protected void |
readLines()
Reads an entry in a ldif buffer, and returns the resulting lines, without comments, and unfolded. |
void |
remove()
Always throws UnsupportedOperationException! |
void |
setSizeLimit(long sizeLimit)
Set the maximum file size that can be accepted for an attribute value |
| Methods inherited from class java.lang.Object |
|---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
| Field Detail |
|---|
protected java.util.List<java.lang.String> lines
protected LdifReader.Position position
protected static final int DEFAULT_VERSION
protected int version
protected static final int LDIF_ENTRY
protected static final int CHANGE
protected static final int UNKNOWN
protected long sizeLimit
protected static final long SIZE_LIMIT_DEFAULT
protected static final int MOD_SPEC
protected static final int ATTRVAL_SPEC
protected static final int ATTRVAL_SPEC_OR_SEP
protected LdifEntry prefetched
protected java.io.Reader in
protected boolean containsEntries
protected boolean containsChanges
protected java.lang.Exception error
| Constructor Detail |
|---|
public LdifReader()
public LdifReader(java.lang.String ldifFileName)
throws javax.naming.NamingException
ldifFileName - A file name containing ldif formated input
javax.naming.NamingException - If the file cannot be processed or if the format is incorrect
public LdifReader(java.io.BufferedReader in)
throws javax.naming.NamingException
in - A BufferedReader containing ldif formated input
javax.naming.NamingException - If the file cannot be processed or if the format is incorrect
public LdifReader(java.io.Reader in)
throws javax.naming.NamingException
in - A Reader containing ldif formated input
javax.naming.NamingException - If the file cannot be processed or if the format is incorrect
public LdifReader(java.io.InputStream in)
throws javax.naming.NamingException
in - An InputStream containing ldif formated input
javax.naming.NamingException - If the file cannot be processed or if the format is incorrect
public LdifReader(java.io.File in)
throws javax.naming.NamingException
in - A File containing ldif formated input
javax.naming.NamingException - If the file cannot be processed or if the format is incorrect| Method Detail |
|---|
public int getVersion()
public long getSizeLimit()
public void setSizeLimit(long sizeLimit)
sizeLimit - The size in bytes
protected static java.lang.Object parseSimpleValue(java.lang.String line,
int pos)
line - The line which contains the valuepos - The starting position in the line
protected java.lang.Object parseValue(java.lang.String line,
int pos)
throws javax.naming.NamingException
line - The line which contains the valuepos - The starting position in the line
javax.naming.NamingException - If something went wrongpublic static javax.naming.directory.Attribute parseAttributeValue(java.lang.String line)
line - The line to parse
public void parseAttributeValue(LdifEntry entry,
java.lang.String line,
java.lang.String lowerLine)
throws javax.naming.NamingException
entry - The entry where to store the valueline - The line to parselowerLine - The same line, lowercased
javax.naming.NamingException - If anything goes wrong
protected void readLines()
throws javax.naming.NamingException
javax.naming.NamingException - If something went wrong
public java.util.List<LdifEntry> parseLdifFile(java.lang.String fileName)
throws javax.naming.NamingException
fileName - The ldif file
javax.naming.NamingException - If the parsing fails
public java.util.List<LdifEntry> parseLdifFile(java.lang.String fileName,
java.lang.String encoding)
throws javax.naming.NamingException
fileName - The ldif fileencoding - The charset encoding to use
javax.naming.NamingException - If the parsing fails
public java.util.List<LdifEntry> parseLdif(java.lang.String ldif)
throws javax.naming.NamingException
ldif - The ldif string
javax.naming.NamingException - If something went wrongpublic LdifEntry next()
java.util.NoSuchElementException - If we can't read the next entrypublic boolean hasNext()
public void remove()
Iterator.remove()public java.util.Iterator<LdifEntry> iterator()
iterator in interface java.lang.Iterable<LdifEntry>public boolean hasError()
public java.lang.Exception getError()
public java.util.List<LdifEntry> parseLdif(java.io.BufferedReader inf)
throws javax.naming.NamingException
inf - The buffer being processed
javax.naming.NamingException - If something went wrongpublic boolean containsEntries()
|
||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||