Example #1
0
        private object GetObjectFromRequest(DataRequest request)
        {
            LOG.DebugEnter(MethodBase.GetCurrentMethod(), request);

            IDbProvider dbProvider = DataProviders[DataProviderParameterType.SourceProvider.ToString()];

            LOG.Debug("Provider: {0}", dbProvider);

            //Set the static property for conn string
            Config.connectionString = dbProvider.ConnectionString;

            object returnData = null;

            string testServiceName = request.Service.Name.Trim().ToLower();

            LOG.Debug("Original Service Name: " + testServiceName);

            if (testServiceName.Contains("_"))
            {
                testServiceName = testServiceName.Substring(testServiceName.IndexOf("_") + 1);
            }
            if (testServiceName.Contains("."))
            {
                testServiceName = testServiceName.Substring(testServiceName.IndexOf(".") + 1);
            }

            LOG.Debug("Parsed Service Name: " + testServiceName);

            //??
            ////update NTransaction set Status = 'error' where Id = '_30093e58-c213-49ab-b58c-ed66885414fc'

            int paramCount = CollectionUtils.Count(request.Parameters);

            if (paramCount < 22)
            {
                throw new ArgumentException(string.Format("An invalid number of parameters were supplied to the service.  22 parameters are required, but only {0} were supplied.",
                                                          paramCount.ToString()));
            }

            int rowIndex, maxRows = -1;

            if (string.IsNullOrEmpty(request.Parameters[0]))
            {
                rowIndex = 0;
            }
            else
            {
                rowIndex = int.Parse(request.Parameters[0]);
            }
            if (!string.IsNullOrEmpty(request.Parameters[1]))
            {
                maxRows = int.Parse(request.Parameters[1]);
            }
            if (maxRows < -1)
            {
                throw new ArgumentException(string.Format("An invalid maximum number of rows parameter was specified: {0}",
                                                          maxRows.ToString()));
            }
            if (_maxNumRowsToReturn > 0)
            {
                if ((maxRows <= 0) || (maxRows > _maxNumRowsToReturn))
                {
                    maxRows = _maxNumRowsToReturn;
                }
            }

            switch (testServiceName)
            {
            case "getmeasurements":
                returnData = (object)PNWWQXProcessor.GetMeasurements
                             (
                    rowIndex,
                    maxRows,
                    request.Parameters[2],
                    request.Parameters[3],
                    request.Parameters[4],
                    request.Parameters[5],
                    request.Parameters[6],
                    request.Parameters[7],
                    request.Parameters[8],
                    request.Parameters[9],
                    request.Parameters[10],
                    request.Parameters[11],
                    request.Parameters[12],
                    request.Parameters[13].Split('|'),
                    request.Parameters[14].Split('|'),
                    request.Parameters[15],
                    request.Parameters[16],
                    request.Parameters[17],
                    request.Parameters[18],
                    request.Parameters[19].Split('|'),
                    request.Parameters[20].Split('|'),
                    request.Parameters[21].Split('|')
                             );
                break;

            case "getprojects":
                returnData = (object)PNWWQXProcessor.GetProjects
                             (
                    rowIndex,
                    maxRows,
                    request.Parameters[2],
                    request.Parameters[3],
                    request.Parameters[4],
                    request.Parameters[5],
                    request.Parameters[6],
                    request.Parameters[7],
                    request.Parameters[8],
                    request.Parameters[9],
                    request.Parameters[10],
                    request.Parameters[11],
                    request.Parameters[12],
                    request.Parameters[13].Split('|'),
                    request.Parameters[14].Split('|'),
                    request.Parameters[15],
                    request.Parameters[16],
                    request.Parameters[17],
                    request.Parameters[18],
                    request.Parameters[19].Split('|'),
                    request.Parameters[20].Split('|'),
                    request.Parameters[21].Split('|')
                             );
                break;

            case "getstations":
                returnData = (object)PNWWQXProcessor.GetStations
                             (
                    rowIndex,
                    maxRows,
                    request.Parameters[2],
                    request.Parameters[3],
                    request.Parameters[4],
                    request.Parameters[5],
                    request.Parameters[6],
                    request.Parameters[7],
                    request.Parameters[8],
                    request.Parameters[9],
                    request.Parameters[10],
                    request.Parameters[11],
                    request.Parameters[12],
                    request.Parameters[13].Split('|'),
                    request.Parameters[14].Split('|'),
                    request.Parameters[15],
                    request.Parameters[16],
                    request.Parameters[17],
                    request.Parameters[18],
                    request.Parameters[19].Split('|'),
                    request.Parameters[20].Split('|'),
                    request.Parameters[21].Split('|')
                             );
                break;

            case "getdatacatalog":
                returnData = (object)PNWWQXDataCatalog.GetDataCatalog();
                break;

            default:
                throw new ApplicationException(
                          string.Format("Service name not supported: [{0}] (parsed: {1})",
                                        request.Service.Name, testServiceName));
            }

            return(returnData);
        }
Example #2
0
        public static PNWWQXDataCatalog GetDataCatalog()
        {
            #region Get Data
            DataSet dsDataCatalog = SqlHelper.ExecuteDataset(
                Config.connectionString,
                CommandType.StoredProcedure,
                "PNWWQX_GetDataCatalog");
            #endregion

            #region Establish Relationships
            /* Tables[0] is Providing Organization  */
            /* Tables[1] is Projects */
            /* Tables[2] is Stations  */
            /* Tables[3] is Location Descriptor*/
            /* Tables[4] is Field Events*/
            /* Tables[5] is Data Access */

            //Providing Organization
            dsDataCatalog.Relations.Add("Org_Projects", dsDataCatalog.Tables[0].Columns["ProvidingOrganizationPK"], dsDataCatalog.Tables[1].Columns["ProvidingOrganizationFK"], false);
            dsDataCatalog.Relations.Add("Org_Station", dsDataCatalog.Tables[0].Columns["ProvidingOrganizationPK"], dsDataCatalog.Tables[2].Columns["ProvidingOrganizationFK"], false);
            dsDataCatalog.Relations.Add("Org_FieldEvent", dsDataCatalog.Tables[0].Columns["ProvidingOrganizationPK"], dsDataCatalog.Tables[4].Columns["ProvidingOrganizationFK"], false);

            //Station
            dsDataCatalog.Relations.Add("Station_LocationDescriptor", dsDataCatalog.Tables[2].Columns["StationIdentifier"], dsDataCatalog.Tables[3].Columns["StationSummaryIdentifier"], false);
            #endregion

            #region Populate Object

            ArrayList alPNWWQXDataCatalogList = new ArrayList();
            foreach (DataRow drProvidingOrg in dsDataCatalog.Tables[0].Rows)
            {
                #region ProvidingOrganizationDetails
                PNWWQXDataCatalogList            PNWWQXDataCatalogList        = new PNWWQXDataCatalogList();
                ProvidingOrganizationDetailsType ProvidingOrganizationDetails = new ProvidingOrganizationDetailsType();
                ProvidingOrganizationDetails.ProvidingOrganizationIdentifier = Utility.toStr(drProvidingOrg["ProvidingOrganizationIdentifier"]);
                ProvidingOrganizationDetails.ProvidingOrganizationName       = Utility.toStr(drProvidingOrg["ProvidingOrganizationName"]);
                ProvidingOrganizationDetails.ProvidingOrganizationType       = Utility.toStr(drProvidingOrg["ProvidingOrganizationType"]);

                ProvidingOrganizationDetails.ProvidingOrganizationContactName = Utility.toStr(drProvidingOrg["ProvidingOrganizationContactName"]);
                if (drProvidingOrg["MailingAddress"] != DBNull.Value ||
                    drProvidingOrg["MailingAddressCityName"] != DBNull.Value ||
                    drProvidingOrg["MailingAddressStateName"] != DBNull.Value ||
                    drProvidingOrg["MailingAddressZIPCode"] != DBNull.Value)
                {
                    ProvidingOrganizationDetails.ProvidingOrganizationMailingAddress = new MailingAddressType();
                    if (drProvidingOrg["MailingAddress"] != DBNull.Value)
                    {
                        ProvidingOrganizationDetails.ProvidingOrganizationMailingAddress.MailingAddress = Utility.toStr(drProvidingOrg["MailingAddress"]);
                    }
                    if (drProvidingOrg["MailingAddressCityName"] != DBNull.Value)
                    {
                        ProvidingOrganizationDetails.ProvidingOrganizationMailingAddress.MailingAddressCityName = Utility.toStr(drProvidingOrg["MailingAddressCityName"]);
                    }
                    if (drProvidingOrg["MailingAddressStateName"] != DBNull.Value)
                    {
                        ProvidingOrganizationDetails.ProvidingOrganizationMailingAddress.MailingAddressStateName = Utility.toStr(drProvidingOrg["MailingAddressStateName"]);
                    }
                    if (drProvidingOrg["MailingAddressZIPCode"] != DBNull.Value)
                    {
                        ProvidingOrganizationDetails.ProvidingOrganizationMailingAddress.MailingAddressZIPCode = Utility.toStr(drProvidingOrg["MailingAddressZIPCode"]);
                    }
                }
                ProvidingOrganizationDetails.ProvidingOrganizationPhoneEmail = new PhoneEmailType();
                ProvidingOrganizationDetails.ProvidingOrganizationPhoneEmail.TelephoneNumber = Utility.toStr(drProvidingOrg["TelephoneNumber"]);
                if (drProvidingOrg["ElectronicMailAddressText"] != DBNull.Value)
                {
                    ProvidingOrganizationDetails.ProvidingOrganizationPhoneEmail.ElectronicMailAddressText = Utility.toStr(drProvidingOrg["ElectronicMailAddressText"]);
                }
                if (drProvidingOrg["ProvidingOrganizationURL"] != DBNull.Value)
                {
                    ProvidingOrganizationDetails.ProvidingOrganizationURL = Utility.toStr(drProvidingOrg["ProvidingOrganizationURL"]);
                }

                PNWWQXDataCatalogList.ProvidingOrganizationDetails = ProvidingOrganizationDetails;
                #endregion

                #region DataAccess
                DataAccessType DataAccess = new DataAccessType();
                DataAccess.DataSourceName = Utility.toStr(dsDataCatalog.Tables[5].Rows[0]["DataSourceName"]);

                DataAccess.DataSourceAccessMethod = Utility.toStr(dsDataCatalog.Tables[5].Rows[0]["DataSourceAccessMethod"]);

                if (dsDataCatalog.Tables[5].Rows[0]["DataSourceLocation"] != DBNull.Value)
                {
                    DataAccess.DataSourceLocation = Utility.toStr(dsDataCatalog.Tables[5].Rows[0]["DataSourceLocation"]);
                }
                if (dsDataCatalog.Tables[5].Rows[0]["AvailabilityDescription"] != DBNull.Value)
                {
                    DataAccess.AvailabilityDescription = Utility.toStr(dsDataCatalog.Tables[5].Rows[0]["AvailabilityDescription"]);
                }
                DataAccess.RefreshDate = Utility.toDT(dsDataCatalog.Tables[5].Rows[0]["RefreshDate"]);

                PNWWQXDataCatalogList.DataAccess = DataAccess;
                #endregion

                #region ProjectSummary
                ArrayList alProjectSummary = new ArrayList();

                foreach (DataRow drProject in drProvidingOrg.GetChildRows(dsDataCatalog.Relations["Org_Projects"]))
                {
                    ProjectSummaryType ProjectSummary = new ProjectSummaryType();
                    ProjectSummary.ProjectIdentifier = Utility.toStr(drProject["ProjectIdentifier"]);
                    ProjectSummary.ProjectName       = Utility.toStr(drProject["ProjectName"]);
                    ProjectSummary.ProjectStartDate  = Utility.toDT(drProject["ProjectStartDate"]);
                    if (drProject["ProjectEndDate"] != DBNull.Value)
                    {
                        ProjectSummary.ProjectEndDate = Utility.toDT(drProject["ProjectEndDate"]);
                    }
                    ProjectSummary.ProjectContactOrganizationName = Utility.toStr(drProject["ProjectContactOrganizationName"]);

                    alProjectSummary.Add(ProjectSummary);
                }
                PNWWQXDataCatalogList.ProjectSummary = (ProjectSummaryType[])alProjectSummary.ToArray(typeof(ProjectSummaryType));
                #endregion

                #region StationSummary
                ArrayList alStationSummary = new ArrayList();

                DataRow[] stationRootRows = drProvidingOrg.GetChildRows(dsDataCatalog.Relations["Org_Station"]);

                foreach (DataRow drStation in stationRootRows)
                {
                    StationSummaryType StationSummary = new StationSummaryType();
                    StationSummary.StationIdentifier = Utility.toStr(drStation["StationIdentifier"]);
                    StationSummary.StationName       = Utility.toStr(drStation["StationName"]);

                    StationSummary.StationType = Utility.toStr(drStation["StationType"]);

                    ArrayList alStationLocationDescriptor = new ArrayList();



                    #region Location Description

                    DataRow[] stationRows = drStation.GetChildRows(dsDataCatalog.Relations["Station_LocationDescriptor"]);

                    System.Console.WriteLine(stationRows.Length);

                    foreach (DataRow drStationLocDescr in stationRows)
                    {
                        StationLocationDescriptorType StationLocationDescriptor = new StationLocationDescriptorType();
                        StationLocationDescriptor.LocationDescriptorName = Utility.toStr(drStationLocDescr["LocationDescriptorName"]);

                        StationLocationDescriptor.LocationDescriptorContext = Utility.toStr(drStationLocDescr["LocationDescriptorContext"]);

                        alStationLocationDescriptor.Add(StationLocationDescriptor);
                    }

                    #endregion

                    StationSummary.LocationDescriptor = (StationLocationDescriptorType[])alStationLocationDescriptor.ToArray(typeof(StationLocationDescriptorType));



                    StationSummary.LatitudeMeasure  = Utility.toDecimal(drStation["LatitudeMeasure"]);
                    StationSummary.LongitudeMeasure = Utility.toDecimal(drStation["LongitudeMeasure"]);
                    if (drStation["StationContactOrganizationName"] != DBNull.Value)
                    {
                        StationSummary.StationContactOrganizationName = Utility.toStr(drStation["StationContactOrganizationName"]);
                    }

                    alStationSummary.Add(StationSummary);
                }
                PNWWQXDataCatalogList.StationSummary = (StationSummaryType[])alStationSummary.ToArray(typeof(StationSummaryType));
                #endregion

                #region FieldEventSummary
                ArrayList alFieldEventSummary = new ArrayList();

                foreach (DataRow drFieldEvent in drProvidingOrg.GetChildRows(dsDataCatalog.Relations["Org_FieldEvent"]))
                {
                    FieldEventSummaryType FieldEventSummary = new FieldEventSummaryType();
                    FieldEventSummary.MinFieldEventStartDate = Utility.toDT(drFieldEvent["MinFieldEventStartDate"]);
                    FieldEventSummary.MaxFieldEventEndDate   = Utility.toDT(drFieldEvent["MaxFieldEventEndDate"]);
                    FieldEventSummary.MediaText = Utility.toStr(drFieldEvent["MediaText"]);


                    if (drFieldEvent["BiologicalSystematicName"] != DBNull.Value)
                    {
                        FieldEventSummary.BiologicalSystematicName = Utility.toStr(drFieldEvent["BiologicalSystematicName"]);
                    }
                    FieldEventSummary.AnalyteName   = Utility.toStr(drFieldEvent["AnalyteName"]);
                    FieldEventSummary.NumberResults = Utility.toInt(drFieldEvent["NumberResults"]).ToString();
                    FieldEventSummary.FieldEventProjectIdentifier = Utility.toStr(drFieldEvent["FieldEventProjectIdentifier"]);
                    FieldEventSummary.FieldEventStationIdentifier = Utility.toStr(drFieldEvent["FieldEventStationIdentifier"]);
                    if (drFieldEvent["FieldEventContactOrganizationName"] != DBNull.Value)
                    {
                        FieldEventSummary.FieldEventContactOrganizationName = Utility.toStr(drFieldEvent["FieldEventContactOrganizationName"]);
                    }
                    alFieldEventSummary.Add(FieldEventSummary);
                }
                PNWWQXDataCatalogList.FieldEventSummary = (FieldEventSummaryType[])alFieldEventSummary.ToArray(typeof(FieldEventSummaryType));
                #endregion

                #region PNWWQXDataCatalogList
                alPNWWQXDataCatalogList.Add(PNWWQXDataCatalogList);
                #endregion
            }

            PNWWQXDataCatalog PNWWQXDataCatalog = new PNWWQXDataCatalog();
            PNWWQXDataCatalog.PNWWQXDataCatalogList = (PNWWQXDataCatalogList[])alPNWWQXDataCatalogList.ToArray(typeof(PNWWQXDataCatalogList));
            #endregion

            return(PNWWQXDataCatalog);
        }