private void UpdateActionFiles( IActionScriptItem initActionItem, IActionScriptItem mainActionItem, IActionScriptItem endActionItem) { Logger.InfoFormat( "Updating action files '{0}' and '{1}'.", mainActionItem.FullFileName, initActionItem.FullFileName); var definition = SapIDocDefinition.LoadHeader(this.DefinitionFilePath); var idocText = File.ReadAllText(this.ExampleFilePath); var doc = new SapIDoc(definition, idocText); var generatedActions = doc.GetVuGenActionContents().EnsureNotNull(); //// TODO [vmaklai] Open and modify files in editor rather than directly on disk #region In-editor Load //// In-editor Load approach does not work: //// VuGen throws ObjectDisposedException with the message: //// Cannot access a disposed object. //// Object name: 'the instance has been already disposed and cannot be used'. //////(!)var initActionContentsData = Encoding.Default.GetBytes(generatedActions.InitActionContents); ////var actionContentsData = Encoding.Default.GetBytes(generatedActions.MainActionContents); //////(!)var endActionContentsData = Encoding.Default.GetBytes(generatedActions.EndActionContents); ////using (var actionContentsStream = new MemoryStream(actionContentsData, false)) ////{ //// var viewContent = FileService.OpenFile(mainActionItem.FullFileName, true); //// if (viewContent == null) //// { //// throw new InvalidOperationException( //// string.Format( //// CultureInfo.InvariantCulture, //// "Unable to open file \"{0}\".", //// mainActionItem.FullFileName)); //// } //// viewContent.Load(viewContent.PrimaryFile, actionContentsStream); ////} #endregion File.WriteAllText(initActionItem.FullFileName, generatedActions.InitActionContents, Encoding.Default); File.WriteAllText(mainActionItem.FullFileName, generatedActions.MainActionContents, Encoding.Default); File.WriteAllText(endActionItem.FullFileName, generatedActions.EndActionContents, Encoding.Default); }
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); }