Example #1
0
 /// <summary>
 /// <see cref="File"/> 정보를 조회하기 위한 Criteria를 빌드합니다.
 /// </summary>
 /// <param name="fileMapping">파일 매핑 정보</param>
 /// <param name="resourceId">리소스 Id</param>
 /// <param name="resourceKind">리소스 종류</param>
 /// <param name="ownerCode">소유자 (부서|사원|그룹) 의 코드</param>
 /// <param name="ownerKind">소유자의 종류 (부서|사원|그룹 등)</param>
 /// <param name="category">분류</param>
 /// <param name="fileName">파일명</param>
 /// <param name="fileType">파일 종류</param>
 /// <param name="fileGroup">파일 그룹</param>
 /// <param name="fileFloor">파일 Floor</param>
 /// <returns></returns>
 public DetachedCriteria BuildCriteriaOfFile(FileMapping fileMapping, string resourceId, string resourceKind,
                                             string ownerCode, ActorKinds? ownerKind,
                                             string category, string fileName, string fileType,
                                             int? fileGroup, int? fileFloor)
 {
     return
         BuildQueryOverOfFile(fileMapping, resourceId, resourceKind,
                              ownerCode, ownerKind, category,
                              fileName, fileType, fileGroup, fileFloor)
             .DetachedCriteria;
 }
Example #2
0
        /// <summary>
        /// <see cref="File"/> 정보를 조회하기 위한 QueryOver를 빌드합니다.
        /// </summary>
        /// <param name="fileMapping">파일 매핑 정보</param>
        /// <param name="resourceId">리소스 Id</param>
        /// <param name="resourceKind">리소스 종류</param>
        /// <param name="ownerCode">소유자 (부서|사원|그룹) 의 코드</param>
        /// <param name="ownerKind">소유자의 종류 (부서|사원|그룹 등)</param>
        /// <param name="category">분류</param>
        /// <param name="fileName">파일명</param>
        /// <param name="fileType">파일 종류</param>
        /// <param name="fileGroup">파일 그룹</param>
        /// <param name="fileFloor">파일 Floor</param>
        /// <returns></returns>
        public QueryOver<File, File> BuildQueryOverOfFile(FileMapping fileMapping, string resourceId, string resourceKind,
                                                          string ownerCode, ActorKinds? ownerKind,
                                                          string category, string fileName, string fileType,
                                                          int? fileGroup, int? fileFloor)
        {
            if(IsDebugEnabled)
                log.Debug(@"파일 정보를 조회하기 위한 QueryOver를 빌드합니다... " +
                          @"fileMapping={0}, resourceId={1}, resourceKind={2}, ownerCode={3}, ownerKind={4}, " +
                          @"category={5}, fileName={6}, fileType={7}, fileGroup={8}, fileFloor={9}",
                          fileMapping, resourceId, resourceKind, ownerCode, ownerKind,
                          category, fileName, fileType, fileGroup, fileFloor);

            var query = QueryOver.Of<File>();

            query.AddEqOrNull(f => f.FileMapping, fileMapping);

            if(resourceId.IsNotWhiteSpace())
                query.AddWhere(f => f.ResourceId == resourceId);

            if(resourceKind.IsNotWhiteSpace())
                query.AddWhere(f => f.ResourceKind == resourceKind);

            if(ownerCode.IsNotWhiteSpace())
                query.AddWhere(f => f.OwnerCode == ownerCode);

            if(ownerKind.HasValue)
                query.AddWhere(f => f.OwnerKind == ownerKind.Value);

            if(category.IsNotWhiteSpace())
                query.AddWhere(f => f.Category == category);

            if(fileName.IsNotWhiteSpace())
                query.AddWhere(f => f.FileName == fileName);

            if(fileType.IsNotWhiteSpace())
                query.AddWhere(f => f.FileType == fileType);

            if(fileGroup.HasValue)
                query.AddWhere(f => f.FileGroup == fileGroup);
            if(fileFloor.HasValue)
                query.AddWhere(f => f.FileFloor == fileFloor);

            return query;
        }
        public Stream GetStream()
        {
            if (_fontUri.IsFile)
            {
                FileMapping fileMapping = new FileMapping();

                DemandFileIOPermission();

                fileMapping.OpenFile(_fontUri.LocalPath);
                return fileMapping;
            }

            byte[] bits;

            // Try our cache first.
            lock (_resourceCache)
            {
                bits = _resourceCache.Get(_fontUri);
            }

            if (bits != null)
                return new MemoryStream(bits);

            WebRequest request = PackWebRequestFactory.CreateWebRequest(_fontUri);
            WebResponse response = request.GetResponse();

            Stream fontStream = response.GetResponseStream();
            if (String.Equals(response.ContentType, ObfuscatedContentType, StringComparison.Ordinal))
            {
                // The third parameter makes sure the original stream is closed
                // when the deobfuscating stream is disposed.
                fontStream = new DeobfuscatingStream(fontStream, _fontUri, false);
            }
            return fontStream;
        }
        public void TestFileOpenable()
        {
            if (_fontUri.IsFile)
            {
                FileMapping fileMapping = new FileMapping();

                DemandFileIOPermission();

                fileMapping.OpenFile(_fontUri.LocalPath);
                fileMapping.Close();
            }
        }
        public UnmanagedMemoryStream GetUnmanagedStream()
        {
            if (_fontUri.IsFile)
            {
                FileMapping fileMapping = new FileMapping();

                DemandFileIOPermission();

                fileMapping.OpenFile(_fontUri.LocalPath);
                return fileMapping;
            }

            byte[] bits;
            // Try our cache first.
            lock (_resourceCache)
            {
                bits = _resourceCache.Get(_fontUri);
            }

            if (bits == null)
            {
                WebResponse response = WpfWebRequestHelper.CreateRequestAndGetResponse(_fontUri);
                Stream fontStream = response.GetResponseStream();
                if (String.Equals(response.ContentType, ObfuscatedContentType, StringComparison.Ordinal))
                {
                    // The third parameter makes sure the original stream is closed
                    // when the deobfuscating stream is disposed.
                    fontStream = new DeobfuscatingStream(fontStream, _fontUri, false);
                }

                UnmanagedMemoryStream unmanagedStream = fontStream as UnmanagedMemoryStream;
                if (unmanagedStream != null)
                    return unmanagedStream;

                bits = StreamToByteArray(fontStream);

                fontStream.Close();

                lock (_resourceCache)
                {
                    _resourceCache.Add(_fontUri, bits, false);
                }
            }
            return ByteArrayToUnmanagedStream(bits);
        }
Example #6
0
        void Deserialize( BinaryReader ds )
        {
            Magic = ds.ReadUInt32();

            if (Magic != MAGIC)
            {
                throw new InvalidDataException("data is not a valid steam3 manifest: incorrect magic.");
            }

            Version = ds.ReadUInt32();

            DepotID = ds.ReadUInt32();

            ManifestGID = ds.ReadUInt64();
            CreationTime = Utils.DateTimeFromUnixTime(ds.ReadUInt32());

            AreFileNamesEncrypted = ds.ReadUInt32() != 0;

            TotalUncompressedSize = ds.ReadUInt64();
            TotalCompressedSize = ds.ReadUInt64();

            ChunkCount = ds.ReadUInt32();

            FileEntryCount = ds.ReadUInt32();
            FileMappingSize = ds.ReadUInt32();

            Mapping = new List<FileMapping>( ( int )FileMappingSize );

            EncryptedCRC = ds.ReadUInt32();
            DecryptedCRC = ds.ReadUInt32();

            Flags = ds.ReadUInt32();

            for (uint i = FileMappingSize; i > 0; )
            {
                long start = ds.BaseStream.Position;

                FileMapping mapping = new FileMapping();
                mapping.Deserialize(ds);
                Mapping.Add(mapping);

                i -= (uint)(ds.BaseStream.Position - start);
            }
        }
Example #7
0
        /// <summary>
        /// 지정된 파일매핑 정보를 가진 모든 File 정보를 삭제합니다.
        /// </summary>
        /// <param name="fileMapping"></param>
        public void DeleteAllFileByFileMapping(FileMapping fileMapping)
        {
            if(fileMapping == null)
                return;

            if(IsDebugEnabled)
                log.Debug(@"FileMapping 정보와 관련된 File들을 삭제합니다... " + fileMapping);

            Repository<File>.DeleteAll(QueryOver.Of<File>().AddWhere(f => f.FileMapping == fileMapping));
        }
Example #8
0
        /// <summary>
        /// 지정한 <see cref="FileMapping"/> 정보와 연관된 File 정보를 조회합니다.
        /// </summary>
        /// <param name="fileMapping">파일 매핑 정보</param>
        /// <returns></returns>
        public IList<File> FindAllFileByFileMapping(FileMapping fileMapping)
        {
            fileMapping.ShouldNotBeNull("fileMapping");

            if(IsDebugEnabled)
                log.Debug(@"지정한 FileMapping 정보를 가진 File 정보를 조회합니다... fileMapping=" + fileMapping);

            return Repository<File>.FindAll(QueryOver.Of<File>().AddEqOrNull(f => f.FileMapping, fileMapping));
        }
Example #9
0
        /// <summary>
        /// 새로운 FileMapping 정보를 생성합니다.
        /// </summary>
        /// <param name="productCode">제품 코드</param>
        /// <param name="systemId">시스템 ID</param>
        /// <param name="subId">시스템 서브 ID</param>
        /// <returns>생성된 FileMapping 인스턴스</returns>
        public FileMapping CreateFileMapping(string productCode, string systemId, string subId)
        {
            productCode.ShouldNotBeWhiteSpace("productCode");

            if(IsDebugEnabled)
                log.Debug(@"새로운 FileMapping 정보를 생성합니다. productCode={0}, systemId={1}, subId={2}", productCode, systemId, subId);

            var fileMapping = new FileMapping(productCode, systemId, subId);

            return Repository<FileMapping>.SaveOrUpdate(fileMapping);
        }
Example #10
0
        /// <summary>
        /// 새로운 파일 정보를 생성합니다.
        /// </summary>
        /// <param name="fileMapping">파일 매핑 정보</param>
        /// <param name="category">분류</param>
        /// <param name="fileName">파일명</param>
        /// <returns></returns>
        public File CreateFile(string category, string fileName, FileMapping fileMapping)
        {
            fileMapping.ShouldNotBeNull("fileMapping");

            if(IsDebugEnabled)
                log.Debug(@"새로운 File 정보를 생성합니다. category={0}, fileName={1}, fileMapping={2}", category, fileName, fileMapping);

            var file = new File(category, fileName, fileMapping);
            return Repository<File>.SaveOrUpdate(file);
        }
Example #11
0
        /// <summary>
        /// Group FileMappings to a dictionary using VersionName as the key.
        /// As default version has no VersionName, using empty string as the key.
        /// </summary>
        private static Dictionary <string, FileMappingParameters> GroupFileMappings(FileMapping content,
                                                                                    FileMapping overwrite, FileMapping resource)
        {
            var result = new Dictionary <string, FileMappingParameters>
            {
                [string.Empty] = new FileMappingParameters()
            };

            AddFileMappingTypeGroup(result, content, FileMappingType.Content);
            AddFileMappingTypeGroup(result, overwrite, FileMappingType.Overwrite);
            AddFileMappingTypeGroup(result, resource, FileMappingType.Resource);

            return(result);
        }
 private static void AddFileMapping(FileCollection fileCollection, DocumentType type, FileMapping mapping)
 {
     if (mapping != null)
     {
         foreach (var item in mapping.Items)
         {
             fileCollection.Add(
                 type,
                 item.Files,
                 item.SourceFolder,
                 item.DestinationFolder);
         }
     }
 }
Example #13
0
 private static void AddFileMapping(FileCollection fileCollection, string baseDirectory, DocumentType type, FileMapping mapping)
 {
     if (mapping != null)
     {
         foreach (var item in mapping.Items)
         {
             fileCollection.Add(
                 type,
                 item.Files,
                 s => RewritePath(baseDirectory, s, item));
         }
     }
 }