コード例 #1
0
        /// <summary>
        /// Create new project
        /// </summary>
        /// <param name="fileName">Log file name</param>
        /// <param name="logStream">Log file stream</param>
        /// <param name="projectName">Project name</param>
        /// <param name="patternDef">Analyzing pattern</param>
        /// <param name="enc">Log file encoding</param>
        /// <returns>Created project</returns>
        public FlatProject CreateProject(string fileName, Stream logStream, string projectName, PatternDefinition patternDef, Encoding enc)
        {
            log.In(logStream, projectName, patternDef);

            if (patternDef == null)
            {
                patternDef = PatternDefinition.CreateDefault();
            }

            currentProject                   = new FlatProject();
            currentProject.ProjectName       = projectName;
            currentProject.PatternDefinition = patternDef;

            string tempDir = CreateTempDirectory();

            currentProject.WorkingDirectory = tempDir;

            string logFileName = CreateDatabaseFilePath(currentProject);

            using (IntermediateLogWriter imLogWriter = new IntermediateLogWriter(logFileName, patternDef))
            {
                imLogWriter.Write(fileName, logStream, enc);
            }

            reader = new IntermediateLogReader(logFileName, currentProject.PatternDefinition);

            log.Out(currentProject);
            return(currentProject);
        }
コード例 #2
0
        /// <summary>
        /// Create database file path with current project working directory.
        /// </summary>
        /// <param name="project">Opened project</param>
        /// <returns>Database file path</returns>
        private string CreateDatabaseFilePath(FlatProject project)
        {
            log.InPrivate(project);

            string ret = project.WorkingDirectory + @"\" + DATABASE_FILE_NAME;

            log.OutPrivate(ret);
            return(ret);
        }
コード例 #3
0
        /// <summary>
        /// Create new project
        /// </summary>
        /// <param name="logFileName">Log file name</param>
        /// <param name="projectName">Project name</param>
        /// <param name="patternDef">Analyzing pattern</param>
        /// <param name="enc">Log file encoding</param>
        /// <returns>Created project</returns>
        public FlatProject CreateProject(String logFileName, string projectName, PatternDefinition patternDef, Encoding enc)
        {
            log.In(logFileName, projectName, patternDef);

            using (FileStream readStream = new FileStream(logFileName, FileMode.Open, FileAccess.Read, FileShare.ReadWrite)){
                FlatProject ret = CreateProject(logFileName, readStream, projectName, patternDef, enc);
                log.Out(ret);
                return(ret);
            }
        }
コード例 #4
0
        /// <summary>
        /// Serialize project to file
        /// </summary>
        /// <param name="project">Target project</param>
        /// <param name="path">Destination path</param>
        public void SerializeProject(FlatProject project, string path)
        {
            log.In(project, path);

            using (FileStream fs = new FileStream(path, FileMode.Create, FileAccess.Write))
            {
                BinaryFormatter bf = new BinaryFormatter();
                bf.Serialize(fs, project);
            }

            log.Out();
        }
コード例 #5
0
        /// <summary>
        /// Deserialize project from file
        /// </summary>
        /// <param name="path">Source path</param>
        /// <returns>Project</returns>
        public FlatProject DeserializeProject(string path)
        {
            log.In(path);

            using (FileStream fs = new FileStream(path, FileMode.Open, FileAccess.Read))
            {
                BinaryFormatter bf = new BinaryFormatter();

                FlatProject ret = (FlatProject)bf.Deserialize(fs);
                log.Out(ret);
                return(ret);
            }
        }
コード例 #6
0
        /// <summary>
        /// Close current project.
        /// And remove temporary working directory
        /// </summary>
        public void CloseProject()
        {
            log.In();

            if (currentProject != null)
            {
                reader.Close();
                DeleteTempDirectory(currentProject.WorkingDirectory);
                currentProject = null;
            }

            log.Out();
        }
コード例 #7
0
        /// <summary>
        /// Open project from archived project file
        /// </summary>
        /// <param name="projectFilePath">Archived project file path</param>
        /// <returns>Opened flat project</returns>
        public FlatProject OpenProject(string projectFilePath)
        {
            log.In(projectFilePath);

            string tempDirectory = CreateTempDirectory();

            Archiver.Decompress(projectFilePath, tempDirectory);

            currentProject = DeserializeProject(CreateProjectFilePath(tempDirectory));
            currentProject.WorkingDirectory = tempDirectory;

            string logFileName = CreateDatabaseFilePath(currentProject);

            reader = new IntermediateLogReader(logFileName, currentProject.PatternDefinition);

            log.Out(currentProject);
            return(currentProject);
        }