public void Import(DataBus dataBus)
        {
            //1 Service
            ServiceAction serviceAction = new ServiceAction(dataBus);

            serviceAction.CommandLine = "db";
            HttpResponseMessage response = serviceAction.DoAction();

            Service serviceEntity = serviceAction.ResponseData as Service;

            if (serviceEntity.Threads.Count > 0)
            {
                dataBus.ThreadId = serviceEntity.Threads[0].ThreadId;
            }
            else
            {
                throw new Exception("Service action Error: no thread returned");
            }
            string responseData = response.GetContent();


            ////Get Form
            //GetFormAction getFormAction = new GetFormAction(dataBus);
            //response = getFormAction.DoAction();
            //responseData = response.GetContent();

            //Get Data
            GetDataAction getDataAction = new GetDataAction(dataBus);

            getDataAction.FormName = "format.prompt.db.g";
            response     = getDataAction.DoAction();
            responseData = response.GetContent();

            //Execute inport/load
            ExecuteAction executeAction = new ExecuteAction(dataBus);

            executeAction.FormName = "format.prompt.db.g";
            executeAction.Type     = "detail";
            executeAction.EventId  = 208;

            executeAction.ExecuteData.LoadXml("<modelChanges><focus cursorLine=\"7\" cursorLineAbs=\"10\">instance/file.name</focus></modelChanges>");
            response     = executeAction.DoAction();
            responseData = response.GetContent();

            //Get  Form : import
            GetFormAction unloadGetFormAction = new GetFormAction(dataBus);

            response     = unloadGetFormAction.DoAction();
            responseData = response.GetContent();

            //Execute import
            ExecuteAction importExecuteAction = new ExecuteAction(dataBus);

            importExecuteAction.FormName = "database.load.prompt.g";
            importExecuteAction.Type     = "detail";
            importExecuteAction.EventId  = 1;

            importExecuteAction.ExecuteData.LoadXml("<modelChanges></modelChanges>");
            XmlElement importRootElement = importExecuteAction.ExecuteData.DocumentElement;

            XmlElement importVarElement  = importExecuteAction.ExecuteData.CreateElement("var");
            XmlElement importNameElement = importExecuteAction.ExecuteData.CreateElement("dbl.file.name");

            importNameElement.AppendChild(importExecuteAction.ExecuteData.CreateTextNode(unloadLocation));
            importVarElement.AppendChild(importNameElement);
            importRootElement.AppendChild(importVarElement);

            response     = importExecuteAction.DoAction();
            responseData = response.GetContent();

            Execute executeEntity = null;

            do
            {
                ImportAction uploadAction = new ImportAction(dataBus);
                uploadAction.FileLocation = unloadLocation;
                response     = uploadAction.DoAction();
                responseData = response.GetContent();

                executeEntity = uploadAction.ResponseData as Execute;
                ActionUtil.StoreMessages(executeEntity.ClientRequestEntity);
            }while (executeEntity.ClientRequestEntity.Name != "message");


            while (executeEntity.ClientRequestEntity != null)
            {
                try
                {
                    MessageResponseAction messageAction = new MessageResponseAction(dataBus);
                    response = messageAction.DoAction();
                    // responseData = response.GetContent();
                    executeEntity = messageAction.ResponseData as Execute;
                    ActionUtil.StoreMessages(executeEntity.ClientRequestEntity);
                }
                catch (Exception ex)
                {
                    break;
                }
            }
        }
        public void GenerateUnload(DataBus dataBus)
        {
            //1 Service
            ServiceAction serviceAction = new ServiceAction(dataBus);

            serviceAction.CommandLine = "db";

            HttpResponseMessage response = serviceAction.DoAction();
            string responseData          = response.GetContent();

            //dataBus.ThreadId = 2;
            Service serviceEntity = serviceAction.ResponseData as Service;

            if (serviceEntity.Threads.Count > 0)
            {
                dataBus.ThreadId = serviceEntity.Threads[0].ThreadId;
            }
            else
            {
                throw new Exception("Service action Error: no thread returned");
            }

            //Get Form
            GetFormAction getFormAction = new GetFormAction(dataBus);

            response     = getFormAction.DoAction();
            responseData = response.GetContent();

            //Get Data
            GetDataAction getDataAction = new GetDataAction(dataBus);

            getDataAction.FormName = "format.prompt.db.g";
            response     = getDataAction.DoAction();
            responseData = response.GetContent();

            //Execute unload
            ExecuteAction executeAction = new ExecuteAction(dataBus);

            executeAction.FormName = "format.prompt.db.g";
            executeAction.Type     = "detail";
            executeAction.EventId  = 0;

            executeAction.ExecuteData.LoadXml("<modelChanges></modelChanges>");
            XmlElement rootElement = executeAction.ExecuteData.DocumentElement;

            XmlElement instanceElement = executeAction.ExecuteData.CreateElement("instance");
            XmlElement fileNameElement = executeAction.ExecuteData.CreateElement("file.name");

            fileNameElement.AppendChild(executeAction.ExecuteData.CreateTextNode("unload"));
            instanceElement.AppendChild(fileNameElement);
            rootElement.AppendChild(instanceElement);

            response     = executeAction.DoAction();
            responseData = response.GetContent();

            //Get  Form : unload
            GetFormAction unloadGetFormAction = new GetFormAction(dataBus);

            response     = unloadGetFormAction.DoAction();
            responseData = response.GetContent();

            //Execute unload

            ExecuteAction unloadExecuteAction = new ExecuteAction(dataBus);

            unloadExecuteAction.FormName = "unload.script.g";
            unloadExecuteAction.Type     = "detail";
            unloadExecuteAction.EventId  = 0;

            unloadExecuteAction.ExecuteData.LoadXml("<modelChanges></modelChanges>");
            XmlElement unloadRootElement = unloadExecuteAction.ExecuteData.DocumentElement;

            XmlElement unloadInstanceElement = unloadExecuteAction.ExecuteData.CreateElement("instance");
            XmlElement unloadNameElement     = unloadExecuteAction.ExecuteData.CreateElement("name");

            unloadNameElement.AppendChild(unloadExecuteAction.ExecuteData.CreateTextNode(unloadScriptName));
            unloadInstanceElement.AppendChild(unloadNameElement);
            unloadRootElement.AppendChild(unloadInstanceElement);

            response     = unloadExecuteAction.DoAction();
            responseData = response.GetContent();

            //Get unload Form
            unloadGetFormAction = new GetFormAction(dataBus);
            response            = unloadGetFormAction.DoAction();
            responseData        = response.GetContent();

            //GetFormAndData(dataBus, "unload.script.g");

            //click unload
            ExecuteAction unloadButtonExecuteAction = new ExecuteAction(dataBus);

            unloadButtonExecuteAction.FormName = "unload.script.g";
            unloadButtonExecuteAction.Type     = "detail";
            unloadButtonExecuteAction.EventId  = 7;

            response     = unloadButtonExecuteAction.DoAction();
            responseData = response.GetContent();

            //Get form and Data
            GetFormAndData(dataBus, "us.unload.get.name.g");

            ////Get message
            //GetMessageAction getMessageAction = new GetMessageAction(dataBus);
            //response = getMessageAction.DoAction();
            //responseData = response.GetContent();

            //Get Unload file
            ExecuteAction unloadButtonOneExecuteAction = new ExecuteAction(dataBus);

            unloadButtonOneExecuteAction.FormName = "us.unload.get.name.g";
            unloadButtonOneExecuteAction.Type     = "detail";
            unloadButtonOneExecuteAction.EventId  = 5;

            unloadButtonOneExecuteAction.ExecuteData.LoadXml("<modelChanges> <focus cursorLine=\"5\" cursorLineAbs=\"5\">var/dbu.file.name</focus><focusContents>C:\\Project\\GateKeeper\\20110909\\123.unl</focusContents></modelChanges>");
            XmlElement unloadButtonOneRootElement = unloadButtonOneExecuteAction.ExecuteData.DocumentElement;

            XmlElement unloadButtonOneVarElement      = unloadButtonOneExecuteAction.ExecuteData.CreateElement("var");
            XmlElement unloadButtonOneFileNameElement = unloadButtonOneExecuteAction.ExecuteData.CreateElement("L.unload.file");

            unloadButtonOneFileNameElement.AppendChild(unloadButtonOneExecuteAction.ExecuteData.CreateTextNode(unloadLocation));
            unloadButtonOneVarElement.AppendChild(unloadButtonOneFileNameElement);
            unloadButtonOneRootElement.AppendChild(unloadButtonOneVarElement);

            response     = unloadButtonOneExecuteAction.DoAction();
            responseData = response.GetContent();

            Execute executeEntity = unloadButtonOneExecuteAction.ResponseData as Execute;

            int attachmentCount = 0;

            if (executeEntity.ClientRequestEntity.File != null)
            {
                try
                {
                    attachmentCount = executeEntity.ClientRequestEntity.File.Attachments.Count;
                }
                catch (Exception ex)
                {
                    throw new Exception("Error when get unload file");
                }
            }
            ActionUtil.StoreMessages(executeEntity.ClientRequestEntity);

            //Message
            //FilePutResponseAction filePutResponseAction = new FilePutResponseAction(dataBus);
            //response = filePutResponseAction.DoAction();
            //responseData = response.GetContent();


            //MessageResponseAction messageResponseAction = new MessageResponseAction(dataBus);
            //response = messageResponseAction.DoAction();
            //responseData = response.GetContent();

            //Store Data to local
            FileStream fileStream = null;

            Collection <byte[]> attachments = response.GetAttachments();

            if (attachments.Count > 0)
            {
                int    lastSlashIndex = unloadLocation.LastIndexOf("\\");
                string dirPath        = unloadLocation.Substring(0, lastSlashIndex);
                if (!Directory.Exists(dirPath))
                {
                    Directory.CreateDirectory(dirPath);
                }

                fileStream = new FileStream(unloadLocation, FileMode.Create, FileAccess.Write);
                byte[] attachData = attachments[0].ToArray();
                fileStream.Write(attachData, 0, attachData.Length);
            }
            //Get following parts of the attachments
            FilePutResponseAction filePutResponseAction = new FilePutResponseAction(dataBus);

            response     = filePutResponseAction.DoAction();
            responseData = response.GetContent();

            while (response.GetAttachments().Count > 0)
            {
                byte[] attachData = response.GetAttachments()[0].ToArray();
                fileStream.Write(attachData, 0, attachData.Length);
                response     = filePutResponseAction.DoAction();
                responseData = response.GetContent();
            }
            if (fileStream != null)
            {
                fileStream.Flush();
                fileStream.Close();
            }
            ActionUtil.GetFormAndData(dataBus, "unload.script.g");
        }
        public void GenerateUnloadScript(DataBus dataBus)
        {
            //1 Service
            ServiceAction serviceAction = new ServiceAction(dataBus);

            serviceAction.CommandLine = "db";

            HttpResponseMessage response = serviceAction.DoAction();
            string  responseData         = response.GetContent();
            Service serviceEntity        = serviceAction.ResponseData as Service;

            if (serviceEntity.Threads.Count > 0)
            {
                dataBus.ThreadId = serviceEntity.Threads[0].ThreadId;
            }
            else
            {
                throw new Exception("Service action Error: no thread returned");
            }

            ////Get Form
            //GetFormAction getFormAction = new GetFormAction(dataBus);
            //response = getFormAction.DoAction();
            //responseData = response.GetContent();

            //Get Data
            GetDataAction getDataAction = new GetDataAction(dataBus);

            getDataAction.FormName = "format.prompt.db.g";
            response     = getDataAction.DoAction();
            responseData = response.GetContent();

            // ActionUtil.GetFormAndData(dataBus, "format.prompt.db.g");

            //Execute  in DB form to go to unload file
            ExecuteAction executeAction = new ExecuteAction(dataBus);

            executeAction.FormName = "format.prompt.db.g";
            executeAction.Type     = "detail";
            executeAction.EventId  = 0;

            executeAction.ExecuteData.LoadXml("<modelChanges></modelChanges>");
            XmlElement rootElement = executeAction.ExecuteData.DocumentElement;

            XmlElement instanceElement = executeAction.ExecuteData.CreateElement("instance");
            XmlElement fileNameElement = executeAction.ExecuteData.CreateElement("file.name");

            fileNameElement.AppendChild(executeAction.ExecuteData.CreateTextNode("unload"));
            instanceElement.AppendChild(fileNameElement);
            rootElement.AppendChild(instanceElement);
            response     = executeAction.DoAction();
            responseData = response.GetContent();

            //Get  Form : unload
            GetFormAction unloadGetFormAction = new GetFormAction(dataBus);

            response     = unloadGetFormAction.DoAction();
            responseData = response.GetContent();

            //Execute Search for specialized unload ticket
            ExecuteAction unloadExecuteAction = new ExecuteAction(dataBus);

            unloadExecuteAction.FormName = "unload.script.g";
            unloadExecuteAction.Type     = "detail";
            unloadExecuteAction.EventId  = 6;
            unloadExecuteAction.ExecuteData.LoadXml("<modelChanges></modelChanges>");

            XmlElement unloadRootElement = unloadExecuteAction.ExecuteData.DocumentElement;

            XmlElement unloadInstanceElement = unloadExecuteAction.ExecuteData.CreateElement("instance");
            XmlElement unloadNameElement     = unloadExecuteAction.ExecuteData.CreateElement("name");

            unloadNameElement.AppendChild(unloadExecuteAction.ExecuteData.CreateTextNode(unloadScriptName));
            unloadInstanceElement.AppendChild(unloadNameElement);
            unloadRootElement.AppendChild(unloadInstanceElement);

            response     = unloadExecuteAction.DoAction();
            responseData = response.GetContent();

            ////Get unload Form
            //GetFormAction unloadGetFormAction = new GetFormAction(dataBus);
            //response = unloadGetFormAction.DoAction();
            //responseData = response.GetContent();

            ActionUtil.GetFormAndData(dataBus, "unload.script.g");

            //click unload
            ExecuteAction unloadButtonExecuteAction = new ExecuteAction(dataBus);

            unloadButtonExecuteAction.FormName = "unload.script.g";
            unloadButtonExecuteAction.Type     = "detail";
            unloadButtonExecuteAction.EventId  = 211;

            unloadButtonExecuteAction.ExecuteData.LoadXml("<modelChanges><focus cursorLine=\"2\" cursorLineAbs=\"2\">instance/name</focus></modelChanges>");

            response     = unloadButtonExecuteAction.DoAction();
            responseData = response.GetContent();

            ActionUtil.GetFormAndData(dataBus, "file.prompt.dbu.g");

            //Get message
            GetMessageAction getMessageAction = new GetMessageAction(dataBus);

            response     = getMessageAction.DoAction();
            responseData = response.GetContent();

            //Get Unload Script file
            ExecuteAction unloadButtonOneExecuteAction = new ExecuteAction(dataBus);

            unloadButtonOneExecuteAction.FormName = "file.prompt.dbu.g";
            unloadButtonOneExecuteAction.Type     = "detail";
            unloadButtonOneExecuteAction.EventId  = 1;

            unloadButtonOneExecuteAction.ExecuteData.LoadXml("<modelChanges> <focus cursorLine=\"5\" cursorLineAbs=\"5\">var/dbu.file.name</focus><focusContents>C:\\Users\\daizhen\\Research\\GK_Tool\\12d3.script.unl</focusContents></modelChanges>");
            XmlElement unloadButtonOneRootElement = unloadButtonOneExecuteAction.ExecuteData.DocumentElement;

            XmlElement unloadButtonOneVarElement      = unloadButtonOneExecuteAction.ExecuteData.CreateElement("var");
            XmlElement unloadButtonOneFileNameElement = unloadButtonOneExecuteAction.ExecuteData.CreateElement("dbu.file.name");

            unloadButtonOneFileNameElement.AppendChild(unloadButtonOneExecuteAction.ExecuteData.CreateTextNode(location));
            unloadButtonOneVarElement.AppendChild(unloadButtonOneFileNameElement);
            unloadButtonOneRootElement.AppendChild(unloadButtonOneVarElement);

            response     = unloadButtonOneExecuteAction.DoAction();
            responseData = response.GetContent();

            Execute executeEntity = unloadButtonOneExecuteAction.ResponseData as Execute;

            int attachmentCount = 0;

            try
            {
                attachmentCount = executeEntity.ClientRequestEntity.File.Attachments.Count;
            }
            catch (Exception ex)
            {
                throw new Exception("Error when get unload script");
            }

            //Handle the messages
            ActionUtil.StoreMessages(executeEntity.ClientRequestEntity);

            //Store Data to local
            int    lastSlashIndex = location.LastIndexOf("\\");
            string dirPath        = location.Substring(0, lastSlashIndex);

            if (!Directory.Exists(dirPath))
            {
                Directory.CreateDirectory(dirPath);
            }
            FileStream fileStream = new FileStream(location, FileMode.Create, FileAccess.Write);

            byte[] attachData = response.GetAttachments()[0].ToArray();
            fileStream.Write(attachData, 0, attachData.Length);

            //Get following parts of the attachments
            FilePutResponseAction filePutResponseAction = new FilePutResponseAction(dataBus);

            response     = filePutResponseAction.DoAction();
            responseData = response.GetContent();

            executeEntity = filePutResponseAction.ResponseData as Execute;
            ActionUtil.StoreMessages(executeEntity.ClientRequestEntity);

            //while (response.GetAttachments().Count > 0)
            for (int i = 1; i < attachmentCount; i++)
            {
                attachData = response.GetAttachments()[0].ToArray();
                fileStream.Write(attachData, 0, attachData.Length);

                response     = filePutResponseAction.DoAction();
                responseData = response.GetContent();

                executeEntity = filePutResponseAction.ResponseData as Execute;
                ActionUtil.StoreMessages(executeEntity.ClientRequestEntity);
            }
            fileStream.Close();

            ActionUtil.GetFormAndData(dataBus, "unload.script.g");
        }