コード例 #1
0
        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);
        }
コード例 #2
0
        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;
            }
        }
コード例 #3
0
        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);
        }
コード例 #4
0
        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);
        }
コード例 #5
0
 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());
 }
コード例 #6
0
        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;
            }
        }
コード例 #7
0
ファイル: UnzipMQService.cs プロジェクト: EdutechSRL/Adevico
        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;
            }
        }
コード例 #8
0
        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);
        }