public override object Execute(object arg, IAsyncTaskProgress progress)
        {
            EarlyWarningPluginArgument ewArg = (EarlyWarningPluginArgument)arg;
            DeviceDataSource           ds    = ewArg.DeviceDataSource;
            EarlyWarningResult         earlyWarningResult = ewArg.EarlyWarningResult;

            List <DataNode> dataNodes  = ewArg.DataNodes;
            IDataSource     dataSource = ds.DataSource;

            TreeDataSource treeDataSource = dataSource as TreeDataSource;

            if (treeDataSource == null ||
                treeDataSource.TreeNodes.Count < 1)
            {
                return(null);
            }
            foreach (DataNode dataNode in dataNodes)
            {
                //todo 此处dataNode.SensitiveData.CategoryName != "URL"为硬代码
                if (dataNode.SensitiveData.CategoryName != "URL")
                {
                    continue;
                }
                //todo 此处可以直接匹配,书签和历史记录
                foreach (TreeNode treeNode in treeDataSource.TreeNodes)
                {
                    string cmd = string.Format("{1} like '%{2}%'", treeNode.Items.DbTableName, SqliteDbFile.JsonColumnName, dataNode.SensitiveData.Value);
                    IEnumerable <dynamic> result = treeNode.Items.FilterByCmd <dynamic>(cmd);
                    earlyWarningResult.SqlDb.WriteResult(result, treeNode.Items.DbTableName, (Type)treeNode.Type);
                }
            }
            return(null);
        }
 public EarlyWarningPluginArgument(DeviceDataSource deviceDataSource, List <DataNode> dataNodes, EarlyWarningResult earlyWarningResult)
 {
     DeviceDataSource   = deviceDataSource;
     DataNodes          = dataNodes;
     EarlyWarningResult = earlyWarningResult;
 }