Zetetic.Ldap.LdifCsvPivot.Process C# (CSharp) 메소드

Process() 공개 메소드

public Process ( StreamReader sr, bool emitHeader ) : void
sr System.IO.StreamReader
emitHeader bool
리턴 void
        public void Process(StreamReader sr, bool emitHeader)
        {
            if (emitHeader)
            {
                for (int i = 0; i < Columns.Count; i++)
                {
                    Output.Write(Columns[i].Destination);

                    if (i + 1 < Columns.Count)
                        Output.Write(this.Separator);
                }
                Output.WriteLine("");
            }

            using (LdifEntryReader ldr = new LdifEntryReader(new LdifReader(sr)))
            {
                for (Entry e = ldr.ReadEntry(); e != null; e = ldr.ReadEntry())
                {
                    for (int i = 0; i < Columns.Count; i++)
                    {
                        PivotColumn col = Columns[i];

                        switch (col.Source)
                        {
                            case "dn":
                                Write(e.DistinguishedName);
                                break;

                            case "rdn":
                                Write(e.RDN);
                                break;

                            case "parent":
                            case "superior":
                                Write(e.SuperiorDn);
                                break;

                            default:
                                if (e.HasAttribute(col.Source))
                                {
                                    string[] values = e.GetAttrStringValues(col.Source);

                                    if (string.IsNullOrEmpty(col.Joiner))
                                    {
                                        if (col.Index == PivotColumn.LAST_INDEX)
                                        {
                                            Write(values[values.Length - 1]);
                                        }
                                        else if (values.Length > col.Index)
                                        {
                                            Write(values[col.Index]);
                                        }
                                    }
                                    else
                                    {
                                        Write(string.Join(col.Joiner, values));
                                    }
                                }
                                break;
                        }

                        if (i + 1 < Columns.Count)
                            Output.Write(this.Separator);
                    }
                    Output.WriteLine("");
                }
            }
        }
    }

Same methods

LdifCsvPivot::Process ( string path, bool emitHeader ) : void
LdifCsvPivot::Process ( string path, bool emitHeader, Encoding encoding ) : void

Usage Example

예제 #1
0
        private static void Run(List<string> ldifs, string colConfig, string fileOut)
        {
            System.Xml.Serialization.XmlSerializer ser = new System.Xml.Serialization.XmlSerializer(
                typeof(List<PivotColumn>));

            LdifCsvPivot pivot = new LdifCsvPivot();

            if (string.IsNullOrEmpty(colConfig))
            {
                pivot.AddColumn("dn", "dn", null);
                pivot.AddColumn("rdn", "rdn", null);
                pivot.AddColumn("parent", "parent", null);
                pivot.AddColumn("samaccountname", "uid", null);
                pivot.AddColumn("objectclass", "objectclass", PivotColumn.LAST_INDEX);
                pivot.AddColumn("sn", "sn", null);
                pivot.AddColumn("givenName", "givenName", null);
                pivot.AddColumn("mail", "mail", null);

                EmitSampleXml(pivot, ser);
            }
            else
            {
                using (System.IO.FileStream fs = new System.IO.FileStream(colConfig, System.IO.FileMode.Open, System.IO.FileAccess.Read))
                {
                    pivot.Columns = (List<PivotColumn>)ser.Deserialize(fs);
                }
            }

            if (!string.IsNullOrEmpty(fileOut))
                pivot.Output = new System.IO.StreamWriter(fileOut, false, new System.Text.UTF8Encoding(false, true));

            try
            {
                int i = 0;
                foreach (string s in ldifs)
                {
                    try
                    {
                        pivot.Process(s, i++ == 0);
                    }
                    catch (Exception)
                    {
                        Console.Error.WriteLine("Failed on file {0}", s);
                        throw;
                    }
                }
            }
            finally
            {
                if (!string.IsNullOrEmpty(fileOut))
                    pivot.Output.Dispose();
            }
        }