提交 3bb0addf 编写于 作者: cdy816's avatar cdy816

日常更新

上级 49f54f90
using System;
using System.Collections.Generic;
namespace Cdy.Tag.Driver
{
......@@ -47,6 +48,20 @@ namespace Cdy.Tag.Driver
/// <returns></returns>
bool Stop();
/// <summary>
///
/// </summary>
/// <param name="database"></param>
/// <returns></returns>
Dictionary<string,string> GetConfig(string database);
/// <summary>
///
/// </summary>
/// <param name="database"></param>
/// <param name="config"></param>
void UpdateConfig(string database, Dictionary<string, string> config);
#endregion ...Methods...
#region ... Interfaces ...
......
......@@ -8,6 +8,7 @@
//==============================================================
using System;
using System.Collections.Generic;
using System.Collections.Specialized;
using System.Text;
namespace Cdy.Tag
......@@ -48,6 +49,29 @@ namespace Cdy.Tag
#endregion ...Constructor...
#region ... Properties ...
/// <summary>
///
/// </summary>
public string AppPath
{
get
{
return mAppPath;
}
}
/// <summary>
///
/// </summary>
public string DataPath
{
get
{
return mDataPath;
}
}
#endregion ...Properties...
......@@ -93,7 +117,30 @@ namespace Cdy.Tag
return System.IO.Path.Combine(mDataPath,databaseName, path);
}
/// <summary>
///
/// </summary>
/// <param name="database"></param>
/// <returns></returns>
public string GetDatabasePath(string database)
{
return System.IO.Path.Combine(mDataPath, database);
}
/// <summary>
///
/// </summary>
/// <param name="file"></param>
/// <returns></returns>
public string GetApplicationFilePath(params string[] file)
{
string spath = mAppPath;
foreach(var vv in file)
{
spath = System.IO.Path.Combine(spath, vv);
}
return spath;
}
#endregion ...Methods...
......
......@@ -14,6 +14,7 @@ using System.Net.Http;
using System.Text;
using System.Linq;
using Cdy.Tag;
using System.Data.Common;
namespace DBDevelopClientApi
{
......@@ -1264,6 +1265,100 @@ namespace DBDevelopClientApi
return re;
}
/// <summary>
///
/// </summary>
/// <param name="database"></param>
/// <returns></returns>
public int GetRealServerPort(string database)
{
if (mCurrentClient != null && !string.IsNullOrEmpty(mLoginId))
{
var res = mCurrentClient.GetRealDataServerPort(new DBDevelopService.DatabasesRequest() { Database = database, LoginId = mLoginId });
return res.Value;
}
else
{
return -1;
}
}
/// <summary>
///
/// </summary>
/// <param name="database"></param>
/// <param name="port"></param>
/// <returns></returns>
public bool SetRealServerPort(string database,int port)
{
if (mCurrentClient != null && !string.IsNullOrEmpty(mLoginId))
{
var res = mCurrentClient.SetRealDataServerPort(new DBDevelopService.SetRealDataServerPortRequest() { Database = database, LoginId = mLoginId,Port=port });
return res.Result;
}
else
{
return false;
}
}
/// <summary>
/// 获取驱动配置
/// </summary>
/// <param name="database"></param>
/// <param name="driver"></param>
/// <returns></returns>
public Dictionary<string,string> GetDriverSetting(string database,string driver)
{
Dictionary<string, string> re = new Dictionary<string, string>();
if (mCurrentClient != null && !string.IsNullOrEmpty(mLoginId))
{
var res = mCurrentClient.GetDriverSetting(new DBDevelopService.GetDriverSettingRequest() { Database = database, LoginId = mLoginId });
var sval = res.SettingString;
if(!string.IsNullOrEmpty(sval))
{
string[] ss = sval.Split(new char[] { ',' });
foreach (var vv in ss)
{
string[] svv = vv.Split(new char[] { ':' });
if (!re.ContainsKey(svv[0]))
{
re.Add(svv[0], svv[1]);
}
}
}
}
return re;
}
/// <summary>
/// 更新驱动配置
/// </summary>
/// <param name="database"></param>
/// <param name="driver"></param>
/// <param name="settings"></param>
/// <returns></returns>
public bool UpdateDriverSetting(string database,string driver,Dictionary<string,string> settings)
{
if (mCurrentClient != null && !string.IsNullOrEmpty(mLoginId))
{
if(settings!=null&&settings.Count>0)
{
StringBuilder sb = new StringBuilder();
foreach (var vv in settings)
{
sb.Append(vv.Key + ":" + vv.Value + ",");
}
sb.Length = sb.Length > 0 ? sb.Length - 1 : sb.Length;
return mCurrentClient.UpdateDrvierSetting(new DBDevelopService.UpdateDrvierSettingRequest() { Database = database, Driver = driver, LoginId = mLoginId, SettingString = sb.ToString() }).Result;
}
}
return false;
}
/// <summary>
///
/// </summary>
......
......@@ -206,6 +206,7 @@ message GetDriverSettingRequest
{
string LoginId=1;
string Driver=2;
string Database=3;
}
//
......@@ -213,14 +214,14 @@ message GetDriverSettingReplay
{
bool Result =1;
string ErroMessage=2;
string Drivers=3;
string SettingString=4;
string SettingString=3;
}
message UpdateDrvierSettingRequest
{
string LoginId=1;
string Driver=2;
string Database=3;
string SettingString=4;
}
......
......@@ -206,6 +206,7 @@ message GetDriverSettingRequest
{
string LoginId=1;
string Driver=2;
string Database=3;
}
//
......@@ -213,14 +214,14 @@ message GetDriverSettingReplay
{
bool Result =1;
string ErroMessage=2;
string Drivers=3;
string SettingString=4;
string SettingString=3;
}
message UpdateDrvierSettingRequest
{
string LoginId=1;
string Driver=2;
string Database=3;
string SettingString=4;
}
......
......@@ -5,6 +5,9 @@ using System.Threading.Tasks;
using Grpc.Core;
using Microsoft.Extensions.Logging;
using Cdy.Tag;
using System.Text;
using System.Data.Common;
namespace DBDevelopService
{
public class DevelopServerService : DevelopServer.DevelopServerBase
......@@ -1971,5 +1974,71 @@ namespace DBDevelopService
return Task.FromResult(new IntResultReplay() { Result = false });
}
/// <summary>
///
/// </summary>
/// <param name="request"></param>
/// <param name="context"></param>
/// <returns></returns>
public override Task<GetDriverSettingReplay> GetDriverSetting(GetDriverSettingRequest request, ServerCallContext context)
{
if (!CheckLoginId(request.LoginId, request.Database))
{
return Task.FromResult(new GetDriverSettingReplay() { Result = false });
}
if(DriverManager.Manager.Drivers.ContainsKey(request.Driver))
{
var re = new GetDriverSettingReplay() { Result = true };
var dd = DriverManager.Manager.Drivers[request.Driver];
var config = dd.GetConfig(request.Database);
if(config!=null)
{
StringBuilder sb = new StringBuilder();
foreach(var vv in config)
{
sb.Append(vv.Key + ":" + vv.Value + ",");
}
sb.Length = sb.Length > 0 ? sb.Length - 1 : sb.Length;
re.SettingString = sb.ToString();
}
return Task.FromResult(re);
}
return Task.FromResult(new GetDriverSettingReplay() { Result = false });
}
/// <summary>
///
/// </summary>
/// <param name="request"></param>
/// <param name="context"></param>
/// <returns></returns>
public override Task<BoolResultReplay> UpdateDrvierSetting(UpdateDrvierSettingRequest request, ServerCallContext context)
{
if (!CheckLoginId(request.LoginId, request.Database))
{
return Task.FromResult(new BoolResultReplay() { Result = false });
}
if (DriverManager.Manager.Drivers.ContainsKey(request.Driver))
{
var dd = DriverManager.Manager.Drivers[request.Driver];
string sval = request.SettingString;
if(!string.IsNullOrEmpty(sval))
{
Dictionary<string, string> dtmp = new Dictionary<string, string>();
string[] ss = sval.Split(new char[] { ',' });
foreach(var vv in ss)
{
string[] svv = vv.Split(new char[] { ':' });
if(!dtmp.ContainsKey(svv[0]))
{
dtmp.Add(svv[0], svv[1]);
}
}
dd.UpdateConfig(request.Database, dtmp);
}
}
return base.UpdateDrvierSetting(request, context);
}
}
}
......@@ -771,6 +771,15 @@ namespace DBInStudio.Desktop.Properties {
}
}
/// <summary>
/// 查找类似 Setting 的本地化字符串。
/// </summary>
internal static string Setting {
get {
return ResourceManager.GetString("Setting", resourceCulture);
}
}
/// <summary>
/// 查找类似 Slope zone 的本地化字符串。
/// </summary>
......
......@@ -357,6 +357,9 @@
<data name="SetPasswordSeccussful" xml:space="preserve">
<value>set password seccussfull.</value>
</data>
<data name="Setting" xml:space="preserve">
<value>Setting</value>
</data>
<data name="SlopeAreaValue" xml:space="preserve">
<value>Slope zone</value>
</data>
......
......@@ -357,6 +357,9 @@
<data name="SetPasswordSeccussful" xml:space="preserve">
<value>设置密码成功.</value>
</data>
<data name="Setting" xml:space="preserve">
<value>设置</value>
</data>
<data name="SlopeAreaValue" xml:space="preserve">
<value>斜率区间</value>
</data>
......
//==============================================================
// Copyright (C) 2020 Inc. All rights reserved.
//
//==============================================================
// Create by 种道洋 at 2020/9/15 15:36:01.
// Version 1.0
// 种道洋
//==============================================================
using DBDevelopClientApi;
using DBInStudio.Desktop.ViewModel;
using Google.Protobuf.Reflection;
using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Text;
namespace DBInStudio.Desktop
{
/// <summary>
///
/// </summary>
public class DatabaseSettingViewModel: UserTreeItemViewModel
{
#region ... Variables ...
private int mServerPort;
#endregion ...Variables...
#region ... Events ...
#endregion ...Events...
#region ... Constructor...
public DatabaseSettingViewModel()
{
Name = Res.Get("Setting");
}
#endregion ...Constructor...
#region ... Properties ...
/// <summary>
///
/// </summary>
public int ServerPort
{
get
{
return mServerPort;
}
set
{
if (mServerPort != value)
{
mServerPort = value;
OnPropertyChanged("ServerPort");
}
}
}
#endregion ...Properties...
#region ... Methods ...
/// <summary>
///
/// </summary>
/// <param name="model"></param>
/// <returns></returns>
public override ViewModelBase GetModel(ViewModelBase model)
{
if (model is DatabaseSettingConfigViewModel)
{
(model as DatabaseSettingConfigViewModel).Database = this.Database;
return model;
}
else
{
return new DatabaseSettingConfigViewModel() { Database = this.Database };
}
}
#endregion ...Methods...
#region ... Interfaces ...
#endregion ...Interfaces...
}
/// <summary>
///
/// </summary>
public class DatabaseSettingConfigViewModel : ViewModelBase, IModeSwitch
{
#region ... Variables ...
private int mServerPort = 0;
private ObservableCollection<DriverSetViewModel> mChildren = new ObservableCollection<DriverSetViewModel>();
#endregion ...Variables...
#region ... Events ...
#endregion ...Events...
#region ... Constructor...
#endregion ...Constructor...
#region ... Properties ...
/// <summary>
///
/// </summary>
public ObservableCollection<DriverSetViewModel> Children
{
get
{
return mChildren;
}
}
/// <summary>
///
/// </summary>
public string Database { get; set; }
/// <summary>
///
/// </summary>
public int ServerPort
{
get
{
return mServerPort;
}
set
{
if (mServerPort != value)
{
if(DevelopServiceHelper.Helper.SetRealServerPort(this.Database,value))
{
mServerPort = value;
}
OnPropertyChanged("ServerPort");
}
}
}
#endregion ...Properties...
#region ... Methods ...
/// <summary>
///
/// </summary>
private void Init()
{
mServerPort = DevelopServiceHelper.Helper.GetRealServerPort(this.Database);
OnPropertyChanged("ServerPort");
var dds = DevelopServiceHelper.Helper.GetRegistorDrivers(this.Database).Keys;
mChildren.Clear();
foreach (var vv in dds)
{
var ss = DevelopServiceHelper.Helper.GetDriverSetting(this.Database, vv);
if (ss != null && ss.Count > 0)
{
DriverSetViewModel dsm = new DriverSetViewModel() { Name = vv };
dsm.Init(ss);
mChildren.Add(dsm);
}
}
}
#endregion ...Methods...
#region ... Interfaces ...
#endregion ...Interfaces...
/// <summary>
///
/// </summary>
public void Active()
{
Init();
}
/// <summary>
///
/// </summary>
public void DeActive()
{
foreach(var vv in mChildren)
{
var item = vv.ToDictionary();
DevelopServiceHelper.Helper.UpdateDriverSetting(this.Database,vv.Name, item);
}
}
}
/// <summary>
///
/// </summary>
public class DriverSetViewModel : ViewModelBase
{
#region ... Variables ...
private string mName;
private ObservableCollection<DriverSettingItem> mChildren = new ObservableCollection<DriverSettingItem>();
#endregion ...Variables...
#region ... Events ...
#endregion ...Events...
#region ... Constructor...
#endregion ...Constructor...
#region ... Properties ...
/// <summary>
///
/// </summary>
public string Name
{
get
{
return mName;
}
set
{
if (mName != value)
{
mName = value;
OnPropertyChanged("Name");
}
}
}
/// <summary>
///
/// </summary>
public ObservableCollection<DriverSettingItem> Children
{
get
{
return mChildren;
}
}
#endregion ...Properties...
#region ... Methods ...
/// <summary>
///
/// </summary>
/// <param name="vals"></param>
public void Init(Dictionary<string,string> vals)
{
mChildren.Clear();
foreach(var vv in vals)
{
mChildren.Add(new DriverSettingItem() { Name = vv.Key, Value = vv.Value });
}
}
/// <summary>
///
/// </summary>
/// <returns></returns>
public Dictionary<string,string> ToDictionary()
{
Dictionary<string, string> dtmp = new Dictionary<string, string>();
foreach(var vv in mChildren)
{
dtmp.Add(vv.Name, vv.Value);
}
return dtmp;
}
#endregion ...Methods...
#region ... Interfaces ...
#endregion ...Interfaces...
}
public class DriverSettingItem : ViewModelBase
{
#region ... Variables ...
private string mValue;
#endregion ...Variables...
#region ... Events ...
#endregion ...Events...
#region ... Constructor...
#endregion ...Constructor...
#region ... Properties ...
/// <summary>
///
/// </summary>
public string Name { get; set; }
/// <summary>
///
/// </summary>
public string Value
{
get
{
return mValue;
}
set
{
if (mValue != value)
{
mValue = value;
OnPropertyChanged("Value");
}
}
}
#endregion ...Properties...
#region ... Methods ...
#endregion ...Methods...
#region ... Interfaces ...
#endregion ...Interfaces...
}
}
......@@ -653,9 +653,11 @@ namespace DBInStudio.Desktop
this.TagGroup.Add(sec);
dbitem.Children.Add(mRootTagGroupModel);
mRootTagGroupModel.Database = mDatabase;
dbitem.Children.Add(securityModel);
securityModel.Database = mDatabase;
securityModel.Init();
Task.Run(() => {
TagViewModel.Drivers = DevelopServiceHelper.Helper.GetRegistorDrivers(mDatabase);
QueryGroups();
......
......@@ -297,15 +297,35 @@ namespace SimDriver
return true;
}
/// <summary>
///
/// </summary>
/// <param name="database"></param>
/// <returns></returns>
public Dictionary<string, string> GetConfig(string database)
{
return null;
}
/// <summary>
///
/// </summary>
/// <param name="database"></param>
/// <param name="config"></param>
public void UpdateConfig(string database, Dictionary<string, string> config)
{
}
#endregion ...Methods...
#region ... Interfaces ...
#endregion ...Interfaces...
}
}
using Cdy.Tag.Driver;
using Cdy.Tag;
using Cdy.Tag.Driver;
using System;
using System.Collections.Generic;
using System.Reflection;
......@@ -33,6 +34,16 @@ namespace SpiderDriver
string spath = System.IO.Path.Combine(System.IO.Path.GetDirectoryName(sfileName), "Config");
sfileName = System.IO.Path.Combine(spath, "SpiderDriver.cfg");
var dbpath = ServiceLocator.Locator.Resolve("DatabaseLocation");
if(dbpath!=null)
{
var sdp = System.IO.Path.Combine(dbpath.ToString(), "SpiderDriver.cfg");
if(System.IO.File.Exists(sdp))
{
sfileName = sdp;
}
}
if (System.IO.File.Exists(sfileName))
{
XElement xe = XElement.Load(sfileName);
......@@ -52,6 +63,28 @@ namespace SpiderDriver
}
}
/// <summary>
///
/// </summary>
public void Save()
{
Save(PathHelper.helper.GetApplicationFilePath("Config", "SpiderDriver.cfg"));
}
/// <summary>
///
/// </summary>
/// <param name="file"></param>
public void Save(string file)
{
XElement xx = new XElement("Config");
XElement xe = new XElement("Server");
xe.SetAttributeValue("StartPort", mPort);
xe.SetAttributeValue("EndPort", mEndPort);
xx.Add(xe);
xx.Save(file);
}
/// <summary>
///
/// </summary>
......@@ -91,5 +124,25 @@ namespace SpiderDriver
vvs.Stop();
return true;
}
/// <summary>
///
/// </summary>
/// <param name="database"></param>
/// <returns></returns>
public Dictionary<string, string> GetConfig(string database)
{
throw new NotImplementedException();
}
/// <summary>
///
/// </summary>
/// <param name="database"></param>
/// <param name="config"></param>
public void UpdateConfig(string database, Dictionary<string, string> config)
{
throw new NotImplementedException();
}
}
}
......@@ -376,6 +376,26 @@ namespace DBRuntime.Proxy
resetEvent.Set();
return true;
}
/// <summary>
///
/// </summary>
/// <param name="database"></param>
/// <returns></returns>
public Dictionary<string, string> GetConfig(string database)
{
return null;
}
/// <summary>
///
/// </summary>
/// <param name="database"></param>
/// <param name="config"></param>
public void UpdateConfig(string database, Dictionary<string, string> config)
{
}
}
public static class ApiClientExtends
......
......@@ -130,10 +130,10 @@ namespace Cdy.Tag
}
/// <summary>
/// 数据库存访路径
/// </summary>
public string DatabasePath { get; set; }
///// <summary>
///// 数据库存访路径
///// </summary>
//public string DatabasePath { get; set; }
/// <summary>
///
......@@ -271,7 +271,7 @@ namespace Cdy.Tag
if (System.IO.Path.IsPathRooted(database))
{
this.mDatabaseName = System.IO.Path.GetFileNameWithoutExtension(database);
this.DatabasePath = System.IO.Path.GetDirectoryName(database);
//this.DatabasePath = System.IO.Path.GetDirectoryName(database);
}
else
{
......@@ -295,6 +295,8 @@ namespace Cdy.Tag
ServiceLocator.Locator.Registor<IRealTagConsumer>(realEnginer);
ServiceLocator.Locator.Registor<IRealTagProduct>(realEnginer);
ServiceLocator.Locator.Registor("DatabaseLocation", PathHelper.helper.GetDatabasePath(mDatabase.Name));
hisEnginer = new HisEnginer2(mHisDatabase, realEnginer);
hisEnginer.MergeMemoryTime = mHisDatabase.Setting.DataBlockDuration * 60;
hisEnginer.LogManager = new LogManager2() { Database = mDatabaseName,Parent=hisEnginer };
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册