using System;
using System.IO; 
using OGR;


/**

 * <p>Title: GDAL C# ogrinfo example.</p>
 * <p>Description: A sample app to dump information from a spatial data source.</p>
 * @author Tamas Szekeres (szekerest@gmail.com)
 * @version 1.0
 */



/// <summary>
/// A C# based sample to dump information from a data source.
/// </summary> 

class OGRInfo {
	
	public static void usage() 

	{ 
		Console.WriteLine("usage: ogrinfo {data source name}");
		System.Environment.Exit(-1);
	}
 
	public static void Main(string[] args) {

		if (args.Length != 1) usage();

        // Using early initialization of System.Console
        Console.WriteLine("");

		/* -------------------------------------------------------------------- */
		/*      Register format(s).                                             */
		/* -------------------------------------------------------------------- */
		ogr.RegisterAll();

		/* -------------------------------------------------------------------- */
		/*      Open data source.                                               */
		/* -------------------------------------------------------------------- */
        DirectoryInfo dir = new DirectoryInfo(args[0]);

        FileInfo[] files = dir.GetFiles("*.000", SearchOption.AllDirectories);

        foreach (FileInfo file in files)
        {
            DataSource ds = null;
            try
            {
                ds = ogr.Open(file.FullName, 0);
            }
            catch(Exception e )
            {
                Console.WriteLine(e.Message);
            }
            if (ds == null)
            {
                Console.WriteLine("Can't open " + file.FullName);
                //System.Environment.Exit(-1);
            }
            else
            {
                /* -------------------------------------------------------------------- */
                /*      Get driver                                                      */
                /* -------------------------------------------------------------------- */
                using (Driver drv = ds.GetDriver())
                {

                    if (drv == null)
                    {
                        Console.WriteLine("Can't get driver.");
                        //System.Environment.Exit(-1);
                    }
                    // TODO: drv.name is still unsafe with lazy initialization (Bug 1339)
                    Console.WriteLine("Using driver " + drv.name);

                    Layer coverage = ds.GetLayerByName("M_COVR");

                    Console.WriteLine(coverage.GetName());
                }
            }
        }
        Directory.Delete(args[0], true);    
	}


}
