コード例 #1
0
        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);
        }
コード例 #2
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);
        }