Example #1
0
        private void GetDATFile(bool isLeft)
        {
            openFileDialog1.Filter = @"Data Mover Data Files|*.dat;*.DAT";
            var result = openFileDialog1.ShowDialog();

            if (result == DialogResult.OK)
            {
                DMSFile dmsFile = null;

                try
                {
                    dmsFile = DMSReader.Read(openFileDialog1.FileName);
                }catch (FormatException fe)
                {
                    MessageBox.Show(this, fe.Message, "File Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    return;
                }
                /* Set the file name */
                dmsFile.FileName = new FileInfo(openFileDialog1.FileName).Name;

                if (isLeft)
                {
                    leftFile = dmsFile;
                    leftPath = openFileDialog1.FileName;
                }
                else
                {
                    rightFile = dmsFile;
                    rightPath = openFileDialog1.FileName;
                }
            }
        }
Example #2
0
 public int Remove(DMSFile dmsFile)
 {
     dmsFile.RecordStatus       = RecordStatus.Deleted;
     dmsFile.LastModifyTime     = DateTime.Now;
     dmsFile.LastModifyUserName = UserInfo.UserName;
     return(m_db.Update(m_defaultTableName, m_defaultPrimaryKey, dmsFile.GetTableObject()));
 }
Example #3
0
        private void openToolStripMenuItem_Click(object sender, EventArgs e)
        {
            openFileDialog1.Filter = "Data Mover Data Files|*.dat;*.DAT";
            var result = openFileDialog1.ShowDialog();

            if (result == DialogResult.OK)
            {
                currentDmsPath = openFileDialog1.FileName;

                Stopwatch sw = new Stopwatch();
                sw.Start();
                try
                {
                    dmsFile = DMSReader.Read(currentDmsPath);
                }
                catch (FormatException fe)
                {
                    MessageBox.Show(this, fe.Message, "File Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    return;
                }
                toolStripStatusLabel1.Text = "File: " + currentDmsPath;
                /* Set the file name */
                dmsFile.FileName = new FileInfo(currentDmsPath).Name;

                sw.Stop();

                UpdateUI();
                tableList.Items[0].Selected = true;
            }
        }
Example #4
0
 public DMSFile Update(DMSFile dmsFile)
 {
     dmsFile.LastModifyTime     = DateTime.Now;
     dmsFile.LastModifyUserName = UserInfo.UserName;
     m_db.Update(m_defaultTableName, m_defaultPrimaryKey, dmsFile.GetTableObject());
     return(dmsFile);
 }
Example #5
0
 public DMSFile Create(DMSFile dmsFile)
 {
     dmsFile.Guid         = System.Guid.NewGuid().ToString();
     dmsFile.RecordStatus = RecordStatus.Valid;
     dmsFile.Id           = Insert(dmsFile.GetTableObject());
     return(dmsFile);
 }
        public ActionResult UploadFile(string shortCode, string fileSeriesGuid, string description)
        {
            return(ActionUtils.Json(() =>
            {
                var dms = GetDMSAndCheckPermission(shortCode, PermissionType.Execute);

                var dmsFileSeries = m_dbAdapter.DMSFileSeries.GetByGuid(fileSeriesGuid);
                var dmsFolder = m_dbAdapter.DMSFolder.GetById(dmsFileSeries.DMSFolderId);
                CommUtils.AssertEquals(dms.Instance.Id, dmsFolder.DMSId,
                                       "文件[fileSeriesGuid={0}]不在DMS[DMSGuid={1}]中,请刷新后再试",
                                       fileSeriesGuid, dms.Instance.Guid);

                var files = Request.Files;
                CommUtils.Assert(files.Count > 0, "请选择上传文件");
                CommUtils.AssertEquals(files.Count, 1, "只能上传一个文件");

                var file = files[0];
                var index = Math.Max(file.FileName.LastIndexOf('\\'), file.FileName.LastIndexOf('/'));
                var fileName = index < 0 ? file.FileName : file.FileName.Substring(index + 1);

                CommUtils.Assert(file.ContentLength > 0, "上传文件不能为空");
                CommUtils.AssertHasContent(fileName, "文件名不能为空");
                CommUtils.Assert(fileName.Length <= 100, "文件名不能超过100个字符数");

                var memoryStream = new MemoryStream(new BinaryReader(file.InputStream).ReadBytes(file.ContentLength));
                var repoFile = Platform.Repository.AddFile(fileName, memoryStream);

                var allFiles = m_dbAdapter.DMSFile.GetFilesByFileSeriesId(dmsFileSeries.Id);
                var currentVer = allFiles.Count == 0?0: allFiles.Max(x => x.Version);

                DMSFile newDMSFile = new DMSFile();
                newDMSFile.DMSId = dms.Instance.Id;
                newDMSFile.DMSFileSeriesId = dmsFileSeries.Id;

                newDMSFile.RepoFileId = repoFile.Id;
                newDMSFile.Name = repoFile.Name;
                newDMSFile.Description = description ?? string.Empty;

                newDMSFile.Size = file.ContentLength;
                newDMSFile.Version = currentVer + 1;

                var now = DateTime.Now;
                newDMSFile.LastModifyUserName = CurrentUserName;
                newDMSFile.LastModifyTime = now;
                newDMSFile.CreateUserName = CurrentUserName;
                newDMSFile.CreateTime = now;

                newDMSFile = m_dbAdapter.DMSFile.Create(newDMSFile);

                var task = m_dbAdapter.Task.GetTask(shortCode);
                new TaskLogicModel(dms.ProjectLogicModel, task).Start();

                var comment = "文件夹[" + dmsFolder.Name + "]中上传文件["
                              + dmsFileSeries.Name + "]的第" + newDMSFile.Version + "版本";
                m_dbAdapter.Task.AddTaskLog(task, comment);

                return ActionUtils.Success(newDMSFile.Guid);
            }));
        }
Example #7
0
 private void CompareFiles(DMSTable[] selectedTables, DMSFile target)
 {
     /* this compares the rows for tables in Source to tables in Target */
     foreach (var table in selectedTables)
     {
         table.CompareResult = DMSCompareResult.NEW;
     }
 }
Example #8
0
        public CompareWorker(DMSTable[] selected, DMSFile target)
        {
            tables = selected;
            file   = target;

            WorkerReportsProgress = true;
            DoWork += OnDoWork;
        }
        public void UpdateDMSInfo(DMSFile file, string path)
        {
            dmsFile  = file;
            filePath = path;

            var fi = new FileInfo(filePath);

            textBox4.Text = fi.DirectoryName;
        }
        public ActionResult GenerateDoc(string projectGuid, string paymentDay, string fileSeriesGuid, bool autoUpload = false)
        {
            return(ActionUtils.Json(() =>
            {
                var project = Platform.GetProject(projectGuid);
                var dmsFileSeries = m_dbAdapter.DMSFileSeries.GetByGuid(fileSeriesGuid);
                var fileSeriesTemplate = m_dbAdapter.DMSFileSeriesTemplate.GetByFileSeriesId(dmsFileSeries.Id);
                CommUtils.Assert(fileSeriesTemplate != null &&
                                 fileSeriesTemplate.TemplateType != DmsFileSeriesTemplateType.None,
                                 "请先配置模板");

                CommUtils.Assert(DateUtils.IsDate(paymentDay), "解析兑付日失败:{0}", paymentDay);

                var paymentDate = DateUtils.Parse(paymentDay).Value;
                var templateType = fileSeriesTemplate.TemplateType;
                var docPatternType = CommUtils.ParseEnum <DocPatternType>(templateType.ToString());

                var ms = new MemoryStream();
                Platform.DocFactory.Generate(docPatternType, ms, project.Instance.ProjectId, paymentDate,
                                             paymentDate, dmsFileSeries.Name);
                var comment = "系统生成文件[" + dmsFileSeries.Name + "]";
                m_dbAdapter.DMSProjectLog.AddDmsProjectLog(projectGuid, fileSeriesGuid, comment);
                ms.Seek(0, SeekOrigin.Begin);

                if (autoUpload)
                {
                    var repoFile = Platform.Repository.AddFile(dmsFileSeries.Name, ms);
                    var allFiles = m_dbAdapter.DMSFile.GetFilesByFileSeriesId(dmsFileSeries.Id);
                    var currentVer = allFiles.Count == 0 ? 0 : allFiles.Max(x => x.Version);

                    DMSFile newDMSFile = new DMSFile();
                    newDMSFile.DMSId = dmsFileSeries.DMSId;
                    newDMSFile.DMSFileSeriesId = dmsFileSeries.Id;

                    newDMSFile.RepoFileId = repoFile.Id;
                    newDMSFile.Name = repoFile.Name;
                    newDMSFile.Description = string.Empty;

                    newDMSFile.Size = ms.Length;
                    newDMSFile.Version = currentVer + 1;

                    var now = DateTime.Now;
                    newDMSFile.LastModifyUserName = CurrentUserName;
                    newDMSFile.LastModifyTime = now;
                    newDMSFile.CreateUserName = CurrentUserName;
                    newDMSFile.CreateTime = now;

                    newDMSFile = m_dbAdapter.DMSFile.Create(newDMSFile);

                    var logComment = "系统上传文件[" + dmsFileSeries.Name + "]的第" + newDMSFile.Version + "版本";
                    m_dbAdapter.DMSProjectLog.AddDmsProjectLog(projectGuid, fileSeriesGuid, logComment);
                }
                var resource = ResourcePool.RegisterMemoryStream(CurrentUserName, dmsFileSeries.Name, ms);
                return ActionUtils.Success(resource.Guid.ToString());
            }));
        }
Example #11
0
        private void SaveDATDiff(DMSFile file)
        {
            saveFileDialog1.Filter = @"Data Mover Data Files|*.dat;*.DAT";
            var result = saveFileDialog1.ShowDialog();

            if (result == DialogResult.OK)
            {
                DMSWriter.Write(saveFileDialog1.FileName, dmsFile, true);
            }
        }
Example #12
0
        public bool isExistDMSFile(string dmsFileGuid)
        {
            m_defaultHasRecordStatusField = false;
            var record  = SelectSingle <ABSMgrConn.TableDMSFile>("dms_file_guid", dmsFileGuid);
            var dmsFile = new DMSFile(record);

            m_defaultHasRecordStatusField = true;

            return(dmsFile.RecordStatus == RecordStatus.Valid);
        }
Example #13
0
        public DBCompareDialog(OracleConnection dbConn, DMSFile file, List <DMSTable> tables)
        {
            InitializeComponent();

            progressBar1.Maximum = 100;
            progressBar1.Minimum = 0;
            progressBar1.Value   = 0;

            this.dbConn = dbConn;
            this.file   = file;
            this.tables = tables;
        }
Example #14
0
        private void openToolStripMenuItem_Click(object sender, EventArgs e)
        {
            openFileDialog1.Filter = "Data Mover Data Files|*.dat;*.DAT";
            var result = openFileDialog1.ShowDialog();

            if (result == DialogResult.OK)
            {
                currentDmsPath = openFileDialog1.FileName;

                Stopwatch sw = new Stopwatch();
                sw.Start();
                dmsFile = DMSReader.Read(currentDmsPath);
                sw.Stop();

                UpdateUI();
            }
        }
Example #15
0
        public DATCompareDialog(string initialPath)
        {
            InitializeComponent();
            if (initialPath?.Length > 0)
            {
                try
                {
                    leftFile = DMSReader.Read(initialPath);
                }catch (FormatException fe)
                {
                    MessageBox.Show(this, fe.Message, "File Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    return;
                }
                leftFile.FileName = new FileInfo(initialPath).Name;
                leftPath          = initialPath;
            }

            UpdateUI(true);
        }
Example #16
0
        private void openToolStripMenuItem_Click(object sender, EventArgs e)
        {
            openFileDialog1.Filter = "Data Mover Data Files|*.dat;*.DAT";
            var result = openFileDialog1.ShowDialog();

            if (result == DialogResult.OK)
            {
                currentDmsPath = openFileDialog1.FileName;

                Stopwatch sw = new Stopwatch();
                sw.Start();
                dmsFile = DMSReader.Read(currentDmsPath);
                toolStripStatusLabel1.Text = "File: " + currentDmsPath;
                /* Set the file name */
                dmsFile.FileName = new FileInfo(currentDmsPath).Name;

                sw.Stop();

                UpdateUI();
                tableList.Items[0].Selected = true;
            }
        }
Example #17
0
 public FindAndReplace(DMSFile file)
 {
     InitializeComponent();
     inFile = file;
 }
 public SQLGeneratorOptions(DMSFile dmsFile) : this()
 {
     /*bool padColumns, bool extractLongs, bool ignoreEmptyTables */
     this.dmsFile = dmsFile;
 }
Example #19
0
        public static void GenerateSQLFile(DMSFile dms, string outputFolder, bool padColumns, bool extractLongs, bool ignoreEmptyTables)
        {
            StreamWriter sw = new StreamWriter(outputFolder + Path.DirectorySeparatorChar + dms.FileName.Replace(".dat", "").Replace(".DAT", "") + ".sql");

            /* Write the header */

            sw.WriteLine("/* ****** DMS 2 SQL v1.0 ***********");
            sw.WriteLine(String.Format(" * Database: {0}", dms.Database));
            sw.WriteLine(String.Format(" * Date: {0}", dms.Started));
            sw.WriteLine(String.Format(" * Table Count: {0}", dms.Tables.Count));
            sw.WriteLine(String.Format(" * Total Rows: {0}", dms.Tables.Sum(t => t.Rows.Count)));
            sw.WriteLine("*/");

            Console.WriteLine("  Beginning SQL generation.");
            Console.WriteLine("  Table Count: " + dms.Tables.Count);

            foreach (DMSTable table in dms.Tables)
            {
                Console.WriteLine("  Processing table: " + table.DBName);

                if (ignoreEmptyTables && table.Rows.Count == 0)
                {
                    Console.WriteLine("    Skipping empty table");
                    continue;
                }
                /* Write table header */
                sw.WriteLine(String.Format("/* Begin Table: {0}({1})", table.Name, table.DBName));
                sw.WriteLine(String.Format(" * Where Clause: {0}", table.WhereClause.Replace("\r", "").Replace("\n", "")));
                sw.WriteLine(String.Format(" * Row Count: {0}", table.Rows.Count));
                if (table.Columns.Where(c => c.Type.Equals("LONG")).Count() > 0)
                {
                    /* Disclaimer about long fields */
                    sw.WriteLine(" * LONG FIELD: Some rows may not insert properly due to having a LONG field on the table.");
                    sw.WriteLine(" *     If one fails, please look for the exported long data file associated with the row.");
                }
                sw.WriteLine("*/\r\n");

                var columnText   = new StringBuilder();
                var columnNames  = new StringBuilder();
                var columnValues = new StringBuilder();
                Console.WriteLine("    Writing " + table.Rows.Count + " rows.");
                foreach (DMSRow row in table.Rows)
                {
                    columnNames.Clear();
                    columnValues.Clear();
                    sw.WriteLine(" /* Row " + table.Name + "." + (table.Rows.IndexOf(row) + 1) + " */");
                    for (var x = 0; x < row.Indexes.Length; x++)
                    {
                        var colType = table.Columns[x].Type;
                        var colName = table.Columns[x].Name;

                        var printValue = "";
                        switch (colType)
                        {
                        case "CHAR":
                            printValue = SafeString(row.GetStringValue(x));
                            break;

                        case "LONG":
                            printValue = SafeString(row.GetStringValue(x));
                            if (extractLongs)
                            {
                                var longFilePath = outputFolder + Path.DirectorySeparatorChar + "Long Chars" + Path.DirectorySeparatorChar + table.DBName + Path.DirectorySeparatorChar + "row_" + (table.Rows.IndexOf(row) + 1) + ".txt";
                                Directory.CreateDirectory(outputFolder + Path.DirectorySeparatorChar + "Long Chars" + Path.DirectorySeparatorChar + table.DBName);
                                File.WriteAllText(longFilePath, row.GetStringValue(x));
                                printValue = "NULL /* See LongChar File */";
                            }
                            break;

                        case "DATE":
                            printValue = String.Format("TO_DATE('{0}','YYYY-MM-DD')", row.GetStringValue(x));
                            break;

                        case "DATETIME":
                            printValue = String.Format("TO_DATE('{0}','YYYY-MM-DD-HH24:MI:SS')", row.GetStringValue(x).Replace(".000000", ""));
                            break;

                        default:
                            printValue = row.GetStringValue(x) == null ? "NULL" : row.GetStringValue(x).ToString();
                            break;
                        }
                        if (printValue.Equals("\0"))
                        {
                            printValue = null;
                        }
                        /* print them out with padding */
                        var valuePad = 0;
                        var colPad   = 0;
                        if (padColumns)
                        {
                            if (colName.Length > printValue.Length)
                            {
                                valuePad = colName.Length - printValue.Length;
                                colPad   = 0;
                            }
                            else if (colName.Length < printValue.Length)
                            {
                                colPad   = printValue.Length - colName.Length;
                                valuePad = 0;
                            }
                            else
                            {
                                colPad   = 0;
                                valuePad = 0;
                            }
                        }

                        columnNames.Append(colName).Append(new string(' ', colPad)).Append(", ");
                        columnValues.Append(printValue).Append(new string(' ', valuePad)).Append(", ");
                    }
                    columnNames.Length  -= 2;
                    columnValues.Length -= 2;
                    var sqlStatement = String.Format("INSERT INTO {0} \r\n({1}) \r\nVALUES \r\n({2});", table.DBName, columnNames.ToString(), columnValues.ToString());
                    sw.WriteLine(sqlStatement);
                    sw.WriteLine();
                }
                Console.WriteLine("  Finished table: " + table.DBName);
                Console.WriteLine();
                sw.WriteLine();
            }
            Console.WriteLine("  Generation complete.");

            sw.Flush();
            sw.Close();
        }
Example #20
0
        void UpdateUI(bool leftSide)
        {
            if (leftSide && leftFile == null)
            {
                return;
            }

            if (!leftSide && rightFile == null)
            {
                return;
            }

            ListView list = null;
            DMSFile  file = null;
            Button   btn  = null;
            Label    lbl  = null;

            if (leftSide)
            {
                list = lstLeft;
                file = leftFile;
                btn  = btnViewDataLeft;
                lbl  = lblLeft;
            }
            else
            {
                list = lstRight;
                file = rightFile;
                btn  = btnViewDataRight;
                lbl  = lblRight;
            }

            if (file == null)
            {
                lbl.Text = @"Select a file...";
                return;
            }
            else
            {
                lbl.Text = file.FileName;
            }

            var savedIndexes = list.SelectedIndices;

            list.Items.Clear();
            foreach (var table in file.Tables)
            {
                /* ignore empty tables */
                if (table.Rows.Count == 0)
                {
                    continue;
                }

                var backgroundColor = Color.White;
                switch (table.CompareResult)
                {
                case DMSCompareResult.NEW:
                    backgroundColor = Color.LawnGreen;
                    break;

                case DMSCompareResult.UPDATE:
                    backgroundColor = Color.Yellow;
                    break;
                }

                list.Items.Add(new ListViewItem()
                {
                    Tag = table, Text = table.Name, BackColor = backgroundColor
                });
            }

            if (savedIndexes.Count > 0)
            {
                foreach (var x in savedIndexes.Cast <int>())
                {
                    list.Items[x].Selected = true;
                }
            }
            else
            {
                list.Items[0].Selected = true;
            }

            btn.Enabled = true;

            /* enable the compare buttons? */
            if (leftFile != null && rightFile != null)
            {
                btnCompareRight.Enabled  = true;
                btnCompareToLeft.Enabled = true;
            }
        }
Example #21
0
 public SQLGeneratorOptions(DMSFile dmsFile, string filePath, List <DMSTable> tables) : this(dmsFile, filePath)
 {
     selectedTables = tables;
 }
        public ActionResult CreateFile(string shortCode, string folderGuid, List <string> fileSeriesNames, string description)
        {
            return(ActionUtils.Json(() =>
            {
                var dms = GetDMSAndCheckPermission(shortCode, PermissionType.Execute);
                var folder = dms.FindFolder(folderGuid);
                CommUtils.AssertNotNull(folder, "找不到文件夹[FolderGuid={0} DMSGuid={1}],请刷新后再试",
                                        folderGuid, dms.Instance.Guid);

                ValidateUtils.Name(fileSeriesNames, "文档名称", 100).FileName();

                var dict = new Dictionary <RepositoryFile, HttpPostedFileBase>();
                var files = Request.Files;
                var fileGuids = new List <string>();
                for (int i = 0; i < files.Count; i++)
                {
                    var file = files[i];

                    var index = Math.Max(file.FileName.LastIndexOf('\\'), file.FileName.LastIndexOf('/'));
                    var fileName = index < 0 ? file.FileName : file.FileName.Substring(index + 1);

                    CommUtils.AssertHasContent(fileName, "文件名不能为空");
                    CommUtils.Assert(fileName.Length <= 100, "选择的文件名称[{0}]不能超过100个字符数", fileName);
                    CommUtils.Assert(!folder.Files.Any(x => x.FileSeries.Name == fileSeriesNames[i]),
                                     "文件[{0}]已经存在", fileSeriesNames[i]);

                    var memoryStream = new MemoryStream(new BinaryReader(file.InputStream).ReadBytes(file.ContentLength));
                    var newFile = Platform.Repository.AddFile(fileName, memoryStream);
                    fileGuids.Add(newFile.Guid);

                    dict[newFile] = file;
                }

                var result = new List <DMSFile>();
                string operationType = "上传";

                if (dict.Keys.Count == 0)
                {
                    operationType = "创建";
                    fileSeriesNames.ForEach(x =>
                    {
                        NewFileSeries(x, folder);
                    });
                }


                for (int i = 0; i < dict.Keys.Count; i++)
                {
                    var repoFile = dict.Keys.ElementAt(i);
                    var fileSeriesName = fileSeriesNames[i];
                    var dmsFileSeries = new DMSFileSeries();
                    dmsFileSeries = NewFileSeries(fileSeriesName, folder);

                    var now = DateTime.Now;
                    DMSFile dmsFile = new DMSFile();
                    dmsFile.DMSId = dms.Instance.Id;
                    dmsFile.DMSFileSeriesId = dmsFileSeries.Id;

                    dmsFile.RepoFileId = repoFile.Id;
                    dmsFile.Name = repoFile.Name;
                    dmsFile.Description = description ?? string.Empty;

                    dmsFile.Size = dict[repoFile].ContentLength;
                    dmsFile.Version = 1;

                    dmsFile.LastModifyUserName = CurrentUserName;
                    dmsFile.LastModifyTime = now;
                    dmsFile.CreateUserName = CurrentUserName;
                    dmsFile.CreateTime = now;

                    result.Add(m_dbAdapter.DMSFile.Create(dmsFile));
                }

                var task = new TaskLogicModel(dms.ProjectLogicModel, shortCode);
                task.Start();

                var fileSeriesNamesArray = fileSeriesNames.ConvertAll(x => "[" + x + "]").ToArray();
                m_dbAdapter.Task.AddTaskLog(task.Instance, "文件夹[" + folder.Instance.Name + "]中" + operationType + "文件" + string.Join(",", fileSeriesNamesArray));

                return ActionUtils.Success(result.Select(x => x.Guid));
            }));
        }
Example #23
0
        private static void RebuildFiles(List <string> files, string outputFolder, string scriptName)
        {
            Console.WriteLine("  Beginning rebuild of " + files.Count + " files.");

            Dictionary <string, List <string> > results = new Dictionary <string, List <string> >();
            FileStream   fs = new FileStream(outputFolder + Path.DirectorySeparatorChar + scriptName + "_EXP.dms", FileMode.Create, FileAccess.Write, FileShare.None);
            StreamWriter sw = new StreamWriter(fs);

            foreach (var file in files)
            {
                DMSFile dmsFile = null;
                try
                {
                    dmsFile = DMSReader.Read(file);
                }catch (FormatException fe)
                {
                    /* invalid DAT file found... skip */
                    continue;
                }
                Console.WriteLine("  Processing file: " + dmsFile.FileName);
                Console.WriteLine("    Table count: " + dmsFile.Tables.Count);
                Console.WriteLine("    Total rows: " + dmsFile.Tables.Sum(t => t.Rows.Count));
                foreach (var table in dmsFile.Tables)
                {
                    if (table.Rows.Count == 0)
                    {
                        continue;
                    }

                    if (results.ContainsKey(table.Name) == false)
                    {
                        results.Add(table.Name, new List <string>());
                    }
                    if (results[table.Name].Contains(table.WhereClause) == false)
                    {
                        results[table.Name].Add(table.WhereClause);
                    }
                }
            }
            Console.WriteLine("  All Files processed, generating unified scripts.");

            sw.WriteLine("-- Rebuilt with DMSUtils -- ");
            sw.WriteLine();
            sw.WriteLine("SET OUTPUT " + scriptName + "_EXP.dat;");
            sw.WriteLine("SET LOG " + scriptName + "_EXP.log;");
            sw.WriteLine("");
            foreach (var key in results.Keys)
            {
                var whereList = results[key];
                whereList.Sort();
                foreach (var where in whereList)
                {
                    if (results[key].Contains("") && where.Equals("") == false)
                    {
                        sw.Write("-- EXPORT " + key);
                    }
                    else
                    {
                        sw.Write("EXPORT " + key);
                    }

                    if (where.Trim().Length != 0)
                    {
                        sw.WriteLine(" WHERE " + where + ";");
                    }
                    else
                    {
                        sw.WriteLine(";");
                    }
                }
                sw.WriteLine();
            }
            sw.Flush();
            sw.Close();

            sw = new StreamWriter(new FileStream(outputFolder + Path.DirectorySeparatorChar + scriptName + "_IMP.dms", FileMode.Create, FileAccess.Write, FileShare.None));
            sw.WriteLine("-- Rebuilt with DMSUtils -- ");
            sw.WriteLine();
            sw.WriteLine("SET INPUT " + scriptName + "_EXP.dat;");
            sw.WriteLine("SET LOG " + scriptName + "_IMP.log;");
            sw.WriteLine();
            foreach (var key in results.Keys)
            {
                sw.WriteLine("IMPORT " + key + ";");
                sw.WriteLine();
            }
            sw.Flush();
            sw.Close();

            Console.WriteLine("Script generation complete.");
        }
 public SQLGeneratorOptions(DMSFile dmsFile, string filePath) : this()
 {
     /*bool padColumns, bool extractLongs, bool ignoreEmptyTables */
     UpdateDMSInfo(dmsFile, filePath);
 }
Example #25
0
        public ActionResult CreateFile(string projectGuid, string folderGuid, string fileSeriesNames,
                                       string description, string templateType)
        {
            return(ActionUtils.Json(() =>
            {
                var dms = GetDMSAndCheckPermission(projectGuid, PermissionType.Execute);
                var folder = dms.FindFolder(folderGuid);
                CommUtils.AssertNotNull(folder, "找不到文件夹[FolderGuid={0} DMSGuid={1}],请刷新后再试",
                                        folderGuid, dms.Instance.Guid);
                folder.IgnoreNull = false;

                var dict = new Dictionary <RepositoryFile, HttpPostedFileBase>();

                var fileSeriesNameList = CommUtils.Split(fileSeriesNames).ToList();

                var files = Request.Files;
                //  CommUtils.Assert(Request.Files.Count > 0, "请选择上传文件");
                fileSeriesNameList.ForEach(x =>
                {
                    ValidateUtils.FileName(x, "文档名称");
                    CommUtils.Assert(x.Length <= 100, "文档名称[{0}]不能超过100个字符数", x);
                    CommUtils.Assert(!folder.Files.Any(y => y.FileSeries.Name == x),
                                     "文件[{0}]已经存在", x);
                });
                CommUtils.AssertHasContent(fileSeriesNames, "文档名称不能为空");
                //  CommUtils.AssertEquals(fileSeriesNames.Count, files.Count, "上传文件数和fileSeriesNames数不一致");

                var fileGuids = new List <string>();
                for (int i = 0; i < files.Count; i++)
                {
                    var file = files[i];

                    var index = Math.Max(file.FileName.LastIndexOf('\\'), file.FileName.LastIndexOf('/'));
                    var fileName = index < 0 ? file.FileName : file.FileName.Substring(index + 1);

                    CommUtils.AssertHasContent(fileName, "文件名不能为空");
                    CommUtils.Assert(fileName.Length <= 100, "选择的文件名称[{0}]不能超过100个字符数", fileName);
                    CommUtils.Assert(!folder.Files.Any(x => x.FileSeries.Name == fileSeriesNameList[i]),
                                     "文件[{0}]已经存在", fileSeriesNameList[i]);

                    var memoryStream = new MemoryStream(new BinaryReader(file.InputStream).ReadBytes(file.ContentLength));
                    var newFile = Platform.Repository.AddFile(fileName, memoryStream);
                    fileGuids.Add(newFile.Guid);

                    dict[newFile] = file;
                }

                var result = new List <DMSFile>();
                string operationType = "上传";
                string fileSeriesGuid = "";

                if (dict.Keys.Count == 0)
                {
                    var isExistTemplateType = string.IsNullOrWhiteSpace(templateType);
                    var dmsFileSeriesTemplateType = DmsFileSeriesTemplateType.None;
                    if (!isExistTemplateType)
                    {
                        dmsFileSeriesTemplateType = CommUtils.ParseEnum <DmsFileSeriesTemplateType>(templateType);
                    }

                    operationType = "创建";
                    fileSeriesNameList.ForEach(x =>
                    {
                        var newFileSeries = NewFileSeries(x, folder);
                        fileSeriesGuid = newFileSeries.Guid;

                        m_dbAdapter.DMSProjectLog.AddDmsProjectLog(projectGuid, fileSeriesGuid, "文件夹[" + folder.Instance.Name + "]中" + operationType + "文件系列" + x);
                        if (!isExistTemplateType && dmsFileSeriesTemplateType != DmsFileSeriesTemplateType.None)
                        {
                            NewDMSFileSeriesTemplate(newFileSeries.Id, dmsFileSeriesTemplateType);
                        }
                    });
                }

                for (int i = 0; i < dict.Keys.Count; i++)
                {
                    var repoFile = dict.Keys.ElementAt(i);
                    var fileSeriesName = fileSeriesNameList[i];
                    var dmsFileSeries = new DMSFileSeries();
                    dmsFileSeries = NewFileSeries(fileSeriesName, folder);
                    fileSeriesGuid = dmsFileSeries.Guid;

                    var now = DateTime.Now;
                    DMSFile dmsFile = new DMSFile();
                    dmsFile.DMSId = dms.Instance.Id;
                    dmsFile.DMSFileSeriesId = dmsFileSeries.Id;

                    dmsFile.RepoFileId = repoFile.Id;
                    dmsFile.Name = repoFile.Name;
                    dmsFile.Description = description ?? string.Empty;

                    dmsFile.Size = dict[repoFile].ContentLength;
                    dmsFile.Version = 1;

                    dmsFile.LastModifyUserName = CurrentUserName;
                    dmsFile.LastModifyTime = now;
                    dmsFile.CreateUserName = CurrentUserName;
                    dmsFile.CreateTime = now;

                    result.Add(m_dbAdapter.DMSFile.Create(dmsFile));

                    m_dbAdapter.DMSProjectLog.AddDmsProjectLog(projectGuid, dmsFileSeries.Guid, "文件夹[" + folder.Instance.Name + "]中" + operationType + "文件" + fileSeriesName);
                }
                return ActionUtils.Success(fileSeriesGuid);
            }));
        }