private static ServiceInfoData SelectNodes(XmlNamespaceManager mngr, XPathNavigator nav)
        {
            var serviceInfo = new ServiceInfoData();

            var submitParams = nav.Select("/edmx:Edmx/edmx:DataServices/edm:Schema/edm:EntityContainer[@Name='Default']/edm:FunctionImport/edm:Parameter", mngr);

            Console.WriteLine(submitParams);
            foreach (XPathNavigator param in submitParams)
            {
                var name     = param.GetAttribute("Name", "");
                var type     = param.GetAttribute("Type", "");
                var nullable = param.GetAttribute("Nullable", "");
                serviceInfo.Inputs.Add(new KeyValuePair <string, EdmPrimitiveTypeKind>(name, ParseEdmType(type)));
            }

            var resultScore = nav.Select("/edmx:Edmx/edmx:DataServices/edm:Schema/edm:ComplexType[@Name='ScoreResult']/edm:Property", mngr);

            foreach (XPathNavigator param in resultScore)
            {
                var name     = param.GetAttribute("Name", "");
                var type     = param.GetAttribute("Type", "");
                var nullable = param.GetAttribute("Nullable", "");
                serviceInfo.Outputs.Add(new KeyValuePair <string, EdmPrimitiveTypeKind>(name, ParseEdmType(type)));
            }

            return(serviceInfo);
        }
        /// <summary>
        /// Add a know train in T2G and might initialize the data-package embedded service.
        /// </summary>
        /// <param name="trainId">The train identifier.</param>
        /// <param name="vehicleId">The vehicle identifier.</param>
        /// <param name="isOnline">Indicates the initiale online status of the train.</param>
        /// <param name="ipAddress">The ip address of the train.</param>
        /// <param name="dataPackagePort">The data package port.</param>
        /// <param name="communicationLink">The communication link.</param>
        /// <param name="initializeEmbeddedService">Indicates if the embedded data-package service shall be initialized.</param>
        /// <param name="currentBaseline">The current baseline version.</param>
        /// <exception cref="NotImplementedException">Support to multiple train need to be implemented if needed.</exception>
        protected void InitializeTrain(string trainId, int vehicleId, bool isOnline, string ipAddress, ushort dataPackagePort, CommLinkEnum communicationLink, bool initializeEmbeddedService, string currentBaseline)
        {
            _identificationServiceStub.UpdateSystem(trainId, vehicleId, isOnline, 0, DEFAULT_MISSION, communicationLink, ipAddress);
            _vehicleInfoServiceStub.UpdateMessageData(new VersionMessage(trainId, DEFAULT_PIS_VERSION));
            BaselineMessage baseline = new BaselineMessage(trainId);

            baseline.CurrentVersion = currentBaseline;
            _vehicleInfoServiceStub.UpdateMessageData(baseline);

            MissionMessage mission = new MissionMessage(trainId, DEFAULT_MISSION, (string.IsNullOrEmpty(DEFAULT_MISSION)) ? "NI" : "MI", DEFAULT_OPERATOR_CODE);

            _vehicleInfoServiceStub.UpdateMessageData(mission);

            ServiceInfoData datapackageService = new ServiceInfoData((ushort)eServiceID.eSrvSIF_DataPackageServer, SERVICE_NAME_DATA_PACKAGE, isOnline && initializeEmbeddedService, ipAddress, dataPackagePort, (ushort)vehicleId, DEFAULT_CAR_ID);

            _vehicleInfoServiceStub.UpdateServiceData(trainId, datapackageService);

            _dataStoreServiceStub.UpdateDataStore(new ElementsDataStoreData(trainId));

            if (initializeEmbeddedService)
            {
                if (_trainDataPackageServiceStub != null)
                {
                    throw new NotImplementedException("Support to multiple train need to be implemented if needed.");
                }

                _trainDataPackageServiceStub = new TrainDataPackageServiceStub(trainId);
                Uri address = new Uri("http://" + ipAddress + ":" + dataPackagePort);
                _hostTrainDataPackageService = new ServiceHost(_trainDataPackageServiceStub, address);
                _hostTrainDataPackageService.Open();
            }
        }
        private async void OkButtonClick(object sender, RoutedEventArgs e)
        {
            try {
                var oauthEndpoint = UrlToODataUrl(AzureURL.Text);

                var req = WebRequest.Create(oauthEndpoint);
                req.ContentType = "application/json";
                var response = await req.GetResponseAsync();

                var responseStream = response.GetResponseStream();
                var reader         = new StreamReader(responseStream);
                var content        = await reader.ReadToEndAsync();

                var    serializer = new JavaScriptSerializer();
                var    odataInfo  = serializer.Deserialize <Dictionary <string, object> >(content);
                object value;
                if (odataInfo.TryGetValue("odata.metadata", out value) &&
                    (value is string))
                {
                    req      = WebRequest.Create((string)value);
                    response = await req.GetResponseAsync();

                    responseStream = response.GetResponseStream();

                    var doc = new XPathDocument(responseStream);
                    XmlNamespaceManager mngr = new XmlNamespaceManager(new NameTable(
                                                                           ));
                    mngr.AddNamespace("edmx", "http://schemas.microsoft.com/ado/2009/11/edmx");
                    mngr.AddNamespace("m", "http://schemas.microsoft.com/ado/2007/08/dataservices/metadata");
                    mngr.AddNamespace("edm", "http://schemas.microsoft.com/ado/2009/11/edm");

                    var nav = doc.CreateNavigator();

                    ServiceInfo = SelectNodes(mngr, nav);

                    DialogResult = true;
                    Close();
                }
            } catch (WebException wex) {
                MessageBox.Show(String.Format(LocalizedResources.MetadataDownloadFailed, wex.Message), "Python Azure ML", MessageBoxButton.OK, MessageBoxImage.Error);
            } catch (UriFormatException ufe) {
                MessageBox.Show(String.Format(LocalizedResources.AzureMLServiceInvalid, ufe.Message), "Python Azure ML", MessageBoxButton.OK, MessageBoxImage.Error);
            }
        }
Пример #4
0
        private async void OkButtonClick(object sender, RoutedEventArgs e) {
            try {
                var oauthEndpoint = UrlToODataUrl(AzureURL.Text);

                var req = WebRequest.Create(oauthEndpoint);
                req.ContentType = "application/json";
                var response = await req.GetResponseAsync();
                var responseStream = response.GetResponseStream();
                var reader = new StreamReader(responseStream);
                var content = await reader.ReadToEndAsync();

                var serializer = new JavaScriptSerializer();
                var odataInfo = serializer.Deserialize<Dictionary<string, object>>(content);
                object value;
                if (odataInfo.TryGetValue("odata.metadata", out value) &&
                    (value is string)) {

                    req = WebRequest.Create((string)value);
                    response = await req.GetResponseAsync();
                    responseStream = response.GetResponseStream();

                    var doc = new XPathDocument(responseStream);
                    XmlNamespaceManager mngr = new XmlNamespaceManager(new NameTable(
                        ));
                    mngr.AddNamespace("edmx", "http://schemas.microsoft.com/ado/2009/11/edmx");
                    mngr.AddNamespace("m", "http://schemas.microsoft.com/ado/2007/08/dataservices/metadata");
                    mngr.AddNamespace("edm", "http://schemas.microsoft.com/ado/2009/11/edm");

                    var nav = doc.CreateNavigator();

                    ServiceInfo = SelectNodes(mngr, nav);

                    DialogResult = true;
                    Close();
                }
            } catch (WebException wex) {
                MessageBox.Show(String.Format(LocalizedResources.MetadataDownloadFailed, wex.Message), "Python Azure ML", MessageBoxButton.OK, MessageBoxImage.Error);
            } catch (UriFormatException ufe) {
                MessageBox.Show(String.Format(LocalizedResources.AzureMLServiceInvalid, ufe.Message), "Python Azure ML", MessageBoxButton.OK, MessageBoxImage.Error);
            }
        }
Пример #5
0
        private static ServiceInfoData SelectNodes(XmlNamespaceManager mngr, XPathNavigator nav) {
            var serviceInfo = new ServiceInfoData();

            var submitParams = nav.Select("/edmx:Edmx/edmx:DataServices/edm:Schema/edm:EntityContainer[@Name='Default']/edm:FunctionImport/edm:Parameter", mngr);
            Console.WriteLine(submitParams);
            foreach (XPathNavigator param in submitParams) {
                var name = param.GetAttribute("Name", "");
                var type = param.GetAttribute("Type", "");
                var nullable = param.GetAttribute("Nullable", "");
                serviceInfo.Inputs.Add(new KeyValuePair<string, EdmPrimitiveTypeKind>(name, ParseEdmType(type)));
            }

            var resultScore = nav.Select("/edmx:Edmx/edmx:DataServices/edm:Schema/edm:ComplexType[@Name='ScoreResult']/edm:Property", mngr);
            foreach (XPathNavigator param in resultScore) {
                var name = param.GetAttribute("Name", "");
                var type = param.GetAttribute("Type", "");
                var nullable = param.GetAttribute("Nullable", "");
                serviceInfo.Outputs.Add(new KeyValuePair<string, EdmPrimitiveTypeKind>(name, ParseEdmType(type)));
            }

            return serviceInfo;
        }