public void SetDefinitionModel(Resource resource, IEnumerable <CMSDDocumentDataSectionJob> CMSDjobs) { foreach (ResourceProperty resourceProperty in resource.Property) { if (resourceProperty != null) { switch (resourceProperty.Name) { case "MTTR": var distsource = resourceProperty.Distribution.First(); MTTR.Distribution = IDistribution.GetFromCmsd(distsource); MTTR.Distribution.ParameterConverter.UnitType = GeneralConverter.GetInstance(resourceProperty.Unit); break; case "MTBF": distsource = resourceProperty.Distribution.First(); MTBF.Distribution = IDistribution.GetFromCmsd(distsource); MTBF.Distribution.ParameterConverter.UnitType = GeneralConverter.GetInstance(resourceProperty.Unit); break; case "Capacity": try { Capacity = Int32.Parse(resourceProperty.Value); } catch { } break; case "Speed": try { Speed = Int32.Parse(resourceProperty.Value, CultureInfo.InvariantCulture); } catch { } break; case "DistanceToNode": try { DistansToNode = int.Parse(resourceProperty.Value, CultureInfo.InvariantCulture); } catch { } break; } } } ProcessName = resource.Name; AddConsumption(resource.Property.FirstOrDefault(t => t.Name.StartsWith("Idle")), Idle); AddConsumption(resource.Property.FirstOrDefault(t => t.Name.StartsWith("Off")), Off); AddConsumption(resource.Property.FirstOrDefault(t => t.Name.StartsWith("Down")), Down); Job.Clear(); var cmsdDocumentDataSectionJobs = CMSDjobs as IList <CMSDDocumentDataSectionJob> ?? CMSDjobs.ToList(); foreach (var sectionJob in cmsdDocumentDataSectionJobs.Where(t => t.Identifier.StartsWith("BaseJob"))) { var job = new Job() { Name = sectionJob.Identifier.Remove(0, 7).Replace(ProcessName, "") }; AddConsumption(resource.Property.FirstOrDefault(t => t.Name.Contains(job.Name)), job.State); job.Subjobs.Clear(); foreach (var pointSubJob in sectionJob.SubJob) { var cmsdSubJob = cmsdDocumentDataSectionJobs.FirstOrDefault(t => t.Identifier == pointSubJob.JobIdentifier); if (cmsdSubJob != null) { var sub = new SubJob() { Description = cmsdSubJob.Description, Distribution = IDistribution.GetFromCmsd(cmsdSubJob.PlannedEffort.ProcessingTime.Distribution) }; sub.Distribution.ParameterConverter.UnitType = GeneralConverter.TimeConverters.FirstOrDefault( t => t.ToString() == cmsdSubJob.PlannedEffort.ProcessingTime.TimeUnit); job.Subjobs.Add(sub); } } Job.Add(job); LoadDistances(new [] { this }, new [] { resource }); } foreach (var reloadJob in _reloadJobs) { var productcollection = reloadJob.Key.Nodes.Where(t => t.Key.ResourceModel == this).GetEnumerator(); foreach (var jobstring in reloadJob.Value) { productcollection.MoveNext(); productcollection.Current.Value = Job.First(t => t.Name == jobstring); } } }
private static ModelNode LoadModelNode(Resource resource, IEnumerable <CMSDDocumentDataSectionJob> CMSDjobs) { var modelnode = new ModelNode(); if (resource.ResourceType.Contains("Machine")) { modelnode = new Machine(); } else if (resource.ResourceType.Contains("Facility")) { modelnode = new Facility(); } else if (resource.ResourceType.Contains("Buffer")) { modelnode = new UserControles.Buffer(); } else if (resource.ResourceType.Contains("Transport")) { modelnode = new Transport(); } double left = 0, top = 0; foreach (ResourceProperty resourceProperty in resource.Property) { switch (resourceProperty.Name) { case "XGrid": left = double.Parse(resourceProperty.Value); break; case "YGrid": top = double.Parse(resourceProperty.Value); break; case "MTTR": var distsource = resourceProperty.Distribution.First(); modelnode.ResourceModel.MTTR.Distribution = DataLayer.IDistribution.GetFromCmsd(distsource); modelnode.ResourceModel.MTTR.Distribution.ParameterConverter.UnitType = GeneralConverter.GetInstance(resourceProperty.Unit); break; case "MTBF": distsource = resourceProperty.Distribution.First(); modelnode.ResourceModel.MTBF.Distribution = DataLayer.IDistribution.GetFromCmsd(distsource); modelnode.ResourceModel.MTBF.Distribution.ParameterConverter.UnitType = GeneralConverter.GetInstance(resourceProperty.Unit); break; case "Capacity": try { modelnode.ResourceModel.Capacity = int.Parse(resourceProperty.Value); } catch {} break; case "Speed": try { modelnode.ResourceModel.Speed = int.Parse(resourceProperty.Value, CultureInfo.InvariantCulture); } catch {} break; case "DistanceToNode": try { modelnode.ResourceModel.DistansToNode = int.Parse(resourceProperty.Value, CultureInfo.InvariantCulture); } catch { } break; } } modelnode.Margin = new Thickness(left, top, 0, 0); modelnode.XGrid = left; modelnode.YGrid = top; modelnode.ResourceModel.ProcessName = resource.Name; AddConsumption(resource.Property.Where(t => t.Name.StartsWith("IdleTime")), modelnode.ResourceModel.Idle); AddConsumption(resource.Property.Where(t => t.Name.StartsWith("Off")), modelnode.ResourceModel.Off); AddConsumption(resource.Property.Where(t => t.Name.StartsWith("Down")), modelnode.ResourceModel.Down); modelnode.ResourceModel.Job.Clear(); var cmsdDocumentDataSectionJobs = CMSDjobs as IList <CMSDDocumentDataSectionJob> ?? CMSDjobs.ToList(); foreach (var sectionJob in cmsdDocumentDataSectionJobs.Where(t => t.Identifier.StartsWith("BaseJob"))) { var job = new Job() { Name = sectionJob.Identifier.Remove(0, 7).Replace(modelnode.ResourceModel.ProcessName, "") }; AddConsumption(resource.Property.Where(t => t.Name.StartsWith(job.Name)), job.State); job.Subjobs.Clear(); foreach (var pointSubJob in sectionJob.SubJob) { var cmsdSubJob = cmsdDocumentDataSectionJobs.FirstOrDefault(t => t.Identifier == pointSubJob.JobIdentifier); if (cmsdSubJob != null) { var sub = new SubJob() { Description = cmsdSubJob.Description, Distribution = IDistribution.GetFromCmsd(cmsdSubJob.PlannedEffort.ProcessingTime.Distribution) }; sub.Distribution.ParameterConverter.UnitType = GeneralConverter.TimeConverters.FirstOrDefault( t => t.ToString() == cmsdSubJob.PlannedEffort.ProcessingTime.TimeUnit); job.Subjobs.Add(sub); } } modelnode.ResourceModel.Job.Add(job); } return(modelnode); }