public override object GetSites(
                [XmlArray("site"), XmlArrayItem("string", typeof(string))]
                string[] site,
                String authToken)
            {
                Stopwatch timer = System.Diagnostics.Stopwatch.StartNew();

                string siteListString;

                if (site != null)
                {
                    StringBuilder sb = new StringBuilder();
                    foreach (string s in site)
                    {
                        sb.AppendFormat("{0};", s);
                    }
                    siteListString = sb.ToString();
                }
                else
                {
                    siteListString = "All Sites";
                }

                queryLog2.LogStart(Logging.Methods.GetSites, siteListString,
                                   Context.Request.UserHostName);
                try
                {
                    List <locationParam> lParams             = new List <locationParam>();
                    StringBuilder        siteNumbersAsString = new StringBuilder();
                    if (site != null)
                    {
                        foreach (String s in site)
                        {
                            try
                            {
                                if (!String.IsNullOrEmpty(s))
                                {
                                    locationParam lp = new locationParam(s);
                                    lParams.Add(lp);
                                    siteNumbersAsString.AppendFormat("{0};", s);
                                }
                            }
                            catch
                            {
                                log.Info("Bad Location parameter submitted");
                            }
                        }
                    }
                    SiteInfoType[] siteList;
                    if (lParams.Count > 0)
                    {
                        siteList = ODws.GetSites(lParams.ToArray());
                    }
                    else
                    {
                        siteList = ODws.GetSites(null);
                    }

                    SiteInfoResponseType sit = new SiteInfoResponseType();
                    site[] sites             = new site[siteList.Length];
                    for (int i = 0; i < siteList.Length; i++)
                    {
                        sites[i]          = new site();
                        sites[i].siteInfo = siteList[i];
                    }
                    sit.site = sites;

                    queryLog2.LogEnd(Logging.Methods.GetSites,
                                     siteListString,
                                     timer.ElapsedMilliseconds.ToString(),
                                     sit.site.Length.ToString(),
                                     Context.Request.UserHostName);

                    // add query info
                    if (sit.queryInfo == null)
                    {
                        sit.queryInfo = new QueryInfoType();
                    }
                    sit.queryInfo.creationTime          = DateTime.Now.ToLocalTime();
                    sit.queryInfo.creationTimeSpecified = true;
                    QueryInfoTypeCriteria crit = new QueryInfoTypeCriteria();
                    if (site == null || site.Length == 0)
                    {
                        crit.locationParam = "ALL (empty request)";
                    }
                    else
                    {
                        crit.locationParam = siteNumbersAsString.ToString();
                    }

                    sit.queryInfo.criteria = crit;


                    // return sit;
                    return(new WaterOneFlow.Service.v1_0.xsd.SiteInfoResponse(sit));
                }
                catch (Exception we)
                {
                    log.Warn(we.Message);

                    queryLog2.LogEnd(Logging.Methods.GetSites,
                                     siteListString,
                                     timer.ElapsedMilliseconds.ToString(),
                                     "-9999",
                                     Context.Request.UserHostName
                                     );

                    throw SoapExceptionGenerator.WOFExceptionToSoapException(we);
                }
            }
            public SiteInfoResponseTypeGeneric GetSitesObject(string[] site, String authToken)
            {
                Stopwatch timer = System.Diagnostics.Stopwatch.StartNew();

                queryLog2.LogStart(Logging.Methods.GetSites, site.ToString(),
                                   Context.Request.UserHostName);
                try
                {
                    List <locationParam> lParams = new List <locationParam>();
                    foreach (String s in site)
                    {
                        try
                        {
                            if (!String.IsNullOrEmpty(s))
                            {
                                locationParam lp = new locationParam(s);
                                lParams.Add(lp);
                            }
                        }
                        catch
                        {
                            log.Info("Bad Location parameter submitted");
                        }
                    }
                    SiteInfoType[] siteList;
                    if (lParams.Count > 0)
                    {
                        siteList = ODws.GetSites(lParams.ToArray());
                    }
                    else
                    {
                        siteList = ODws.GetSites(null);
                    }
                    SiteInfoResponseType sit = new SiteInfoResponseType();
                    WaterOneFlow.Schema.v1_1.


                    SiteInfoResponseTypeSite[] sites = new SiteInfoResponseTypeSite[siteList.Length];
                    for (int i = 0; i < siteList.Length; i++)
                    {
                        sites[i]          = new SiteInfoResponseTypeSite();
                        sites[i].siteInfo = siteList[i];
                    }
                    sit.site = sites;

                    queryLog2.LogEnd(Logging.Methods.GetSites,
                                     site.ToString(),
                                     timer.ElapsedMilliseconds.ToString(),
                                     sit.site.Length.ToString(),
                                     Context.Request.UserHostName);

                    // add query info
                    if (sit.queryInfo == null)
                    {
                        sit.queryInfo = new QueryInfoType();
                    }
                    sit.queryInfo.creationTime          = DateTime.Now.ToLocalTime();
                    sit.queryInfo.creationTimeSpecified = true;
                    QueryInfoTypeCriteria crit = new QueryInfoTypeCriteria();
                    if (sites == null || sites.Length == 0)
                    {
                        crit.locationParam = "ALL (empty request)";
                    }
                    else
                    {
                        crit.locationParam = sites.ToString();
                    }

                    sit.queryInfo.criteria = crit;


                    return(new WaterOneFlow.Service.v1_1.xsd.SiteInfoResponse(sit));
                }
                catch (Exception we)
                {
                    log.Warn(we.Message);

                    queryLog2.LogEnd(Logging.Methods.GetSites,
                                     site.ToString(),
                                     timer.ElapsedMilliseconds.ToString(),
                                     "-9999",
                                     Context.Request.UserHostName
                                     );

                    throw SoapExceptionGenerator.WOFExceptionToSoapException(we);
                }
            }