/// <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> /// 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); }
/// <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); } }
/// <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(); }
/// <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); } }
/// <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(); }
/// <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); }