Esempio n. 1
0
        public void TestPlugins <T>(object sender) where T : IEncoderPlugin
        {
            PluginsManager <T> pluginManager = new PluginsManager <T>();

            pluginManager.LoadPlugins("D:\\OOPBasics");

            List <T> plugins = (List <T>)pluginManager.Plugins;

            int pluginIndex = 0;

            foreach (var currentPlugin in plugins)
            {
                Console.WriteLine(pluginIndex++ + ". " + currentPlugin.GetName());
            }

            string input = Console.ReadLine();

            if (Int32.TryParse(input, out int selectedEncoder) && selectedEncoder < plugins.Count)
            {
                IEncoder algorithmEncoder = null;

                IEnumerable <String> encoderParameters = plugins[selectedEncoder].GetRequiredArguments();
                if (encoderParameters != null)
                {
                    IDictionary <string, string> parametersDictionary = new Dictionary <string, string>();
                    foreach (var parameter in encoderParameters)
                    {
                        Console.WriteLine("Please insert value for " + parameter);
                        String parameterInput = Console.ReadLine();
                        parametersDictionary[parameter] = parameterInput;
                    }

                    plugins[selectedEncoder].SetArguments(parametersDictionary);
                    algorithmEncoder = plugins[selectedEncoder].GetEncoder();
                }
                else
                {
                    algorithmEncoder = plugins[selectedEncoder].GetEncoder();
                }

                TextEncoder textEncoder = new TextEncoder(algorithmEncoder);

                TextReader textReader = GetInputTextReader(pathToReadEncode);

                StreamEncoder streamEncoder = new StreamEncoder(textEncoder, textReader);

                BinaryWriter binaryWriter = GetOutputBinaryWriter(pathToWriteEncode);

                streamEncoder.Encode(binaryWriter);

                textReader.Close();
                binaryWriter.Close();

                Console.WriteLine("File modified.");
            }
            else
            {
                Console.WriteLine("Invalid algorithm index given.");
            }
        }
Esempio n. 2
0
        public void Initialize()
        {
            encodersPluginManager.LoadPlugins(@"E:\OOPBasics");
            decodersPluginManager.LoadPlugins(@"E:\OOPBasics");
            char optionNo = '1';

            foreach (var encoderPlugin in encodersPluginManager.Plugins)
            {
                consoleMenu.AddItem(new MenuItem {
                    ShortcutChar = optionNo, Text = encoderPlugin.GetName(), ContextObject = encoderPlugin, ItemAction = new MenuItemAction(EncodeAction)
                });
                optionNo++;
            }

            foreach (var encoderPlugin in decodersPluginManager.Plugins)
            {
                consoleMenu.AddItem(new MenuItem {
                    ShortcutChar = optionNo, Text = encoderPlugin.GetName(), ContextObject = encoderPlugin, ItemAction = new MenuItemAction(DecodeAction)
                });
                optionNo++;
            }
        }