public MultimediaFileObject MultimediaSetDefaultItem(long idItem, long idVersion, long idDocument) { MultimediaFileObject document = null; try { RepositoryItem item = Manager.Get <RepositoryItem> (idItem); RepositoryItemVersion version = Manager.Get <RepositoryItemVersion> (idVersion); List <MultimediaFileObject> cDefaults = (from f in Manager.GetIQ <MultimediaFileObject>() where f.Id != idDocument && f.IdVersion == idVersion && f.IsDefaultDocument select f).ToList(); document = Manager.Get <MultimediaFileObject>(idDocument); if (document != null && !document.IsDefaultDocument) { DateTime date = DateTime.Now; Manager.BeginTransaction(); FileTransferMultimedia mTransfer = MultimediaTransferGet(idItem, idVersion); if (mTransfer != null) { mTransfer.DefaultDocument = document; mTransfer.DefaultDocumentPath = document.Fullname; Manager.SaveOrUpdate(mTransfer); } document.IsDefaultDocument = true; foreach (MultimediaFileObject d in cDefaults) { d.IsDefaultDocument = false; } if (cDefaults.Any()) { Manager.SaveOrUpdateList(cDefaults); } version.UpdateMetaInfo(UC.CurrentUserID, UC.IpAddress, UC.ProxyIpAddress, date); if (item.IdVersion == version.Id) { item.UpdateMetaInfo(UC.CurrentUserID, UC.IpAddress, UC.ProxyIpAddress, date); Manager.SaveOrUpdate(item); } Manager.SaveOrUpdate(version); Manager.SaveOrUpdate(document); Manager.Commit(); } } catch (Exception ex) { Manager.RollBack(); } return(document); }
public void CloneMultimediaIndexes(FileTransferMultimedia clone, FileTransferMultimedia original) { IList <MultimediaFileObject> previous = FindMultimediaFileIndexes(original); //MultimediaFileObject originaldefault = (from item in previous where item.IsDefaultDocument == true select item).FirstOrDefault(); //String originalpath = originaldefault.Fullname.Replace(original.UniqueIdVersion.ToString(), clone.UniqueIdVersion.ToString()); IList <MultimediaFileObject> cloned = (from item in previous select new MultimediaFileObject() { IdItemTransfer = clone.IdItem, IdVersion = clone.IdVersion, UniqueIdItem = clone.UniqueIdItem, UniqueIdVersion = clone.UniqueIdVersion, IsDefaultDocument = item.IsDefaultDocument, Probability = item.Probability, Fullname = item.Fullname.Replace(original.UniqueIdVersion.ToString(), clone.UniqueIdVersion.ToString()), Deleted = item.Deleted }).ToList(); MultimediaFileObject clonedefault = (from item in previous where item.IsDefaultDocument == true select item).FirstOrDefault(); if (clonedefault != null) { String clonepath = clonedefault.Fullname; clone.DefaultDocument = clonedefault; clone.DefaultDocumentPath = clonepath; } try { manager.BeginTransaction(); manager.SaveList(cloned); manager.SaveFile(clone); manager.Commit(); } catch (Exception ex) { manager.Rollback(); throw; } }
private MultimediaFileObject GenerateMultimediaFileIndex(IEnumerable <KeyValue> candidates, FileTransferMultimedia FileTransfer, KeyValue winner, string item) { KeyValue current = candidates.Where(x => x.Key == item).FirstOrDefault(); MultimediaFileObject mfi = new MultimediaFileObject() { Fullname = NormalizeFullname(item), //MultimediaFile = FileTransfer, IdItemTransfer = FileTransfer.Id, IdVersion = FileTransfer.IdVersion, UniqueIdItem = FileTransfer.UniqueIdItem, UniqueIdVersion = FileTransfer.UniqueIdVersion, IdItem = FileTransfer.IdItem, IsDefaultDocument = (winner != null && winner.Key == item), Probability = (current != null) ? current.Value : 0 }; return(mfi); }
private IList <MultimediaFileObject> GenerateMultimediaFileIndexes(IEnumerable <String> all, IEnumerable <KeyValue> candidates, FileTransferMultimedia FileTransfer) { KeyValue winner = candidates.FirstOrDefault(); IList <MultimediaFileObject> list = new List <MultimediaFileObject>(); foreach (var item in all) { MultimediaFileObject mfi = GenerateMultimediaFileIndex(candidates, FileTransfer, winner, item); if (mfi.IsDefaultDocument) { FileTransfer.DefaultDocument = mfi; FileTransfer.DefaultDocumentPath = mfi.Fullname; } list.Add(mfi); } return(list); }
private IList <MultimediaFileObject> FindMultimediaFileIndexes(FileTransferMultimedia fileTransfer) { //return (from item in DataManager.IQ<MultimediaFileIndex>() where item.MultimediaFile.FileUniqueId == fileTransfer.FileUniqueId select item).ToList(); return((from item in manager.Query <MultimediaFileObject>() where item.UniqueIdVersion == fileTransfer.UniqueIdVersion select item).ToList()); }
public void SaveAnalyzeResult(IEnumerable <String> all, IEnumerable <KeyValue> candidates, FileTransferMultimedia FileTransfer) { if (TransferPolicyEx.Check(FileTransfer.Policy, lm.Comol.Core.FileRepository.Domain.TransferPolicy.deletePreviousAnalysis)) { try { manager.BeginTransaction(); IList <MultimediaFileObject> previous = FindMultimediaFileIndexes(FileTransfer); manager.DeleteList(previous); manager.Commit(); } catch (Exception ex) { manager.Rollback(); throw ex; } } IList <MultimediaFileObject> list = GenerateMultimediaFileIndexes(all, candidates, FileTransfer); try { manager.BeginTransaction(); manager.SaveList(list); if (candidates.Count() == 0) { } manager.Commit(); } catch (Exception ex) { manager.Rollback(); throw ex; } }
public void FilesUnzip(Platform platform, Guid fileId) { try { Manager mgr = new Manager(platform); IList <FileTransferBase> toUnzip = mgr.GetFilesToUnzip(fileId); //toUnzip = mgr.GetFiles(); //just for test //IList<FileTransferBase> toCopy = mgr.GetFilesToTransfer(); if (toUnzip.Count > 0) { foreach (var file in toUnzip) { try { file.Status = TransferStatus.Unzipping; mgr.SaveFileTransaction(file); FileUnzipManager fum = new FileUnzipManager(); String newpath = platform.RemoteFilePath; //default, unmanaged file if (file.Discriminator == FileTransferType.Multimedia) { newpath = platform.MultimediaFilePath; } else if (file.Discriminator == FileTransferType.Scorm) { newpath = platform.ScormFilePath; } string filepath = ""; switch (platform.ActiveTransferProtocol) { case TransferProtocolType.none: break; case TransferProtocolType.WCF: filepath = platform.WCF.PhysicalPath; break; default: break; } file.Status = TransferStatus.Unzipping; mgr.SaveFileTransaction(file); fum.Unzip(file, filepath, newpath); file.Status = (file.Status == TransferStatus.Unzipped && file.Discriminator == FileTransferType.Unmanaged) ? TransferStatus.Completed : TransferStatus.ReadyToAnalyze; mgr.SaveFileTransaction(file); switch (file.Discriminator) { case FileTransferType.Unmanaged: break; case FileTransferType.Scorm: case FileTransferType.Multimedia: try { if (file.CloneOf != Guid.Empty) { FileTransferMultimedia ftm = file as FileTransferMultimedia; newpath = Path.Combine(newpath, ftm.UniqueIdVersion.ToString()); FileTransferMultimedia originalfile = (mgr.GetFile(ftm.CloneOf, ftm.CloneOfVersion) as FileTransferMultimedia); MultimediaAnalyzer ma = new MultimediaAnalyzer(platform, newpath); ma.CloneMultimediaIndexes(ftm, originalfile); file.Status = TransferStatus.Analyzed; mgr.SaveFileTransaction(file); } else { FileTransferMultimedia ftm = file as FileTransferMultimedia; newpath = Path.Combine(newpath, ftm.UniqueIdVersion.ToString()); MultimediaAnalyzer ma = new MultimediaAnalyzer(platform, newpath); IList <String> all = ma.AnalyzeAll(); IList <KeyValue> candidates = ma.AnalyzeCandidates(); ma.SaveAnalyzeResult(all, candidates, ftm); if (candidates.Count() == 0) { file.Status = TransferStatus.Multimedia_NoCandidates; } else { file.Status = TransferStatus.Analyzed; } mgr.SaveFileTransaction(file); } } catch (Exception ex) { file.Status = TransferStatus.Multimedia_AnalyzeError; } break; case FileTransferType.VideoStreaming: break; default: break; } //if (file.Discriminator == FileTransferType.Multimedia) //{ //} if (file.Discriminator != FileTransferType.Unmanaged) { if (file.Status == TransferStatus.Analyzed) { file.Status = TransferStatus.Completed; } } mgr.SaveFileTransaction(file); } catch (Exception ex) { file.Status = TransferStatus.UnableToUnzip; mgr.SaveFileTransaction(file); } } } } catch (Exception ex) { throw ex; } }
public Boolean FileTransferAdd(RepositoryItem item, String savedPath, String savedFileName, litePerson person, DateTime?date = null) { Boolean result = false; Boolean isInTransaction = Manager.IsInTransaction(); try { if (person != null) { switch (item.Type) { case ItemType.Multimedia: FileTransferMultimedia multimedia = new FileTransferMultimedia(); if (date.HasValue) { multimedia.ModifiedOn = date.Value; } multimedia.IdItem = item.Id; multimedia.IdVersion = item.IdVersion; multimedia.UniqueIdItem = item.UniqueId; multimedia.UniqueIdVersion = item.UniqueIdVersion; multimedia.Path = savedPath; multimedia.Filename = savedFileName; multimedia.Repository = item.Repository; if (!isInTransaction) { Manager.BeginTransaction(); } Manager.SaveOrUpdate(multimedia); if (!isInTransaction) { Manager.Commit(); } break; case ItemType.ScormPackage: FileTransferScorm scorm = new FileTransferScorm(); if (date.HasValue) { scorm.ModifiedOn = date.Value; } scorm.IdItem = item.Id; scorm.IdVersion = item.IdVersion; scorm.UniqueIdItem = item.UniqueId; scorm.UniqueIdVersion = item.UniqueIdVersion; scorm.Path = savedPath; scorm.Filename = savedFileName; scorm.Repository = item.Repository; if (!isInTransaction) { Manager.BeginTransaction(); } Manager.SaveOrUpdate(scorm); if (!isInTransaction) { Manager.Commit(); } break; case ItemType.VideoStreaming: FileTransferVideoStreaming video = new FileTransferVideoStreaming(); if (date.HasValue) { video.ModifiedOn = date.Value; } video.IdItem = item.Id; video.IdVersion = item.IdVersion; video.UniqueIdItem = item.UniqueId; video.UniqueIdVersion = item.UniqueIdVersion; video.Path = savedPath; video.Filename = savedFileName; if (!isInTransaction) { Manager.BeginTransaction(); } Manager.SaveOrUpdate(video); if (!isInTransaction) { Manager.Commit(); } break; default: return(true); } } } catch (Exception ex) { if (!isInTransaction) { Manager.RollBack(); } } return(result); }