/// <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); }
/// <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); }
/// <summary> /// Save project to archived project file /// </summary> /// <param name="projectFilePath">Project file path</param> public void SaveProject(string projectFilePath) { log.In(projectFilePath); if (File.Exists(projectFilePath)) { File.Delete(projectFilePath); } reader.Close(); SerializeProject(currentProject, CreateProjectFilePath(currentProject.WorkingDirectory)); Archiver.CompressDirectory(currentProject.WorkingDirectory, projectFilePath); string logFileName = CreateDatabaseFilePath(currentProject); reader = new IntermediateLogReader(logFileName, currentProject.PatternDefinition); log.Out(); }