/*
Class: Basic_Client

BasicClient is a simple console application that uses caBIG dotNET API to
print out the list of caBIG DataServices registered in the
caBIG Index Service. BasicClient was written to serve as a 'Hello-World' program
to the caBIG dotNET API.
*/
    
using System;
using System.Collections;
using System.Collections.Generic;
using hessiancsharp.client;
using hessiancsharp.io;
using caBIG_dotNET;

class Basic_Client
{
    static void Main(string[] args)
    {

        String url = "http://localhost/servlet/caBIG_dotNET.Service/";
        //String url = "http://67.15.68.28/servlet/caBIG_dotNET.Service/";
        Console.WriteLine(url);
        CHessianProxyFactory factory = new CHessianProxyFactory();
        try
        {
           // ArrayList<caBIGDataService> dataServices = new List<caBIGDataService>();

            
            Service cdN_service = (caBIG_dotNET.Service)factory.Create(typeof(caBIG_dotNET.Service), url);
            Console.WriteLine("Server Version  " + cdN_service.version());
            if (cdN_service.isClientSupported("0.0.1"))
            {
                ArrayList DSlist = cdN_service.get_URLs2AllDataServices();
                Console.WriteLine(DSlist.Count+ " caBIG DataServices");
                caBIGDataService DS = cdN_service.get_caBIGDataService((String)DSlist[2]);
                printDataService(DS);

                ArrayList objects_list = cdN_service.get_caBIGDomainObjects((String)DSlist[2]);
                foreach (String object_id in objects_list) {
                    Console.WriteLine(object_id);
                }
                //Console.WriteLine(cdN_service.news());
            }
            else
            {
                Console.WriteLine("CLIENT NOT SUPPORTED");
            }
            Console.ReadLine();
        }
        catch (CHessianException e)
        {
            Console.WriteLine(e.Source);
            Console.WriteLine(e.Message);
            Console.WriteLine(e.StackTrace);
            Console.ReadLine();
        }
    }

    static void printDataService(caBIG_dotNET.caBIGDataService DS)
    {
        Console.WriteLine("URL: " + DS.URL);
        Console.WriteLine(DS.BioDataType);
        Console.WriteLine(DS.Name);
        Console.WriteLine(DS.Type);
        Console.WriteLine(DS.Address);
        Console.WriteLine(DS.Phone);
        Console.WriteLine(DS.Fax);
        Console.WriteLine(DS.POCName);
        Console.WriteLine(DS.Description);
        Console.WriteLine(DS.Comments);
    }
}