/// ------------------------------------------------------------------------------------ public virtual void Save(string path) { _metaDataPath = path; OnBeforeSave(this); XmlFileSerializer.Save(MetaDataFieldValues, _metaDataPath, RootElementName); OnAfterSave(this); }
/// ------------------------------------------------------------------------------------ public FieldUpdater(FieldGatherer fieldGatherer, IDictionary <string, IXmlFieldSerializer> fieldSerializers) { _xmlFileSerializer = new XmlFileSerializer(fieldSerializers); _fieldGatherer = fieldGatherer; if (_fieldGatherer != null) { _rootProjectFolder = _fieldGatherer.RootDirectoryPath; } }
/// ------------------------------------------------------------------------------------ public ComponentFileFactory(IEnumerable <FileType> fileTypes, IEnumerable <ComponentRole> componentRoles, XmlFileSerializer xmlFileSerializer, IProvideAudioVideoFileStatistics statisticsProvider, PresetGatherer presetProvider, FieldUpdater fieldUpdater) { _fileTypes = fileTypes; _componentRoles = componentRoles; _xmlFileSerializer = xmlFileSerializer; _statisticsProvider = statisticsProvider; _presetProvider = presetProvider; _fieldUpdater = fieldUpdater; }
/// ------------------------------------------------------------------------------------ public void Dispose() { if (_annotationFile != null) { _annotationFile.Dispose(); } _annotationFile = null; _xmlFileSerializer = null; _statisticsProvider = null; _presetProvider = null; _fieldUpdater = null; MetaDataFieldValues = null; ParentElement = null; }
/// ------------------------------------------------------------------------------------ /// <summary> /// used only by ProjectElementComponentFile and AnnotationComponentFile /// </summary> /// ------------------------------------------------------------------------------------ protected ComponentFile(ProjectElement parentElement, string filePath, FileType fileType, string rootElementName, XmlFileSerializer xmlFileSerializer, FieldUpdater fieldUpdater) { RootElementName = rootElementName; ParentElement = parentElement; //The annotated file is the same as the annotation file; there isn't a pair of files for session/person SetPathToFile(filePath); FileType = fileType; _xmlFileSerializer = xmlFileSerializer; _metaDataPath = filePath; _fieldUpdater = fieldUpdater; MetaDataFieldValues = new List <FieldInstance>(); _componentRoles = new ComponentRole[] {}; //no roles for person or event InitializeFileInfo(); }
/// ------------------------------------------------------------------------------------ public ComponentFile(ProjectElement parentElement, string pathToAnnotatedFile, IEnumerable <FileType> fileTypes, IEnumerable <ComponentRole> componentRoles, XmlFileSerializer xmlFileSerializer, IProvideAudioVideoFileStatistics statisticsProvider, PresetGatherer presetProvider, FieldUpdater fieldUpdater) { ParentElement = parentElement; SetPathToFile(pathToAnnotatedFile); _componentRoles = componentRoles; _xmlFileSerializer = xmlFileSerializer; _statisticsProvider = statisticsProvider; _presetProvider = presetProvider; _fieldUpdater = fieldUpdater; DetermineFileType(pathToAnnotatedFile, fileTypes); // we musn't do anything to remove the existing extension, as that is needed // to keep, say, foo.wav and foo.txt separate. Instead, we just append ".meta" //_metaDataPath = ComputeMetaDataPath(pathToAnnotatedFile); MetaDataFieldValues = new List <FieldInstance>(); Guard.AgainstNull(FileType, "At runtime (maybe not in tests) FileType should go to a type intended for unknowns"); _metaDataPath = FileType.GetMetaFilePath(pathToAnnotatedFile); RootElementName = "MetaData"; if (File.Exists(_metaDataPath)) { LoadNow(); } InitializeFileInfo(); }
/// ------------------------------------------------------------------------------------ public virtual void Load() { XmlFileSerializer.CreateIfMissing(_metaDataPath, RootElementName); XmlFileSerializer.Load(/*TODO this.Work, */ MetaDataFieldValues, _metaDataPath, RootElementName, FileType); }
/// ------------------------------------------------------------------------------------ public ProjectElementComponentFile(ProjectElement parentElement, FileType fileType, XmlFileSerializer xmlFileSerializer, string rootElementName, FieldUpdater fieldUpdater) : base(parentElement, parentElement.SettingsFilePath, fileType, rootElementName, xmlFileSerializer, fieldUpdater) { InitializeFileInfo(); }