public override void Extract(Filtering.FilteredResult fr, ref KnxPort meta) { switch (Path) { case AttributePath.Installation: meta.MetaData[AttributeName] = fr.ComObjects.Select(row => row.ParentDevice.Building.Parent.Parent.Name).Where(row => !string.IsNullOrWhiteSpace(row)).FirstOrDefault(); break; case AttributePath.Building: meta.MetaData[AttributeName] = fr.ComObjects.Select(row => row.ParentDevice.Building.Parent.Name).Where(row => !string.IsNullOrWhiteSpace(row)).FirstOrDefault(); break; case AttributePath.Room: meta.MetaData[AttributeName] = fr.ComObjects.Select(row => row.ParentDevice.Building.Name).Where(row => !string.IsNullOrWhiteSpace(row)).FirstOrDefault(); break; case AttributePath.GroupAddressName: meta.MetaData[AttributeName] = fr.GroupAddress.Ref.Name; break; case AttributePath.ObjectName: meta.MetaData[AttributeName] = fr.ComObjects.Select(row => (row["Name"].Value ?? row["Text"].Value).ToString()).FirstOrDefault(); break; case AttributePath.DeviceName: meta.MetaData[AttributeName] = fr.ComObjects.Select(row => row.ParentDevice.Name).Where(row => !string.IsNullOrWhiteSpace(row)).FirstOrDefault(); break; case AttributePath.ProductName: meta.MetaData[AttributeName] = fr.ComObjects.Select(row => row.ParentDevice.Product.Text).Where(row => !string.IsNullOrWhiteSpace(row)).FirstOrDefault(); break; default: break; } }
public override void Extract(Filtering.FilteredResult fr, ref KnxPort meta) { base.Extract(fr, ref meta); var result = meta.MetaData[AttributeName]; if (!string.IsNullOrWhiteSpace(result)) { var splits = result.Split(' '); if (splits.Length < SkipWords + TakeWords) return; meta.MetaData[AttributeName] = string.Join(" ", splits.Skip(SkipWords).Take(TakeWords)); } }
public static void Extract(FilteredResult fr, ref KnxPort port) { port.MetaData["Room"] = ""; try { var button = fr.ComObjects.FirstOrDefault(row => row.ParentDevice.Product.Text.Contains("Push-button")); port.MetaData["Room"] = button.ParentDevice.Building.Name; } catch (Exception) { port.MetaData["Room"] = fr.ComObjects.Where(row => row.ParentDevice != null && row.ParentDevice.Building != null).Select(row => row.ParentDevice.Building.Name).FirstOrDefault() ?? ""; } }
public override void Extract(Filtering.FilteredResult fr, ref KnxPort meta) { base.Extract(fr, ref meta); var result = meta.MetaData[AttributeName]; if (!string.IsNullOrWhiteSpace(result)) { var idx = result.IndexOf(Mark, StringComparison.InvariantCultureIgnoreCase); if (idx >= 0) { if (UntilMark) meta.MetaData[AttributeName] = result.Substring(0, idx); else if (result.Length > idx + Mark.Length) meta.MetaData[AttributeName] = result.Substring(idx + Mark.Length); } } }
public KnxPort Extract(FilteredResult fr) { var port = new KnxPort() { GroupAddress = fr.GroupAddress.Ref.Value, MetaData = ConstructMetaData(fr), Type = fr.ComObjects.Any(row => row.Bits == 1) ? KnxType.Bool : KnxType.Int, MaxValue = fr.ComObjects.Select(row => 1 << row.Bits - 1 ).Min(), MinValue = 0 }; foreach (var extractor in Extractors.Where(row => !(row is ManualOverrideExtractor))) extractor.Extract(fr, ref port); DemoMeta.Extract(fr, ref port); foreach (var extractor in Extractors.Where(row => (row is ManualOverrideExtractor))) extractor.Extract(fr, ref port); return port; }
public override void Extract(Filtering.FilteredResult fr, ref KnxPort meta) { if (fr.GroupAddress.Ref.ToString() == GroupAddress) meta.MetaData[AttributeName] = Value; }
public abstract void Extract(FilteredResult fr, ref KnxPort meta);