protected override void module_PropertyChanged(object sender, ModuleParameter e) { if (e.Name.StartsWith("Sensor.")) { DisplayProperty(e); } }
public static string WaitModuleParameterChange(Module mod, string parameter) { string val = ""; // TODO make it as a function _waitModuleParameterChange(mod, parname, timeout) ModuleParameter p = Service.Utility.ModuleParameterGet(mod, parameter); if (p != null) { long updated = DateTime.UtcNow.Ticks; //p.UpdateTime.Ticks - (TimeSpan.TicksPerSecond * 1); // System.Threading.Thread.Sleep(500); // int timeout = 0; int maxwait = 50; //(50 * 100ms ticks = 5000 ms) int tickfreq = 100; // while ((TimeSpan.FromTicks(p.UpdateTime.Ticks - updated).TotalSeconds > 1 /*&& (DateTime.UtcNow.Ticks - p.UpdateTime.Ticks > 5 * TimeSpan.TicksPerSecond)*/) && timeout++ < maxwait) { System.Threading.Thread.Sleep(tickfreq); } // if (timeout < maxwait) { val = p.Value; } } return(val); }
void ShowModuleScreen(Module m) { BaseWidget widget = null; // ModuleParameter widgetProperty = m.GetProperty("Widget.DisplayModule"); if (widgetProperty != null && !String.IsNullOrEmpty(widgetProperty.Value)) { switch (widgetProperty.Value) { case "homegenie/generic/light": case "homegenie/generic/switch": widget = new Switch(); break; case "homegenie/generic/dimmer": widget = new Dimmer(); break; case "homegenie/generic/colorlight": widget = new ColorLight(); break; case "weather/wunderground/conditions": widget = new Weather(); break; default: break; } } // if (widget == null) { if (m.DeviceType == "Dimmer" || m.DeviceType == "Light" || m.DeviceType == "Shutter" || m.DeviceType == "Siren") { widget = new Dimmer(); } else if (m.DeviceType == "Switch") { widget = new Switch(); } } // if (widget != null) { widget.CloseButtonClicked += (sender, args) => { this.Controls.Remove(widget); this.Controls.Add(currentWidget); widgetCycle.Start(); }; widget.Module = m; widget.Dock = DockStyle.Fill; // widgetCycle.Stop(); this.Controls.Remove(currentWidget); this.Controls.Add(widget); } }
public static string WaitModuleParameterChange(Module module, string parameterName) { string value = ""; // TODO make it as a function _waitModuleParameterChange(mod, parname, timeout) ModuleParameter parameter = Service.Utility.ModuleParameterGet(module, parameterName); if (parameter != null) { var updated = DateTime.UtcNow.Ticks; //p.UpdateTime.Ticks - (TimeSpan.TicksPerSecond * 1); // Thread.Sleep(500); // int timeout = 0; int maxWait = 50; //(50 * 100ms ticks = 5000 ms) int tickFrequency = 100; // while ((TimeSpan.FromTicks(parameter.UpdateTime.Ticks - updated).TotalSeconds > 1 /*&& (DateTime.UtcNow.Ticks - p.UpdateTime.Ticks > 5 * TimeSpan.TicksPerSecond)*/) && timeout++ < maxWait) { Thread.Sleep(tickFrequency); } // if (timeout < maxWait) { value = parameter.Value; } } return(value); }
/// <summary> /// Gets the specified module parameter. /// </summary> /// <param name="parameter">Parameter.</param> public ModuleParameter Parameter(string parameter) { ModuleParameter value = null; if (this.module != null) { int retry = 10; // 500ms max while (value == null && retry > 0) { value = Utility.ModuleParameterGet(this.module, parameter); // TODO: sometimes ModuleParameterGet returns null even if a parameter exists! // TODO: not sure why is this bug occurring (threading issue?), but it's solved by retrying getting the value // TODO: consider this just as a temporary work-around, further investigation required if (value == null) { Thread.Sleep(50); retry--; } } if (parameter == "Simulator.Sensor.DataFrequency" && value == null) { Console.WriteLine(this.Instance.Name, parameter, value); } // create parameter if does not exists if (value == null) { value = Utility.ModuleParameterSet(module, parameter, ""); } } return(value); }
private List <ModuleParameter> GetStoredProcedureParameters(TSqlProcedure proc) { var result = new List <ModuleParameter>(); foreach (var parameter in proc.Parameters) { var newParameter = new ModuleParameter() { Length = parameter.Length, Name = parameter.Name.Parts[2].Trim('@'), Output = parameter.IsOutput, Precision = parameter.Precision, Scale = parameter.Scale, StoreType = parameter.DataType.First().Name.Parts[0], Nullable = true, //TypeName = parameter.ObjectType.Name, }; result.Add(newParameter); } // Add parameter to hold the standard return value result.Add(new ModuleParameter() { Name = "returnValue", StoreType = "int", Output = true, Nullable = false, }); return(result); }
protected override void module_PropertyChanged(object sender, ModuleParameter e) { if (e.Name == "Meter.Watts" && e.DecimalValue > 0) { if (refreshDelay != null) { try { refreshDelay.Abort(); } catch { } refreshDelay = null; } refreshDelay = new Thread(() => { Thread.Sleep(8000); Refresh(); }); refreshDelay.Start(); // UiHelper.SafeInvoke(labelStatus, () => { labelStatus.ForeColor = Color.Cyan; labelStatus.Text = Math.Round(e.DecimalValue, 1) + "W"; }); } else { Refresh(); } }
public int Create(ModuleParameter parameters) { var viewModel = MapFromClientParameters(parameters); var entity = viewModel.MapTo <Module>(); var savedEntity = MasterFileService.Add(entity); return(savedEntity.Id); }
public static SqlDbType DbType(this ModuleParameter storedProcedureParameter) { if (storedProcedureParameter is null) { throw new ArgumentNullException(nameof(storedProcedureParameter)); } return(GetSqlDbType(storedProcedureParameter.StoreType)); }
public static Type ClrType(this ModuleParameter storedProcedureParameter, bool asMethodParameter = false) { if (storedProcedureParameter is null) { throw new ArgumentNullException(nameof(storedProcedureParameter)); } return(GetClrType(storedProcedureParameter.StoreType, storedProcedureParameter.Nullable, asMethodParameter)); }
protected virtual List <ModuleParameter> GetParameters(SqlConnection connection, string schema, string name) { var dtResult = new DataTable(); var result = new List <ModuleParameter>(); // Validate this - based on https://stackoverflow.com/questions/20115881/how-to-get-stored-procedure-parameters-details/41330791 var sql = $@" SELECT 'Parameter' = p.name, 'Type' = COALESCE(type_name(p.system_type_id), type_name(p.user_type_id)), 'Length' = CAST(p.max_length AS INT), 'Precision' = CAST(case when type_name(p.system_type_id) = 'uniqueidentifier' then p.precision else OdbcPrec(p.system_type_id, p.max_length, p.precision) end AS INT), 'Scale' = CAST(OdbcScale(p.system_type_id, p.scale) AS INT), 'Order' = CAST(parameter_id AS INT), p.is_output AS output, 'TypeName' = QUOTENAME(SCHEMA_NAME(t.schema_id)) + '.' + QUOTENAME(TYPE_NAME(p.user_type_id)) from sys.parameters p LEFT JOIN sys.table_types t ON t.user_type_id = p.user_type_id where object_id = object_id('{schema}.{name}') ORDER BY parameter_id;"; var adapter = new SqlDataAdapter { SelectCommand = new SqlCommand(sql, connection) }; adapter.Fill(dtResult); foreach (DataRow par in dtResult.Rows) { var parameterName = par["Parameter"].ToString(); if (parameterName.StartsWith("@", StringComparison.Ordinal)) { parameterName = parameterName.Substring(1); } var parameter = new ModuleParameter() { Name = parameterName, StoreType = par["Type"].ToString(), Length = par["Length"].GetType() == typeof(DBNull) ? (int?)null : int.Parse(par["Length"].ToString()), Precision = par["Precision"].GetType() == typeof(DBNull) ? (int?)null : int.Parse(par["Precision"].ToString()), Scale = par["Scale"].GetType() == typeof(DBNull) ? (int?)null : int.Parse(par["Scale"].ToString()), Output = (bool)par["output"], Nullable = true, TypeName = par["TypeName"].ToString(), }; result.Add(parameter); } return(result); }
private void GenerateParameter(ModuleParameter parameter) { _sb.AppendLine("new SqlParameter"); _sb.AppendLine("{"); var sqlDbType = parameter.DbType(); using (_sb.Indent()) { _sb.AppendLine($"ParameterName = \"{parameter.Name}\","); if (_scaleTypes.Contains(sqlDbType)) { if (parameter.Precision > 0) { _sb.AppendLine($"Precision = {parameter.Precision},"); } if (parameter.Scale > 0) { _sb.AppendLine($"Scale = {parameter.Scale},"); } } if (_lengthRequiredTypes.Contains(sqlDbType)) { _sb.AppendLine($"Size = {parameter.Length},"); } if (!parameter.IsReturnValue) { if (parameter.Output) { _sb.AppendLine("Direction = System.Data.ParameterDirection.InputOutput,"); AppendValue(parameter); } else { AppendValue(parameter); } } else { _sb.AppendLine("Direction = System.Data.ParameterDirection.Output,"); } _sb.AppendLine($"SqlDbType = System.Data.SqlDbType.{sqlDbType},"); if (sqlDbType == System.Data.SqlDbType.Structured) { _sb.AppendLine($"TypeName = \"{parameter.TypeName}\","); } } _sb.Append("}"); }
public NetHelper SignalModuleEvent(string hgaddress, ModuleHelper m, ModuleParameter p) { string eventrouteurl = "http://" + hgaddress + "/api/HomeAutomation.HomeGenie/Interconnection/Events.Push/" + _homegenie.GetHttpServicePort(); // propagate event to remote hg endpoint this.WebService(eventrouteurl) .Put(JsonConvert.SerializeObject(new ModuleEvent(m.SelectedModules[0], p))) .CallAsync(); return(this); }
private void AppendValue(ModuleParameter parameter) { var value = parameter.Nullable ? $"{parameter.Name} ?? Convert.DBNull" : $"{parameter.Name}"; if (parameter.Output) { value = parameter.Nullable ? $"{parameter.Name}?._value ?? Convert.DBNull" : $"{parameter.Name}?._value"; } _sb.AppendLine($"Value = {value},"); }
public static ModuleParameter ModuleParameterSet(TsList<ModuleParameter> parameters, string propertyName, object propertyValue) { var parameter = parameters.Find(mpar => mpar.Name == propertyName); if (parameter == null) { parameter = new ModuleParameter() { Name = propertyName }; parameters.Add(parameter); } parameter.SetData(propertyValue); return parameter; }
private bool IsValidControlModule(Module m) { bool isValid = false; ModuleParameter widget = m.GetProperty("Widget.DisplayModule"); if (m.DeviceType != "Program" || (widget != null && !String.IsNullOrEmpty(widget.Value) && widget.Value != "homegenie/generic/program")) { isValid = true; } return(isValid); }
// public bool SendMessage(string recipients, string subject, string messagetext) { this.mailfrom = ""; ModuleParameter systemparam = _homegenie.Parameters.Find(delegate(ModuleParameter mp) { return(mp.Name == "Messaging.Email.Sender"); }); if (systemparam != null && systemparam.Value != "") { this.mailfrom = systemparam.Value; } return(SendMessage(this.mailfrom, recipients, subject, messagetext)); }
private void DisplayProperty(ModuleParameter mp) { UiHelper.SafeInvoke(this, () => { string name = mp.Name.Substring(mp.Name.LastIndexOf(".") + 1); labelName.Text = module.Name; labelField.Text = name; labelValue.Text = Math.Round(mp.DecimalValue, 1).ToString(); currentProperty++; }); }
private void AppendValue(ModuleParameter parameter) { var value = parameter.Nullable ? $"{Code.Identifier(parameter.Name)} ?? Convert.DBNull" : $"{Code.Identifier(parameter.Name)}"; if (parameter.Output) { value = parameter.Nullable ? $"{Code.Identifier(parameter.Name)}?._value ?? Convert.DBNull" : $"{Code.Identifier(parameter.Name)}?._value"; } Sb.AppendLine($"Value = {value},"); }
private List <ModuleParameter> GetFunctionParameters(SqlConnection connection, long objectId) { var dtResult = new DataTable(); var result = new List <ModuleParameter>(); // Validate this - based on https://stackoverflow.com/questions/20115881/how-to-get-stored-procedure-parameters-details/41330791 var sql = $@" SELECT 'Parameter' = p.name, 'Type' = type_name(p.system_type_id), 'Length' = CAST(p.max_length AS INT), 'Precision' = CAST(case when type_name(p.system_type_id) = 'uniqueidentifier' then p.precision else OdbcPrec(p.system_type_id, p.max_length, p.precision) end AS INT), 'Scale' = CAST(OdbcScale(p.system_type_id, p.scale) AS INT), 'Order' = CAST(parameter_id AS INT), p.is_output AS Output from sys.parameters p where object_id = {objectId} ORDER BY parameter_id;"; var adapter = new SqlDataAdapter { SelectCommand = new SqlCommand(sql, connection) }; adapter.Fill(dtResult); foreach (DataRow par in dtResult.Rows) { var parameterName = par["Parameter"].ToString(); if (parameterName.StartsWith("@", StringComparison.Ordinal)) { parameterName = parameterName.Substring(1); } var parameter = new ModuleParameter() { Name = parameterName, StoreType = par["Type"].ToString(), Length = par["Length"].GetType() == typeof(DBNull) ? (int?)null : int.Parse(par["Length"].ToString()), Precision = par["Precision"].GetType() == typeof(DBNull) ? (int?)null : int.Parse(par["Precision"].ToString()), Scale = par["Scale"].GetType() == typeof(DBNull) ? (int?)null : int.Parse(par["Scale"].ToString()), Output = (bool)par["output"], Nullable = true, }; result.Add(parameter); } return(result); }
/// <summary> /// Get the specified parameterName from the Store. /// </summary> /// <param name="parameterName">Parameter name.</param> public ModuleParameter Get(string parameterName) { var store = GetStore(storeName); ModuleParameter value = null; value = Service.Utility.ModuleParameterGet(store.Data, parameterName); // create parameter if does not exists if (value == null) { value = Service.Utility.ModuleParameterSet(store.Data, parameterName, ""); } return(value); }
private void eventClient_EventReceived(object sender, ServerSentEventReceivedEventArgs e) { Event eventObject = JsonConvert.DeserializeObject <Event> (e.Message.Data); Module module = GetModule(eventObject.Domain, eventObject.Source); if (module != null) { ModuleParameter property = module.GetProperty(eventObject.Property); if (property != null) { module.SetProperty(property, eventObject.Value, eventObject.Timestamp); } } }
/// <summary> /// 七、生成IBaseService /// </summary> private static void GenerationIBaseService() { Print("开始创建IBaseService"); ModuleParameter moduleParameter = new ModuleParameter { FileName = "IBaseService", Parameter = param, SavePath = Methods.GetSlnPath + "\\" + IServiceProjectName + "\\Base", TempName = "TempIBaseService" }; Methods.CreateModules(moduleParameter); AddTask(IServiceProjectName); Print("IBaseService创建成功"); }
public ActionResult Update(ModuleParameter parameters) { var viewModel = MapFromClientParameters(parameters); byte[] lastModified = null; if (ModelState.IsValid) { var entity = MasterFileService.GetById(viewModel.SharedViewModel.Id); var mappedEntity = viewModel.MapPropertiesToInstance(entity); lastModified = MasterFileService.Update(mappedEntity).LastModified; } return(Json(new { Error = string.Empty, Data = new { LastModified = lastModified } }, JsonRequestBehavior.AllowGet)); }
//TODO: add autodoc comment (HG Event forwarding) public NetHelper SignalModuleEvent(string hgAddress, ModuleHelper module, ModuleParameter parameter) { string eventRouteUrl = "http://" + hgAddress + "/api/HomeAutomation.HomeGenie/Interconnection/Events.Push/" + homegenie.GetHttpServicePort(); // propagate event to remote hg endpoint this.WebService(eventRouteUrl) .Put(JsonConvert.SerializeObject( new ModuleEvent(module.SelectedModules[0], parameter), new JsonSerializerSettings() { Culture = System.Globalization.CultureInfo.InvariantCulture } )) .CallAsync(); return(this); }
/// <summary> /// 十、生成Service /// </summary> private static void GenerationService() { Print("开始创建Service"); ModuleParameter moduleParameter = new ModuleParameter { FileSuffix = "Service", Parameter = param, SavePath = Methods.GetSlnPath + "\\" + ServiceProjectName, Tables = db.DbMaintenance.GetTableInfoList().Select(it => it.Name).ToList(), TempName = "TempService" }; Methods.CreateModules(moduleParameter); AddTask(ServiceProjectName); Print("Service创建成功"); }
// TODO: add autodoc comment (HG Event forwarding) public NetHelper SignalModuleEvent(string hgAddress, ModuleHelper module, ModuleParameter parameter) { var eventRouteUrl = "http://" + hgAddress + "/api/" + Domains.HomeAutomation_HomeGenie + "/Interconnection/Events.Push/" + _homegenie.GetHttpServicePort(); // propagate event to remote hg endpoint Utility.RunAsyncTask(() => { WebService(eventRouteUrl) .Put(JsonConvert.SerializeObject(new ModuleEvent(module.Instance, parameter), new JsonSerializerSettings() { Culture = System.Globalization.CultureInfo.InvariantCulture })) .Call(); }); return(this); }
/// <summary> /// 五、生成BaseRepository /// </summary> private static void GenerationBaseRepository() { Print("开始创建BaseRepository"); ModuleParameter moduleParameter = new ModuleParameter { FileName = "BaseRepository", Parameter = param, SavePath = Methods.GetSlnPath + "\\" + RepositoryProjectName + "\\Base", TempName = "TempBaseRepository" }; Methods.CreateModules(moduleParameter); AddTask(RepositoryProjectName); Print("BaseRepository创建成功"); }
/// <summary> /// Gets the system settings parameter with the specified name. /// </summary> /// <param name="parameter">Parameter.</param> public ModuleParameter Parameter(string parameter) { var systemParameter = homegenie.Parameters.Find(delegate(ModuleParameter mp) { return(mp.Name == parameter); }); // create parameter if does not exists if (systemParameter == null) { systemParameter = new ModuleParameter() { Name = parameter }; homegenie.Parameters.Add(systemParameter); } return(systemParameter); }
public static string WaitModuleParameterChange(Module module, string parameterName) { string value = ""; // TODO make it as a function _waitModuleParameterChange(mod, parname, timeout) ModuleParameter parameter = null; var start = DateTime.UtcNow.Ticks; var now = start; int maxSecWait = 10; // 10 seconds max wait while (parameter == null && TimeSpan.FromTicks(now - start).TotalSeconds <= maxSecWait) { // wait for maxSecWait seconds if the parameterName doesn't exit yet - it migt not have been initialized yet // classes that use encryption are require many messages to be exchanged now = DateTime.UtcNow.Ticks; parameter = Service.Utility.ModuleParameterGet(module, parameterName); if (parameter == null) { //Console.WriteLine("Thread - " + System.Threading.Thread.CurrentThread.ManagedThreadId + " Waiting .5s for " + parameterName + ". Waited " + TimeSpan.FromTicks(now - start).TotalSeconds); Thread.Sleep(500); } } if (parameter != null) { var updated = DateTime.UtcNow.Ticks; //p.UpdateTime.Ticks - (TimeSpan.TicksPerSecond * 1); // Thread.Sleep(500); // int timeout = 0; int maxWait = 50; //(50 * 100ms ticks = 5000 ms) int tickFrequency = 100; // // I don't think that it will ever get into the while loop because the "updated" was just reset // what's the change the "parameter.UpdateTime.Ticks" was updated after "updated" was reset // we'll accept 1 second old values as still current values while ((TimeSpan.FromTicks(updated - parameter.UpdateTime.Ticks).TotalSeconds > 1 /*&& (DateTime.UtcNow.Ticks - p.UpdateTime.Ticks > 5 * TimeSpan.TicksPerSecond)*/) && timeout++ < maxWait) { Thread.Sleep(tickFrequency); } // if (timeout < maxWait) { value = parameter.Value; } } return(value); }