/// <summary> /// Processes the properties. /// </summary> /// <param name="small_blocks">The small_blocks.</param> /// <param name="big_blocks">The big_blocks.</param> /// <param name="properties">The properties.</param> /// <param name="path">The path.</param> /// <returns></returns> private List <DocumentDescriptor> ProcessProperties(BlockList small_blocks, BlockList big_blocks, IEnumerator properties, POIFSDocumentPath path) { List <DocumentDescriptor> documents = new List <DocumentDescriptor>(); while (properties.MoveNext()) { Property property = (Property)properties.Current; String name = property.Name; if (property.IsDirectory) { POIFSDocumentPath new_path = new POIFSDocumentPath(path, new String[] { name }); ProcessProperties( small_blocks, big_blocks, ((DirectoryProperty)property).Children, new_path); } else { int startBlock = property.StartBlock; int size = property.Size; POIFSDocument document = null; if (property.ShouldUseSmallBlocks) { document = new POIFSDocument(name, small_blocks .FetchBlocks(startBlock, -1), size); } else { document = new POIFSDocument(name, big_blocks .FetchBlocks(startBlock, -1), size); } documents.Add( new DocumentDescriptor(path, name)); //fire event OnStreamReaded(new POIFSReaderEventArgs(name, path, document)); } } return(documents); }
private void ProcessProperties(BlockList small_blocks, BlockList big_blocks, IEnumerator properties, DirectoryNode dir, int headerPropertiesStartAt) { while (properties.MoveNext()) { Property property = ( Property )properties.Current; String name = property.Name; DirectoryNode parent = (dir == null) ? (( DirectoryNode )this.Root) : dir; if (property.IsDirectory) { DirectoryNode new_dir = ( DirectoryNode )parent.CreateDirectory(name); new_dir.StorageClsid = property.StorageClsid; ProcessProperties( small_blocks, big_blocks, ((DirectoryProperty)property).Children, new_dir, headerPropertiesStartAt); } else { int startBlock = property.StartBlock; int size = property.Size; OPOIFSDocument document = null; if (property.ShouldUseSmallBlocks) { document = new OPOIFSDocument(name, small_blocks .FetchBlocks(startBlock, headerPropertiesStartAt), size); } else { document = new OPOIFSDocument(name, big_blocks.FetchBlocks(startBlock, headerPropertiesStartAt), size); } parent.CreateDocument(document); } } }
private void ProcessProperties(BlockList small_blocks, BlockList big_blocks, IEnumerator properties, DirectoryNode dir, int headerPropertiesStartAt) { while (properties.MoveNext()) { Property property = ( Property ) properties.Current; String name = property.Name; DirectoryNode parent = (dir == null) ? (( DirectoryNode ) this.Root) : dir; if (property.IsDirectory) { DirectoryNode new_dir = ( DirectoryNode ) parent.CreateDirectory(name); new_dir.StorageClsid=property.StorageClsid ; ProcessProperties( small_blocks, big_blocks, ((DirectoryProperty)property).Children, new_dir, headerPropertiesStartAt); } else { int startBlock = property.StartBlock; int size = property.Size; POIFSDocument document = null; if (property.ShouldUseSmallBlocks) { document = new POIFSDocument(name, small_blocks .FetchBlocks(startBlock, headerPropertiesStartAt), size); } else { document = new POIFSDocument(name, big_blocks.FetchBlocks(startBlock,headerPropertiesStartAt), size); } parent.CreateDocument(document); } } }
/// <summary> /// Processes the properties. /// </summary> /// <param name="small_blocks">The small_blocks.</param> /// <param name="big_blocks">The big_blocks.</param> /// <param name="properties">The properties.</param> /// <param name="path">The path.</param> /// <returns></returns> private List <DocumentDescriptor> ProcessProperties(BlockList small_blocks, BlockList big_blocks, IEnumerator properties, POIFSDocumentPath path) { List <DocumentDescriptor> documents = new List <DocumentDescriptor>(); while (properties.MoveNext()) { Property property = (Property)properties.Current; String name = property.Name; if (property.IsDirectory) { POIFSDocumentPath new_path = new POIFSDocumentPath(path, new String[] { name }); ProcessProperties( small_blocks, big_blocks, ((DirectoryProperty)property).Children, new_path); } else { int startBlock = property.StartBlock; IEnumerator listeners = registry.GetListeners(path, name); OPOIFSDocument document = null; if (listeners.MoveNext()) { listeners.Reset(); int size = property.Size; if (property.ShouldUseSmallBlocks) { document = new OPOIFSDocument(name, small_blocks .FetchBlocks(startBlock, -1), size); } else { document = new OPOIFSDocument(name, big_blocks .FetchBlocks(startBlock, -1), size); } //POIFSReaderListener listener = // (POIFSReaderListener)listeners.Current; //listener.ProcessPOIFSReaderEvent( // new POIFSReaderEvent( // new DocumentInputStream(document), path, // name)); while (listeners.MoveNext()) { POIFSReaderListener listener = (POIFSReaderListener)listeners.Current; listener.ProcessPOIFSReaderEvent( new POIFSReaderEvent( new DocumentInputStream(document), path, name)); } } else { // consume the document's data and discard it if (property.ShouldUseSmallBlocks) { small_blocks.FetchBlocks(startBlock, -1); } else { big_blocks.FetchBlocks(startBlock, -1); } //documents.Add( // new DocumentDescriptor(path, name)); //fire event //OnStreamReaded(new POIFSReaderEventArgs(name, path, document)); } } } return(documents); }
/// <summary> /// Processes the properties. /// </summary> /// <param name="small_blocks">The small_blocks.</param> /// <param name="big_blocks">The big_blocks.</param> /// <param name="properties">The properties.</param> /// <param name="path">The path.</param> /// <returns></returns> private List<DocumentDescriptor> ProcessProperties(BlockList small_blocks, BlockList big_blocks, IEnumerator properties, POIFSDocumentPath path) { List<DocumentDescriptor> documents = new List<DocumentDescriptor>(); while (properties.MoveNext()) { Property property = (Property)properties.Current; String name = property.Name; if (property.IsDirectory) { POIFSDocumentPath new_path = new POIFSDocumentPath(path, new String[] { name }); ProcessProperties( small_blocks, big_blocks, ((DirectoryProperty)property).Children, new_path); } else { int startBlock = property.StartBlock; IEnumerator listeners = registry.GetListeners(path, name); POIFSDocument document = null; if (listeners.MoveNext()) { listeners.Reset(); int size = property.Size; if (property.ShouldUseSmallBlocks) { document = new POIFSDocument(name, small_blocks .FetchBlocks(startBlock, -1), size); } else { document = new POIFSDocument(name, big_blocks .FetchBlocks(startBlock, -1), size); } //POIFSReaderListener listener = // (POIFSReaderListener)listeners.Current; //listener.ProcessPOIFSReaderEvent( // new POIFSReaderEvent( // new DocumentInputStream(document), path, // name)); while (listeners.MoveNext()) { POIFSReaderListener listener = (POIFSReaderListener)listeners.Current; listener.ProcessPOIFSReaderEvent( new POIFSReaderEvent( new DocumentInputStream(document), path, name)); } } else { // consume the document's data and discard it if (property.ShouldUseSmallBlocks) { small_blocks.FetchBlocks(startBlock, -1); } else { big_blocks.FetchBlocks(startBlock, -1); } //documents.Add( // new DocumentDescriptor(path, name)); //fire event //OnStreamReaded(new POIFSReaderEventArgs(name, path, document)); } } } return documents; }
/// <summary> /// Processes the properties. /// </summary> /// <param name="small_blocks">The small_blocks.</param> /// <param name="big_blocks">The big_blocks.</param> /// <param name="properties">The properties.</param> /// <param name="path">The path.</param> /// <returns></returns> private List<DocumentDescriptor> ProcessProperties(BlockList small_blocks, BlockList big_blocks, IEnumerator properties, POIFSDocumentPath path) { List<DocumentDescriptor> documents = new List<DocumentDescriptor>(); while (properties.MoveNext()) { Property property = (Property)properties.Current; String name = property.Name; if (property.IsDirectory) { POIFSDocumentPath new_path = new POIFSDocumentPath(path, new String[] { name }); ProcessProperties( small_blocks, big_blocks, ((DirectoryProperty)property).Children, new_path); } else { int startBlock = property.StartBlock; int size = property.Size; POIFSDocument document = null; if (property.ShouldUseSmallBlocks) { document = new POIFSDocument(name, small_blocks .FetchBlocks(startBlock,-1), size); } else { document = new POIFSDocument(name, big_blocks .FetchBlocks(startBlock,-1), size); } documents.Add( new DocumentDescriptor(path, name)); //fire event OnStreamReaded(new POIFSReaderEventArgs(name, path, document)); } } return documents; }