Class LDIF

  • All Implemented Interfaces:
    java.io.Serializable

    public class LDIF
    extends java.lang.Object
    implements java.io.Serializable
    LDAP Data Interchange Format (LDIF) is a file format used to import and export directory data from an LDAP server and to describe a set of changes to be applied to data in a directory. This format is described in the Internet draft The LDAP Data Interchange Format (LDIF) - Technical Specification.

    This class implements an LDIF file parser. You can construct an object of this class to parse data in LDIF format and manipulate the data as individual LDIFRecord objects.

    Version:
    1.0
    See Also:
    LDIFRecord, Serialized Form
    • Constructor Summary

      Constructors 
      Constructor Description
      LDIF()
      Constructs an LDIF object to parse the LDAP data read from stdin.
      LDIF​(java.io.DataInputStream ds)
      Constructs an LDIF object to parse the LDIF data read from an input stream.
      LDIF​(java.lang.String file)
      Constructs an LDIF object to parse the LDIF data read from a specified file.
    • Method Summary

      All Methods Static Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      static void breakString​(java.io.PrintWriter pw, java.lang.String value, int max)
      Outputs the String in LDIF line-continuation format.
      int getVersion()
      Gets the version of LDIF used in the data.
      static boolean isPrintable​(byte[] b)
      Returns true if all the bytes in the given array are valid for output as a String according to the LDIF specification.
      static void main​(java.lang.String[] args)
      Test driver - just reads and parses an LDIF file, printing each record as interpreted
      LDIFRecord nextRecord()
      Returns the next record in the LDIF data.
      protected LDAPControl parse_control_spec​(java.lang.String line)
      Parses the specification of a control
      A control looks line one of the following:
      control: 1.2.3.4.10.210
      control: 1.2.3.4.10.210 true
      control: 1.2.3.4.10.210 true: someASCIIvalue
      control: 1.2.3.4.10.210: someASCIIvalue
      control: 1.2.3.4.10.210 true:: 44GK44GM44GV44KP44KJ
      control: 1.2.3.4.10.210:: 44GK44GM44GV44KP44KJ
      control: 1.2.3.4.10.210 true:< file:///usr/local/directory/cont.dta
      control: 1.2.3.4.10.210:< file:///usr/local/directory/cont.dta
      protected void throwLDIFException​(java.lang.String msg)
      Throws a LDIF file exception including the current line number.
      static java.lang.String toPrintableString​(byte[] b)
      Converts a byte array to a printable string following the LDIF rules (encode in base64 if necessary)
      java.lang.String toString()
      Gets the string representation of the entire LDIF file.
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
    • Constructor Detail

      • LDIF

        public LDIF()
             throws java.io.IOException
        Constructs an LDIF object to parse the LDAP data read from stdin.
        Throws:
        java.io.IOException - An I/O error has occurred.
      • LDIF

        public LDIF​(java.lang.String file)
             throws java.io.IOException
        Constructs an LDIF object to parse the LDIF data read from a specified file.
        Parameters:
        file - the name of the LDIF file to parse
        Throws:
        java.io.IOException - An I/O error has occurred.
      • LDIF

        public LDIF​(java.io.DataInputStream ds)
             throws java.io.IOException
        Constructs an LDIF object to parse the LDIF data read from an input stream.
        Parameters:
        ds - The input stream providing the LDIF data
        Throws:
        java.io.IOException - An I/O error has occurred.
    • Method Detail

      • nextRecord

        public LDIFRecord nextRecord()
                              throws java.io.IOException
        Returns the next record in the LDIF data. You can call this method repeatedly to iterate through all records in the LDIF data.

        Returns:
        the next record as an LDIFRecord object or null if there are no more records.
        Throws:
        java.io.IOException - An I/O error has occurred.
        See Also:
        LDIFRecord
      • parse_control_spec

        protected LDAPControl parse_control_spec​(java.lang.String line)
                                          throws java.io.IOException
        Parses the specification of a control
        A control looks line one of the following:
        control: 1.2.3.4.10.210
        control: 1.2.3.4.10.210 true
        control: 1.2.3.4.10.210 true: someASCIIvalue
        control: 1.2.3.4.10.210: someASCIIvalue
        control: 1.2.3.4.10.210 true:: 44GK44GM44GV44KP44KJ
        control: 1.2.3.4.10.210:: 44GK44GM44GV44KP44KJ
        control: 1.2.3.4.10.210 true:< file:///usr/local/directory/cont.dta
        control: 1.2.3.4.10.210:< file:///usr/local/directory/cont.dta
        Parameters:
        line - a line containing a control spec
        Returns:
        a parsed control.
        Throws:
        java.io.IOException - if the line could not be parsed
      • isPrintable

        public static boolean isPrintable​(byte[] b)
        Returns true if all the bytes in the given array are valid for output as a String according to the LDIF specification. If not, the array should output base64-encoded.
        Returns:
        true if all the bytes in the given array are valid for output as a String according to the LDIF specification; otherwise, false.
      • breakString

        public static void breakString​(java.io.PrintWriter pw,
                                       java.lang.String value,
                                       int max)
        Outputs the String in LDIF line-continuation format. No line will be longer than the given max. A continuation line starts with a single blank space.
        Parameters:
        pw - the printer writer
        value - the given string being printed out
        max - the maximum characters allowed in the line
      • getVersion

        public int getVersion()
        Gets the version of LDIF used in the data.
        Returns:
        version of LDIF used in the data.
      • toString

        public java.lang.String toString()
        Gets the string representation of the entire LDIF file.
        Overrides:
        toString in class java.lang.Object
        Returns:
        the string representation of the entire LDIF data file.
      • throwLDIFException

        protected void throwLDIFException​(java.lang.String msg)
                                   throws java.io.IOException
        Throws a LDIF file exception including the current line number.
        Parameters:
        msg - Error message
        Throws:
        java.io.IOException
      • toPrintableString

        public static java.lang.String toPrintableString​(byte[] b)
        Converts a byte array to a printable string following the LDIF rules (encode in base64 if necessary)
        Parameters:
        b - the byte array to convert
        Returns:
        a converted string which is printable.
      • main

        public static void main​(java.lang.String[] args)
        Test driver - just reads and parses an LDIF file, printing each record as interpreted
        Parameters:
        args - name of the LDIF file to parse