public async Task <List <ProfileRadarResult> > ConvertToDiagram(int id, string indexId)
        {
            var project = await db.Requirements.FirstOrDefaultAsync(r => r.Id == id);

            if (project == null)
            {
                throw new NotFoundException($"Requirement {id} not found");
            }
            var projectProfileResult = Convert(project, indexId);

            var radarResults = new List <ProfileRadarResult>();

            var connector = new ConnectorProfile().MakeConnect();

            var isMetric = projectProfileResult.ProfileResults.FirstOrDefault().Name.Contains("K");

            foreach (var profileResult in projectProfileResult.ProfileResults)
            {
                string profileResultName = isMetric ?
                                           connector[indexId].FirstOrDefault(coeff => coeff.Coefficient == profileResult.Name).Index
                    : profileResult.Name;

                float?value = !isMetric ? profileResult.Coeff : profileResult.Value;

                string name   = $"{profileResultName} ({value})";
                float  result = new CalculateProfile(profileResult).Calculate();
                radarResults.Add(new ProfileRadarResult {
                    Name = name, Value = result
                });
            }
            return(radarResults);
        }
        public ProfileResult Convert()
        {
            var resultIndex = new ResultIndex(repository, connector, index.Item2);
            var result      = resultIndex.Create();

            if (index.Item1 == 1 || index.Item1 == 8)
            {
                var connectorProfile = new ConnectorProfile();

                ProfileResult requirementProfileResult = new ProfileResult();

                if (index.Item1 == 1)
                {
                    requirementProfileResult = result.ProfileResults.FirstOrDefault(p => p.Name == "I8");
                }
                else
                {
                    requirementProfileResult = result;
                }

                var i8 = repository.FindById("I8");

                foreach (var coeff in i8.Coefficients.Select((value, i) => new { value, i }))
                {
                    int count = 0;
                    var requirementProfile = new List <Profile>();
                    GetRequiremetProfile(profileListView, coeff.i + 1, ref count, ref requirementProfile);
                    var newRepository = new ProfileRepository(requirementProfile);
                    var profileResult = new ResultIndex(newRepository, connectorProfile, "I9").Create();
                    profileResult.Coeff = coeff.value.Value;
                    requirementProfileResult.ProfileResults.Add(profileResult);
                }
            }
            return(result);
        }
Example #3
0
        public override ReturnCode_t connect(ref ConnectorProfile connector_profile)
        {
            var orb = OrbServices.GetSingleton();
            var ior = orb.object_to_string(_inPortCdrMock);
            ConnectorProfileExtension.AddInPortIor(ref connector_profile, ior);

            return ReturnCode_t.RTC_OK;
        }
Example #4
0
        public override ReturnCode_t connect(ref ConnectorProfile connector_profile)
        {
            var ior = connector_profile.GetInPortIor();

            var orb = OrbServices.GetSingleton();

            _inPortCdr = (InPortCdr)orb.string_to_object(ior);

            return ReturnCode_t.RTC_OK;
        }
Example #5
0
        /// <summary>
        /// <see cref="PortConnector"/>クラスの新しいインスタンスを初期化します。
        /// </summary>
        /// <param name="ports">接続対象のポート</param>
        public PortConnector(params PortService[] ports)
        {
            _portServices = new List<PortService>(ports);
            CreatePropertySettings();

            _profile = new ConnectorProfile();
            _profile.ports = ports;

            var props = new List<NameValue>();
            foreach (var setting in _propertySettings)
            {
                if (setting.Value.Count > 0)
                {
                    props.Add(new NameValue(setting.Key, setting.Value[0]));
                }
            }

            _profile.properties = props.ToArray();
        }
Example #6
0
        public void Start()
        {
            lock (_lockObject)
            {
                ConnectorProfile prof;
                try
                {
                    prof              = new ConnectorProfile();
                    prof.ports        = new[] { _portService };
                    prof.name         = "dummy"; //名前見直し?
                    prof.connector_id = "";
                    ConnectorProfileExtension.AddDataFlowType(ref prof, "push");
                    ConnectorProfileExtension.AddInterfaceType(ref prof, "corba_cdr");
                    ConnectorProfileExtension.AddSubscriptionType(ref prof, "new");
                    //TODO: エンディアンは?

                    var ret = _portService.connect(ref prof);

                    if (ret != ReturnCode_t.RTC_OK)
                    {
                        throw new Exception("ポートの接続に失敗しました。");
                    }
                }
                catch (Exception)
                {
                    IsAlive = false;
                    NotifyError("ポートの接続に失敗しました。");
                    return;
                }

                var ior = prof.GetInPortIor();

                var orb = OrbServices.GetSingleton();
                _inPortCdr = (InPortCdr)orb.string_to_object(ior);

                try
                {
                    _dataFileReader = new BinaryReader(
                        File.OpenRead(SettingHolder.BaseDirectory + RecordDescription.DataFileName));
                    _indexFileReader = new BinaryReader(
                        File.OpenRead(SettingHolder.BaseDirectory + RecordDescription.IndexFileName));
                }
                catch (Exception)
                {
                    IsAlive = false;
                    NotifyError("再生ファイルが開けませんでした。");
                    return;
                }

                try
                {
                    if (AutoActivate)
                    {
                        var comp = NamingServiceManager.Default.GetComponent(_namingName);
                        if (comp.GetState(0) == LifeCycleState.INACTIVE_STATE)
                        {
                            comp.Activate(0);
                        }

                        comp.WaitState(LifeCycleState.ACTIVE_STATE, TimeSpan.FromSeconds(5));
                    }
                }
                catch (Exception)
                {
                    IsAlive = false;
                    NotifyError("RTコンポーネントの活性化に失敗しました。");
                    return;
                }

                _stopWatch.Start();
                CurrentCount = 0;
                IsPlaying    = true;

                _cancellation = new CancellationTokenSource();
                _task         = Task.Factory.StartNew(Run, _cancellation.Token);
            }
        }
Example #7
0
 public ReturnCode_t notify_connect(ref ConnectorProfile connector_profile)
 {
     throw new NotImplementedException();
 }
Example #8
0
 public abstract ReturnCode_t connect(ref ConnectorProfile connector_profile);
Example #9
0
        public void Start()
        {
            lock (_lockObject)
            {
                ConnectorProfile prof;
                try
                {
                    prof = new ConnectorProfile();
                    prof.ports = new[] { _portService };
                    prof.name = "dummy"; //名前見直し?
                    prof.connector_id = "";
                    ConnectorProfileExtension.AddDataFlowType(ref prof, "push");
                    ConnectorProfileExtension.AddInterfaceType(ref prof, "corba_cdr");
                    ConnectorProfileExtension.AddSubscriptionType(ref prof, "new");
                    //TODO: エンディアンは?

                    var ret = _portService.connect(ref prof);

                    if (ret != ReturnCode_t.RTC_OK)
                    {
                        throw new Exception("ポートの接続に失敗しました。");
                    }

                }
                catch (Exception)
                {
                    IsAlive = false;
                    NotifyError("ポートの接続に失敗しました。");
                    return;
                }

                var ior = prof.GetInPortIor();

                var orb = OrbServices.GetSingleton();
                _inPortCdr = (InPortCdr)orb.string_to_object(ior);

                try
                {
                    _dataFileReader = new BinaryReader(
                        File.OpenRead(SettingHolder.BaseDirectory + RecordDescription.DataFileName));
                    _indexFileReader = new BinaryReader(
                        File.OpenRead(SettingHolder.BaseDirectory + RecordDescription.IndexFileName));
                }
                catch (Exception)
                {
                    IsAlive = false;
                    NotifyError("再生ファイルが開けませんでした。");
                    return;
                }

                try
                {
                    if (AutoActivate)
                    {
                        var comp = NamingServiceManager.Default.GetComponent(_namingName);
                        if (comp.GetState(0) == LifeCycleState.INACTIVE_STATE)
                        {
                            comp.Activate(0);
                        }

                        comp.WaitState(LifeCycleState.ACTIVE_STATE, TimeSpan.FromSeconds(5));
                    }

                }
                catch (Exception)
                {
                    IsAlive = false;
                    NotifyError("RTコンポーネントの活性化に失敗しました。");
                    return;
                }

                _stopWatch.Start();
                CurrentCount = 0;
                IsPlaying = true;

                _cancellation = new CancellationTokenSource();
                _task = Task.Factory.StartNew(Run, _cancellation.Token);

            }
        }
Example #10
0
 ///<exclude/>
 public bool Equals(ConnectorProfile other)
 {
     if (ReferenceEquals(null, other)) return false;
     if (ReferenceEquals(this, other)) return true;
     return other._Name == (_Name) && other._ConnectorId == (_ConnectorId) && other._Ports.SequenceEqual(_Ports) && other._Properties.SequenceEqual(_Properties);
 }
Example #11
0
 /// <summary>
 /// ConnecotrProfileをもとにPortConnectorを作成する
 /// </summary>
 /// <param name="profile">接続情報</param>
 public PortConnector(ConnectorProfile profile)
 {
     _portServices = profile.ports.ToList();
     CreatePropertySettings();
     _profile = profile;
     _connectorId = _profile.connector_id;
     IsConnected = true;
 }
Example #12
0
        private void Start()
        {
            lock (_lockObject)
            {
                if (!IsAlive)
                {
                    return;
                }
                if (IsRecording)
                {
                    return;
                }

                IsRecording = true;

                try
                {
                    var adapter = new DelegateInPortCdr(Write);
                    var orb     = OrbServices.GetSingleton();
                    var ior     = orb.object_to_string(adapter);

                    var prof = new ConnectorProfile();
                    prof.ports        = new[] { _portService };
                    prof.name         = "dummy"; // 名前見直し?
                    prof.connector_id = "";

                    ConnectorProfileExtension.AddDataFlowType(ref prof, "push");
                    ConnectorProfileExtension.AddInterfaceType(ref prof, "corba_cdr");
                    ConnectorProfileExtension.AddSubscriptionType(ref prof, "new");
                    ConnectorProfileExtension.AddInPortIor(ref prof, ior);

                    var ret = _portService.connect(ref prof);

                    if (ret != ReturnCode_t.RTC_OK)
                    {
                        throw new Exception("接続に失敗しました。");
                    }

                    _connectorId = prof.connector_id;
                    //TODO: エンディアンチェックしたいけど、ミドルウェアが対応してない。
                    //name = "dataport.serializer.cdr.endian"
                }
                catch (Exception)
                {
                    IsAlive = false;
                    NotifyError("ポートの接続に失敗しました。");
                    return;
                }

                var now = DateTime.Now;
                RecordDescription.CreatedDateTime = now;
                RecordDescription.Count           = 0;
                RecordDescription.SumSize         = 0;
                RecordDescription.IsLittleEndian  = 1;

                var fileName = FileUtility.ValidFileName(now.ToString("yyyyMMdd_HHmmss") + "_" + Key);
                RecordDescription.DataFileName  = fileName + ".data";
                RecordDescription.IndexFileName = fileName + ".index";


                try
                {
                    if (!Directory.Exists(SettingHolder.BaseDirectory))
                    {
                        Directory.CreateDirectory(SettingHolder.BaseDirectory);
                    }
                    _dataFileWriter = new BinaryWriter(
                        File.Create(SettingHolder.BaseDirectory + RecordDescription.DataFileName));
                    _indexFileWriter = new BinaryWriter(
                        File.Create(SettingHolder.BaseDirectory + RecordDescription.IndexFileName));
                }
                catch (Exception)
                {
                    IsAlive = false;
                    NotifyError("ファイルを開くことができませんでした。");
                    return;
                }

                try
                {
                    if (AutoActivate)
                    {
                        var comp = NamingServiceManager.Default.GetComponent(_namingName);
                        if (comp.GetState(0) == LifeCycleState.INACTIVE_STATE)
                        {
                            comp.Activate(0);
                        }

                        comp.WaitState(LifeCycleState.ACTIVE_STATE, TimeSpan.FromSeconds(5));
                    }
                }
                catch (Exception)
                {
                    IsAlive = false;
                    NotifyError("RTコンポーネントの活性化に失敗しました。");
                    return;
                }

                _stopWatch.Start();

                IsRecording = true;
            }
        }
 public static void AddSubscriptionType(ref ConnectorProfile target, string value)
 {
     NameValueExtension.AddStringValue(ref target.properties, "dataport.subscription_type", value);
 }
 public static void AddInterfaceType(ref ConnectorProfile target, string value)
 {
     NameValueExtension.AddStringValue(ref target.properties, "dataport.interface_type", value);
 }
 public static void AddInPortIor(ref ConnectorProfile target, string value)
 {
     NameValueExtension.AddStringValue(ref target.properties, "dataport.corba_cdr.inport_ior", value);
 }
 public static void AddDataFlowType(ref ConnectorProfile target, string value)
 {
     NameValueExtension.AddStringValue(ref target.properties, "dataport.dataflow_type", value);
 }