private void FilteForRuntimeSetting(IVuGenScript script, string folder)
        {
            IVuGenProjectService projectService = VuGenServiceManager.GetService <IVuGenProjectService>();
            //get runtime files
            List <string> runtimeFiles             = new List <string>();
            ReadOnlyCollection <string> localFiles = projectService.GetScriptLocalFiles(folder);

            foreach (string file in localFiles)
            {
                runtimeFiles.Add(Path.GetFileName(file));
            }

            //delete all non-runtime files
            List <string> files = UttFileSystemUtils.GetFileList(folder, "*.*", true);

            foreach (string file in files)
            {
                string fileName = Path.GetFileName(file);
                if (!runtimeFiles.Contains(fileName))
                {
                    File.SetAttributes(file, FileAttributes.Normal);
                    File.Delete(file);
                }
            }

            //delete empty folders
            string[] directories = Directory.GetDirectories(folder, "*.*", SearchOption.AllDirectories);
            foreach (string directory in directories)
            {
                if (!Directory.EnumerateFileSystemEntries(directory).Any())
                {
                    UttFileSystemUtils.DeleteDirectory(directory);
                }
            }
        }
Beispiel #2
0
        private static void CheckAndUpdateScriptFile(IVuGenScript script)
        {
            Logger.InfoFormat("Checking the script '{0}'...", script.FileName);

            var extraFiles      = script.GetExtraFiles();
            var isDllReferenced = extraFiles
                                  .Any(item => string.Equals(item.FileName, DllName, StringComparison.OrdinalIgnoreCase));

            if (isDllReferenced)
            {
                Logger.InfoFormat("The library '{0}' is referenced; no update is needed.", DllName);
                return;
            }

            Logger.InfoFormat("The library '{0}' is NOT referenced; updating and reopening the script.", DllName);

            var dllFilePath         = Path.Combine(Path.GetDirectoryName(script.FileName).EnsureNotNull(), DllName);
            var extraFileScriptItem = script.GenerateManuallyExtraFileScriptItem(dllFilePath);

            script.AddExtraFile(extraFileScriptItem);
            script.Save(true);

            #region Work-around: VuGen UI does not reflect the changes unless the project is reloaded

            ProjectService.CloseSolution();
            ProjectService.LoadSolutionOrProject(script.FileName);

            #endregion

            ////Logger.InfoFormat("Checking script file '{0}'", scriptFilePath);
            ////using (var scriptStream = File.Open(scriptFilePath, FileMode.Open, FileAccess.ReadWrite, FileShare.Read))
            ////{
            ////    var scriptIni = new IniFile();
            ////    scriptIni.Load(scriptStream);

            ////    var section = scriptIni[DllSectionName];
            ////    if (section.Contains(DllName) && section[DllName] == string.Empty)
            ////    {
            ////        Logger.InfoFormat("No need to update script file '{0}'", scriptFilePath);
            ////        return;
            ////    }

            ////    section[DllName] = string.Empty;

            ////    var backupScriptFilePath = scriptFilePath + BackupExtension;
            ////    Logger.InfoFormat(
            ////        "Creating backup file '{0}' of script file '{1}'",
            ////        backupScriptFilePath,
            ////        scriptFilePath);
            ////    File.Copy(scriptFilePath, backupScriptFilePath, true);

            ////    Logger.InfoFormat("Updating script file '{0}'", scriptFilePath);
            ////    scriptStream.SetLength(0);
            ////    scriptIni.Save(scriptStream);
            ////}
        }
 public VuGenZipExportDialog(IVuGenScript script, ZipExportDialogSettings settings)
     : base(settings)
 {
     _script                                = script;
     _customControl                         = new ZipScriptCustomControl();
     _customControlViewModel                = new ZipScriptCustomControlViewModel(_script);
     _customControl.DataContext             = _customControlViewModel;
     _customControlViewModel.ExportAllFiles = true;
     SetUserControl(_customControl);
 }
 public VuGenZipExportDialog(IVuGenScript script, ZipExportDialogSettings settings)
     : base(settings)
 {
     _script = script;
       _customControl = new ZipScriptCustomControl();
       _customControlViewModel = new ZipScriptCustomControlViewModel(_script);
       _customControl.DataContext = _customControlViewModel;
       _customControlViewModel.ExportAllFiles = true;
       SetUserControl(_customControl);
 }
        private void FilterFiles(IVuGenScript script, string tempFolder)
        {
            //filter if we only want to zip runtime files
            if (_customControlViewModel.ZipFiles == ZipFilesEnum.RuntimeFiles)
            {
                FilteForRuntimeSetting(_script, tempFolder);
            }

            //filter protocol specified excluded folders and files
            FilteExcludedFiles(_script, tempFolder);
        }
 public static ZipExportDialogSettings GetDefaultExportToZipSettings(IVuGenScript script)
 {
     ZipExportDialogSettings settings = new ZipExportDialogSettings();
       settings.DialogTitle = "Export to zip";
       settings.ExportItemLabel = "Script folder:";
       settings.ExportAction = ExportActionEnum.Zip;
       settings.AllowSwitchExportAction = false;
       settings.DefaultExportItemPath = script.LocalPath;
       settings.IsExportItemReadOnly = true;
       settings.CompressionLevel = Ionic.Zlib.CompressionLevel.BestSpeed;
       settings.DefaultExportToPath = Path.Combine(Path.GetDirectoryName(script.LocalPath), script.DisplayName + ".zip");
       return settings;
 }
        private static void AddTransactionNames(IVuGenScript script, string usrFileName = null)
        {
            try
            {
                if (script == null)
                {
                    return;
                }
                List <IExtraFileScriptItem> extraFiles          = script.GetExtraFiles();
                IExtraFileScriptItem        dynamicTransacrions = null;
                foreach (IExtraFileScriptItem extraFile in extraFiles)
                {
                    if (extraFile.FileName == "dynamic_transactions.txt") //This is not configurable. This is the file name!
                    {
                        dynamicTransacrions = extraFile;
                        break;
                    }
                }

                if (dynamicTransacrions == null)
                {
                    return;
                }

                string            fileContent      = File.ReadAllText(dynamicTransacrions.FullFileName);
                string[]          transactionNames = fileContent.Split(new String[] { Environment.NewLine }, StringSplitOptions.RemoveEmptyEntries);
                IScriptDataObject scriptData       = script.GenerateDataObject() as IScriptDataObject;
                if (scriptData == null)
                {
                    return;
                }
                List <String> transactionsList = scriptData.SpecialSteps.Transactions;
                transactionsList.AddRange(transactionNames);
                IniUsrFile usr;
                if (usrFileName != null)
                {
                    usr = new IniUsrFile(usrFileName);
                }
                else
                {
                    usr = new IniUsrFile(script.FileName);
                }
                usr.WriteTransactions(transactionsList);
                usr.Save();
            }
            catch
            {
                //Don't want to have adverse influence on the regular usage of VuGen. If this fails it does so silently.
            }
        }
        public static ZipExportDialogSettings GetDefaultExportToZipSettings(IVuGenScript script)
        {
            ZipExportDialogSettings settings = new ZipExportDialogSettings();

            settings.DialogTitle             = "Export to zip";
            settings.ExportItemLabel         = "Script folder:";
            settings.ExportAction            = ExportActionEnum.Zip;
            settings.AllowSwitchExportAction = false;
            settings.DefaultExportItemPath   = script.LocalPath;
            settings.IsExportItemReadOnly    = true;
            settings.CompressionLevel        = Ionic.Zlib.CompressionLevel.BestSpeed;
            settings.DefaultExportToPath     = Path.Combine(Path.GetDirectoryName(script.LocalPath), script.DisplayName + ".zip");
            return(settings);
        }
        private IActionScriptItem FindScriptAction(IVuGenScript script, string actionName)
        {
            var result = script.GetActionByName(actionName);

            if (result != null)
            {
                return(result);
            }

            this.ShowErrorBox(
                string.Format(
                    CultureInfo.InvariantCulture,
                    "VuGen script action '{0}' is not found.",
                    actionName));

            return(null);
        }
        public override void Run()
        {
            IVuGenScript script = VuGenServiceManager.GetService <IVuGenProjectService>().GetActiveScript();

            if (script == null)
            {
                UttDialogMessageService.Instance.ShowWarning("Export to Zip operation is available for the currently loaded script only");
            }
            else
            {
                ZipExportDialogSettings settings = GetDefaultExportToZipSettings(script);
                using (VuGenZipExportDialog dialog = new VuGenZipExportDialog(script, settings))
                {
                    if (dialog.ShowDialog() == CustomDialogResult.Ok)
                    {
                        Process.Start("explorer.exe", "/select," + dialog.ExportZipFile);
                    }
                }
            }
        }
        private static void AddTransactionNames(IVuGenScript script, string usrFileName=null)
        {
            try
              {
            if (script == null) return;
            List<IExtraFileScriptItem> extraFiles = script.GetExtraFiles();
            IExtraFileScriptItem dynamicTransacrions = null;
            foreach (IExtraFileScriptItem extraFile in extraFiles)
            {
              if (extraFile.FileName == "dynamic_transactions.txt") //This is not configurable. This is the file name!
              {
            dynamicTransacrions = extraFile;
            break;
              }
            }

            if (dynamicTransacrions == null) return;

            string fileContent = File.ReadAllText(dynamicTransacrions.FullFileName);
            string[] transactionNames = fileContent.Split(new String[] { Environment.NewLine }, StringSplitOptions.RemoveEmptyEntries);
            IScriptDataObject scriptData = script.GenerateDataObject() as IScriptDataObject;
            if (scriptData == null) return;
            List<String> transactionsList = scriptData.SpecialSteps.Transactions;
            transactionsList.AddRange(transactionNames);
            IniUsrFile usr;
            if (usrFileName != null)
            {
              usr = new IniUsrFile(usrFileName);
            }
            else
            {
              usr = new IniUsrFile(script.FileName);
            }
            usr.WriteTransactions(transactionsList);
            usr.Save();
              }
              catch
              {
            //Don't want to have adverse influence on the regular usage of VuGen. If this fails it does so silently.
              }
        }
        private void FilteExcludedFiles(IVuGenScript script, string folder)
        {
            //TODO : This is a very bad candidate for method extension, we should consider other solutions, eg adding virtual properties in BaseProtocol.
              GetExcludedFilesForZipParameters parameters = new GetExcludedFilesForZipParameters(script);
              ProtocolExtensionContext context = ProtocolExtensionContext.GetGetExcludedFilesForZipContext(parameters);
              context.OnBefore();

              if (parameters.ExcludedFolders != null && parameters.ExcludedFolders.Count > 0)
              {
            foreach (string excludeFolder in parameters.ExcludedFolders)
            {
              UttFileSystemUtils.DeleteDirectory(Path.Combine(folder, excludeFolder));
            }
              }
              if (parameters.ExcludedFiles != null && parameters.ExcludedFiles.Count > 0)
              {
            foreach (string excludeFile in parameters.ExcludedFiles)
            {
              UttFileSystemUtils.DeleteFile(excludeFile);
            }
              }
        }
Beispiel #13
0
        public static void SetCurrentStepResponseParameter(IVuGenScript script, string value)
        {
            IStepService       stepService = ServiceManager.Instance.GetService <IStepService>();
            IParametersService parametersService = ServiceManager.Instance.GetService <IParametersService>();
            string             leftBracket, rightBracket;

            parametersService.GetParameterBraces(script, out leftBracket, out rightBracket);
            string actualValue = value;

            if (actualValue.StartsWith(leftBracket))
            {
                actualValue = actualValue.Substring(leftBracket.Length);
            }

            if (actualValue.EndsWith(rightBracket))
            {
                actualValue = actualValue.Substring(0, actualValue.Length - rightBracket.Length);
            }
            var step = stepService.CurrentStep;

            step.SetExtensionProperty("dataposid", actualValue);
        }
        private void FilteExcludedFiles(IVuGenScript script, string folder)
        {
            //TODO : This is a very bad candidate for method extension, we should consider other solutions, eg adding virtual properties in BaseProtocol.
            GetExcludedFilesForZipParameters parameters = new GetExcludedFilesForZipParameters(script);
            ProtocolExtensionContext         context    = ProtocolExtensionContext.GetGetExcludedFilesForZipContext(parameters);

            context.OnBefore();

            if (parameters.ExcludedFolders != null && parameters.ExcludedFolders.Count > 0)
            {
                foreach (string excludeFolder in parameters.ExcludedFolders)
                {
                    UttFileSystemUtils.DeleteDirectory(Path.Combine(folder, excludeFolder));
                }
            }
            if (parameters.ExcludedFiles != null && parameters.ExcludedFiles.Count > 0)
            {
                foreach (string excludeFile in parameters.ExcludedFiles)
                {
                    UttFileSystemUtils.DeleteFile(excludeFile);
                }
            }
        }
Beispiel #15
0
        public void GenerateAction(
            IVuGenScript script,
            IActionScriptItem initActionItem,
            IActionScriptItem mainActionItem,
            IActionScriptItem endActionItem)
        {
            #region Argument Check

            if (script == null)
            {
                throw new ArgumentNullException("script");
            }

            if (initActionItem == null)
            {
                throw new ArgumentNullException("initActionItem");
            }

            if (mainActionItem == null)
            {
                throw new ArgumentNullException("mainActionItem");
            }

            if (endActionItem == null)
            {
                throw new ArgumentNullException("endActionItem");
            }

            #endregion

            var scriptFilePath = script.FileName;

            CopyIdocFiles(scriptFilePath);
            CheckAndUpdateScriptFile(script);
            UpdateActionFiles(initActionItem, mainActionItem, endActionItem);
        }
 public ZipScriptCustomControlViewModel(IVuGenScript script)
 {
     _script = script;
 }
 private void ExportScript(IVuGenScript script, UttPersistenceToken token)
 {
     VuGenServiceManager.GetService <IVuGenProjectService>().Export(script, token);
 }
        public static void SetCurrentStepResponseParameter(IVuGenScript script, string value)
        {
            IStepService stepService = ServiceManager.Instance.GetService<IStepService>();
              IParametersService parametersService = ServiceManager.Instance.GetService<IParametersService>();
              string leftBracket, rightBracket;
              parametersService.GetParameterBraces(script, out leftBracket, out rightBracket);
              string actualValue = value;
              if (actualValue.StartsWith(leftBracket))
              {
            actualValue = actualValue.Substring(leftBracket.Length);
              }

              if (actualValue.EndsWith(rightBracket))
              {
            actualValue = actualValue.Substring(0, actualValue.Length - rightBracket.Length);
              }
              var step = stepService.CurrentStep;
              step.SetExtensionProperty("dataposid", actualValue);
        }
        private void FilteForRuntimeSetting(IVuGenScript script, string folder)
        {
            IVuGenProjectService projectService = VuGenServiceManager.GetService<IVuGenProjectService>();
              //get runtime files
              List<string> runtimeFiles = new List<string>();
              ReadOnlyCollection<string> localFiles = projectService.GetScriptLocalFiles(folder);
              foreach (string file in localFiles)
            runtimeFiles.Add(Path.GetFileName(file));

              //delete all non-runtime files
              List<string> files = UttFileSystemUtils.GetFileList(folder, "*.*", true);
              foreach (string file in files)
              {
            string fileName = Path.GetFileName(file);
            if (!runtimeFiles.Contains(fileName))
            {
              File.SetAttributes(file, FileAttributes.Normal);
              File.Delete(file);
            }
              }

              //delete empty folders
              string[] directories = Directory.GetDirectories(folder, "*.*", SearchOption.AllDirectories);
              foreach (string directory in directories)
              {
            if (!Directory.EnumerateFileSystemEntries(directory).Any())
              UttFileSystemUtils.DeleteDirectory(directory);
              }
        }
        private void FilterFiles(IVuGenScript script, string tempFolder)
        {
            //filter if we only want to zip runtime files
              if (_customControlViewModel.ZipFiles == ZipFilesEnum.RuntimeFiles)
            FilteForRuntimeSetting(_script, tempFolder);

              //filter protocol specified excluded folders and files
              FilteExcludedFiles(_script, tempFolder);
        }
Beispiel #21
0
 public ZipScriptCustomControlViewModel(IVuGenScript script)
 {
     _script = script;
 }
 private void ExportScript(IVuGenScript script, UttPersistenceToken token)
 {
     VuGenServiceManager.GetService<IVuGenProjectService>().Export(script, token);
 }