public static OT_Document create_multifile_doc(this OT_Document doc, int?createdby_mfuserid = null, params string[] files) { Vault vault = doc.objVerEx.Vault; ObjVerEx version = doc.objVerEx; SourceObjectFiles sourceFiles = new SourceObjectFiles(); foreach (string file in files) { FileInfo fi = new FileInfo(file); sourceFiles.AddFile(fi.Name.Replace(fi.Extension, ""), fi.Extension.Replace(".", ""), fi.FullName); } ObjectVersionAndProperties obj = vault.ObjectOperations.CreateNewObjectEx(OT_Document.TypeID, version.Properties, sourceFiles, false, createdby_mfuserid == null); if (createdby_mfuserid != null) { TypedValue created_by = new TypedValue(); created_by.SetValue(MFDataType.MFDatatypeLookup, createdby_mfuserid.Value); obj = doc.objVerEx.Vault.ObjectPropertyOperations.SetCreationInfoAdmin(obj.ObjVer, true, created_by, false, null); doc.objVerEx.Vault.ObjectOperations.CheckIn(obj.ObjVer); } return(new OT_Document() { objVerEx = new ObjVerEx(obj.Vault, obj) }); }
public static void replace_files(this OT_Document document, string singledoc_newfilepath = null, string[] multidoc_newfilespath = null) { Vault vault = document.objVerEx.Vault; var obj = document.objVerEx; bool isSingleFile = vault.ObjectOperations.IsSingleFileObject(obj.ObjVer); //singlefile document if (isSingleFile && string.IsNullOrEmpty(singledoc_newfilepath)) { throw new Exception("No file supplied for single-file document."); } //multifile document if (!isSingleFile && (multidoc_newfilespath == null || multidoc_newfilespath.Length == 0)) { throw new Exception("No file(s) supplied for multi-file document."); } ObjectVersion new_version = vault.ObjectOperations.CheckOut(obj.ObjID); try { ObjVerEx new_versionex = new ObjVerEx(vault, new_version); SourceObjectFiles files = new SourceObjectFiles(); if (isSingleFile) { FileInfo fi = new FileInfo(singledoc_newfilepath); files.AddFile(fi.Name.Replace(fi.Extension, ""), fi.Extension.Replace(".", ""), fi.FullName); //change the file type IEnumerator obfile_enumerator = vault.ObjectFileOperations.GetFiles(new_version.ObjVer).GetEnumerator(); obfile_enumerator.MoveNext(); ObjectFile single_fileobj = obfile_enumerator.Current as ObjectFile; if (single_fileobj == null) { throw new Exception("Single file for this document not found."); } vault.ObjectFileOperations.RenameFile(new_versionex.ObjVer, single_fileobj.FileVer, fi.Name.Replace(fi.Extension, ""), fi.Extension.Replace(".", ""), false); } else { foreach (string file in multidoc_newfilespath) { FileInfo fi = new FileInfo(file); files.AddFile(fi.Name.Replace(fi.Extension, ""), fi.Extension.Replace(".", ""), fi.FullName); } } new_versionex.ReplaceFiles(files); new_versionex.CheckIn(); document.objVerEx = new_versionex; } catch { if (new_version.ObjectCheckedOut) { vault.ObjectOperations.ForceUndoCheckout(new_version.ObjVer); } throw; } }
public static OT_Document create_singlefile_doc(this OT_Document doc, string filepath, int?createdby_mfuserid = null) { FileInfo fi = new FileInfo(filepath); ObjectVersionAndProperties obj = doc.objVerEx.Vault.ObjectOperations.CreateNewSFDObject(OT_Document.TypeID, doc.objVerEx.Properties, new SourceObjectFile { SourceFilePath = fi.FullName, Title = fi.Name.Replace(fi.Extension, ""), Extension = fi.Extension.Replace(".", "") }, createdby_mfuserid == null); if (createdby_mfuserid != null) { TypedValue created_by = new TypedValue(); created_by.SetValue(MFDataType.MFDatatypeLookup, createdby_mfuserid.Value); obj = doc.objVerEx.Vault.ObjectPropertyOperations.SetCreationInfoAdmin(obj.ObjVer, true, created_by, false, null); doc.objVerEx.Vault.ObjectOperations.CheckIn(obj.ObjVer); } return(new OT_Document() { objVerEx = new ObjVerEx(obj.Vault, obj) }); }