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); }
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; }
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; }
/// <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(); }
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); } }
public ReturnCode_t notify_connect(ref ConnectorProfile connector_profile) { throw new NotImplementedException(); }
public abstract ReturnCode_t connect(ref ConnectorProfile connector_profile);
///<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); }
/// <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; }
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); }