Exemple #1
0
        /// <summary>
        /// Executes the specified domains.
        /// </summary>
        /// <param name="domains">The domains.</param>
        /// <param name="args">The arguments.</param>
        /// <param name="callback">The callback.</param>
        /// <returns></returns>
        public static ExecutedResult Execute(Domains domains, IAddonInteractive interactive)
        {
            var r = default(ExecutedResult);

            lock (((ICollection)s_container).SyncRoot)
            {
                switch (s_container.Count)
                {
                case 0:
                    r = ExecutedResult.NoAddon;
                    break;

                case 1:
                {
                    var m    = s_container[0];
                    var diff = Diff.Compare(m.Metadata.Domains, domains.Keywords);
                    if (diff != 0.0 && Toggle[m.Metadata.Name])
                    {
                        var result = m.CreateExport().Value.Execute(domains, interactive);
                        r = result.HasValue ? (result.Value ? ExecutedResult.Success : ExecutedResult.Failure) : ExecutedResult.Disabled;
                    }
                    else
                    {
                        r = ExecutedResult.NoMatched;
                    }
                    break;
                }

                default:
                {
                    var top_v = 0.0;
                    var a     = default(ExportFactory <IAddonContract, AddonDefinition>);
                    foreach (var m in s_container)
                    {
                        var diff = Diff.Compare(m.Metadata.Domains, domains.Keywords);
                        // Debug.WriteLine("N: " + m.Metadata.Name + " | " + diff);
                        if (diff >= top_v && Toggle[m.Metadata.Name])
                        {
                            top_v = diff;
                            a     = m;
                        }
                    }
                    if (top_v == 0.0)
                    {
                        r = ExecutedResult.NoMatched;
                    }
                    else if (Toggle[a.Metadata.Name])
                    {
                        //Found the highest similar object
                        var result = a.CreateExport().Value.Execute(domains, interactive);
                        r = result.HasValue ? (result.Value ? ExecutedResult.Success : ExecutedResult.Failure) : ExecutedResult.Disabled;
                    }
                    break;
                }
                }
            }
            return(r);
        }
Exemple #2
0
 /// <summary>
 /// Executes the action.
 /// </summary>
 /// <param name="args">The arguments.</param>
 /// <param name="callback">The callback.</param>
 /// <returns></returns>
 protected abstract bool ExecuteImpl(Domains domains, IAddonInteractive interactive);
Exemple #3
0
 public bool?Execute(Domains domains, IAddonInteractive interactive)
 {
     return(false);
 }
Exemple #4
0
 bool?IAddonContract.Execute(Domains domains, IAddonInteractive interactive)
 {
     return(this.ExecuteImpl(domains, interactive));
 }
Exemple #5
0
 protected override bool ExecuteImpl(Domains domains, IAddonInteractive interactive)
 {
     interactive.WriteText("Mock Addon");
     return(true);
 }