├── .gitignore ├── DocFetcher-1.1.iml ├── LICENSE ├── README.md ├── build-daemon.xml ├── build-dmg.sh ├── build-man.py ├── build-website.py ├── build-win-installer.nsi ├── build.py ├── current-version.txt ├── deploy-website.sh ├── dev ├── DocFetcher.ico ├── default_license_notice.txt ├── launch4j-config.txt ├── nsis-dependencies │ ├── JREDyna_Inetc.nsh │ └── Processes.dll ├── old-translations-from-1.0.3 │ ├── Resource.properties │ ├── Resource_de.properties │ ├── Resource_fa.properties │ ├── Resource_fr.properties │ ├── Resource_it.properties │ └── Resource_pt.properties ├── screenshots │ ├── intro-001-results-edited.png │ ├── intro-001-results-unedited.png │ ├── intro-001-results.odg │ └── intro-002-config.png ├── squirrel_mascot_head.svg ├── svg-files │ ├── squirrel_mascot_body.svg │ ├── squirrel_mascot_head.svg │ └── squirrel_mascot_logo.svg ├── system-conf.txt ├── test-files │ ├── 7z-encrypted-(password='docfetcher').7z │ ├── 7z-encrypted-including-filenames-(password='docfetcher').7z │ ├── encrypted-(password='docfetcher').odt │ ├── encrypted-(password='docfetcher').pdf │ ├── entry-without-name.7z │ ├── fake-zip-file-inside-solid.7z │ ├── file-requiring-read-write-mode.xlsx │ ├── index-update-html-in-7z │ │ ├── 00_original.7z │ │ ├── 01_no-folder.7z │ │ ├── 02_modified-html-file.7z │ │ ├── 03_modified-sub-file.7z │ │ ├── 04_no-sub-file.7z │ │ ├── 05_added-sub-file-readable.7z │ │ └── 06_added-sub-file-unreadable.7z │ ├── index-update-html-in-html │ │ ├── index-update-html-in-html.7z │ │ ├── test.html │ │ └── test_files │ │ │ └── inner-test.html │ ├── index-update-rename-in-7z │ │ ├── file1.7z │ │ ├── file2.7z │ │ ├── folder1.7z │ │ └── folder2.7z │ ├── lorem-ipsum │ │ ├── lorem-ipsum(excel-5.0).xls │ │ ├── lorem-ipsum(excel-95).xls │ │ ├── lorem-ipsum(excel-97).xls │ │ ├── lorem-ipsum(powerpoint-97).ppt │ │ ├── lorem-ipsum(word-97).doc │ │ ├── lorem-ipsum.abw │ │ ├── lorem-ipsum.abw.gz │ │ ├── lorem-ipsum.docx │ │ ├── lorem-ipsum.html │ │ ├── lorem-ipsum.odt │ │ ├── lorem-ipsum.pdf │ │ ├── lorem-ipsum.rtf │ │ ├── lorem-ipsum.svg │ │ └── lorem-ipsum.txt │ ├── missing-meta.xml-entry.odt │ ├── multi-page.pdf │ ├── multiple-dirs.7z │ ├── rtf-with-image.rtf │ ├── sfx-7z.exe │ ├── sfx-rar.exe │ ├── sfx-zip.exe │ ├── simple.7z │ ├── test.html │ ├── test.pst │ ├── testWORD-Tika.doc │ ├── testWORD-Tika.docx │ ├── textmaker-rtf │ │ ├── Bold-Italic.rtf │ │ ├── Bold.rtf │ │ ├── Italic.rtf │ │ └── Underline.rtf │ ├── umlauts.7z │ └── zip-rar.7z └── website-layout.odg ├── dist ├── DocFetcher.icns ├── Info.plist ├── Readme.txt ├── daemon │ ├── docfetcher-daemon-linux │ └── docfetcher-daemon-windows.exe ├── epl-v10.html ├── img │ ├── add.gif │ ├── arrow_down.gif │ ├── arrow_left.gif │ ├── arrow_right.gif │ ├── arrow_up.gif │ ├── browser.gif │ ├── building_blocks.gif │ ├── check.gif │ ├── clipboard.gif │ ├── docfetcher128.png │ ├── docfetcher16.png │ ├── docfetcher24.png │ ├── docfetcher32.png │ ├── docfetcher48.png │ ├── docfetcher64.png │ ├── email.gif │ ├── file.gif │ ├── folder.gif │ ├── help.gif │ ├── hide.gif │ ├── highlight.gif │ ├── indexing.gif │ ├── indexing_dialog.gif │ ├── info.gif │ ├── letters.gif │ ├── list.gif │ ├── maximize.gif │ ├── minimize.gif │ ├── package.gif │ ├── preferences.gif │ ├── program.gif │ ├── refresh.gif │ ├── remove.gif │ ├── restore.png │ ├── setup.bmp │ ├── squirrel.png │ ├── star.gif │ ├── stop.gif │ ├── tree.gif │ ├── warning.gif │ └── warning_big.gif ├── lang │ ├── Resource_de.properties │ ├── Resource_el.properties │ ├── Resource_es.properties │ ├── Resource_fr.properties │ ├── Resource_hu.properties │ ├── Resource_it.properties │ ├── Resource_ja.properties │ ├── Resource_nl.properties │ ├── Resource_pl.properties │ ├── Resource_pt.properties │ ├── Resource_ru.properties │ └── Resource_zh.properties ├── launchers │ ├── DocFetcher-1024.exe │ ├── DocFetcher-2048_64-bit-Java.exe │ ├── DocFetcher-256.exe │ ├── DocFetcher-4096_64-bit-Java.exe │ ├── DocFetcher-512.exe │ ├── DocFetcher-768.exe │ ├── DocFetcher-8192_64-bit-Java.exe │ ├── launcher-linux-gtk2.sh │ ├── launcher-linux-gtk3.sh │ ├── launcher-macosx-app.sh │ ├── launcher-macosx-portable.sh │ └── launcher.bat ├── paths.txt ├── program-conf.txt ├── py4j │ ├── __init__.py │ ├── backport.py │ ├── clientserver.py │ ├── compat.py │ ├── finalizer.py │ ├── java_collections.py │ ├── java_gateway.py │ ├── protocol.py │ ├── signals.py │ └── version.py ├── search.py ├── system-template-conf.txt └── templates │ ├── Developer.xml │ └── OnlyOffice.xml ├── lib ├── How to add libraries to this folder.txt ├── J7zip │ └── LGPL.txt ├── Library inter-dependencies.txt ├── ansj │ └── LICENSE.txt ├── ant │ └── LICENSE ├── commons-codec │ └── LICENSE.txt ├── commons-compress │ └── LICENSE.txt ├── commons-logging │ └── LICENSE.txt ├── download-truezip.py ├── excluded_jar_patterns.txt ├── guava │ └── COPYING ├── java-libpst │ └── LICENSE.txt ├── javolution │ └── LICENSE.txt ├── jericho-html │ └── licence-epl-1.0.html ├── jexcelapi │ └── LGPL.txt ├── jintellitype │ ├── JIntellitype32.dll │ ├── JIntellitype64.dll │ └── license.txt ├── jna │ └── LICENSE ├── jnotify │ ├── jnotify.dll │ ├── jnotify_64bit.dll │ ├── lgpl.txt │ ├── libjnotify.dylib │ ├── libjnotify32.so │ └── libjnotify64.so ├── junit │ └── cpl-v10.html ├── juniversalchardet │ └── MPL-1.1.txt ├── junrar │ └── license.txt ├── jxgrabkey │ ├── LICENSE.txt │ ├── libJXGrabKey32.so │ └── libJXGrabKey64.so ├── license_patterns.txt ├── log4j │ └── LICENSE.txt ├── lucene │ └── LICENSE.txt ├── metadata-extractor │ └── LICENSE-2.0.txt ├── mime-util │ └── LICENSE.txt ├── misc │ ├── AlphanumComparator │ │ └── LGPL.txt │ └── CocoaUIEnhancer │ │ └── epl-v10.html ├── pdfbox │ └── LICENSE.txt ├── pegdown │ └── LICENSE ├── poi │ └── LICENSE ├── py4j │ └── LICENSE.txt ├── slf4j │ └── LICENSE.txt ├── swt │ ├── about.html │ └── about_files │ │ ├── IJG_README │ │ └── mpl-v11.txt ├── tika-import.py ├── tika │ └── LICENSE.txt ├── truezip │ └── LICENSE └── xz-utils │ └── COPYING ├── readme.txt ├── src-daemon ├── linux │ ├── .cdtbuild │ ├── .cdtproject │ ├── .cproject │ ├── .project │ ├── docfetcher-daemon-linux.iml │ └── src │ │ ├── FolderWatcher.cpp │ │ ├── FolderWatcher.h │ │ ├── Logger.cpp │ │ ├── Logger.h │ │ ├── docfetcher-daemon-linux.cpp │ │ └── inotify-syscalls.h └── win32 │ ├── .cproject │ ├── .project │ ├── DocFetcher.ico │ ├── docfetcher-daemon-win.iml │ └── src │ ├── FolderWatcher.cpp │ ├── FolderWatcher.h │ ├── docfetcher-daemon-win.cpp │ └── jnotify_win32 │ ├── Lock.cpp │ ├── Lock.h │ ├── Logger.cpp │ ├── Logger.h │ ├── WatchData.cpp │ ├── WatchData.h │ ├── Win32FSHook.cpp │ └── Win32FSHook.h └── src ├── log4j.properties ├── log4j2.xml ├── net ├── contentobjects │ └── jnotify │ │ ├── IJNotify.java │ │ ├── JNotify.java │ │ ├── JNotifyAdapter.java │ │ ├── JNotifyException.java │ │ ├── JNotifyListener.java │ │ ├── Util.java │ │ ├── linux │ │ ├── INotifyListener.java │ │ ├── JNotifyAdapterLinux.java │ │ ├── JNotifyException_linux.java │ │ └── JNotify_linux.java │ │ ├── macosx │ │ ├── FSEventListener.java │ │ ├── JNotifyAdapterMacOSX.java │ │ ├── JNotifyException_macosx.java │ │ └── JNotify_macosx.java │ │ └── win32 │ │ ├── IWin32NotifyListener.java │ │ ├── JNotifyAdapterWin32.java │ │ ├── JNotifyException_win32.java │ │ └── JNotify_win32.java └── sourceforge │ └── docfetcher │ ├── Main.java │ ├── Py4jHandler.java │ ├── TestFiles.java │ ├── UtilGlobal.java │ ├── build │ ├── BuildMain.java │ ├── Copies.java │ ├── FileSets.java │ ├── FileWalker.java │ ├── Paths.java │ └── U.java │ ├── enums │ ├── Img.java │ ├── Msg.java │ ├── MsgMigrator.java │ ├── MsgWriter.java │ ├── ProgramConf.java │ ├── SettingsConf.java │ ├── SystemConf.java │ └── settings-conf-header.txt │ ├── gui │ ├── Application.java │ ├── CustomBorderComposite.java │ ├── HotkeyHandler.java │ ├── KeyCodeTranslator.java │ ├── ManualLocator.java │ ├── MovingBox.java │ ├── MultiFileLauncher.java │ ├── ResultPanel.java │ ├── SearchBar.java │ ├── SearchQueue.java │ ├── StatusBar.java │ ├── SystemTrayHider.java │ ├── ThinArrowButton.java │ ├── ThreePanelForm.java │ ├── UtilGui.java │ ├── WebInterfaceDialog.java │ ├── filter │ │ ├── FileTypePanel.java │ │ ├── FilesizePanel.java │ │ ├── FilesizeTest.java │ │ ├── FilesizeUnit.java │ │ ├── IndexPanel.java │ │ ├── ToolBarForm.java │ │ ├── ToolBarFormHeader.java │ │ └── TwoFormExpander.java │ ├── indexing │ │ ├── ConfigPanel.java │ │ ├── ErrorTable.java │ │ ├── FileConfigPanel.java │ │ ├── FileExtensionChooser.java │ │ ├── FileExtensionGroupWrapper.java │ │ ├── IndexNameGroupWrapper.java │ │ ├── IndexingDialog.java │ │ ├── OutlookConfigPanel.java │ │ ├── PatternTable.java │ │ ├── ProgressPanel.java │ │ ├── ProgressReporter.java │ │ ├── ProgressTable.java │ │ ├── RegexTestPanel.java │ │ └── SingletonDialogFactory.java │ ├── pref │ │ ├── CheckOption.java │ │ ├── ColorOption.java │ │ ├── DropdownOption.java │ │ ├── FontOption.java │ │ ├── HotkeyDialog.java │ │ ├── HotkeyOption.java │ │ ├── PrefDialog.java │ │ └── StyledLabel.java │ └── preview │ │ ├── AppendingStyledTextContent.java │ │ ├── DelayedOverlay.java │ │ ├── EmailPreview.java │ │ ├── HighlightingText.java │ │ ├── HighlightingToolBarWithTextViewer.java │ │ ├── HtmlPreview.java │ │ ├── PreviewPanel.java │ │ ├── RangeField.java │ │ ├── TextPreview.java │ │ ├── ToolBarForm.java │ │ └── WelcomePanel.java │ ├── man │ ├── Manual.java │ ├── all │ │ ├── bullet.png │ │ └── style.css │ ├── de │ │ ├── DocFetcher_Manual.markdown │ │ ├── DocFetcher_Manual_files │ │ │ ├── Indexing_Options.markdown │ │ │ ├── Memory_Limit.markdown │ │ │ ├── Portable_Repositories.markdown │ │ │ ├── Preferences.markdown │ │ │ ├── Query_Syntax.markdown │ │ │ ├── Regular_Expressions.markdown │ │ │ ├── Release_Notification.markdown │ │ │ └── Watch_Limit.markdown │ │ └── page.properties │ ├── en │ │ ├── DocFetcher_Manual.markdown │ │ ├── DocFetcher_Manual_files │ │ │ ├── Indexing_Options.markdown │ │ │ ├── Memory_Limit.markdown │ │ │ ├── Portable_Repositories.markdown │ │ │ ├── Preferences.markdown │ │ │ ├── Query_Syntax.markdown │ │ │ ├── Regular_Expressions.markdown │ │ │ ├── Release_Notification.markdown │ │ │ └── Watch_Limit.markdown │ │ └── page.properties │ ├── it │ │ ├── DocFetcher_Manual.markdown │ │ ├── DocFetcher_Manual_files │ │ │ ├── Indexing_Options.markdown │ │ │ ├── Memory_Limit.markdown │ │ │ ├── Portable_Repositories.markdown │ │ │ ├── Preferences.markdown │ │ │ ├── Query_Syntax.markdown │ │ │ ├── Regular_Expressions.markdown │ │ │ ├── Release_Notification.markdown │ │ │ └── Watch_Limit.markdown │ │ └── page.properties │ ├── ja │ │ ├── DocFetcher_Manual.markdown │ │ ├── DocFetcher_Manual_files │ │ │ ├── Indexing_Options.markdown │ │ │ ├── Memory_Limit.markdown │ │ │ ├── Portable_Repositories.markdown │ │ │ ├── Preferences.markdown │ │ │ ├── Query_Syntax.markdown │ │ │ ├── Regular_Expressions.markdown │ │ │ ├── Release_Notification.markdown │ │ │ └── Watch_Limit.markdown │ │ └── page.properties │ ├── template-mainpage.html │ ├── template-subpage.html │ └── zh │ │ ├── DocFetcher_Manual.markdown │ │ ├── DocFetcher_Manual_files │ │ ├── Indexing_Options.markdown │ │ ├── Memory_Limit.markdown │ │ ├── Portable_Repositories.markdown │ │ ├── Preferences.markdown │ │ ├── Query_Syntax.markdown │ │ ├── Regular_Expressions.markdown │ │ ├── Release_Notification.markdown │ │ └── Watch_Limit.markdown │ │ └── page.properties │ ├── model │ ├── Cancelable.java │ ├── Daemon.java │ ├── Document.java │ ├── DocumentType.java │ ├── FieldTypes.java │ ├── Fields.java │ ├── FileResource.java │ ├── Folder.java │ ├── FolderTest.java │ ├── FolderVisitor.java │ ├── FolderWatcher.java │ ├── HotColdFileCache.java │ ├── IndexLoadingProblems.java │ ├── IndexRegistry.java │ ├── LuceneIndex.java │ ├── MailResource.java │ ├── Path.java │ ├── PathTest.java │ ├── PendingDeletion.java │ ├── SimpleJNotifyListener.java │ ├── TreeCheckState.java │ ├── TreeCheckStateTest.java │ ├── TreeIndex.java │ ├── TreeNode.java │ ├── UtilModel.java │ ├── UtilModelTest.java │ ├── ViewNode.java │ ├── index │ │ ├── DecoratedMultiReader.java │ │ ├── DelegatingReporter.java │ │ ├── DiskSpaceException.java │ │ ├── IndexWriterAdapter.java │ │ ├── IndexingConfig.java │ │ ├── IndexingConfigTest.java │ │ ├── IndexingError.java │ │ ├── IndexingException.java │ │ ├── IndexingInfo.java │ │ ├── IndexingQueue.java │ │ ├── IndexingReporter.java │ │ ├── MutableInt.java │ │ ├── PatternAction.java │ │ ├── Task.java │ │ ├── file │ │ │ ├── AppendingContext.java │ │ │ ├── AppendingDocWriter.java │ │ │ ├── ArchiveEncryptedException.java │ │ │ ├── FileContext.java │ │ │ ├── FileDocument.java │ │ │ ├── FileFactory.java │ │ │ ├── FileFactoryTest.java │ │ │ ├── FileFolder.java │ │ │ ├── FileIndex.java │ │ │ ├── FileIndexTest.java │ │ │ ├── HtmlFileLister.java │ │ │ ├── HtmlFileWalker.java │ │ │ ├── HtmlUtil.java │ │ │ ├── LuceneDocWriter.java │ │ │ ├── MapValueDiff.java │ │ │ ├── RarTree.java │ │ │ ├── SevenZipInputStream.java │ │ │ ├── SevenZipTree.java │ │ │ ├── SevenZipUnpacker.java │ │ │ ├── SimpleDocWriter.java │ │ │ ├── SolidArchiveContext.java │ │ │ ├── SolidArchiveFactory.java │ │ │ ├── SolidArchiveTree.java │ │ │ ├── SolidArchiveTreeTest.java │ │ │ ├── TestUnpackFromZip.java │ │ │ └── WrappedStackOverflowError.java │ │ └── outlook │ │ │ ├── AttachmentVisitor.java │ │ │ ├── MailDocument.java │ │ │ ├── MailFolder.java │ │ │ ├── OutlookContext.java │ │ │ ├── OutlookIndex.java │ │ │ ├── OutlookIndexTest.java │ │ │ ├── OutlookMailFactory.java │ │ │ ├── OutlookMailResource.java │ │ │ └── TreeRootSimplifier.java │ ├── parse │ │ ├── AbiWordParser.java │ │ ├── ChmParser.java │ │ ├── EpubParser.java │ │ ├── ExifParser.java │ │ ├── FLACParser.java │ │ ├── FileParser.java │ │ ├── HtmlParser.java │ │ ├── MP3Parser.java │ │ ├── MSExcelParser.java │ │ ├── MSOffice2007Parser.java │ │ ├── MSOffice2007ParserTest.java │ │ ├── MSOfficeParser.java │ │ ├── MediaType.java │ │ ├── OpenOfficeParser.java │ │ ├── OpenOfficeParserTest.java │ │ ├── PageHandler.java │ │ ├── PagingChmParser.java │ │ ├── PagingPdfParser.java │ │ ├── PagingPdfParserTest.java │ │ ├── ParseContext.java │ │ ├── ParseException.java │ │ ├── ParseResult.java │ │ ├── ParseService.java │ │ ├── ParseServiceTest.java │ │ ├── Parser.java │ │ ├── PdfParser.java │ │ ├── PdfParserTest.java │ │ ├── RtfParser.java │ │ ├── RtfParserTest.java │ │ ├── StreamParser.java │ │ ├── SvgParser.java │ │ ├── TestParseFromZip.java │ │ ├── TextDetector.java │ │ ├── TextParser.java │ │ ├── UtilParser.java │ │ └── VorbisComment.java │ └── search │ │ ├── DelegatingCollector.java │ │ ├── HighlightService.java │ │ ├── HighlightServiceTest.java │ │ ├── HighlightedString.java │ │ ├── PhraseDetectingQueryParser.java │ │ ├── Range.java │ │ ├── ResultDocument.java │ │ ├── SearchException.java │ │ ├── Searcher.java │ │ ├── SourceCodeTokenFilter.java │ │ ├── SourceCodeTokenizer.java │ │ └── WebQuery.java │ ├── util │ ├── AppUtil.java │ ├── CharsetDetectorHelper.java │ ├── CheckedOutOfMemoryError.java │ ├── ClassPathHack.java │ ├── ConfLoader.java │ ├── Event.java │ ├── LoopTimer.java │ ├── Stoppable.java │ ├── SwtJarLocator.java │ ├── Util.java │ ├── UtilTest.java │ ├── annotations │ │ ├── CallOnce.java │ │ ├── Immutable.java │ │ ├── ImmutableCopy.java │ │ ├── MutableCopy.java │ │ ├── NotNull.java │ │ ├── NotThreadSafe.java │ │ ├── Nullable.java │ │ ├── RecursiveMethod.java │ │ ├── ThreadSafe.java │ │ └── VisibleForPackageGroup.java │ ├── collect │ │ ├── AlphanumComparator.java │ │ ├── BoundedList.java │ │ ├── LazyList.java │ │ ├── ListMap.java │ │ ├── MemoryList.java │ │ └── SafeKeyMap.java │ ├── concurrent │ │ ├── BlockingWrapper.java │ │ ├── DelayedExecutor.java │ │ └── MergingBlockingQueue.java │ └── gui │ │ ├── BrowserPopupBlocker.java │ │ ├── CocoaUIEnhancer.java │ │ ├── Col.java │ │ ├── ConfigComposite.java │ │ ├── ContextMenuManager.java │ │ ├── DropDownMenuManager.java │ │ ├── FileIconCache.java │ │ ├── FixedSashForm.java │ │ ├── FormDataFactory.java │ │ ├── GroupWrapper.java │ │ ├── LazyImageCache.java │ │ ├── MenuAction.java │ │ ├── StatusManager.java │ │ ├── SystemFont.java │ │ ├── TabFolderFactory.java │ │ ├── ToolItemFactory.java │ │ ├── UndoRedoProvider.java │ │ ├── dialog │ │ ├── InfoDialog.java │ │ ├── InputDialog.java │ │ ├── InputDialogLoop.java │ │ ├── InputLoop.java │ │ ├── ListConfirmDialog.java │ │ ├── MultipleChoiceDialog.java │ │ ├── StackTraceWindow.java │ │ └── TextInputDialog.java │ │ └── viewer │ │ ├── ColumnEditSupport.java │ │ ├── PagedTableViewer.java │ │ ├── SimpleTableViewer.java │ │ ├── SimpleTreeViewer.java │ │ ├── TableEditSupport.java │ │ └── VirtualTableViewer.java │ └── website │ ├── Website.java │ ├── all │ ├── bullet.png │ ├── de.png │ ├── docfetcher-logo.png │ ├── docfetcher16.png │ ├── docfetcher64.png │ ├── en.png │ ├── es.png │ ├── fr.png │ ├── intro-001-results-edited.png │ ├── intro-002-config.png │ ├── it.png │ ├── ru.png │ ├── web.css │ ├── xp_all.png │ └── xp_simple.png │ ├── changelog.txt │ ├── de │ ├── download.markdown │ ├── index.markdown │ ├── more.markdown │ ├── page.properties │ └── screenshots.markdown │ ├── docfetcher-pad-template.xml │ ├── en │ ├── download.markdown │ ├── index.markdown │ ├── more.markdown │ ├── page.properties │ └── screenshots.markdown │ ├── es │ ├── download.markdown │ ├── index.markdown │ ├── more.markdown │ ├── page.properties │ └── screenshots.markdown │ ├── fr │ ├── download.markdown │ ├── index.markdown │ ├── more.markdown │ ├── page.properties │ └── screenshots.markdown │ ├── index.php │ ├── it │ ├── download.markdown │ ├── index.markdown │ ├── more.markdown │ ├── page.properties │ └── screenshots.markdown │ ├── prop-help-template.html │ ├── ru │ ├── download.markdown │ ├── index.markdown │ ├── more.markdown │ ├── page.properties │ └── screenshots.markdown │ └── template.html └── org └── apache └── tika ├── Tika.java ├── concurrent ├── ConfigurableThreadPoolExecutor.java └── SimpleThreadPoolExecutor.java ├── config ├── LoadErrorHandler.java ├── ServiceLoader.java ├── TikaConfig.java └── TikaConfigSerializer.java ├── detect ├── AutoDetectReader.java ├── CompositeDetector.java ├── DefaultDetector.java ├── DefaultProbDetector.java ├── Detector.java ├── EmptyDetector.java ├── EncodingDetector.java ├── MagicDetector.java ├── NNExampleModelDetector.java ├── NNTrainedModel.java ├── NNTrainedModelBuilder.java ├── NameDetector.java ├── TextDetector.java ├── TextStatistics.java ├── TrainedModel.java ├── TrainedModelDetector.java ├── TypeDetector.java ├── XmlRootExtractor.java └── ZeroSizeFileDetector.java ├── exception ├── AccessPermissionException.java ├── EncryptedDocumentException.java └── TikaException.java ├── extractor ├── ContainerExtractor.java ├── DocumentSelector.java ├── EmbeddedDocumentExtractor.java ├── EmbeddedResourceHandler.java ├── ParserContainerExtractor.java └── ParsingEmbeddedDocumentExtractor.java ├── io ├── CloseShieldInputStream.java ├── ClosedInputStream.java ├── CountingInputStream.java ├── EndianUtils.java ├── FilenameUtils.java ├── IOExceptionWithCause.java ├── IOUtils.java ├── LookaheadInputStream.java ├── NullInputStream.java ├── NullOutputStream.java ├── ProxyInputStream.java ├── TaggedIOException.java ├── TaggedInputStream.java ├── TailStream.java ├── TemporaryResources.java └── TikaInputStream.java ├── language ├── LanguageIdentifier.java ├── LanguageProfile.java ├── LanguageProfilerBuilder.java ├── ProfilingHandler.java ├── ProfilingWriter.java ├── detect │ ├── LanguageConfidence.java │ ├── LanguageDetector.java │ ├── LanguageHandler.java │ ├── LanguageNames.java │ ├── LanguageResult.java │ └── LanguageWriter.java └── translate │ ├── DefaultTranslator.java │ ├── EmptyTranslator.java │ └── Translator.java ├── metadata ├── AccessPermissions.java ├── ClimateForcast.java ├── CreativeCommons.java ├── Database.java ├── DublinCore.java ├── Geographic.java ├── HttpHeaders.java ├── IPTC.java ├── MSOffice.java ├── Message.java ├── Metadata.java ├── Office.java ├── OfficeOpenXMLCore.java ├── OfficeOpenXMLExtended.java ├── PagedText.java ├── Photoshop.java ├── Property.java ├── PropertyTypeException.java ├── RTFMetadata.java ├── TIFF.java ├── TikaCoreProperties.java ├── TikaMetadataKeys.java ├── TikaMimeKeys.java ├── XMP.java ├── XMPDM.java ├── XMPIdq.java ├── XMPMM.java └── XMPRights.java ├── mime ├── AndClause.java ├── Clause.java ├── HexCoDec.java ├── Magic.java ├── MagicMatch.java ├── MediaType.java ├── MediaTypeRegistry.java ├── MimeType.java ├── MimeTypeException.java ├── MimeTypes.java ├── MimeTypesFactory.java ├── MimeTypesReader.java ├── MimeTypesReaderMetKeys.java ├── OrClause.java ├── Patterns.java ├── ProbabilisticMimeDetectionSelector.java └── tika-mimetypes.xml ├── parser ├── AbstractParser.java ├── AutoDetectParser.java ├── CompositeParser.java ├── CryptoParser.java ├── DefaultParser.java ├── DelegatingParser.java ├── DigestingParser.java ├── EmptyParser.java ├── ErrorParser.java ├── NetworkParser.java ├── ParseContext.java ├── Parser.java ├── ParserDecorator.java ├── ParserPostProcessor.java ├── ParsingReader.java ├── PasswordProvider.java ├── RecursiveParserWrapper.java ├── chm │ ├── accessor │ │ ├── ChmAccessor.java │ │ ├── ChmDirectoryListingSet.java │ │ ├── ChmItsfHeader.java │ │ ├── ChmItspHeader.java │ │ ├── ChmLzxcControlData.java │ │ ├── ChmLzxcResetTable.java │ │ ├── ChmPmgiHeader.java │ │ ├── ChmPmglHeader.java │ │ └── DirectoryListingEntry.java │ ├── assertion │ │ └── ChmAssert.java │ ├── core │ │ ├── ChmCommons.java │ │ ├── ChmConstants.java │ │ ├── ChmExtractor.java │ │ └── ChmWrapper.java │ ├── exception │ │ └── ChmParsingException.java │ └── lzx │ │ ├── ChmBlockInfo.java │ │ ├── ChmLzxBlock.java │ │ ├── ChmLzxState.java │ │ └── ChmSection.java ├── external │ ├── CompositeExternalParser.java │ ├── ExternalParser.java │ ├── ExternalParsersConfigReader.java │ ├── ExternalParsersConfigReaderMetKeys.java │ └── ExternalParsersFactory.java ├── microsoft │ ├── OfficeParser.java │ └── POIFSContainerDetector.java ├── mp3 │ ├── AudioFrame.java │ ├── CompositeTagHandler.java │ ├── ID3Tags.java │ ├── ID3v1Handler.java │ ├── ID3v22Handler.java │ ├── ID3v23Handler.java │ ├── ID3v24Handler.java │ ├── ID3v2Frame.java │ ├── LyricsHandler.java │ ├── MP3Frame.java │ ├── Mp3Parser.java │ └── MpegStream.java ├── odf │ ├── NSNormalizerContentHandler.java │ ├── OpenDocumentContentParser.java │ ├── OpenDocumentMetaParser.java │ └── OpenDocumentParser.java ├── rtf │ ├── GroupState.java │ ├── ListDescriptor.java │ ├── RTFEmbObjHandler.java │ ├── RTFObjDataParser.java │ ├── RTFParser.java │ └── TextExtractor.java └── xml │ ├── AbstractMetadataHandler.java │ ├── AttributeDependantMetadataHandler.java │ ├── AttributeMetadataHandler.java │ ├── DcXMLParser.java │ ├── ElementMetadataHandler.java │ ├── FictionBookParser.java │ ├── MetadataHandler.java │ └── XMLParser.java ├── sax ├── BasicContentHandlerFactory.java ├── BodyContentHandler.java ├── CleanPhoneText.java ├── ContentHandlerDecorator.java ├── ContentHandlerFactory.java ├── DIFContentHandler.java ├── ElementMappingContentHandler.java ├── EmbeddedContentHandler.java ├── EndDocumentShieldingContentHandler.java ├── ExpandedTitleContentHandler.java ├── Link.java ├── LinkBuilder.java ├── LinkContentHandler.java ├── OfflineContentHandler.java ├── PhoneExtractingContentHandler.java ├── RichTextContentHandler.java ├── SafeContentHandler.java ├── SecureContentHandler.java ├── TaggedContentHandler.java ├── TaggedSAXException.java ├── TeeContentHandler.java ├── TextContentHandler.java ├── ToHTMLContentHandler.java ├── ToTextContentHandler.java ├── ToXMLContentHandler.java ├── WriteOutContentHandler.java ├── XHTMLContentHandler.java ├── XMPContentHandler.java └── xpath │ ├── AttributeMatcher.java │ ├── ChildMatcher.java │ ├── CompositeMatcher.java │ ├── ElementMatcher.java │ ├── Matcher.java │ ├── MatchingContentHandler.java │ ├── NamedAttributeMatcher.java │ ├── NamedElementMatcher.java │ ├── NodeMatcher.java │ ├── SubtreeMatcher.java │ ├── TextMatcher.java │ └── XPathParser.java └── utils ├── CharsetUtils.java ├── ConcurrentUtils.java ├── DateUtils.java ├── ExceptionUtils.java ├── RegexUtils.java ├── RereadableInputStream.java └── ServiceLoaderUtils.java /.gitignore: -------------------------------------------------------------------------------- 1 | # Compiled class file 2 | *.class 3 | 4 | # Log file 5 | *.log 6 | 7 | # BlueJ files 8 | *.ctxt 9 | 10 | # Mobile Tools for Java (J2ME) 11 | .mtj.tmp/ 12 | 13 | # Package Files # 14 | *.jar 15 | *.war 16 | *.nar 17 | *.ear 18 | *.zip 19 | *.tar.gz 20 | *.rar 21 | 22 | # virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml 23 | hs_err_pid* 24 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # DocFetcher 2 | DocFetcher 3 | -------------------------------------------------------------------------------- /build-dmg.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | # This script creates a disk image for Mac OS X on Linux. 4 | # 5 | # Requirements: 6 | # - mkfs.hfsplus must be installed 7 | # - the script build.py must be run first 8 | # - do not run this as root, see bug #412 9 | # 10 | # Output: 11 | # - build/DocFetcher-{version-number}.dmg 12 | 13 | user=$(whoami) 14 | if [ $user = "root" ] 15 | then 16 | echo "Do not run this script as root." 17 | exit 0 18 | fi 19 | 20 | version=`cat current-version.txt` 21 | 22 | du_output=`du -sk build/DocFetcher.app 2>&1` 23 | dir_size=`echo $du_output | cut -f1 -d" "` 24 | dir_size=`expr $dir_size + 2048` 25 | dmg_path=build/DocFetcher-$version.dmg 26 | 27 | rm -f $dmg_path 28 | dd if=/dev/zero of=$dmg_path bs=1024 count=$dir_size 29 | mkfs.hfsplus -v "DocFetcher" $dmg_path 30 | 31 | sudo mkdir /mnt/tmp-docfetcher 32 | sudo mount -o loop $dmg_path /mnt/tmp-docfetcher 33 | 34 | sudo cp -r build/DocFetcher.app /mnt/tmp-docfetcher 35 | sudo chown -R $user:$user /mnt/tmp-docfetcher 36 | 37 | sudo umount /mnt/tmp-docfetcher 38 | sudo rm -rf /mnt/tmp-docfetcher 39 | -------------------------------------------------------------------------------- /build-man.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/python 2 | 3 | import os, shutil, platform, sys 4 | from os.path import exists, join, isfile, isdir 5 | 6 | if len(sys.argv) <= 1: 7 | print('Must specify a language ID, for example: en, de, fr, ...') 8 | exit(0) 9 | 10 | is_windows = 'windows' in platform.system().lower() 11 | classpath_sep = ';' if is_windows else ':' 12 | 13 | print('Cleaning build directory...') 14 | class_dir = 'build/man/classes' 15 | if not exists(class_dir): 16 | os.makedirs(class_dir) 17 | for filename in os.listdir(class_dir): 18 | path = join(class_dir, filename) 19 | if isfile(path): 20 | os.remove(path) 21 | elif isdir(path): 22 | shutil.rmtree(path) 23 | 24 | def execute(cmd_parts): 25 | os.system(' '.join(cmd_parts)) 26 | 27 | # Recursively collect library jars 28 | jars = [] 29 | for root, dirs, files in os.walk('lib'): 30 | for filename in files: 31 | if not filename.endswith('.jar'): continue 32 | jars.append(join(root, filename)) 33 | 34 | print('Compiling sources...') 35 | execute([ 36 | 'javac', 37 | '-sourcepath src', 38 | '-classpath \"%s\"' % classpath_sep.join(jars), 39 | '-nowarn', 40 | '-d %s' % class_dir, 41 | 'src/net/sourceforge/docfetcher/man/Manual.java' 42 | ]) 43 | 44 | jar_path = 'build/man/docfetcher-man-builder.jar' 45 | main_class = 'net.sourceforge.docfetcher.man.Manual' 46 | 47 | print('Creating builder jar...') 48 | execute([ 49 | 'jar cfe', 50 | jar_path, 51 | main_class, 52 | '-C %s net' % class_dir 53 | ]) 54 | 55 | print('Launching builder...') 56 | print('-' * 40) 57 | jars.append(jar_path) 58 | execute([ 59 | 'java', 60 | '-classpath \"%s\"' % classpath_sep.join(jars), 61 | main_class, 62 | sys.argv[1] 63 | ]) 64 | -------------------------------------------------------------------------------- /build-website.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/python 2 | 3 | import os, shutil, platform, sys 4 | from os.path import exists, join, isfile, isdir 5 | 6 | is_windows = 'windows' in platform.system().lower() 7 | classpath_sep = ';' if is_windows else ':' 8 | 9 | print('Cleaning build directory...') 10 | class_dir = 'build/website/classes' 11 | if not exists(class_dir): 12 | os.makedirs(class_dir) 13 | for filename in os.listdir(class_dir): 14 | path = join(class_dir, filename) 15 | if isfile(path): 16 | os.remove(path) 17 | elif isdir(path): 18 | shutil.rmtree(path) 19 | 20 | def execute(cmd_parts): 21 | os.system(' '.join(cmd_parts)) 22 | 23 | # Recursively collect library jars 24 | jars = [] 25 | for root, dirs, files in os.walk('lib'): 26 | for filename in files: 27 | if not filename.endswith('.jar'): continue 28 | jars.append(join(root, filename)) 29 | 30 | print('Compiling sources...') 31 | execute([ 32 | 'javac', 33 | '-sourcepath src', 34 | '-classpath \"%s\"' % classpath_sep.join(jars), 35 | '-nowarn', 36 | '-d %s' % class_dir, 37 | 'src/net/sourceforge/docfetcher/website/Website.java' 38 | ]) 39 | 40 | jar_path = 'build/website/docfetcher-website-builder.jar' 41 | main_class = 'net.sourceforge.docfetcher.website.Website' 42 | 43 | print('Creating builder jar...') 44 | execute([ 45 | 'jar cfe', 46 | jar_path, 47 | main_class, 48 | '-C %s net' % class_dir 49 | ]) 50 | 51 | print('Launching builder...') 52 | print('-' * 40) 53 | jars.append(jar_path) 54 | execute([ 55 | 'java', 56 | '-classpath \"%s\"' % classpath_sep.join(jars), 57 | main_class 58 | ]) 59 | -------------------------------------------------------------------------------- /current-version.txt: -------------------------------------------------------------------------------- 1 | 1.1.21 -------------------------------------------------------------------------------- /deploy-website.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | die () { 4 | echo >&2 "$@" 5 | exit 1 6 | } 7 | 8 | [ "$#" -eq 1 ] || die "No SourceForge.net user name specified." 9 | 10 | ./build-website.py 11 | 12 | cd dist/website 13 | find . -type f -print0 | xargs -0 chmod a+r 14 | find . -type f -print0 | xargs -0 chmod u+w 15 | find . -type f -print0 | xargs -0 chmod go-w 16 | find . -type f -print0 | xargs -0 chmod a-x 17 | chmod a+x index.php 18 | cd ../.. 19 | 20 | rsync -avP -e ssh dist/website/ $1@web.sourceforge.net:/home/project-web/docfetcher/htdocs 21 | -------------------------------------------------------------------------------- /dev/DocFetcher.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/docfetcher/DocFetcher/42f2accd840edc5059060447ed3536aa4d54b5d3/dev/DocFetcher.ico -------------------------------------------------------------------------------- /dev/default_license_notice.txt: -------------------------------------------------------------------------------- 1 | /******************************************************************************* 2 | * Copyright (c) {DATE} {INITIAL COPYRIGHT OWNER} {OTHER COPYRIGHT OWNERS}. 3 | * All rights reserved. This program and the accompanying materials 4 | * are made available under the terms of the Eclipse Public License v1.0 5 | * which accompanies this distribution, and is available at 6 | * http://www.eclipse.org/legal/epl-v10.html 7 | * 8 | * Contributors: 9 | * {INITIAL AUTHOR} - initial API and implementation 10 | *******************************************************************************/ 11 | -------------------------------------------------------------------------------- /dev/launch4j-config.txt: -------------------------------------------------------------------------------- 1 | These are the settings used for creating a Windows launcher with Launch4J. 2 | 3 | Basic 4 | ============================== 5 | Jar runtime path: lib\ 6 | Don't wrap the jar, launch only: checked 7 | Icon: (Path to ico file) 8 | Change dir: . 9 | Stay alive after launching a GUI application: checked 10 | (Uninstaller won't work without this!) 11 | Java download URL: http://java.com 12 | 13 | Classpath 14 | ============================== 15 | Custom classpath: checked 16 | Main class: net.sourceforge.docfetcher.Main 17 | Classpath: lib\*.jar 18 | 19 | JRE 20 | ============================== 21 | Min JRE version: 1.7.0 22 | Max heap size: 256, 512, 768, 1024 23 | JVM options: 24 | -Djava.library.path="lib" 25 | -enableassertions 26 | -Xss2m 27 | -------------------------------------------------------------------------------- /dev/nsis-dependencies/Processes.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/docfetcher/DocFetcher/42f2accd840edc5059060447ed3536aa4d54b5d3/dev/nsis-dependencies/Processes.dll -------------------------------------------------------------------------------- /dev/old-translations-from-1.0.3/Resource_de.properties: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/docfetcher/DocFetcher/42f2accd840edc5059060447ed3536aa4d54b5d3/dev/old-translations-from-1.0.3/Resource_de.properties -------------------------------------------------------------------------------- /dev/old-translations-from-1.0.3/Resource_fr.properties: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/docfetcher/DocFetcher/42f2accd840edc5059060447ed3536aa4d54b5d3/dev/old-translations-from-1.0.3/Resource_fr.properties -------------------------------------------------------------------------------- /dev/old-translations-from-1.0.3/Resource_it.properties: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/docfetcher/DocFetcher/42f2accd840edc5059060447ed3536aa4d54b5d3/dev/old-translations-from-1.0.3/Resource_it.properties -------------------------------------------------------------------------------- /dev/old-translations-from-1.0.3/Resource_pt.properties: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/docfetcher/DocFetcher/42f2accd840edc5059060447ed3536aa4d54b5d3/dev/old-translations-from-1.0.3/Resource_pt.properties -------------------------------------------------------------------------------- /dev/screenshots/intro-001-results-edited.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/docfetcher/DocFetcher/42f2accd840edc5059060447ed3536aa4d54b5d3/dev/screenshots/intro-001-results-edited.png -------------------------------------------------------------------------------- /dev/screenshots/intro-001-results-unedited.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/docfetcher/DocFetcher/42f2accd840edc5059060447ed3536aa4d54b5d3/dev/screenshots/intro-001-results-unedited.png -------------------------------------------------------------------------------- /dev/screenshots/intro-001-results.odg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/docfetcher/DocFetcher/42f2accd840edc5059060447ed3536aa4d54b5d3/dev/screenshots/intro-001-results.odg -------------------------------------------------------------------------------- /dev/screenshots/intro-002-config.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/docfetcher/DocFetcher/42f2accd840edc5059060447ed3536aa4d54b5d3/dev/screenshots/intro-002-config.png -------------------------------------------------------------------------------- /dev/system-conf.txt: -------------------------------------------------------------------------------- 1 | # Set a different program name to make it easier to distinguish between 2 | # development instances and normal program instances. 3 | ProgramName = DEV DocFetcher 4 | 5 | # Turn development mode on 6 | IsDevelopmentVersion = true 7 | -------------------------------------------------------------------------------- /dev/test-files/7z-encrypted-(password='docfetcher').7z: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/docfetcher/DocFetcher/42f2accd840edc5059060447ed3536aa4d54b5d3/dev/test-files/7z-encrypted-(password='docfetcher').7z -------------------------------------------------------------------------------- /dev/test-files/7z-encrypted-including-filenames-(password='docfetcher').7z: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/docfetcher/DocFetcher/42f2accd840edc5059060447ed3536aa4d54b5d3/dev/test-files/7z-encrypted-including-filenames-(password='docfetcher').7z -------------------------------------------------------------------------------- /dev/test-files/encrypted-(password='docfetcher').odt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/docfetcher/DocFetcher/42f2accd840edc5059060447ed3536aa4d54b5d3/dev/test-files/encrypted-(password='docfetcher').odt -------------------------------------------------------------------------------- /dev/test-files/encrypted-(password='docfetcher').pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/docfetcher/DocFetcher/42f2accd840edc5059060447ed3536aa4d54b5d3/dev/test-files/encrypted-(password='docfetcher').pdf -------------------------------------------------------------------------------- /dev/test-files/entry-without-name.7z: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/docfetcher/DocFetcher/42f2accd840edc5059060447ed3536aa4d54b5d3/dev/test-files/entry-without-name.7z -------------------------------------------------------------------------------- /dev/test-files/fake-zip-file-inside-solid.7z: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/docfetcher/DocFetcher/42f2accd840edc5059060447ed3536aa4d54b5d3/dev/test-files/fake-zip-file-inside-solid.7z -------------------------------------------------------------------------------- /dev/test-files/file-requiring-read-write-mode.xlsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/docfetcher/DocFetcher/42f2accd840edc5059060447ed3536aa4d54b5d3/dev/test-files/file-requiring-read-write-mode.xlsx -------------------------------------------------------------------------------- /dev/test-files/index-update-html-in-7z/00_original.7z: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/docfetcher/DocFetcher/42f2accd840edc5059060447ed3536aa4d54b5d3/dev/test-files/index-update-html-in-7z/00_original.7z -------------------------------------------------------------------------------- /dev/test-files/index-update-html-in-7z/01_no-folder.7z: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/docfetcher/DocFetcher/42f2accd840edc5059060447ed3536aa4d54b5d3/dev/test-files/index-update-html-in-7z/01_no-folder.7z -------------------------------------------------------------------------------- /dev/test-files/index-update-html-in-7z/02_modified-html-file.7z: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/docfetcher/DocFetcher/42f2accd840edc5059060447ed3536aa4d54b5d3/dev/test-files/index-update-html-in-7z/02_modified-html-file.7z -------------------------------------------------------------------------------- /dev/test-files/index-update-html-in-7z/03_modified-sub-file.7z: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/docfetcher/DocFetcher/42f2accd840edc5059060447ed3536aa4d54b5d3/dev/test-files/index-update-html-in-7z/03_modified-sub-file.7z -------------------------------------------------------------------------------- /dev/test-files/index-update-html-in-7z/04_no-sub-file.7z: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/docfetcher/DocFetcher/42f2accd840edc5059060447ed3536aa4d54b5d3/dev/test-files/index-update-html-in-7z/04_no-sub-file.7z -------------------------------------------------------------------------------- /dev/test-files/index-update-html-in-7z/05_added-sub-file-readable.7z: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/docfetcher/DocFetcher/42f2accd840edc5059060447ed3536aa4d54b5d3/dev/test-files/index-update-html-in-7z/05_added-sub-file-readable.7z -------------------------------------------------------------------------------- /dev/test-files/index-update-html-in-7z/06_added-sub-file-unreadable.7z: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/docfetcher/DocFetcher/42f2accd840edc5059060447ed3536aa4d54b5d3/dev/test-files/index-update-html-in-7z/06_added-sub-file-unreadable.7z -------------------------------------------------------------------------------- /dev/test-files/index-update-html-in-html/index-update-html-in-html.7z: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/docfetcher/DocFetcher/42f2accd840edc5059060447ed3536aa4d54b5d3/dev/test-files/index-update-html-in-html/index-update-html-in-html.7z -------------------------------------------------------------------------------- /dev/test-files/index-update-html-in-html/test.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /dev/test-files/index-update-html-in-html/test_files/inner-test.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /dev/test-files/index-update-rename-in-7z/file1.7z: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/docfetcher/DocFetcher/42f2accd840edc5059060447ed3536aa4d54b5d3/dev/test-files/index-update-rename-in-7z/file1.7z -------------------------------------------------------------------------------- /dev/test-files/index-update-rename-in-7z/file2.7z: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/docfetcher/DocFetcher/42f2accd840edc5059060447ed3536aa4d54b5d3/dev/test-files/index-update-rename-in-7z/file2.7z -------------------------------------------------------------------------------- /dev/test-files/index-update-rename-in-7z/folder1.7z: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/docfetcher/DocFetcher/42f2accd840edc5059060447ed3536aa4d54b5d3/dev/test-files/index-update-rename-in-7z/folder1.7z -------------------------------------------------------------------------------- /dev/test-files/index-update-rename-in-7z/folder2.7z: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/docfetcher/DocFetcher/42f2accd840edc5059060447ed3536aa4d54b5d3/dev/test-files/index-update-rename-in-7z/folder2.7z -------------------------------------------------------------------------------- /dev/test-files/lorem-ipsum/lorem-ipsum(excel-5.0).xls: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/docfetcher/DocFetcher/42f2accd840edc5059060447ed3536aa4d54b5d3/dev/test-files/lorem-ipsum/lorem-ipsum(excel-5.0).xls -------------------------------------------------------------------------------- /dev/test-files/lorem-ipsum/lorem-ipsum(excel-95).xls: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/docfetcher/DocFetcher/42f2accd840edc5059060447ed3536aa4d54b5d3/dev/test-files/lorem-ipsum/lorem-ipsum(excel-95).xls -------------------------------------------------------------------------------- /dev/test-files/lorem-ipsum/lorem-ipsum(excel-97).xls: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/docfetcher/DocFetcher/42f2accd840edc5059060447ed3536aa4d54b5d3/dev/test-files/lorem-ipsum/lorem-ipsum(excel-97).xls -------------------------------------------------------------------------------- /dev/test-files/lorem-ipsum/lorem-ipsum(powerpoint-97).ppt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/docfetcher/DocFetcher/42f2accd840edc5059060447ed3536aa4d54b5d3/dev/test-files/lorem-ipsum/lorem-ipsum(powerpoint-97).ppt -------------------------------------------------------------------------------- /dev/test-files/lorem-ipsum/lorem-ipsum(word-97).doc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/docfetcher/DocFetcher/42f2accd840edc5059060447ed3536aa4d54b5d3/dev/test-files/lorem-ipsum/lorem-ipsum(word-97).doc -------------------------------------------------------------------------------- /dev/test-files/lorem-ipsum/lorem-ipsum.abw.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/docfetcher/DocFetcher/42f2accd840edc5059060447ed3536aa4d54b5d3/dev/test-files/lorem-ipsum/lorem-ipsum.abw.gz -------------------------------------------------------------------------------- /dev/test-files/lorem-ipsum/lorem-ipsum.docx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/docfetcher/DocFetcher/42f2accd840edc5059060447ed3536aa4d54b5d3/dev/test-files/lorem-ipsum/lorem-ipsum.docx -------------------------------------------------------------------------------- /dev/test-files/lorem-ipsum/lorem-ipsum.odt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/docfetcher/DocFetcher/42f2accd840edc5059060447ed3536aa4d54b5d3/dev/test-files/lorem-ipsum/lorem-ipsum.odt -------------------------------------------------------------------------------- /dev/test-files/lorem-ipsum/lorem-ipsum.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/docfetcher/DocFetcher/42f2accd840edc5059060447ed3536aa4d54b5d3/dev/test-files/lorem-ipsum/lorem-ipsum.pdf -------------------------------------------------------------------------------- /dev/test-files/missing-meta.xml-entry.odt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/docfetcher/DocFetcher/42f2accd840edc5059060447ed3536aa4d54b5d3/dev/test-files/missing-meta.xml-entry.odt -------------------------------------------------------------------------------- /dev/test-files/multi-page.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/docfetcher/DocFetcher/42f2accd840edc5059060447ed3536aa4d54b5d3/dev/test-files/multi-page.pdf -------------------------------------------------------------------------------- /dev/test-files/multiple-dirs.7z: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/docfetcher/DocFetcher/42f2accd840edc5059060447ed3536aa4d54b5d3/dev/test-files/multiple-dirs.7z -------------------------------------------------------------------------------- /dev/test-files/sfx-7z.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/docfetcher/DocFetcher/42f2accd840edc5059060447ed3536aa4d54b5d3/dev/test-files/sfx-7z.exe -------------------------------------------------------------------------------- /dev/test-files/sfx-rar.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/docfetcher/DocFetcher/42f2accd840edc5059060447ed3536aa4d54b5d3/dev/test-files/sfx-rar.exe -------------------------------------------------------------------------------- /dev/test-files/sfx-zip.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/docfetcher/DocFetcher/42f2accd840edc5059060447ed3536aa4d54b5d3/dev/test-files/sfx-zip.exe -------------------------------------------------------------------------------- /dev/test-files/simple.7z: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/docfetcher/DocFetcher/42f2accd840edc5059060447ed3536aa4d54b5d3/dev/test-files/simple.7z -------------------------------------------------------------------------------- /dev/test-files/test.html: -------------------------------------------------------------------------------- 1 | 2 | Title of HTML file 3 | 4 | 5 | Contents of HTML file.
6 | 7 | -------------------------------------------------------------------------------- /dev/test-files/test.pst: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/docfetcher/DocFetcher/42f2accd840edc5059060447ed3536aa4d54b5d3/dev/test-files/test.pst -------------------------------------------------------------------------------- /dev/test-files/testWORD-Tika.doc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/docfetcher/DocFetcher/42f2accd840edc5059060447ed3536aa4d54b5d3/dev/test-files/testWORD-Tika.doc -------------------------------------------------------------------------------- /dev/test-files/testWORD-Tika.docx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/docfetcher/DocFetcher/42f2accd840edc5059060447ed3536aa4d54b5d3/dev/test-files/testWORD-Tika.docx -------------------------------------------------------------------------------- /dev/test-files/umlauts.7z: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/docfetcher/DocFetcher/42f2accd840edc5059060447ed3536aa4d54b5d3/dev/test-files/umlauts.7z -------------------------------------------------------------------------------- /dev/test-files/zip-rar.7z: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/docfetcher/DocFetcher/42f2accd840edc5059060447ed3536aa4d54b5d3/dev/test-files/zip-rar.7z -------------------------------------------------------------------------------- /dev/website-layout.odg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/docfetcher/DocFetcher/42f2accd840edc5059060447ed3536aa4d54b5d3/dev/website-layout.odg -------------------------------------------------------------------------------- /dist/DocFetcher.icns: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/docfetcher/DocFetcher/42f2accd840edc5059060447ed3536aa4d54b5d3/dist/DocFetcher.icns -------------------------------------------------------------------------------- /dist/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleExecutable 6 | ${app_name} 7 | CFBundleGetInfoString 8 | ${app_name} ${app_version} for Mac OS X 9 | CFBundleIconFile 10 | ${app_name}.icns 11 | CFBundleIdentifier 12 | ${package_id} 13 | CFBundleInfoDictionaryVersion 14 | 6.0 15 | CFBundleName 16 | ${app_name} 17 | CFBundlePackageType 18 | APPL 19 | CFBundleShortVersionString 20 | ${app_version} 21 | CFBundleSignature 22 | ????? 23 | CFBundleVersion 24 | ${build_date} 25 | NSPrincipalClass 26 | NSApplication 27 | 28 | 29 | -------------------------------------------------------------------------------- /dist/daemon/docfetcher-daemon-linux: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/docfetcher/DocFetcher/42f2accd840edc5059060447ed3536aa4d54b5d3/dist/daemon/docfetcher-daemon-linux -------------------------------------------------------------------------------- /dist/daemon/docfetcher-daemon-windows.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/docfetcher/DocFetcher/42f2accd840edc5059060447ed3536aa4d54b5d3/dist/daemon/docfetcher-daemon-windows.exe -------------------------------------------------------------------------------- /dist/img/add.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/docfetcher/DocFetcher/42f2accd840edc5059060447ed3536aa4d54b5d3/dist/img/add.gif -------------------------------------------------------------------------------- /dist/img/arrow_down.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/docfetcher/DocFetcher/42f2accd840edc5059060447ed3536aa4d54b5d3/dist/img/arrow_down.gif -------------------------------------------------------------------------------- /dist/img/arrow_left.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/docfetcher/DocFetcher/42f2accd840edc5059060447ed3536aa4d54b5d3/dist/img/arrow_left.gif -------------------------------------------------------------------------------- /dist/img/arrow_right.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/docfetcher/DocFetcher/42f2accd840edc5059060447ed3536aa4d54b5d3/dist/img/arrow_right.gif -------------------------------------------------------------------------------- /dist/img/arrow_up.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/docfetcher/DocFetcher/42f2accd840edc5059060447ed3536aa4d54b5d3/dist/img/arrow_up.gif -------------------------------------------------------------------------------- /dist/img/browser.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/docfetcher/DocFetcher/42f2accd840edc5059060447ed3536aa4d54b5d3/dist/img/browser.gif -------------------------------------------------------------------------------- /dist/img/building_blocks.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/docfetcher/DocFetcher/42f2accd840edc5059060447ed3536aa4d54b5d3/dist/img/building_blocks.gif -------------------------------------------------------------------------------- /dist/img/check.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/docfetcher/DocFetcher/42f2accd840edc5059060447ed3536aa4d54b5d3/dist/img/check.gif -------------------------------------------------------------------------------- /dist/img/clipboard.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/docfetcher/DocFetcher/42f2accd840edc5059060447ed3536aa4d54b5d3/dist/img/clipboard.gif -------------------------------------------------------------------------------- /dist/img/docfetcher128.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/docfetcher/DocFetcher/42f2accd840edc5059060447ed3536aa4d54b5d3/dist/img/docfetcher128.png -------------------------------------------------------------------------------- /dist/img/docfetcher16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/docfetcher/DocFetcher/42f2accd840edc5059060447ed3536aa4d54b5d3/dist/img/docfetcher16.png -------------------------------------------------------------------------------- /dist/img/docfetcher24.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/docfetcher/DocFetcher/42f2accd840edc5059060447ed3536aa4d54b5d3/dist/img/docfetcher24.png -------------------------------------------------------------------------------- /dist/img/docfetcher32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/docfetcher/DocFetcher/42f2accd840edc5059060447ed3536aa4d54b5d3/dist/img/docfetcher32.png -------------------------------------------------------------------------------- /dist/img/docfetcher48.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/docfetcher/DocFetcher/42f2accd840edc5059060447ed3536aa4d54b5d3/dist/img/docfetcher48.png -------------------------------------------------------------------------------- /dist/img/docfetcher64.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/docfetcher/DocFetcher/42f2accd840edc5059060447ed3536aa4d54b5d3/dist/img/docfetcher64.png -------------------------------------------------------------------------------- /dist/img/email.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/docfetcher/DocFetcher/42f2accd840edc5059060447ed3536aa4d54b5d3/dist/img/email.gif -------------------------------------------------------------------------------- /dist/img/file.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/docfetcher/DocFetcher/42f2accd840edc5059060447ed3536aa4d54b5d3/dist/img/file.gif -------------------------------------------------------------------------------- /dist/img/folder.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/docfetcher/DocFetcher/42f2accd840edc5059060447ed3536aa4d54b5d3/dist/img/folder.gif -------------------------------------------------------------------------------- /dist/img/help.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/docfetcher/DocFetcher/42f2accd840edc5059060447ed3536aa4d54b5d3/dist/img/help.gif -------------------------------------------------------------------------------- /dist/img/hide.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/docfetcher/DocFetcher/42f2accd840edc5059060447ed3536aa4d54b5d3/dist/img/hide.gif -------------------------------------------------------------------------------- /dist/img/highlight.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/docfetcher/DocFetcher/42f2accd840edc5059060447ed3536aa4d54b5d3/dist/img/highlight.gif -------------------------------------------------------------------------------- /dist/img/indexing.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/docfetcher/DocFetcher/42f2accd840edc5059060447ed3536aa4d54b5d3/dist/img/indexing.gif -------------------------------------------------------------------------------- /dist/img/indexing_dialog.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/docfetcher/DocFetcher/42f2accd840edc5059060447ed3536aa4d54b5d3/dist/img/indexing_dialog.gif -------------------------------------------------------------------------------- /dist/img/info.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/docfetcher/DocFetcher/42f2accd840edc5059060447ed3536aa4d54b5d3/dist/img/info.gif -------------------------------------------------------------------------------- /dist/img/letters.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/docfetcher/DocFetcher/42f2accd840edc5059060447ed3536aa4d54b5d3/dist/img/letters.gif -------------------------------------------------------------------------------- /dist/img/list.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/docfetcher/DocFetcher/42f2accd840edc5059060447ed3536aa4d54b5d3/dist/img/list.gif -------------------------------------------------------------------------------- /dist/img/maximize.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/docfetcher/DocFetcher/42f2accd840edc5059060447ed3536aa4d54b5d3/dist/img/maximize.gif -------------------------------------------------------------------------------- /dist/img/minimize.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/docfetcher/DocFetcher/42f2accd840edc5059060447ed3536aa4d54b5d3/dist/img/minimize.gif -------------------------------------------------------------------------------- /dist/img/package.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/docfetcher/DocFetcher/42f2accd840edc5059060447ed3536aa4d54b5d3/dist/img/package.gif -------------------------------------------------------------------------------- /dist/img/preferences.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/docfetcher/DocFetcher/42f2accd840edc5059060447ed3536aa4d54b5d3/dist/img/preferences.gif -------------------------------------------------------------------------------- /dist/img/program.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/docfetcher/DocFetcher/42f2accd840edc5059060447ed3536aa4d54b5d3/dist/img/program.gif -------------------------------------------------------------------------------- /dist/img/refresh.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/docfetcher/DocFetcher/42f2accd840edc5059060447ed3536aa4d54b5d3/dist/img/refresh.gif -------------------------------------------------------------------------------- /dist/img/remove.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/docfetcher/DocFetcher/42f2accd840edc5059060447ed3536aa4d54b5d3/dist/img/remove.gif -------------------------------------------------------------------------------- /dist/img/restore.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/docfetcher/DocFetcher/42f2accd840edc5059060447ed3536aa4d54b5d3/dist/img/restore.png -------------------------------------------------------------------------------- /dist/img/setup.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/docfetcher/DocFetcher/42f2accd840edc5059060447ed3536aa4d54b5d3/dist/img/setup.bmp -------------------------------------------------------------------------------- /dist/img/squirrel.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/docfetcher/DocFetcher/42f2accd840edc5059060447ed3536aa4d54b5d3/dist/img/squirrel.png -------------------------------------------------------------------------------- /dist/img/star.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/docfetcher/DocFetcher/42f2accd840edc5059060447ed3536aa4d54b5d3/dist/img/star.gif -------------------------------------------------------------------------------- /dist/img/stop.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/docfetcher/DocFetcher/42f2accd840edc5059060447ed3536aa4d54b5d3/dist/img/stop.gif -------------------------------------------------------------------------------- /dist/img/tree.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/docfetcher/DocFetcher/42f2accd840edc5059060447ed3536aa4d54b5d3/dist/img/tree.gif -------------------------------------------------------------------------------- /dist/img/warning.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/docfetcher/DocFetcher/42f2accd840edc5059060447ed3536aa4d54b5d3/dist/img/warning.gif -------------------------------------------------------------------------------- /dist/img/warning_big.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/docfetcher/DocFetcher/42f2accd840edc5059060447ed3536aa4d54b5d3/dist/img/warning_big.gif -------------------------------------------------------------------------------- /dist/lang/Resource_de.properties: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/docfetcher/DocFetcher/42f2accd840edc5059060447ed3536aa4d54b5d3/dist/lang/Resource_de.properties -------------------------------------------------------------------------------- /dist/lang/Resource_el.properties: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/docfetcher/DocFetcher/42f2accd840edc5059060447ed3536aa4d54b5d3/dist/lang/Resource_el.properties -------------------------------------------------------------------------------- /dist/lang/Resource_es.properties: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/docfetcher/DocFetcher/42f2accd840edc5059060447ed3536aa4d54b5d3/dist/lang/Resource_es.properties -------------------------------------------------------------------------------- /dist/lang/Resource_fr.properties: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/docfetcher/DocFetcher/42f2accd840edc5059060447ed3536aa4d54b5d3/dist/lang/Resource_fr.properties -------------------------------------------------------------------------------- /dist/lang/Resource_hu.properties: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/docfetcher/DocFetcher/42f2accd840edc5059060447ed3536aa4d54b5d3/dist/lang/Resource_hu.properties -------------------------------------------------------------------------------- /dist/lang/Resource_it.properties: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/docfetcher/DocFetcher/42f2accd840edc5059060447ed3536aa4d54b5d3/dist/lang/Resource_it.properties -------------------------------------------------------------------------------- /dist/lang/Resource_ja.properties: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/docfetcher/DocFetcher/42f2accd840edc5059060447ed3536aa4d54b5d3/dist/lang/Resource_ja.properties -------------------------------------------------------------------------------- /dist/lang/Resource_nl.properties: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/docfetcher/DocFetcher/42f2accd840edc5059060447ed3536aa4d54b5d3/dist/lang/Resource_nl.properties -------------------------------------------------------------------------------- /dist/lang/Resource_pl.properties: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/docfetcher/DocFetcher/42f2accd840edc5059060447ed3536aa4d54b5d3/dist/lang/Resource_pl.properties -------------------------------------------------------------------------------- /dist/lang/Resource_pt.properties: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/docfetcher/DocFetcher/42f2accd840edc5059060447ed3536aa4d54b5d3/dist/lang/Resource_pt.properties -------------------------------------------------------------------------------- /dist/lang/Resource_ru.properties: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/docfetcher/DocFetcher/42f2accd840edc5059060447ed3536aa4d54b5d3/dist/lang/Resource_ru.properties -------------------------------------------------------------------------------- /dist/lang/Resource_zh.properties: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/docfetcher/DocFetcher/42f2accd840edc5059060447ed3536aa4d54b5d3/dist/lang/Resource_zh.properties -------------------------------------------------------------------------------- /dist/launchers/DocFetcher-1024.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/docfetcher/DocFetcher/42f2accd840edc5059060447ed3536aa4d54b5d3/dist/launchers/DocFetcher-1024.exe -------------------------------------------------------------------------------- /dist/launchers/DocFetcher-2048_64-bit-Java.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/docfetcher/DocFetcher/42f2accd840edc5059060447ed3536aa4d54b5d3/dist/launchers/DocFetcher-2048_64-bit-Java.exe -------------------------------------------------------------------------------- /dist/launchers/DocFetcher-256.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/docfetcher/DocFetcher/42f2accd840edc5059060447ed3536aa4d54b5d3/dist/launchers/DocFetcher-256.exe -------------------------------------------------------------------------------- /dist/launchers/DocFetcher-4096_64-bit-Java.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/docfetcher/DocFetcher/42f2accd840edc5059060447ed3536aa4d54b5d3/dist/launchers/DocFetcher-4096_64-bit-Java.exe -------------------------------------------------------------------------------- /dist/launchers/DocFetcher-512.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/docfetcher/DocFetcher/42f2accd840edc5059060447ed3536aa4d54b5d3/dist/launchers/DocFetcher-512.exe -------------------------------------------------------------------------------- /dist/launchers/DocFetcher-768.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/docfetcher/DocFetcher/42f2accd840edc5059060447ed3536aa4d54b5d3/dist/launchers/DocFetcher-768.exe -------------------------------------------------------------------------------- /dist/launchers/DocFetcher-8192_64-bit-Java.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/docfetcher/DocFetcher/42f2accd840edc5059060447ed3536aa4d54b5d3/dist/launchers/DocFetcher-8192_64-bit-Java.exe -------------------------------------------------------------------------------- /dist/launchers/launcher-linux-gtk2.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | script=$(readlink -f "$0") 4 | scriptdir=`dirname "$script"` 5 | cd "$scriptdir" 6 | 7 | CLASSPATH= 8 | for FILE in `ls ./lib/*.jar` 9 | do 10 | CLASSPATH=${CLASSPATH}:${FILE} 11 | done 12 | 13 | export SWT_GTK3=0 14 | 15 | java -enableassertions -Xmx512m -Xss2m -cp ".:${CLASSPATH}" -Djava.library.path="lib" ${main_class} "$@" 16 | -------------------------------------------------------------------------------- /dist/launchers/launcher-linux-gtk3.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | script=$(readlink -f "$0") 4 | scriptdir=`dirname "$script"` 5 | cd "$scriptdir" 6 | 7 | CLASSPATH= 8 | for FILE in `ls ./lib/*.jar` 9 | do 10 | CLASSPATH=${CLASSPATH}:${FILE} 11 | done 12 | 13 | java -enableassertions -Xmx512m -Xss2m -cp ".:${CLASSPATH}" -Djava.library.path="lib" ${main_class} "$@" 14 | -------------------------------------------------------------------------------- /dist/launchers/launcher-macosx-app.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | scriptdir=$(cd "$(dirname "$0")"; pwd) 4 | cd "$scriptdir" 5 | 6 | CLASSPATH= 7 | for FILE in `ls ../Resources/lib/*.jar` 8 | do 9 | CLASSPATH=${CLASSPATH}:${FILE} 10 | done 11 | 12 | # Note: The java call must not end with '&', otherwise the -Xdock:name property will have no effect. 13 | 14 | /Library/Internet\ Plug-Ins/JavaAppletPlugin.plugin/Contents/Home/bin/java -XstartOnFirstThread -Xdock:name="${app_name}" -enableassertions -Xmx512m -Xss2m -cp ".:${CLASSPATH}" -Djava.library.path="../Resources/lib" ${main_class} "$@" 15 | -------------------------------------------------------------------------------- /dist/launchers/launcher-macosx-portable.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | scriptdir=$(cd "$(dirname "$0")"; pwd) 4 | cd "$scriptdir" 5 | cd ../../.. 6 | 7 | CLASSPATH= 8 | for FILE in `ls ./lib/*.jar` 9 | do 10 | CLASSPATH=${CLASSPATH}:${FILE} 11 | done 12 | 13 | # Note: The java call must not end with '&', otherwise the -Xdock:name property will have no effect. 14 | 15 | /Library/Internet\ Plug-Ins/JavaAppletPlugin.plugin/Contents/Home/bin/java -XstartOnFirstThread -Xdock:name="${app_name}" -enableassertions -Xmx512m -Xss2m -cp ".:${CLASSPATH}" -Djava.library.path="lib" ${main_class} "$@" 16 | -------------------------------------------------------------------------------- /dist/launchers/launcher.bat: -------------------------------------------------------------------------------- 1 | @echo off 2 | 3 | rem Note: This file is an alternative launcher for DocFetcher. How to use it: 4 | rem 1) Modify this file as needed. 5 | rem 2) Move this file one level up into the DocFetcher folder. 6 | rem 3) Double-click on this file to launch DocFetcher. 7 | rem 8 | rem Common modifications: 9 | rem 1) Replace the "java" keyword in the last line with the full path to the 10 | rem Java executable. 11 | rem 2) Give DocFetcher more memory with the setting -Xmx..m in the last line. 12 | rem For example, with -Xmx512m, DocFetcher will use up to 512 MB of memory. 13 | rem Using more memory than about 1 GB requires a 64-bit Java runtime. 14 | 15 | cd %~dp0 16 | 17 | set libclasspath= 18 | 19 | for %%f in (.\lib\*.jar) do (call :append_classpath %%f) 20 | goto :proceed 21 | 22 | :append_classpath 23 | set libclasspath=%libclasspath%;%1 24 | goto :eof 25 | 26 | :proceed 27 | java -enableassertions -Xmx512m -Xss2m -cp %libclasspath% -Djava.library.path=lib ${main_class} %1 %2 %3 %4 %5 %6 %7 %8 %9 28 | -------------------------------------------------------------------------------- /dist/py4j/__init__.py: -------------------------------------------------------------------------------- 1 | # Py4J Package 2 | from __future__ import absolute_import 3 | from . import version 4 | 5 | __version__ = version.__version__ 6 | -------------------------------------------------------------------------------- /dist/py4j/version.py: -------------------------------------------------------------------------------- 1 | __version__ = '0.10.7' 2 | -------------------------------------------------------------------------------- /dist/system-template-conf.txt: -------------------------------------------------------------------------------- 1 | # System constants 2 | 3 | ProgramName = ${app_name} 4 | ProgramVersion = ${app_version} 5 | BuildDate = ${build_date} 6 | IsPortable = ${is_portable} 7 | -------------------------------------------------------------------------------- /dist/templates/Developer.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | .*\.svn.* 5 | PATH 6 | EXCLUDE 7 | 8 | 9 | .*\.git.* 10 | PATH 11 | EXCLUDE 12 | 13 | 14 | .*\.dll 15 | FILENAME 16 | EXCLUDE 17 | 18 | 19 | .*\.exe 20 | FILENAME 21 | EXCLUDE 22 | 23 | 24 | .*\.gif 25 | FILENAME 26 | EXCLUDE 27 | 28 | 29 | .*\.jpg 30 | FILENAME 31 | EXCLUDE 32 | 33 | 34 | .*\.scc 35 | FILENAME 36 | EXCLUDE 37 | 38 | 39 | .*\.svn-base 40 | FILENAME 41 | EXCLUDE 42 | 43 | 44 | 45 | 46 | -------------------------------------------------------------------------------- /dist/templates/OnlyOffice.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | .*\.doc 5 | FILENAME 6 | DETECT_MIME 7 | 8 | 9 | .*\.docx 10 | FILENAME 11 | DETECT_MIME 12 | 13 | 14 | .*\.rtf 15 | FILENAME 16 | DETECT_MIME 17 | 18 | 19 | .*\.txt 20 | FILENAME 21 | DETECT_MIME 22 | 23 | 24 | .* 25 | FILENAME 26 | EXCLUDE 27 | 28 | 29 | 30 | 31 | -------------------------------------------------------------------------------- /lib/Library inter-dependencies.txt: -------------------------------------------------------------------------------- 1 | Known dependencies between the various libraries used: 2 | - JUnRar depends on Javolution and Commons Logging 3 | - Mime-Util depends on SLF4J 4 | - TrueZIP depends on Commons Compress, Tukaani XZ Utils 5 | - Apache POI depends on Commons Codec 6 | - Apache PDFBox depends on Commons Logging 7 | - Apache Tika depends on Commons IO 8 | 9 | Additionally, PDFBox will crash with NoClassDefFoundErrors on encrypted PDF 10 | files when using a version of bcmail and bcprov (Bouncy Castle libraries) that 11 | is newer than 1.46. This is apparently due to changes in the API of bcmail and 12 | bcprov. 13 | -------------------------------------------------------------------------------- /lib/ant/LICENSE: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/docfetcher/DocFetcher/42f2accd840edc5059060447ed3536aa4d54b5d3/lib/ant/LICENSE -------------------------------------------------------------------------------- /lib/download-truezip.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/python 2 | 3 | import urllib2, os, os.path as osp 4 | 5 | ''' 6 | Description: This is a helper script for downloading the latest TrueZIP release 7 | from http://search.maven.org. The downloaded files are stored under the current 8 | directory. 9 | ''' 10 | 11 | version = raw_input("Please enter TrueZIP version number (x.x.x): ") 12 | root = "http://search.maven.org/remotecontent?filepath=de/schlichtherle/truezip" 13 | out_dir = "truezip-" + version 14 | 15 | modules = [ 16 | "driver-file", 17 | "driver-tar", 18 | "driver-zip", 19 | "file", 20 | "kernel", 21 | "swing" 22 | ] 23 | 24 | for module in modules: 25 | t_module = "truezip-" + module 26 | for suffix in ["", "-sources"]: 27 | filename = "%s-%s%s.jar" % (t_module, version, suffix) 28 | url = "/".join([root, t_module, version, filename]) 29 | try: 30 | content = urllib2.urlopen(url) 31 | except urllib2.HTTPError: 32 | print("Download failed: " + url) 33 | exit(0) 34 | if not osp.exists(out_dir): 35 | os.makedirs(out_dir) 36 | path = osp.join(out_dir, filename) 37 | with open(path, 'w') as f: 38 | f.write(content.read()) 39 | print("Downloaded: " + path) 40 | -------------------------------------------------------------------------------- /lib/excluded_jar_patterns.txt: -------------------------------------------------------------------------------- 1 | # List of filename patterns matching the jar files that should be excluded from 2 | # the releases. 3 | # Warning: This file will be read by the Java builder, so modify with caution. 4 | 5 | **/ant-?.?.?.jar 6 | **/aspectjrt-*.jar 7 | **/*-sources.jar 8 | **/*-src.jar 9 | **/swt*.jar 10 | **/junit*.jar 11 | 12 | # The following jars are excluded because they are only needed for parsing 13 | # markdown during development and deployment: 14 | 15 | **/asm-*.jar 16 | **/parboiled-*.jar 17 | **/pegdown-*.jar 18 | -------------------------------------------------------------------------------- /lib/javolution/LICENSE.txt: -------------------------------------------------------------------------------- 1 | /* 2 | * Javolution - Java(tm) Solution for Real-Time and Embedded Systems 3 | * Copyright (c) 2005-2009, Javolution (http://javolution.org/) 4 | * All rights reserved. 5 | * 6 | * Redistribution and use in source and binary forms, with or without 7 | * modification, are permitted provided that the following conditions are met: 8 | * 9 | * 1. Redistributions of source code must retain the above copyright 10 | * notice, this list of conditions and the following disclaimer. 11 | * 12 | * 2. Redistributions in binary form must reproduce the above copyright 13 | * notice, this list of conditions and the following disclaimer in the 14 | * documentation and/or other materials provided with the distribution. 15 | * 16 | * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 17 | * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 18 | * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 19 | * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR 20 | * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, 21 | * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, 22 | * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR 23 | * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF 24 | * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING 25 | * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS 26 | * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 27 | */ -------------------------------------------------------------------------------- /lib/jintellitype/JIntellitype32.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/docfetcher/DocFetcher/42f2accd840edc5059060447ed3536aa4d54b5d3/lib/jintellitype/JIntellitype32.dll -------------------------------------------------------------------------------- /lib/jintellitype/JIntellitype64.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/docfetcher/DocFetcher/42f2accd840edc5059060447ed3536aa4d54b5d3/lib/jintellitype/JIntellitype64.dll -------------------------------------------------------------------------------- /lib/jnotify/jnotify.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/docfetcher/DocFetcher/42f2accd840edc5059060447ed3536aa4d54b5d3/lib/jnotify/jnotify.dll -------------------------------------------------------------------------------- /lib/jnotify/jnotify_64bit.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/docfetcher/DocFetcher/42f2accd840edc5059060447ed3536aa4d54b5d3/lib/jnotify/jnotify_64bit.dll -------------------------------------------------------------------------------- /lib/jnotify/libjnotify.dylib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/docfetcher/DocFetcher/42f2accd840edc5059060447ed3536aa4d54b5d3/lib/jnotify/libjnotify.dylib -------------------------------------------------------------------------------- /lib/jnotify/libjnotify32.so: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/docfetcher/DocFetcher/42f2accd840edc5059060447ed3536aa4d54b5d3/lib/jnotify/libjnotify32.so -------------------------------------------------------------------------------- /lib/jnotify/libjnotify64.so: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/docfetcher/DocFetcher/42f2accd840edc5059060447ed3536aa4d54b5d3/lib/jnotify/libjnotify64.so -------------------------------------------------------------------------------- /lib/jxgrabkey/libJXGrabKey32.so: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/docfetcher/DocFetcher/42f2accd840edc5059060447ed3536aa4d54b5d3/lib/jxgrabkey/libJXGrabKey32.so -------------------------------------------------------------------------------- /lib/jxgrabkey/libJXGrabKey64.so: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/docfetcher/DocFetcher/42f2accd840edc5059060447ed3536aa4d54b5d3/lib/jxgrabkey/libJXGrabKey64.so -------------------------------------------------------------------------------- /lib/license_patterns.txt: -------------------------------------------------------------------------------- 1 | # List of filename patterns that match the license files in this folder. 2 | # Warning: This file will be read by the Java builder, so modify with caution. 3 | 4 | **/*LICENSE* 5 | **/*license* 6 | **/*LICENCE* 7 | **/*licence* 8 | **/about.htm* 9 | **/*COPYING* 10 | **/*copying* 11 | **/*LGPL* 12 | **/*lgpl* 13 | **/*CPL*.htm* 14 | **/*cpl*.htm* 15 | **/*EPL*.htm* 16 | **/*epl*.htm 17 | **/MPL* 18 | 19 | # HTML folders 20 | **/*_files/* 21 | -------------------------------------------------------------------------------- /lib/slf4j/LICENSE.txt: -------------------------------------------------------------------------------- 1 | Copyright (c) 2004-2008 QOS.ch 2 | All rights reserved. 3 | 4 | Permission is hereby granted, free of charge, to any person obtaining 5 | a copy of this software and associated documentation files (the 6 | "Software"), to deal in the Software without restriction, including 7 | without limitation the rights to use, copy, modify, merge, publish, 8 | distribute, sublicense, and/or sell copies of the Software, and to 9 | permit persons to whom the Software is furnished to do so, subject to 10 | the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be 13 | included in all copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 16 | EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 17 | MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 18 | NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE 19 | LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION 20 | OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION 21 | WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 22 | 23 | 24 | 25 | -------------------------------------------------------------------------------- /lib/xz-utils/COPYING: -------------------------------------------------------------------------------- 1 | 2 | Licensing of XZ for Java 3 | ======================== 4 | 5 | All the files in this package have been written by Lasse Collin 6 | and/or Igor Pavlov. All these files have been put into the 7 | public domain. You can do whatever you want with these files. 8 | 9 | This software is provided "as is", without any warranty. 10 | 11 | -------------------------------------------------------------------------------- /src-daemon/linux/.cdtproject: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | -------------------------------------------------------------------------------- /src-daemon/linux/docfetcher-daemon-linux.iml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /src-daemon/linux/src/FolderWatcher.h: -------------------------------------------------------------------------------- 1 | /******************************************************************************* 2 | * Copyright (c) 2009 Tonio Rush. 3 | * All rights reserved. This program and the accompanying materials 4 | * are made available under the terms of the Eclipse Public License v1.0 5 | * which accompanies this distribution, and is available at 6 | * http://www.eclipse.org/legal/epl-v10.html 7 | * 8 | * Contributors: 9 | * Tonio Rush - initial API and implementation 10 | *******************************************************************************/ 11 | 12 | #ifndef FOLDERWATCHER_H_ 13 | #define FOLDERWATCHER_H_ 14 | 15 | struct WatchedFolder { 16 | std::string _path; 17 | bool _modified; 18 | }; 19 | 20 | class FolderWatcher { 21 | public: 22 | typedef std::map folders_container_type; 23 | typedef std::map inotify2id_container_type; 24 | 25 | FolderWatcher(); 26 | virtual ~FolderWatcher(); 27 | 28 | bool findIndexesFile(); 29 | 30 | std::string getLockFile(); 31 | 32 | bool startWatch(); 33 | bool stopWatch(); 34 | 35 | void run(); 36 | 37 | 38 | private: 39 | bool updateIndexesFile(); 40 | bool addWatchRecursive(const bool, const int, const std::string &, const long); 41 | 42 | 43 | 44 | void callback(int watchID, int action); 45 | 46 | std::string _indexes_file_path; 47 | const char CHAR_MODIFIED; 48 | 49 | 50 | folders_container_type _indexed_folders; 51 | inotify2id_container_type _inotify2id; 52 | 53 | int _fd; 54 | }; 55 | 56 | #endif /*FOLDERWATCHER_H_*/ 57 | -------------------------------------------------------------------------------- /src-daemon/linux/src/Logger.cpp: -------------------------------------------------------------------------------- 1 | /******************************************************************************* 2 | * Copyright (c) 2009 Tonio Rush. 3 | * All rights reserved. This program and the accompanying materials 4 | * are made available under the terms of the Eclipse Public License v1.0 5 | * which accompanies this distribution, and is available at 6 | * http://www.eclipse.org/legal/epl-v10.html 7 | * 8 | * Contributors: 9 | * Tonio Rush - initial API and implementation 10 | *******************************************************************************/ 11 | 12 | #include "Logger.h" 13 | 14 | #include 15 | #include 16 | bool dbg = false; 17 | void debug(const char *format, ...) 18 | { 19 | if (dbg) 20 | { 21 | static char sbuf[1024]; 22 | 23 | va_list args; 24 | va_start(args, format); 25 | vsnprintf(sbuf, 1024, format, args); 26 | va_end(args); 27 | printf("daemon : %s\n",sbuf); 28 | fflush(stdout); 29 | 30 | } 31 | } 32 | 33 | void log(const char *format, ...) 34 | { 35 | static char sbuf[1024]; 36 | 37 | va_list args; 38 | va_start(args, format); 39 | vsnprintf(sbuf, 1024, format, args); 40 | va_end(args); 41 | printf("daemon : %s\n",sbuf); 42 | fflush(stdout); 43 | 44 | } 45 | -------------------------------------------------------------------------------- /src-daemon/linux/src/Logger.h: -------------------------------------------------------------------------------- 1 | /******************************************************************************* 2 | * Copyright (c) 2009 Tonio Rush. 3 | * All rights reserved. This program and the accompanying materials 4 | * are made available under the terms of the Eclipse Public License v1.0 5 | * which accompanies this distribution, and is available at 6 | * http://www.eclipse.org/legal/epl-v10.html 7 | * 8 | * Contributors: 9 | * Tonio Rush - initial API and implementation 10 | *******************************************************************************/ 11 | 12 | #ifndef LOGGER_H_ 13 | #define LOGGER_H_ 14 | 15 | void log(const char *format, ...); 16 | void debug(const char *format, ...); 17 | 18 | #endif /*LOGGER_H_*/ 19 | -------------------------------------------------------------------------------- /src-daemon/win32/DocFetcher.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/docfetcher/DocFetcher/42f2accd840edc5059060447ed3536aa4d54b5d3/src-daemon/win32/DocFetcher.ico -------------------------------------------------------------------------------- /src-daemon/win32/docfetcher-daemon-win.iml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /src-daemon/win32/src/FolderWatcher.h: -------------------------------------------------------------------------------- 1 | /******************************************************************************* 2 | * Copyright (c) 2009 Tonio Rush. 3 | * All rights reserved. This program and the accompanying materials 4 | * are made available under the terms of the Eclipse Public License v1.0 5 | * which accompanies this distribution, and is available at 6 | * http://www.eclipse.org/legal/epl-v10.html 7 | * 8 | * Contributors: 9 | * Tonio Rush - initial API and implementation 10 | *******************************************************************************/ 11 | 12 | #ifndef INDEXEDDIRECTORIES_H_ 13 | #define INDEXEDDIRECTORIES_H_ 14 | 15 | #include 16 | #include 17 | #include "jnotify_win32/Lock.h" 18 | 19 | 20 | #define WM_REMOVE_WATCH WM_USER + 1 21 | 22 | struct WatchedFolder { 23 | std::string _path; 24 | bool _modified; 25 | }; 26 | 27 | class FolderWatcher { 28 | public: 29 | typedef std::map folders_container_type; 30 | 31 | FolderWatcher(); 32 | virtual ~FolderWatcher(); 33 | 34 | bool findIndexesFile(); 35 | 36 | std::string FolderWatcher::getLockFile(); 37 | 38 | bool startWatch(); 39 | bool stopWatch(); 40 | 41 | private: 42 | std::string _indexes_file_path; 43 | const char CHAR_MODIFIED; 44 | 45 | static void callback(int watchID, int action, const WCHAR* rootPath, const WCHAR* filePath); 46 | 47 | bool updateIndexesFile(); 48 | 49 | folders_container_type _indexed_folders; 50 | 51 | Lock _lock; 52 | 53 | }; 54 | 55 | #endif /* INDEXEDDIRECTORIES_H_ */ 56 | -------------------------------------------------------------------------------- /src-daemon/win32/src/jnotify_win32/Logger.h: -------------------------------------------------------------------------------- 1 | /******************************************************************************* 2 | * JNotify - Allow java applications to register to File system events. 3 | * 4 | * Copyright (C) 2005 - Content Objects 5 | * 6 | * This library is free software; you can redistribute it and/or 7 | * modify it under the terms of the GNU Lesser General Public 8 | * License as published by the Free Software Foundation; either 9 | * version 2.1 of the License, or (at your option) any later version. 10 | * 11 | * This library is distributed in the hope that it will be useful, 12 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 14 | * Lesser General Public License for more details. 15 | * 16 | * You should have received a copy of the GNU Lesser General Public 17 | * License along with this library; if not, write to the Free Software 18 | * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA 19 | * 20 | ****************************************************************************** 21 | * 22 | * Content Objects, Inc., hereby disclaims all copyright interest in the 23 | * library `JNotify' (a Java library for file system events). 24 | * 25 | * Yahali Sherman, 21 November 2005 26 | * Content Objects, VP R&D. 27 | * 28 | ****************************************************************************** 29 | * Author : Omry Yadan 30 | ******************************************************************************/ 31 | 32 | 33 | #ifndef LOGGER_H_ 34 | #define LOGGER_H_ 35 | 36 | void log(char *format, ...); 37 | void debug(char *format, ...); 38 | 39 | #endif /*LOGGER_H_*/ 40 | -------------------------------------------------------------------------------- /src/log4j.properties: -------------------------------------------------------------------------------- 1 | log4j.rootLogger=FATAL -------------------------------------------------------------------------------- /src/log4j2.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /src/net/contentobjects/jnotify/JNotifyAdapter.java: -------------------------------------------------------------------------------- 1 | package net.contentobjects.jnotify; 2 | 3 | public class JNotifyAdapter implements JNotifyListener 4 | { 5 | public void fileCreated(int wd, String rootPath, String name) 6 | { 7 | } 8 | 9 | public void fileDeleted(int wd, String rootPath, String name) 10 | { 11 | } 12 | 13 | public void fileModified(int wd, String rootPath, String name) 14 | { 15 | } 16 | 17 | public void fileRenamed(int wd, String rootPath, String oldName, String newName) 18 | { 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /src/net/contentobjects/jnotify/JNotifyException.java: -------------------------------------------------------------------------------- 1 | package net.contentobjects.jnotify; 2 | 3 | import java.io.IOException; 4 | 5 | public abstract class JNotifyException extends IOException 6 | { 7 | private static final long serialVersionUID = 1L; 8 | 9 | public final static int ERROR_UNSPECIFIED = 1; 10 | public final static int ERROR_WATCH_LIMIT_REACHED = 2; 11 | public final static int ERROR_PERMISSION_DENIED = 3; 12 | public final static int ERROR_NO_SUCH_FILE_OR_DIRECTORY = 4; 13 | 14 | 15 | protected final int _systemErrorCode; 16 | 17 | public JNotifyException(String s, int systemErrorCode) 18 | { 19 | super(s); 20 | _systemErrorCode = systemErrorCode; 21 | } 22 | 23 | public int getSystemError() 24 | { 25 | return _systemErrorCode; 26 | } 27 | 28 | public abstract int getErrorCode(); 29 | } 30 | -------------------------------------------------------------------------------- /src/net/contentobjects/jnotify/Util.java: -------------------------------------------------------------------------------- 1 | package net.contentobjects.jnotify; 2 | 3 | public class Util 4 | { 5 | public static String getMaskDesc(int mask) 6 | { 7 | StringBuffer s = new StringBuffer(); 8 | if ((mask & JNotify.FILE_CREATED) != 0) 9 | { 10 | s.append("FILE_CREATED|"); 11 | } 12 | if ((mask & JNotify.FILE_DELETED) != 0) 13 | { 14 | s.append("FILE_DELETED|"); 15 | } 16 | if ((mask & JNotify.FILE_MODIFIED) != 0) 17 | { 18 | s.append("FILE_MODIFIED|"); 19 | } 20 | if ((mask & JNotify.FILE_RENAMED) != 0) 21 | { 22 | s.append("FILE_RENAMED|"); 23 | } 24 | if (s.length() > 0) 25 | { 26 | return s.substring(0, s.length() - 1); 27 | } 28 | else 29 | { 30 | return "UNKNOWN"; 31 | } 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /src/net/contentobjects/jnotify/linux/JNotifyException_linux.java: -------------------------------------------------------------------------------- 1 | package net.contentobjects.jnotify.linux; 2 | 3 | import net.contentobjects.jnotify.JNotifyException; 4 | 5 | public class JNotifyException_linux extends JNotifyException 6 | { 7 | private static final long serialVersionUID = 1L; 8 | 9 | private static final int LINUX_NO_SUCH_FILE_OR_DIRECTORY = 2; 10 | private static final int LINUX_PERMISSION_DENIED = 13; 11 | private static final int LINUX_NO_SPACE_LEFT_ON_DEVICE = 28; 12 | 13 | public JNotifyException_linux(String s, int systemErrorCode) 14 | { 15 | super(s, systemErrorCode); 16 | } 17 | 18 | public int getErrorCode() 19 | { 20 | switch (_systemErrorCode) 21 | { 22 | case LINUX_PERMISSION_DENIED: 23 | return ERROR_PERMISSION_DENIED; 24 | case LINUX_NO_SPACE_LEFT_ON_DEVICE: 25 | return ERROR_WATCH_LIMIT_REACHED; 26 | case LINUX_NO_SUCH_FILE_OR_DIRECTORY: 27 | return ERROR_NO_SUCH_FILE_OR_DIRECTORY; 28 | default: 29 | return ERROR_UNSPECIFIED; 30 | } 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /src/net/contentobjects/jnotify/macosx/FSEventListener.java: -------------------------------------------------------------------------------- 1 | package net.contentobjects.jnotify.macosx; 2 | 3 | public interface FSEventListener 4 | { 5 | public void notifyChange(int wd, String rootPath, String filePath, boolean recurse); 6 | 7 | public void batchStart(int wd); 8 | 9 | public void batchEnd(int wd); 10 | } 11 | -------------------------------------------------------------------------------- /src/net/contentobjects/jnotify/macosx/JNotifyException_macosx.java: -------------------------------------------------------------------------------- 1 | package net.contentobjects.jnotify.macosx; 2 | 3 | import net.contentobjects.jnotify.JNotifyException; 4 | 5 | public class JNotifyException_macosx extends JNotifyException 6 | { 7 | private static final long serialVersionUID = 1L; 8 | 9 | public JNotifyException_macosx(String s) 10 | { 11 | super(s, 1); 12 | } 13 | 14 | public int getErrorCode() 15 | { 16 | return 1; 17 | } 18 | 19 | } 20 | -------------------------------------------------------------------------------- /src/net/contentobjects/jnotify/win32/JNotifyException_win32.java: -------------------------------------------------------------------------------- 1 | package net.contentobjects.jnotify.win32; 2 | 3 | import net.contentobjects.jnotify.JNotifyException; 4 | 5 | public class JNotifyException_win32 extends JNotifyException 6 | { 7 | private static final long serialVersionUID = 1L; 8 | 9 | public JNotifyException_win32(String s, int systemErrorCode) 10 | { 11 | super(s, systemErrorCode); 12 | } 13 | 14 | public int getErrorCode() 15 | { 16 | return ERROR_UNSPECIFIED; 17 | } 18 | 19 | } 20 | -------------------------------------------------------------------------------- /src/net/sourceforge/docfetcher/Py4jHandler.java: -------------------------------------------------------------------------------- 1 | /******************************************************************************* 2 | * Copyright (c) 2018 Zhengmian Hu. 3 | * All rights reserved. This program and the accompanying materials 4 | * are made available under the terms of the Eclipse Public License v1.0 5 | * which accompanies this distribution, and is available at 6 | * http://www.eclipse.org/legal/epl-v10.html 7 | * 8 | * Contributors: 9 | * Zhengmian Hu - initial API and implementation 10 | *******************************************************************************/ 11 | 12 | package net.sourceforge.docfetcher; 13 | 14 | import net.sourceforge.docfetcher.enums.ProgramConf; 15 | import py4j.GatewayServer; 16 | 17 | /** 18 | * Created by huzhengmian on 2018/5/5. 19 | */ 20 | public class Py4jHandler { 21 | 22 | private static GatewayServer server; 23 | private static synchronized GatewayServer getServer(){ 24 | if(server==null){ 25 | server = new GatewayServer(new Py4jHandler(), ProgramConf.Int.PythonApiPort.get()); 26 | } 27 | return server; 28 | } 29 | public static void openGatewayServer(){ 30 | getServer().start(); 31 | } 32 | public static void shutdownGatewayServer(){ 33 | getServer().shutdown(); 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /src/net/sourceforge/docfetcher/build/FileSets.java: -------------------------------------------------------------------------------- 1 | /******************************************************************************* 2 | * Copyright (c) 2011 Tran Nam Quang. 3 | * All rights reserved. This program and the accompanying materials 4 | * are made available under the terms of the Eclipse Public License v1.0 5 | * which accompanies this distribution, and is available at 6 | * http://www.eclipse.org/legal/epl-v10.html 7 | * 8 | * Contributors: 9 | * Tran Nam Quang - initial API and implementation 10 | *******************************************************************************/ 11 | 12 | package net.sourceforge.docfetcher.build; 13 | 14 | import java.io.File; 15 | 16 | import net.sourceforge.docfetcher.util.annotations.Nullable; 17 | 18 | import org.apache.tools.ant.Project; 19 | import org.apache.tools.ant.types.FileSet; 20 | 21 | /** 22 | * @author Tran Nam Quang 23 | */ 24 | final class FileSets { 25 | 26 | private FileSet fileSet = new FileSet(); 27 | 28 | public FileSets() { 29 | fileSet.setProject(new Project()); 30 | } 31 | 32 | public FileSets setDir(String dir) { 33 | fileSet.setDir(new File(dir)); 34 | return this; 35 | } 36 | 37 | public FileSets setFile(String file) { 38 | fileSet.setFile(new File(file)); 39 | return this; 40 | } 41 | 42 | public FileSets include(@Nullable String includes) { 43 | if (includes != null) 44 | fileSet.setIncludes(includes); 45 | return this; 46 | } 47 | 48 | public FileSets exclude(@Nullable String excludes) { 49 | if (excludes != null) 50 | fileSet.setExcludes(excludes); 51 | return this; 52 | } 53 | 54 | public FileSet get() { 55 | return fileSet; 56 | } 57 | 58 | } 59 | -------------------------------------------------------------------------------- /src/net/sourceforge/docfetcher/build/FileWalker.java: -------------------------------------------------------------------------------- 1 | /******************************************************************************* 2 | * Copyright (c) 2011 Tran Nam Quang. 3 | * All rights reserved. This program and the accompanying materials 4 | * are made available under the terms of the Eclipse Public License v1.0 5 | * which accompanies this distribution, and is available at 6 | * http://www.eclipse.org/legal/epl-v10.html 7 | * 8 | * Contributors: 9 | * Tran Nam Quang - initial API and implementation 10 | *******************************************************************************/ 11 | 12 | package net.sourceforge.docfetcher.build; 13 | 14 | import java.io.File; 15 | 16 | import net.sourceforge.docfetcher.util.Util; 17 | import net.sourceforge.docfetcher.util.annotations.NotNull; 18 | 19 | /** 20 | * @author Tran Nam Quang 21 | */ 22 | abstract class FileWalker { 23 | 24 | public final void run(@NotNull File root) { 25 | for (File file : Util.listFiles(root)) { 26 | if (file.isFile()) { 27 | handleFile(file); 28 | } 29 | else { 30 | handleDir(file); 31 | run(file); 32 | } 33 | } 34 | } 35 | 36 | protected void handleFile(@NotNull File file) {} 37 | 38 | protected void handleDir(@NotNull File dir) {} 39 | 40 | } 41 | -------------------------------------------------------------------------------- /src/net/sourceforge/docfetcher/build/Paths.java: -------------------------------------------------------------------------------- 1 | /******************************************************************************* 2 | * Copyright (c) 2011 Tran Nam Quang. 3 | * All rights reserved. This program and the accompanying materials 4 | * are made available under the terms of the Eclipse Public License v1.0 5 | * which accompanies this distribution, and is available at 6 | * http://www.eclipse.org/legal/epl-v10.html 7 | * 8 | * Contributors: 9 | * Tran Nam Quang - initial API and implementation 10 | *******************************************************************************/ 11 | 12 | package net.sourceforge.docfetcher.build; 13 | 14 | import java.io.File; 15 | 16 | import org.apache.tools.ant.Project; 17 | import org.apache.tools.ant.types.DirSet; 18 | import org.apache.tools.ant.types.Path; 19 | 20 | /** 21 | * @author Tran Nam Quang 22 | */ 23 | final class Paths { 24 | 25 | private final Path path = new Path(new Project()); 26 | 27 | public Paths addFileSet(String dir, String includes) { 28 | path.addFileset(new FileSets().setDir(dir).include(includes).get()); 29 | return this; 30 | } 31 | 32 | public Paths addDirSet(String dirSet) { 33 | DirSet _dirSet = new DirSet(); 34 | _dirSet.setFile(new File(dirSet)); 35 | path.addDirset(_dirSet); 36 | return this; 37 | } 38 | 39 | public Path get() { 40 | return path; 41 | } 42 | 43 | } 44 | -------------------------------------------------------------------------------- /src/net/sourceforge/docfetcher/enums/settings-conf-header.txt: -------------------------------------------------------------------------------- 1 | # The internal program settings are stored here. 2 | # Only modify this file if you know what you're doing. 3 | # 4 | # How to edit this file: 5 | # * The program loads this file on startup and overwrites it 6 | # on closing. Thus, remember to close the program 7 | # before editing this file, otherwise all your changes 8 | # will get overwritten. 9 | # * To restore the default value of an entry, close the 10 | # program, delete the entry, then restart the program. The 11 | # program will now use the default value and write it to 12 | # disk when it closes. 13 | # * Clear or delete the entire file to restore all default 14 | # values. -------------------------------------------------------------------------------- /src/net/sourceforge/docfetcher/gui/CustomBorderComposite.java: -------------------------------------------------------------------------------- 1 | /******************************************************************************* 2 | * Copyright (c) 2011 Tran Nam Quang. 3 | * All rights reserved. This program and the accompanying materials 4 | * are made available under the terms of the Eclipse Public License v1.0 5 | * which accompanies this distribution, and is available at 6 | * http://www.eclipse.org/legal/epl-v10.html 7 | * 8 | * Contributors: 9 | * Tran Nam Quang - initial API and implementation 10 | *******************************************************************************/ 11 | 12 | package net.sourceforge.docfetcher.gui; 13 | 14 | import net.sourceforge.docfetcher.util.Util; 15 | import net.sourceforge.docfetcher.util.annotations.NotNull; 16 | import net.sourceforge.docfetcher.util.annotations.VisibleForPackageGroup; 17 | 18 | import org.eclipse.swt.SWT; 19 | import org.eclipse.swt.widgets.Composite; 20 | 21 | /** 22 | * A composite that paints a custom border on Windows and has a FormLayout with 23 | * adjusted margins set on itself. 24 | * 25 | * @author Tran Nam Quang 26 | */ 27 | @VisibleForPackageGroup 28 | public class CustomBorderComposite extends Composite { 29 | 30 | public CustomBorderComposite(@NotNull Composite parent) { 31 | super(parent, Util.IS_WINDOWS ? SWT.NONE : SWT.BORDER); 32 | if (Util.IS_WINDOWS) 33 | UtilGui.paintBorder(this); 34 | } 35 | 36 | } 37 | -------------------------------------------------------------------------------- /src/net/sourceforge/docfetcher/gui/filter/FilesizeTest.java: -------------------------------------------------------------------------------- 1 | /******************************************************************************* 2 | * Copyright (c) 2011 Tran Nam Quang. 3 | * All rights reserved. This program and the accompanying materials 4 | * are made available under the terms of the Eclipse Public License v1.0 5 | * which accompanies this distribution, and is available at 6 | * http://www.eclipse.org/legal/epl-v10.html 7 | * 8 | * Contributors: 9 | * Tran Nam Quang - initial API and implementation 10 | *******************************************************************************/ 11 | 12 | package net.sourceforge.docfetcher.gui.filter; 13 | 14 | import static org.junit.Assert.assertEquals; 15 | 16 | import org.junit.Test; 17 | 18 | /** 19 | * @author Tran Nam Quang 20 | */ 21 | public final class FilesizeTest { 22 | 23 | @Test 24 | public void testConversion() { 25 | assertLongEquals(5L, FilesizeUnit.KB.convert(5600L, FilesizeUnit.Byte)); 26 | assertLongEquals(0L, FilesizeUnit.GB.convert(1024000L, FilesizeUnit.Byte)); 27 | assertLongEquals(286720L, FilesizeUnit.Byte.convert(280L, FilesizeUnit.KB)); 28 | assertLongEquals(86973087744L, FilesizeUnit.Byte.convert(81L, FilesizeUnit.GB)); 29 | assertLongEquals(450L, FilesizeUnit.MB.convert(450L, FilesizeUnit.MB)); 30 | } 31 | 32 | private void assertLongEquals(long l1, long l2) { 33 | assertEquals(l1, l2); 34 | } 35 | 36 | } 37 | -------------------------------------------------------------------------------- /src/net/sourceforge/docfetcher/gui/preview/ToolBarForm.java: -------------------------------------------------------------------------------- 1 | /******************************************************************************* 2 | * Copyright (c) 2011 Tran Nam Quang. 3 | * All rights reserved. This program and the accompanying materials 4 | * are made available under the terms of the Eclipse Public License v1.0 5 | * which accompanies this distribution, and is available at 6 | * http://www.eclipse.org/legal/epl-v10.html 7 | * 8 | * Contributors: 9 | * Tran Nam Quang - initial API and implementation 10 | *******************************************************************************/ 11 | 12 | package net.sourceforge.docfetcher.gui.preview; 13 | 14 | import net.sourceforge.docfetcher.util.annotations.NotNull; 15 | import net.sourceforge.docfetcher.util.gui.FormDataFactory; 16 | 17 | import org.eclipse.swt.SWT; 18 | import org.eclipse.swt.layout.FormLayout; 19 | import org.eclipse.swt.widgets.Composite; 20 | import org.eclipse.swt.widgets.Control; 21 | 22 | /** 23 | * @author Tran Nam Quang 24 | */ 25 | abstract class ToolBarForm extends Composite { 26 | 27 | public ToolBarForm(@NotNull Composite parent) { 28 | super(parent, SWT.NONE); 29 | Control toolBar = createToolBar(this); 30 | Control contents = createContents(this); 31 | setLayout(new FormLayout()); 32 | FormDataFactory fdf = FormDataFactory.getInstance(); 33 | fdf.margin(0).top().left().right().applyTo(toolBar); 34 | fdf.top(toolBar).bottom().applyTo(contents); 35 | } 36 | 37 | @NotNull 38 | protected abstract Control createToolBar(@NotNull Composite parent); 39 | 40 | @NotNull 41 | protected abstract Control createContents(@NotNull Composite parent); 42 | 43 | } 44 | -------------------------------------------------------------------------------- /src/net/sourceforge/docfetcher/man/all/bullet.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/docfetcher/DocFetcher/42f2accd840edc5059060447ed3536aa4d54b5d3/src/net/sourceforge/docfetcher/man/all/bullet.png -------------------------------------------------------------------------------- /src/net/sourceforge/docfetcher/man/all/style.css: -------------------------------------------------------------------------------- 1 | body { 2 | font:95% Helvetica; 3 | margin-left: auto; 4 | margin-right: auto; 5 | padding: 10px; 6 | } 7 | 8 | div#main { 9 | text-align: left; 10 | list-style-position: outside; 11 | margin-bottom: 20px; 12 | } 13 | 14 | div.header { 15 | text-align: center; 16 | border-bottom: medium silver solid; 17 | padding: 10px; 18 | margin-bottom: 20px; 19 | } 20 | 21 | div.footer { 22 | text-align: center; 23 | border-top: medium silver solid; 24 | padding: 10px; 25 | } 26 | 27 | div#main, div.header, div.footer { 28 | max-width:640px; 29 | margin-left:auto; 30 | margin-right:auto; 31 | width:expression(document.body.clientWidth > 640? "640px": "auto" ); 32 | } 33 | 34 | .p-label { 35 | font-weight: bold; 36 | } 37 | 38 | a { 39 | text-decoration: none; 40 | color: blue; 41 | } 42 | 43 | a:hover { 44 | text-decoration: underline; 45 | } 46 | 47 | h1 { 48 | font-size: 125% 49 | } 50 | 51 | h2 { 52 | font-size: 100% 53 | } 54 | 55 | ul { 56 | list-style-image: url(bullet.png); 57 | } 58 | 59 | ul.level2 { 60 | margin-left: 10px; 61 | padding-left: 10px; 62 | } 63 | 64 | li { 65 | padding-top: 2px; 66 | padding-bottom: 2px; 67 | } 68 | 69 | table { 70 | padding: 0; 71 | border: 1px solid silver; 72 | border-collapse: collapse; 73 | text-align: center; 74 | width: 100% 75 | } 76 | 77 | table th { 78 | padding: 8px 4px; 79 | border: 1px solid silver; 80 | background-color: rgb(255, 255, 204); 81 | } 82 | 83 | table td { 84 | padding: 2px 4px; 85 | border: 1px solid silver; 86 | text-align: left; 87 | } 88 | -------------------------------------------------------------------------------- /src/net/sourceforge/docfetcher/man/de/DocFetcher_Manual_files/Release_Notification.markdown: -------------------------------------------------------------------------------- 1 | Benachrichtigung über neue Programm-Versionen 2 | ============================================= 3 | Um über neue DocFetcher-Versionen benachrichtigt zu werden, können Sie auf die Seite gehen und auf die "Get Updates"-Schaltfläche klicken. -------------------------------------------------------------------------------- /src/net/sourceforge/docfetcher/man/de/DocFetcher_Manual_files/Watch_Limit.markdown: -------------------------------------------------------------------------------- 1 | Erhöhung des Ordner-Überwachungs-Limits (Linux) 2 | =============================================== 3 | 4 | Auf Linux können Prozesse höchstens 8192 Ordner gleichzeitig überwachen. Sie werden möglicherweise an dieses Limit stoßen, wenn Sie eine extrem tiefe Ordner-Hierarchie indizieren. Falls Ihnen das passiert, wird DocFetcher wahrscheinlich eine "No space left on device" Fehlermeldung anzeigen. Diese Feldermeldung wird verschwinden, sobald Sie das Ordner-Überwachungs-Limit erhöhen. Bspw. wird der folgende Terminal-Befehl das Limit auf 32000 erhöhen: 5 | 6 | sudo echo 32000 > /proc/sys/fs/inotify/max_user_watches 7 | 8 | Um das Überwachungs-Limit permanent zu verändern, müssen Sie die Datei `/etc/sysctl.conf` mit Administrator-Rechten öffnen und folgende Zeile hinzufügen: 9 | 10 | fs.inotify.max_user_watches=32000 11 | -------------------------------------------------------------------------------- /src/net/sourceforge/docfetcher/man/de/page.properties: -------------------------------------------------------------------------------- 1 | # Author field in the metadata of the generated HTML files. If you're a translator, replace this with your own name. 2 | author=Tran Nam Quang 3 | 4 | # Title of the main page 5 | docfetcher_manual=DocFetcher Benutzerhandbuch 6 | 7 | # This will show up in the footer of the main page. The ${year} parameter will be automatically replaced with the current year. 8 | main_footer=Copyright (c) 2007-${year} DocFetcher Entwickler-Team 9 | 10 | # The label for the links from the subpages back to the main page 11 | back_to_main_page=Zurück zur Hauptseite 12 | 13 | # Subpage title 14 | query_syntax=Suchanfrage-Syntax 15 | 16 | # Subpage title 17 | portable_repos=Portable Dokument-Repositories 18 | 19 | # Subpage title 20 | indexing_options=Indizierungs-Einstellungen 21 | 22 | # Subpage title 23 | regular_expressions=Reguläre Ausdrücke 24 | 25 | # Subpage title 26 | release_notification=Benachrichtigung über neue Programm-Versionen 27 | 28 | # Subpage title 29 | memory_limit=Erhöhung des Speicherlimits 30 | 31 | # Subpage title 32 | watch_limit=Erhöhung des Ordner-Überwachungs-Limits (Linux) 33 | 34 | # Subpage title 35 | preferences=Programm-Einstellungen 36 | -------------------------------------------------------------------------------- /src/net/sourceforge/docfetcher/man/en/DocFetcher_Manual_files/Release_Notification.markdown: -------------------------------------------------------------------------------- 1 | Release Notification 2 | ==================== 3 | To receive notification of new DocFetcher releases, go to and click on the "Get Updates" button. 4 | -------------------------------------------------------------------------------- /src/net/sourceforge/docfetcher/man/en/DocFetcher_Manual_files/Watch_Limit.markdown: -------------------------------------------------------------------------------- 1 | How to raise the folder watch limit (Linux) 2 | =========================================== 3 | 4 | On Linux, processes can by default watch at most 8192 folders. You might reach this limit if you index a very deep hierarchy of folders. If that happens, DocFetcher will probably show a "No space left on device" error message. You can work around this by raising the watch limit. For example, this command will temporarily raise the watch limit to 32000: 5 | 6 | sudo echo 32000 > /proc/sys/fs/inotify/max_user_watches 7 | 8 | To change the watch limit permanently, open the file `/etc/sysctl.conf` (as root) and add the following line: 9 | 10 | fs.inotify.max_user_watches=32000 11 | -------------------------------------------------------------------------------- /src/net/sourceforge/docfetcher/man/en/page.properties: -------------------------------------------------------------------------------- 1 | # Author field in the metadata of the generated HTML files. If you're a translator, replace this with your own name. 2 | author=Tran Nam Quang 3 | 4 | # Title of the main page 5 | docfetcher_manual=DocFetcher Manual 6 | 7 | # This will show up in the footer of the main page. The ${year} parameter will be automatically replaced with the current year. 8 | main_footer=Copyright (c) 2007-${year} DocFetcher Development Team 9 | 10 | # The label for the links from the subpages back to the main page 11 | back_to_main_page=Back to main page 12 | 13 | # Subpage title 14 | query_syntax=Query Syntax 15 | 16 | # Subpage title 17 | portable_repos=Portable Document Repositories 18 | 19 | # Subpage title 20 | indexing_options=Indexing Options 21 | 22 | # Subpage title 23 | regular_expressions=Regular Expressions 24 | 25 | # Subpage title 26 | release_notification=Release Notification 27 | 28 | # Subpage title 29 | memory_limit=How to raise the memory limit 30 | 31 | # Subpage title 32 | watch_limit=How to raise the folder watch limit (Linux) 33 | 34 | # Subpage title 35 | preferences=Preferences 36 | -------------------------------------------------------------------------------- /src/net/sourceforge/docfetcher/man/it/DocFetcher_Manual_files/Release_Notification.markdown: -------------------------------------------------------------------------------- 1 | Notifica del rilascio di nuove versioni del programma 2 | ==================== 3 | Per ricevere la notifica di nuove versioni di DocFetcher, andare all'URL: e fare clic sul pulsante *Get Updates*. -------------------------------------------------------------------------------- /src/net/sourceforge/docfetcher/man/it/DocFetcher_Manual_files/Watch_Limit.markdown: -------------------------------------------------------------------------------- 1 | Come aumentare i limiti di sorveglianza delle cartelle (Linux) 2 | =========================================== 3 | 4 | In Linux, i processi possono *sorvegliare* un massimo di 8192 cartelle. Questo limite potrebbe essere raggiunto se si indicizzassero delle cartelle fra loro altamente nidificate. Se questo limite viene superato, DocFetcher fa comparire il messaggio di errore: *No space left on device*. È possibile aggirare questo problema innalzando i limiti di sorveglianza delle cartelle. Per esempio il comando sotto riportato innalza temporaneamente tale limite a 32000 cartelle: 5 | 6 | sudo echo 32000 > /proc/sys/fs/inotify/max_user_watches 7 | 8 | Per modificare in maniera definitiva il limite di sorveglianza delle cartelle, bisogna aprire (come utente `root`) il file `/etc/sysctl.conf`, aggiungervi la riga sotto riportata e salvare il file. 9 | 10 | fs.inotify.max_user_watches=32000 -------------------------------------------------------------------------------- /src/net/sourceforge/docfetcher/man/it/page.properties: -------------------------------------------------------------------------------- 1 | # Author field in the metadata of the generated HTML files. If you're a translator, replace this with your own name. 2 | author=Topoldo 3 | 4 | # Title of the main page 5 | docfetcher_manual=Guida di DocFetcher 6 | 7 | # This will show up in the footer of the main page. The ${year} parameter will be automatically replaced with the current year. 8 | main_footer=Copyright (c) 2007-${year} DocFetcher Development Team 9 | 10 | # The label for the links from the subpages back to the main page 11 | back_to_main_page=Ritorno alla pagina principale 12 | 13 | # Subpage title 14 | query_syntax=Sintassi delle interrogazioni 15 | 16 | # Subpage title 17 | portable_repos=Raccolte di documenti portatili 18 | 19 | # Subpage title 20 | indexing_options=Opzioni di indicizzazione 21 | 22 | # Subpage title 23 | regular_expressions=Espressioni regolari (RegEx) 24 | 25 | # Subpage title 26 | release_notification=Notifica del rilascio di nuove versioni del programma 27 | 28 | # Subpage title 29 | memory_limit=Come aumentare la quantità di memoria 30 | 31 | # Subpage title 32 | watch_limit=Come aumentare i limiti di sorveglianza delle cartelle (Linux) 33 | 34 | # Subpage title 35 | preferences=Preferenze -------------------------------------------------------------------------------- /src/net/sourceforge/docfetcher/man/ja/DocFetcher_Manual_files/Release_Notification.markdown: -------------------------------------------------------------------------------- 1 | Release Notification 2 | ==================== 3 | There are several ways for you to receive notification of new DocFetcher releases: 4 | 5 | * ***Email via sourceforge.net***: On , there's an `Update Notifications` box, where you can enter your email address in order to receive release notifications. 6 | * ***Email via freecode.com***: New DocFetcher releases are usually announced on . To receive an email upon new releases, create an account on that website, go to the DocFetcher project at and subscribe to it by clicking on the "follow" button on the right. 7 | * ***RSS***: If you prefer RSS, you can subscribe to our [file release feed](http://sourceforge.net/api/file/index/project-id/197779/mtime/desc/limit/20/rss). 8 | * ***Firefox Addon***: If you're using Firefox, there's this nifty addon called [Update Scanner](https://addons.mozilla.org/en-US/firefox/addon/update-scanner/), which allows you to monitor arbitrary websites. With this, you can monitor our [download page](http://docfetcher.sourceforge.net/download.html). 9 | -------------------------------------------------------------------------------- /src/net/sourceforge/docfetcher/man/ja/DocFetcher_Manual_files/Watch_Limit.markdown: -------------------------------------------------------------------------------- 1 | How to raise the folder watch limit (Linux) 2 | =========================================== 3 | 4 | On Linux, processes can by default watch at most 8192 folders. You might reach this limit if you index a very deep hierarchy of folders. If that happens, DocFetcher will probably show a "No space left on device" error message. You can work around this by raising the watch limit. For example, this command will temporarily raise the watch limit to 32000: 5 | 6 | sudo echo 32000 > /proc/sys/fs/inotify/max_user_watches 7 | 8 | To change the watch limit permanently, open the file `/etc/sysctl.conf` (as root) and add the following line: 9 | 10 | fs.inotify.max_user_watches=32000 11 | -------------------------------------------------------------------------------- /src/net/sourceforge/docfetcher/man/ja/page.properties: -------------------------------------------------------------------------------- 1 | # Author field in the metadata of the generated HTML files. If you're a translator, replace this with your own name. 2 | author=Naoki Toya 3 | 4 | # Title of the main page 5 | docfetcher_manual=DocFetcher Manual 6 | 7 | # This will show up in the footer of the main page. The ${year} parameter will be automatically replaced with the current year. 8 | main_footer=Copyright (c) 2007-${year} DocFetcher Development Team 9 | 10 | # The label for the links from the subpages back to the main page 11 | back_to_main_page=Back to main page 12 | 13 | # Subpage title 14 | query_syntax=Query Syntax 15 | 16 | # Subpage title 17 | portable_repos=Portable Document Repositories 18 | 19 | # Subpage title 20 | indexing_options=Indexing Options 21 | 22 | # Subpage title 23 | regular_expressions=Regular Expressions 24 | 25 | # Subpage title 26 | release_notification=Release Notification 27 | 28 | # Subpage title 29 | memory_limit=How to raise the memory limit 30 | 31 | # Subpage title 32 | watch_limit=How to raise the folder watch limit (Linux) 33 | 34 | # Subpage title 35 | preferences=Preferences 36 | -------------------------------------------------------------------------------- /src/net/sourceforge/docfetcher/man/template-mainpage.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | ${docfetcher_manual} 5 | 6 | 7 | 8 | 9 | 10 |
11 |
12 | ${app_name} ${version}
13 |
14 | ${contents} 15 |
16 | 19 | 20 | 21 | -------------------------------------------------------------------------------- /src/net/sourceforge/docfetcher/man/template-subpage.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | ${docfetcher_manual} - ${subpage_title} 5 | 6 | 7 | 8 | 9 | 10 | 13 |
14 | ${contents} 15 |
16 | 19 | 20 | 21 | -------------------------------------------------------------------------------- /src/net/sourceforge/docfetcher/man/zh/DocFetcher_Manual_files/Release_Notification.markdown: -------------------------------------------------------------------------------- 1 | Release Notification 2 | ==================== 3 | There are several ways for you to receive notification of new DocFetcher releases: 4 | 5 | * ***Email via sourceforge.net***: On , there's an `Update Notifications` box, where you can enter your email address in order to receive release notifications. 6 | * ***Email via freecode.com***: New DocFetcher releases are usually announced on . To receive an email upon new releases, create an account on that website, go to the DocFetcher project at and subscribe to it by clicking on the "follow" button on the right. 7 | * ***RSS***: If you prefer RSS, you can subscribe to our [file release feed](http://sourceforge.net/api/file/index/project-id/197779/mtime/desc/limit/20/rss). 8 | * ***Firefox Addon***: If you're using Firefox, there's this nifty addon called [Update Scanner](https://addons.mozilla.org/en-US/firefox/addon/update-scanner/), which allows you to monitor arbitrary websites. With this, you can monitor our [download page](http://docfetcher.sourceforge.net/download.html). 9 | -------------------------------------------------------------------------------- /src/net/sourceforge/docfetcher/man/zh/DocFetcher_Manual_files/Watch_Limit.markdown: -------------------------------------------------------------------------------- 1 | How to raise the folder watch limit (Linux) 2 | =========================================== 3 | 4 | On Linux, processes can by default watch at most 8192 folders. You might reach this limit if you index a very deep hierarchy of folders. If that happens, DocFetcher will probably show a "No space left on device" error message. You can work around this by raising the watch limit. For example, this command will temporarily raise the watch limit to 32000: 5 | 6 | sudo echo 32000 > /proc/sys/fs/inotify/max_user_watches 7 | 8 | To change the watch limit permanently, open the file `/etc/sysctl.conf` (as root) and add the following line: 9 | 10 | fs.inotify.max_user_watches=32000 11 | -------------------------------------------------------------------------------- /src/net/sourceforge/docfetcher/man/zh/page.properties: -------------------------------------------------------------------------------- 1 | # Author field in the metadata of the generated HTML files. If you're a translator, replace this with your own name. 2 | author=胡正冕 3 | 4 | # Title of the main page 5 | docfetcher_manual=DocFetcher 帮助 6 | 7 | # This will show up in the footer of the main page. The ${year} parameter will be automatically replaced with the current year. 8 | main_footer=Copyright (c) 2007-${year} DocFetcher 开发团队 9 | 10 | # The label for the links from the subpages back to the main page 11 | back_to_main_page=回到主页 12 | 13 | # Subpage title 14 | query_syntax=搜索语法 15 | 16 | # Subpage title 17 | portable_repos=可移植文档仓库 18 | 19 | # Subpage title 20 | indexing_options=索引设置 21 | 22 | # Subpage title 23 | regular_expressions=正则表达式 24 | 25 | # Subpage title 26 | release_notification=新版本通知 27 | 28 | # Subpage title 29 | memory_limit=如何提高内存限制 30 | 31 | # Subpage title 32 | watch_limit=如何提高文件夹的watch limit (Linux) 33 | 34 | # Subpage title 35 | preferences=首选项 36 | -------------------------------------------------------------------------------- /src/net/sourceforge/docfetcher/model/Cancelable.java: -------------------------------------------------------------------------------- 1 | /******************************************************************************* 2 | * Copyright (c) 2010, 2011 Tran Nam Quang. 3 | * All rights reserved. This program and the accompanying materials 4 | * are made available under the terms of the Eclipse Public License v1.0 5 | * which accompanies this distribution, and is available at 6 | * http://www.eclipse.org/legal/epl-v10.html 7 | * 8 | * Contributors: 9 | * Tran Nam Quang - initial API and implementation 10 | *******************************************************************************/ 11 | 12 | package net.sourceforge.docfetcher.model; 13 | 14 | /** 15 | * @author Tran Nam Quang 16 | */ 17 | public interface Cancelable { 18 | 19 | public static final Cancelable nullCancelable = new Cancelable() { 20 | public boolean isCanceled() { 21 | return false; 22 | } 23 | }; 24 | 25 | public boolean isCanceled(); 26 | 27 | } 28 | -------------------------------------------------------------------------------- /src/net/sourceforge/docfetcher/model/FieldTypes.java: -------------------------------------------------------------------------------- 1 | /******************************************************************************* 2 | * Copyright (c) 2018 Zhengmian Hu. 3 | * All rights reserved. This program and the accompanying materials 4 | * are made available under the terms of the Eclipse Public License v1.0 5 | * which accompanies this distribution, and is available at 6 | * http://www.eclipse.org/legal/epl-v10.html 7 | * 8 | * Contributors: 9 | * Zhengmian Hu - initial API and implementation 10 | *******************************************************************************/ 11 | 12 | package net.sourceforge.docfetcher.model; 13 | 14 | import org.apache.lucene.document.FieldType; 15 | import org.apache.lucene.document.TextField; 16 | 17 | /** 18 | * Created by huzhengmian on 2018/5/7. 19 | */ 20 | public class FieldTypes { 21 | public static final FieldType TYPE_TEXT_WITH_POSITIONS_OFFSETS_STORED=new FieldType(TextField.TYPE_STORED); 22 | public static final FieldType TYPE_TEXT_WITH_POSITIONS_OFFSETS_NOT_STORED=new FieldType(TextField.TYPE_STORED); 23 | 24 | static { 25 | TYPE_TEXT_WITH_POSITIONS_OFFSETS_NOT_STORED.setStoreTermVectors(true); 26 | TYPE_TEXT_WITH_POSITIONS_OFFSETS_NOT_STORED.setStoreTermVectorOffsets(true); 27 | TYPE_TEXT_WITH_POSITIONS_OFFSETS_NOT_STORED.setStoreTermVectorPositions(true); 28 | TYPE_TEXT_WITH_POSITIONS_OFFSETS_STORED.setStoreTermVectors(true); 29 | TYPE_TEXT_WITH_POSITIONS_OFFSETS_STORED.setStoreTermVectorOffsets(true); 30 | TYPE_TEXT_WITH_POSITIONS_OFFSETS_STORED.setStoreTermVectorPositions(true); 31 | } 32 | 33 | } 34 | -------------------------------------------------------------------------------- /src/net/sourceforge/docfetcher/model/FileResource.java: -------------------------------------------------------------------------------- 1 | /******************************************************************************* 2 | * Copyright (c) 2011 Tran Nam Quang. 3 | * All rights reserved. This program and the accompanying materials 4 | * are made available under the terms of the Eclipse Public License v1.0 5 | * which accompanies this distribution, and is available at 6 | * http://www.eclipse.org/legal/epl-v10.html 7 | * 8 | * Contributors: 9 | * Tran Nam Quang - initial API and implementation 10 | *******************************************************************************/ 11 | 12 | package net.sourceforge.docfetcher.model; 13 | 14 | import java.io.File; 15 | 16 | import net.sourceforge.docfetcher.util.annotations.NotNull; 17 | 18 | /** 19 | * @author Tran Nam Quang 20 | */ 21 | public interface FileResource { 22 | 23 | // Client MUST call dispose when the file is not needed anymore. 24 | @NotNull 25 | public File getFile(); 26 | 27 | // Can be called multiple times. 28 | public void dispose(); 29 | 30 | } -------------------------------------------------------------------------------- /src/net/sourceforge/docfetcher/model/TreeCheckStateTest.java: -------------------------------------------------------------------------------- 1 | /******************************************************************************* 2 | * Copyright (c) 2011 Tran Nam Quang. 3 | * All rights reserved. This program and the accompanying materials 4 | * are made available under the terms of the Eclipse Public License v1.0 5 | * which accompanies this distribution, and is available at 6 | * http://www.eclipse.org/legal/epl-v10.html 7 | * 8 | * Contributors: 9 | * Tran Nam Quang - initial API and implementation 10 | *******************************************************************************/ 11 | 12 | package net.sourceforge.docfetcher.model; 13 | 14 | import static org.junit.Assert.assertEquals; 15 | 16 | import java.util.Arrays; 17 | import java.util.List; 18 | 19 | import net.sourceforge.docfetcher.model.index.file.FileFolder; 20 | 21 | import org.junit.Test; 22 | 23 | /** 24 | * @author Tran Nam Quang 25 | */ 26 | public final class TreeCheckStateTest { 27 | 28 | @Test 29 | public void testCommonCase() { 30 | FileFolder root = new FileFolder(new Path("../../Root"), null); 31 | FileFolder f1 = new FileFolder(root, "Folder1", null); 32 | FileFolder f2 = new FileFolder(root, "Folder2", null); 33 | FileFolder sf = new FileFolder(f1, "SubFolder", null); 34 | 35 | root.setChecked(true); 36 | f1.setChecked(false); 37 | f2.setChecked(true); 38 | sf.setChecked(false); 39 | 40 | TreeCheckState checkState = root.getTreeCheckState(); 41 | List folders = Arrays.asList(root, f1, f2, sf); 42 | for (FileFolder f : folders) { 43 | boolean actualOutput = checkState.isChecked(f.getPath()); 44 | assertEquals(f.isChecked(), actualOutput); 45 | } 46 | } 47 | 48 | } 49 | -------------------------------------------------------------------------------- /src/net/sourceforge/docfetcher/model/ViewNode.java: -------------------------------------------------------------------------------- 1 | /******************************************************************************* 2 | * Copyright (c) 2011 Tran Nam Quang. 3 | * All rights reserved. This program and the accompanying materials 4 | * are made available under the terms of the Eclipse Public License v1.0 5 | * which accompanies this distribution, and is available at 6 | * http://www.eclipse.org/legal/epl-v10.html 7 | * 8 | * Contributors: 9 | * Tran Nam Quang - initial API and implementation 10 | *******************************************************************************/ 11 | 12 | package net.sourceforge.docfetcher.model; 13 | 14 | import java.util.List; 15 | 16 | import net.sourceforge.docfetcher.util.annotations.ImmutableCopy; 17 | import net.sourceforge.docfetcher.util.annotations.NotNull; 18 | 19 | /** 20 | * A node of a tree structure that can be displayed on the user interface. (This 21 | * contrasts with nodes that only serve internal purposes.) 22 | * 23 | * @author Tran Nam Quang 24 | */ 25 | public interface ViewNode { 26 | 27 | /** 28 | * Returns a label for displaying the receiver on the user interface. The 29 | * returned label is not guaranteed to be unique. 30 | */ 31 | @NotNull 32 | public String getDisplayName(); 33 | 34 | @NotNull 35 | public boolean isChecked(); 36 | 37 | @NotNull 38 | public void setChecked(boolean isChecked); 39 | 40 | @NotNull 41 | public Iterable getChildren(); 42 | 43 | public boolean isIndex(); 44 | 45 | @ImmutableCopy 46 | @NotNull 47 | public List getDocumentIds(); 48 | 49 | } -------------------------------------------------------------------------------- /src/net/sourceforge/docfetcher/model/index/DecoratedMultiReader.java: -------------------------------------------------------------------------------- 1 | /******************************************************************************* 2 | * Copyright (c) 2018 Zhengmian Hu. 3 | * All rights reserved. This program and the accompanying materials 4 | * are made available under the terms of the Eclipse Public License v1.0 5 | * which accompanies this distribution, and is available at 6 | * http://www.eclipse.org/legal/epl-v10.html 7 | * 8 | * Contributors: 9 | * Zhengmian Hu - initial API and implementation 10 | *******************************************************************************/ 11 | 12 | package net.sourceforge.docfetcher.model.index; 13 | 14 | import org.apache.lucene.index.IndexReader; 15 | import org.apache.lucene.index.MultiReader; 16 | 17 | import java.io.IOException; 18 | 19 | /** 20 | * Created by huzhengmian on 2018/5/7. 21 | */ 22 | public class DecoratedMultiReader extends MultiReader { 23 | public DecoratedMultiReader(IndexReader... subReaders) throws IOException { 24 | super(subReaders); 25 | } 26 | 27 | public DecoratedMultiReader(IndexReader[] subReaders, boolean closeSubReaders) throws IOException { 28 | super(subReaders,closeSubReaders); 29 | } 30 | 31 | public final int decoratedReaderIndex(int docID) { 32 | return super.readerIndex(docID); 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /src/net/sourceforge/docfetcher/model/index/DiskSpaceException.java: -------------------------------------------------------------------------------- 1 | /******************************************************************************* 2 | * Copyright (c) 2010, 2011 Tran Nam Quang. 3 | * All rights reserved. This program and the accompanying materials 4 | * are made available under the terms of the Eclipse Public License v1.0 5 | * which accompanies this distribution, and is available at 6 | * http://www.eclipse.org/legal/epl-v10.html 7 | * 8 | * Contributors: 9 | * Tran Nam Quang - initial API and implementation 10 | *******************************************************************************/ 11 | 12 | package net.sourceforge.docfetcher.model.index; 13 | 14 | import net.sourceforge.docfetcher.util.annotations.VisibleForPackageGroup; 15 | 16 | /** 17 | * @author Tran Nam Quang 18 | */ 19 | @VisibleForPackageGroup 20 | public final class DiskSpaceException extends Exception { 21 | 22 | private static final long serialVersionUID = 1L; 23 | 24 | public DiskSpaceException(String message) { 25 | super(message); 26 | } 27 | 28 | } 29 | -------------------------------------------------------------------------------- /src/net/sourceforge/docfetcher/model/index/IndexingConfigTest.java: -------------------------------------------------------------------------------- 1 | /******************************************************************************* 2 | * Copyright (c) 2010, 2011 Tran Nam Quang. 3 | * All rights reserved. This program and the accompanying materials 4 | * are made available under the terms of the Eclipse Public License v1.0 5 | * which accompanies this distribution, and is available at 6 | * http://www.eclipse.org/legal/epl-v10.html 7 | * 8 | * Contributors: 9 | * Tran Nam Quang - initial API and implementation 10 | *******************************************************************************/ 11 | 12 | package net.sourceforge.docfetcher.model.index; 13 | 14 | import static org.junit.Assert.assertTrue; 15 | import net.sourceforge.docfetcher.util.AppUtil; 16 | 17 | import org.junit.Test; 18 | 19 | /** 20 | * @author Tran Nam Quang 21 | */ 22 | public final class IndexingConfigTest { 23 | 24 | static { 25 | AppUtil.Const.autoInit(); 26 | } 27 | 28 | @Test 29 | public void testCreateCustomTempFile() throws Exception { 30 | /* 31 | * This test ensures that the filename of the created temp file has the 32 | * same file extension as the input filename. 33 | */ 34 | IndexingConfig config = new IndexingConfig(); 35 | String tempFilename = config.createDerivedTempFile("test.pdf").getName(); 36 | assertTrue(tempFilename.startsWith("test")); 37 | assertTrue(tempFilename.endsWith(".pdf")); 38 | } 39 | 40 | } 41 | -------------------------------------------------------------------------------- /src/net/sourceforge/docfetcher/model/index/IndexingReporter.java: -------------------------------------------------------------------------------- 1 | /******************************************************************************* 2 | * Copyright (c) 2011 Tran Nam Quang. 3 | * All rights reserved. This program and the accompanying materials 4 | * are made available under the terms of the Eclipse Public License v1.0 5 | * which accompanies this distribution, and is available at 6 | * http://www.eclipse.org/legal/epl-v10.html 7 | * 8 | * Contributors: 9 | * Tran Nam Quang - initial API and implementation 10 | *******************************************************************************/ 11 | 12 | package net.sourceforge.docfetcher.model.index; 13 | 14 | import net.sourceforge.docfetcher.util.annotations.NotNull; 15 | 16 | /** 17 | * @author Tran Nam Quang 18 | */ 19 | public class IndexingReporter { 20 | 21 | public static final IndexingReporter nullReporter = new IndexingReporter(); 22 | 23 | public void setStartTime(long time) {} 24 | 25 | public void setEndTime(long time) {} 26 | 27 | public void info(@NotNull IndexingInfo info) {} 28 | 29 | public void subInfo(int current, int total) {} 30 | 31 | public void fail(@NotNull IndexingError error) {} 32 | 33 | } 34 | -------------------------------------------------------------------------------- /src/net/sourceforge/docfetcher/model/index/MutableInt.java: -------------------------------------------------------------------------------- 1 | /******************************************************************************* 2 | * Copyright (c) 2011 Tran Nam Quang. 3 | * All rights reserved. This program and the accompanying materials 4 | * are made available under the terms of the Eclipse Public License v1.0 5 | * which accompanies this distribution, and is available at 6 | * http://www.eclipse.org/legal/epl-v10.html 7 | * 8 | * Contributors: 9 | * Tran Nam Quang - initial API and implementation 10 | *******************************************************************************/ 11 | 12 | package net.sourceforge.docfetcher.model.index; 13 | 14 | import net.sourceforge.docfetcher.util.annotations.VisibleForPackageGroup; 15 | 16 | /** 17 | * @author Tran Nam Quang 18 | */ 19 | @VisibleForPackageGroup 20 | public final class MutableInt { 21 | 22 | private int value; 23 | 24 | public MutableInt(int value) { 25 | this.value = value; 26 | } 27 | 28 | public int get() { 29 | return value; 30 | } 31 | 32 | public void set(int value) { 33 | this.value = value; 34 | } 35 | 36 | public void increment() { 37 | value++; 38 | } 39 | 40 | } 41 | -------------------------------------------------------------------------------- /src/net/sourceforge/docfetcher/model/index/file/ArchiveEncryptedException.java: -------------------------------------------------------------------------------- 1 | /******************************************************************************* 2 | * Copyright (c) 2010, 2011 Tran Nam Quang. 3 | * All rights reserved. This program and the accompanying materials 4 | * are made available under the terms of the Eclipse Public License v1.0 5 | * which accompanies this distribution, and is available at 6 | * http://www.eclipse.org/legal/epl-v10.html 7 | * 8 | * Contributors: 9 | * Tran Nam Quang - initial API and implementation 10 | *******************************************************************************/ 11 | 12 | package net.sourceforge.docfetcher.model.index.file; 13 | 14 | import java.io.File; 15 | 16 | import net.sourceforge.docfetcher.util.annotations.Nullable; 17 | import de.schlichtherle.truezip.file.TFile; 18 | 19 | /** 20 | * @author Tran Nam Quang 21 | */ 22 | final class ArchiveEncryptedException extends Exception { 23 | 24 | private static final long serialVersionUID = 1L; 25 | 26 | private final File file; 27 | private final String originalPath; 28 | 29 | public ArchiveEncryptedException(@Nullable File file, @Nullable String originalPath) { 30 | /* 31 | * For unknown reasons, serialization will fail with 32 | * "NoClassDefFoundError: java/nio/file/Path" if we try to store TFile 33 | * instances, so a regular file is stored instead. 34 | */ 35 | this.file = file instanceof TFile ? new File(file.getPath()) : file; 36 | this.originalPath = originalPath; 37 | } 38 | 39 | public File getFile() { 40 | return file; 41 | } 42 | 43 | public String getOriginalPath() { 44 | return originalPath; 45 | } 46 | 47 | } 48 | -------------------------------------------------------------------------------- /src/net/sourceforge/docfetcher/model/index/file/SevenZipInputStream.java: -------------------------------------------------------------------------------- 1 | /******************************************************************************* 2 | * Copyright (c) 2010, 2011 Tran Nam Quang. 3 | * All rights reserved. This program and the accompanying materials 4 | * are made available under the terms of the Eclipse Public License v1.0 5 | * which accompanies this distribution, and is available at 6 | * http://www.eclipse.org/legal/epl-v10.html 7 | * 8 | * Contributors: 9 | * Tran Nam Quang - initial API and implementation 10 | *******************************************************************************/ 11 | 12 | package net.sourceforge.docfetcher.model.index.file; 13 | 14 | import java.io.File; 15 | import java.io.IOException; 16 | import java.io.RandomAccessFile; 17 | 18 | /** 19 | * @author Tran Nam Quang 20 | */ 21 | final class SevenZipInputStream extends SevenZip.IInStream { 22 | 23 | private final RandomAccessFile file; 24 | 25 | public SevenZipInputStream(File file) throws IOException { 26 | this.file = new RandomAccessFile(file.getPath(), "r"); 27 | } 28 | 29 | public long Seek(long offset, int seekOrigin) throws IOException { 30 | if (seekOrigin == STREAM_SEEK_SET) { 31 | file.seek(offset); 32 | } else if (seekOrigin == STREAM_SEEK_CUR) { 33 | file.seek(offset + file.getFilePointer()); 34 | } 35 | return file.getFilePointer(); 36 | } 37 | 38 | public int read() throws IOException { 39 | return file.read(); 40 | } 41 | 42 | public int read(byte[] data, int off, int size) throws IOException { 43 | return file.read(data, off, size); 44 | } 45 | 46 | public void close() throws IOException { 47 | file.close(); 48 | } 49 | 50 | } -------------------------------------------------------------------------------- /src/net/sourceforge/docfetcher/model/index/file/WrappedStackOverflowError.java: -------------------------------------------------------------------------------- 1 | /******************************************************************************* 2 | * Copyright (c) 2012 Tran Nam Quang. 3 | * All rights reserved. This program and the accompanying materials 4 | * are made available under the terms of the Eclipse Public License v1.0 5 | * which accompanies this distribution, and is available at 6 | * http://www.eclipse.org/legal/epl-v10.html 7 | * 8 | * Contributors: 9 | * Tran Nam Quang - initial API and implementation 10 | *******************************************************************************/ 11 | 12 | package net.sourceforge.docfetcher.model.index.file; 13 | 14 | import net.sourceforge.docfetcher.util.annotations.NotNull; 15 | 16 | /** 17 | * @author Tran Nam Quang 18 | */ 19 | final class WrappedStackOverflowError extends Error { 20 | 21 | private static final long serialVersionUID = 1L; 22 | 23 | public WrappedStackOverflowError( @NotNull String msg, 24 | @NotNull StackOverflowError cause) { 25 | super(msg, cause); 26 | } 27 | 28 | } 29 | -------------------------------------------------------------------------------- /src/net/sourceforge/docfetcher/model/index/outlook/MailDocument.java: -------------------------------------------------------------------------------- 1 | /******************************************************************************* 2 | * Copyright (c) 2010, 2011 Tran Nam Quang. 3 | * All rights reserved. This program and the accompanying materials 4 | * are made available under the terms of the Eclipse Public License v1.0 5 | * which accompanies this distribution, and is available at 6 | * http://www.eclipse.org/legal/epl-v10.html 7 | * 8 | * Contributors: 9 | * Tran Nam Quang - initial API and implementation 10 | *******************************************************************************/ 11 | 12 | package net.sourceforge.docfetcher.model.index.outlook; 13 | 14 | import net.sourceforge.docfetcher.model.Document; 15 | import net.sourceforge.docfetcher.model.DocumentType; 16 | import net.sourceforge.docfetcher.util.annotations.NotNull; 17 | 18 | /** 19 | * @author Tran Nam Quang 20 | */ 21 | final class MailDocument extends Document { 22 | 23 | private static final long serialVersionUID = 1L; 24 | 25 | public MailDocument(@NotNull MailFolder parent, 26 | @NotNull String name, 27 | @NotNull String displayName, 28 | long lastModified) { 29 | super(parent, name, displayName, lastModified); 30 | } 31 | 32 | protected DocumentType getType() { 33 | return DocumentType.OUTLOOK; 34 | } 35 | 36 | public boolean isModified(long newLastModified) { 37 | return getLastModified() != newLastModified; 38 | } 39 | 40 | } 41 | -------------------------------------------------------------------------------- /src/net/sourceforge/docfetcher/model/index/outlook/MailFolder.java: -------------------------------------------------------------------------------- 1 | /******************************************************************************* 2 | * Copyright (c) 2010, 2011 Tran Nam Quang. 3 | * All rights reserved. This program and the accompanying materials 4 | * are made available under the terms of the Eclipse Public License v1.0 5 | * which accompanies this distribution, and is available at 6 | * http://www.eclipse.org/legal/epl-v10.html 7 | * 8 | * Contributors: 9 | * Tran Nam Quang - initial API and implementation 10 | *******************************************************************************/ 11 | 12 | package net.sourceforge.docfetcher.model.index.outlook; 13 | 14 | import net.sourceforge.docfetcher.model.Folder; 15 | import net.sourceforge.docfetcher.model.Path; 16 | import net.sourceforge.docfetcher.util.annotations.NotNull; 17 | 18 | /** 19 | * This class is intended to be a generics-free middleman for the Folder class, 20 | * i.e. this class can be used instead of Folder in order to avoid typing out 21 | * long and cumbersome generic type signatures. 22 | * 23 | * @author Tran Nam Quang 24 | */ 25 | final class MailFolder extends Folder { 26 | 27 | private static final long serialVersionUID = 1L; 28 | 29 | private boolean hasDeepContent = false; 30 | 31 | public MailFolder(@NotNull MailFolder parent, @NotNull String name) { 32 | super(parent, name, null); 33 | } 34 | 35 | public MailFolder(@NotNull Path path) { 36 | super(path, null); 37 | } 38 | 39 | public void setHasDeepContent(boolean hasDeepContent) { 40 | this.hasDeepContent = hasDeepContent; 41 | } 42 | 43 | public boolean hasDeepContent() { 44 | return hasDeepContent; 45 | } 46 | 47 | } 48 | -------------------------------------------------------------------------------- /src/net/sourceforge/docfetcher/model/index/outlook/OutlookIndexTest.java: -------------------------------------------------------------------------------- 1 | /******************************************************************************* 2 | * Copyright (c) 2010, 2011 Tran Nam Quang. 3 | * All rights reserved. This program and the accompanying materials 4 | * are made available under the terms of the Eclipse Public License v1.0 5 | * which accompanies this distribution, and is available at 6 | * http://www.eclipse.org/legal/epl-v10.html 7 | * 8 | * Contributors: 9 | * Tran Nam Quang - initial API and implementation 10 | *******************************************************************************/ 11 | 12 | package net.sourceforge.docfetcher.model.index.outlook; 13 | 14 | import java.io.File; 15 | 16 | import net.sourceforge.docfetcher.TestFiles; 17 | import net.sourceforge.docfetcher.model.UtilModel; 18 | import net.sourceforge.docfetcher.util.AppUtil; 19 | 20 | import org.apache.lucene.store.Directory; 21 | import org.junit.Test; 22 | 23 | /** 24 | * @author Tran Nam Quang 25 | */ 26 | public final class OutlookIndexTest { 27 | 28 | static { 29 | AppUtil.Const.autoInit(); 30 | } 31 | 32 | @Test 33 | public void testSimple() throws Exception { 34 | File pstFile = TestFiles.outlook_test.get(); 35 | 36 | OutlookIndex index = new OutlookIndex(null, pstFile); 37 | index.update(null, null); 38 | Directory luceneDir = index.getLuceneDir(); 39 | 40 | UtilModel.assertDocCount(luceneDir, 1); 41 | UtilModel.assertResultCount(luceneDir, "Subject1", 1); 42 | UtilModel.assertResultCount(luceneDir, "Body1", 1); 43 | 44 | UtilModel.assertResultCount(luceneDir, "test", 1); 45 | UtilModel.assertResultCount(luceneDir, "\"test.pdf\"", 1); 46 | } 47 | 48 | // TODO test 49 | 50 | } 51 | -------------------------------------------------------------------------------- /src/net/sourceforge/docfetcher/model/parse/PageHandler.java: -------------------------------------------------------------------------------- 1 | /******************************************************************************* 2 | * Copyright (c) 2015 Nam-Quang Tran. 3 | * All rights reserved. This program and the accompanying materials 4 | * are made available under the terms of the Eclipse Public License v1.0 5 | * which accompanies this distribution, and is available at 6 | * http://www.eclipse.org/legal/epl-v10.html 7 | * 8 | * Contributors: 9 | * Nam-Quang Tran - initial API and implementation 10 | *******************************************************************************/ 11 | 12 | package net.sourceforge.docfetcher.model.parse; 13 | 14 | public interface PageHandler { 15 | 16 | /** Returns whether the parsing process should stop. */ 17 | public boolean handlePage(String pageText); 18 | 19 | } -------------------------------------------------------------------------------- /src/net/sourceforge/docfetcher/model/parse/ParseException.java: -------------------------------------------------------------------------------- 1 | /******************************************************************************* 2 | * Copyright (c) 2011 Tran Nam Quang. 3 | * All rights reserved. This program and the accompanying materials 4 | * are made available under the terms of the Eclipse Public License v1.0 5 | * which accompanies this distribution, and is available at 6 | * http://www.eclipse.org/legal/epl-v10.html 7 | * 8 | * Contributors: 9 | * Tran Nam Quang - initial API and implementation 10 | *******************************************************************************/ 11 | 12 | package net.sourceforge.docfetcher.model.parse; 13 | 14 | import net.sourceforge.docfetcher.util.annotations.NotNull; 15 | 16 | /** 17 | * @author Tran Nam Quang 18 | */ 19 | public final class ParseException extends Exception { 20 | 21 | private static final long serialVersionUID = 1L; 22 | 23 | public ParseException(@NotNull Throwable cause) { 24 | super(cause); 25 | } 26 | 27 | public ParseException(@NotNull String message) { 28 | super(message); 29 | } 30 | 31 | public ParseException(@NotNull String message, @NotNull Throwable cause) { 32 | super(message, cause); 33 | } 34 | 35 | } -------------------------------------------------------------------------------- /src/net/sourceforge/docfetcher/model/parse/Parser.java: -------------------------------------------------------------------------------- 1 | /******************************************************************************* 2 | * Copyright (c) 2011 Tran Nam Quang. 3 | * All rights reserved. This program and the accompanying materials 4 | * are made available under the terms of the Eclipse Public License v1.0 5 | * which accompanies this distribution, and is available at 6 | * http://www.eclipse.org/legal/epl-v10.html 7 | * 8 | * Contributors: 9 | * Tran Nam Quang - initial API and implementation 10 | *******************************************************************************/ 11 | 12 | package net.sourceforge.docfetcher.model.parse; 13 | 14 | import java.util.Collection; 15 | 16 | import net.sourceforge.docfetcher.util.annotations.NotNull; 17 | 18 | /** 19 | * @author Tran Nam Quang 20 | */ 21 | public abstract class Parser { 22 | 23 | Parser() {} // Parser class should not be subclassed outside this package 24 | 25 | @NotNull 26 | protected abstract Collection getExtensions(); 27 | 28 | @NotNull 29 | protected abstract Collection getTypes(); 30 | 31 | @NotNull 32 | public abstract String getTypeLabel(); 33 | 34 | } 35 | -------------------------------------------------------------------------------- /src/net/sourceforge/docfetcher/model/parse/PdfParserTest.java: -------------------------------------------------------------------------------- 1 | /******************************************************************************* 2 | * Copyright (c) 2011 Tran Nam Quang. 3 | * All rights reserved. This program and the accompanying materials 4 | * are made available under the terms of the Eclipse Public License v1.0 5 | * which accompanies this distribution, and is available at 6 | * http://www.eclipse.org/legal/epl-v10.html 7 | * 8 | * Contributors: 9 | * Tran Nam Quang - initial API and implementation 10 | *******************************************************************************/ 11 | 12 | package net.sourceforge.docfetcher.model.parse; 13 | 14 | import static org.junit.Assert.assertTrue; 15 | 16 | import java.io.File; 17 | import java.util.logging.Logger; 18 | 19 | import net.sourceforge.docfetcher.TestFiles; 20 | import net.sourceforge.docfetcher.enums.Msg; 21 | import net.sourceforge.docfetcher.model.index.IndexingConfig; 22 | 23 | import org.junit.Test; 24 | 25 | /** 26 | * @author Tran Nam Quang 27 | */ 28 | public final class PdfParserTest { 29 | 30 | @Test 31 | public void testEncryptedPdf() throws Exception { 32 | Logger logger = Logger.getLogger("org.apache.pdfbox.pdfparser.PDFParser"); 33 | logger.setLevel(java.util.logging.Level.OFF); 34 | try { 35 | File file = TestFiles.encrypted_pdf.get(); 36 | ParseService.renderText( 37 | new IndexingConfig(), file, file.getName(), 38 | PdfParser.class.getSimpleName()); 39 | assertTrue(false); 40 | } 41 | catch (ParseException e) { 42 | assertTrue(e.getMessage().equals(Msg.doc_pw_protected.get())); 43 | } 44 | } 45 | 46 | } 47 | -------------------------------------------------------------------------------- /src/net/sourceforge/docfetcher/model/search/Range.java: -------------------------------------------------------------------------------- 1 | /******************************************************************************* 2 | * Copyright (c) 2011 Tran Nam Quang. 3 | * All rights reserved. This program and the accompanying materials 4 | * are made available under the terms of the Eclipse Public License v1.0 5 | * which accompanies this distribution, and is available at 6 | * http://www.eclipse.org/legal/epl-v10.html 7 | * 8 | * Contributors: 9 | * Tran Nam Quang - initial API and implementation 10 | *******************************************************************************/ 11 | 12 | package net.sourceforge.docfetcher.model.search; 13 | 14 | /** 15 | * @author Tran Nam Quang 16 | */ 17 | public final class Range { 18 | 19 | public final int start; 20 | public final int length; 21 | 22 | Range(int start, int length) { 23 | this.start = start; 24 | this.length = length; 25 | } 26 | 27 | } 28 | -------------------------------------------------------------------------------- /src/net/sourceforge/docfetcher/model/search/SearchException.java: -------------------------------------------------------------------------------- 1 | /******************************************************************************* 2 | * Copyright (c) 2011 Tran Nam Quang. 3 | * All rights reserved. This program and the accompanying materials 4 | * are made available under the terms of the Eclipse Public License v1.0 5 | * which accompanies this distribution, and is available at 6 | * http://www.eclipse.org/legal/epl-v10.html 7 | * 8 | * Contributors: 9 | * Tran Nam Quang - initial API and implementation 10 | *******************************************************************************/ 11 | 12 | package net.sourceforge.docfetcher.model.search; 13 | 14 | /** 15 | * @author Tran Nam Quang 16 | */ 17 | public final class SearchException extends Exception { 18 | 19 | private static final long serialVersionUID = 1L; 20 | 21 | public SearchException(String msg) { 22 | super(msg); 23 | } 24 | 25 | } -------------------------------------------------------------------------------- /src/net/sourceforge/docfetcher/model/search/SourceCodeTokenFilter.java: -------------------------------------------------------------------------------- 1 | package net.sourceforge.docfetcher.model.search; 2 | 3 | import java.io.IOException; 4 | import org.apache.lucene.analysis.TokenFilter; 5 | import org.apache.lucene.analysis.TokenStream; 6 | import org.apache.lucene.analysis.tokenattributes.CharTermAttribute; 7 | import org.apache.lucene.util.Version; 8 | 9 | /** 10 | * 11 | */ 12 | public final class SourceCodeTokenFilter extends TokenFilter { 13 | private final CharTermAttribute termAtt = addAttribute(CharTermAttribute.class); 14 | 15 | public SourceCodeTokenFilter(Version matchVersion, TokenStream in) { 16 | super(in); 17 | } 18 | 19 | @Override 20 | public final boolean incrementToken() throws IOException { 21 | if (input.incrementToken()) { 22 | final char[] buffer = termAtt.buffer(); 23 | final int length = termAtt.length(); 24 | for (int i = 0; i < length;) { 25 | if ((buffer[i] == '.') || (buffer[i] == '=')) 26 | i += Character.toChars(' ', buffer, i); 27 | else 28 | i += Character.toChars(buffer[i], buffer, i); 29 | } 30 | return true; 31 | } else 32 | return false; 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /src/net/sourceforge/docfetcher/model/search/SourceCodeTokenizer.java: -------------------------------------------------------------------------------- 1 | package net.sourceforge.docfetcher.model.search; 2 | 3 | import org.apache.lucene.analysis.util.CharTokenizer; 4 | 5 | public final class SourceCodeTokenizer extends CharTokenizer { 6 | 7 | /** 8 | * Collects only characters which can be part of an identifier in typical 9 | * programming languages. 10 | */ 11 | @Override 12 | protected boolean isTokenChar(int c) { 13 | return Character.isLetterOrDigit(c) || (c=='_'); 14 | } 15 | 16 | } 17 | -------------------------------------------------------------------------------- /src/net/sourceforge/docfetcher/util/CheckedOutOfMemoryError.java: -------------------------------------------------------------------------------- 1 | /******************************************************************************* 2 | * Copyright (c) 2011 Tran Nam Quang. 3 | * All rights reserved. This program and the accompanying materials 4 | * are made available under the terms of the Eclipse Public License v1.0 5 | * which accompanies this distribution, and is available at 6 | * http://www.eclipse.org/legal/epl-v10.html 7 | * 8 | * Contributors: 9 | * Tran Nam Quang - initial API and implementation 10 | *******************************************************************************/ 11 | 12 | package net.sourceforge.docfetcher.util; 13 | 14 | import net.sourceforge.docfetcher.util.annotations.NotNull; 15 | 16 | /** 17 | * @author Tran Nam Quang 18 | */ 19 | public final class CheckedOutOfMemoryError extends Exception { 20 | 21 | private static final long serialVersionUID = 1L; 22 | 23 | public CheckedOutOfMemoryError(@NotNull Throwable t) { 24 | super(Util.checkNotNull(t)); 25 | } 26 | 27 | } 28 | -------------------------------------------------------------------------------- /src/net/sourceforge/docfetcher/util/ClassPathHack.java: -------------------------------------------------------------------------------- 1 | package net.sourceforge.docfetcher.util; 2 | 3 | import java.io.File; 4 | import java.io.IOException; 5 | import java.lang.reflect.Method; 6 | import java.net.URL; 7 | import java.net.URLClassLoader; 8 | 9 | import net.sourceforge.docfetcher.util.annotations.NotNull; 10 | 11 | /** 12 | * Helper class for dynamically adding jars to the classpath. 13 | * 14 | * @author Tran Nam Quang 15 | */ 16 | public final class ClassPathHack { 17 | 18 | private static final Class[] parameters = new Class[] { URL.class }; 19 | 20 | private ClassPathHack() { 21 | } 22 | 23 | public static void addFile(@NotNull String filename) throws IOException { 24 | addFile(new File(filename)); 25 | } 26 | 27 | public static void addFile(@NotNull File file) throws IOException { 28 | addURL(file.toURI().toURL()); 29 | } 30 | 31 | public static void addURL(@NotNull URL u) throws IOException { 32 | URLClassLoader sysloader = (URLClassLoader) ClassLoader.getSystemClassLoader(); 33 | Class sysclass = URLClassLoader.class; 34 | try { 35 | Method method = sysclass.getDeclaredMethod("addURL", parameters); 36 | method.setAccessible(true); 37 | method.invoke(sysloader, new Object[] { u }); 38 | } 39 | catch (Throwable t) { 40 | throw new IOException( 41 | "Could not add URL to system classloader."); 42 | } 43 | } 44 | } 45 | -------------------------------------------------------------------------------- /src/net/sourceforge/docfetcher/util/annotations/CallOnce.java: -------------------------------------------------------------------------------- 1 | /******************************************************************************* 2 | * Copyright (c) 2011 Tran Nam Quang. 3 | * All rights reserved. This program and the accompanying materials 4 | * are made available under the terms of the Eclipse Public License v1.0 5 | * which accompanies this distribution, and is available at 6 | * http://www.eclipse.org/legal/epl-v10.html 7 | * 8 | * Contributors: 9 | * Tran Nam Quang - initial API and implementation 10 | *******************************************************************************/ 11 | 12 | package net.sourceforge.docfetcher.util.annotations; 13 | 14 | import java.lang.annotation.ElementType; 15 | import java.lang.annotation.Retention; 16 | import java.lang.annotation.RetentionPolicy; 17 | import java.lang.annotation.Target; 18 | 19 | /** 20 | * Indicates that the annotated method can only be called once. 21 | * 22 | * @author Tran Nam Quang 23 | */ 24 | @Target({ 25 | ElementType.METHOD 26 | }) 27 | @Retention(RetentionPolicy.SOURCE) 28 | public @interface CallOnce { 29 | 30 | } 31 | -------------------------------------------------------------------------------- /src/net/sourceforge/docfetcher/util/annotations/Immutable.java: -------------------------------------------------------------------------------- 1 | /******************************************************************************* 2 | * Copyright (c) 2010, 2011 Tran Nam Quang. 3 | * All rights reserved. This program and the accompanying materials 4 | * are made available under the terms of the Eclipse Public License v1.0 5 | * which accompanies this distribution, and is available at 6 | * http://www.eclipse.org/legal/epl-v10.html 7 | * 8 | * Contributors: 9 | * Tran Nam Quang - initial API and implementation 10 | *******************************************************************************/ 11 | 12 | package net.sourceforge.docfetcher.util.annotations; 13 | 14 | import java.lang.annotation.ElementType; 15 | import java.lang.annotation.Retention; 16 | import java.lang.annotation.RetentionPolicy; 17 | import java.lang.annotation.Target; 18 | 19 | /** 20 | * Indicates that the annotated Iterable is immutable. 21 | * 22 | * @author Tran Nam Quang 23 | */ 24 | @Target({ 25 | ElementType.FIELD, 26 | ElementType.METHOD, 27 | ElementType.PARAMETER 28 | }) 29 | @Retention(RetentionPolicy.SOURCE) 30 | public @interface Immutable { 31 | 32 | } 33 | -------------------------------------------------------------------------------- /src/net/sourceforge/docfetcher/util/annotations/ImmutableCopy.java: -------------------------------------------------------------------------------- 1 | /******************************************************************************* 2 | * Copyright (c) 2011 Tran Nam Quang. 3 | * All rights reserved. This program and the accompanying materials 4 | * are made available under the terms of the Eclipse Public License v1.0 5 | * which accompanies this distribution, and is available at 6 | * http://www.eclipse.org/legal/epl-v10.html 7 | * 8 | * Contributors: 9 | * Tran Nam Quang - initial API and implementation 10 | *******************************************************************************/ 11 | 12 | package net.sourceforge.docfetcher.util.annotations; 13 | 14 | import java.lang.annotation.ElementType; 15 | import java.lang.annotation.Retention; 16 | import java.lang.annotation.RetentionPolicy; 17 | import java.lang.annotation.Target; 18 | 19 | /** 20 | * Indicates that the annotated Iterable is an immutable copy of another 21 | * Iterable. This implies that the copy can be safely iterated over while the 22 | * original Iterable is being modified (either by the same or by a different 23 | * thread). 24 | * 25 | * @author Tran Nam Quang 26 | */ 27 | @Target({ 28 | ElementType.FIELD, 29 | ElementType.METHOD, 30 | ElementType.PARAMETER 31 | }) 32 | @Retention(RetentionPolicy.SOURCE) 33 | public @interface ImmutableCopy { 34 | 35 | } 36 | -------------------------------------------------------------------------------- /src/net/sourceforge/docfetcher/util/annotations/MutableCopy.java: -------------------------------------------------------------------------------- 1 | package net.sourceforge.docfetcher.util.annotations; 2 | 3 | import java.lang.annotation.ElementType; 4 | import java.lang.annotation.Retention; 5 | import java.lang.annotation.RetentionPolicy; 6 | import java.lang.annotation.Target; 7 | 8 | /** 9 | * Indicates that the annotated Iterable is a mutable copy of another Iterable. 10 | * This implies that the copy can be safely iterated over while the original 11 | * Iterable is being modified (either by the same or by a different thread). 12 | * 13 | * @author Tran Nam Quang 14 | */ 15 | @Target({ 16 | ElementType.FIELD, 17 | ElementType.METHOD, 18 | ElementType.PARAMETER 19 | }) 20 | @Retention(RetentionPolicy.SOURCE) 21 | public @interface MutableCopy { 22 | 23 | } -------------------------------------------------------------------------------- /src/net/sourceforge/docfetcher/util/annotations/NotNull.java: -------------------------------------------------------------------------------- 1 | /******************************************************************************* 2 | * Copyright (c) 2010, 2011 Tran Nam Quang. 3 | * All rights reserved. This program and the accompanying materials 4 | * are made available under the terms of the Eclipse Public License v1.0 5 | * which accompanies this distribution, and is available at 6 | * http://www.eclipse.org/legal/epl-v10.html 7 | * 8 | * Contributors: 9 | * Tran Nam Quang - initial API and implementation 10 | *******************************************************************************/ 11 | 12 | package net.sourceforge.docfetcher.util.annotations; 13 | 14 | import java.lang.annotation.ElementType; 15 | import java.lang.annotation.Retention; 16 | import java.lang.annotation.RetentionPolicy; 17 | import java.lang.annotation.Target; 18 | 19 | /** 20 | * Indicates that the annotated type is expected never to be null. 21 | * 22 | * @author Tran Nam Quang 23 | */ 24 | @Target({ 25 | ElementType.FIELD, 26 | ElementType.LOCAL_VARIABLE, 27 | ElementType.PARAMETER, 28 | ElementType.METHOD 29 | }) 30 | @Retention(RetentionPolicy.SOURCE) 31 | public @interface NotNull { 32 | 33 | } 34 | -------------------------------------------------------------------------------- /src/net/sourceforge/docfetcher/util/annotations/NotThreadSafe.java: -------------------------------------------------------------------------------- 1 | /******************************************************************************* 2 | * Copyright (c) 2011 Tran Nam Quang. 3 | * All rights reserved. This program and the accompanying materials 4 | * are made available under the terms of the Eclipse Public License v1.0 5 | * which accompanies this distribution, and is available at 6 | * http://www.eclipse.org/legal/epl-v10.html 7 | * 8 | * Contributors: 9 | * Tran Nam Quang - initial API and implementation 10 | *******************************************************************************/ 11 | 12 | package net.sourceforge.docfetcher.util.annotations; 13 | 14 | import java.lang.annotation.ElementType; 15 | import java.lang.annotation.Retention; 16 | import java.lang.annotation.RetentionPolicy; 17 | import java.lang.annotation.Target; 18 | 19 | /** 20 | * Indicates that the annotated type is not thread-safe. 21 | * 22 | * @author Tran Nam Quang 23 | */ 24 | @Target({ 25 | ElementType.TYPE, 26 | ElementType.METHOD 27 | }) 28 | @Retention(RetentionPolicy.SOURCE) 29 | public @interface NotThreadSafe { 30 | 31 | } 32 | -------------------------------------------------------------------------------- /src/net/sourceforge/docfetcher/util/annotations/Nullable.java: -------------------------------------------------------------------------------- 1 | /******************************************************************************* 2 | * Copyright (c) 2010, 2011 Tran Nam Quang. 3 | * All rights reserved. This program and the accompanying materials 4 | * are made available under the terms of the Eclipse Public License v1.0 5 | * which accompanies this distribution, and is available at 6 | * http://www.eclipse.org/legal/epl-v10.html 7 | * 8 | * Contributors: 9 | * Tran Nam Quang - initial API and implementation 10 | *******************************************************************************/ 11 | 12 | package net.sourceforge.docfetcher.util.annotations; 13 | 14 | import java.lang.annotation.ElementType; 15 | import java.lang.annotation.Retention; 16 | import java.lang.annotation.RetentionPolicy; 17 | import java.lang.annotation.Target; 18 | 19 | /** 20 | * Indicates that the annotated type may be null. 21 | * 22 | * @author Tran Nam Quang 23 | */ 24 | @Target({ 25 | ElementType.FIELD, 26 | ElementType.LOCAL_VARIABLE, 27 | ElementType.PARAMETER, 28 | ElementType.METHOD 29 | }) 30 | @Retention(RetentionPolicy.SOURCE) 31 | public @interface Nullable { 32 | 33 | } 34 | -------------------------------------------------------------------------------- /src/net/sourceforge/docfetcher/util/annotations/RecursiveMethod.java: -------------------------------------------------------------------------------- 1 | /******************************************************************************* 2 | * Copyright (c) 2010, 2011 Tran Nam Quang. 3 | * All rights reserved. This program and the accompanying materials 4 | * are made available under the terms of the Eclipse Public License v1.0 5 | * which accompanies this distribution, and is available at 6 | * http://www.eclipse.org/legal/epl-v10.html 7 | * 8 | * Contributors: 9 | * Tran Nam Quang - initial API and implementation 10 | *******************************************************************************/ 11 | 12 | package net.sourceforge.docfetcher.util.annotations; 13 | 14 | import java.lang.annotation.ElementType; 15 | import java.lang.annotation.Retention; 16 | import java.lang.annotation.RetentionPolicy; 17 | import java.lang.annotation.Target; 18 | 19 | /** 20 | * Indicates that the annotated method recursively calls itself. 21 | * 22 | * @author Tran Nam Quang 23 | */ 24 | @Target({ 25 | ElementType.METHOD 26 | }) 27 | @Retention(RetentionPolicy.SOURCE) 28 | public @interface RecursiveMethod { 29 | 30 | } 31 | -------------------------------------------------------------------------------- /src/net/sourceforge/docfetcher/util/annotations/ThreadSafe.java: -------------------------------------------------------------------------------- 1 | /******************************************************************************* 2 | * Copyright (c) 2011 Tran Nam Quang. 3 | * All rights reserved. This program and the accompanying materials 4 | * are made available under the terms of the Eclipse Public License v1.0 5 | * which accompanies this distribution, and is available at 6 | * http://www.eclipse.org/legal/epl-v10.html 7 | * 8 | * Contributors: 9 | * Tran Nam Quang - initial API and implementation 10 | *******************************************************************************/ 11 | 12 | package net.sourceforge.docfetcher.util.annotations; 13 | 14 | import java.lang.annotation.ElementType; 15 | import java.lang.annotation.Retention; 16 | import java.lang.annotation.RetentionPolicy; 17 | import java.lang.annotation.Target; 18 | 19 | /** 20 | * Indicates that the annotated type is thread-safe. 21 | * 22 | * @author Tran Nam Quang 23 | */ 24 | @Target({ 25 | ElementType.TYPE, 26 | ElementType.METHOD 27 | }) 28 | @Retention(RetentionPolicy.SOURCE) 29 | public @interface ThreadSafe { 30 | 31 | } 32 | -------------------------------------------------------------------------------- /src/net/sourceforge/docfetcher/util/annotations/VisibleForPackageGroup.java: -------------------------------------------------------------------------------- 1 | /******************************************************************************* 2 | * Copyright (c) 2011 Tran Nam Quang. 3 | * All rights reserved. This program and the accompanying materials 4 | * are made available under the terms of the Eclipse Public License v1.0 5 | * which accompanies this distribution, and is available at 6 | * http://www.eclipse.org/legal/epl-v10.html 7 | * 8 | * Contributors: 9 | * Tran Nam Quang - initial API and implementation 10 | *******************************************************************************/ 11 | 12 | package net.sourceforge.docfetcher.util.annotations; 13 | 14 | import java.lang.annotation.ElementType; 15 | import java.lang.annotation.Retention; 16 | import java.lang.annotation.RetentionPolicy; 17 | import java.lang.annotation.Target; 18 | 19 | /** 20 | * Indicates that the annotated element is only marked public for usage by 21 | * packages related to the current package, e.g. superpackages and subpackages. 22 | * 23 | * @author Tran Nam Quang 24 | */ 25 | @Target({ 26 | ElementType.TYPE, 27 | ElementType.FIELD, 28 | ElementType.METHOD, 29 | ElementType.CONSTRUCTOR 30 | }) 31 | @Retention(RetentionPolicy.SOURCE) 32 | public @interface VisibleForPackageGroup { 33 | 34 | } 35 | -------------------------------------------------------------------------------- /src/net/sourceforge/docfetcher/util/gui/GroupWrapper.java: -------------------------------------------------------------------------------- 1 | /******************************************************************************* 2 | * Copyright (c) 2011 Tran Nam Quang. 3 | * All rights reserved. This program and the accompanying materials 4 | * are made available under the terms of the Eclipse Public License v1.0 5 | * which accompanies this distribution, and is available at 6 | * http://www.eclipse.org/legal/epl-v10.html 7 | * 8 | * Contributors: 9 | * Tran Nam Quang - initial API and implementation 10 | *******************************************************************************/ 11 | 12 | package net.sourceforge.docfetcher.util.gui; 13 | 14 | import net.sourceforge.docfetcher.util.annotations.NotNull; 15 | 16 | import org.eclipse.swt.SWT; 17 | import org.eclipse.swt.widgets.Composite; 18 | import org.eclipse.swt.widgets.Group; 19 | 20 | /** 21 | * @author Tran Nam Quang 22 | */ 23 | public abstract class GroupWrapper { 24 | 25 | private final Group group; 26 | 27 | public GroupWrapper(@NotNull Composite parent, @NotNull String label) { 28 | group = new Group(parent, SWT.NONE); 29 | group.setText(label); 30 | createLayout(group); 31 | createContents(group); 32 | } 33 | 34 | @NotNull 35 | public final Group getGroup() { 36 | return group; 37 | } 38 | 39 | protected abstract void createLayout(@NotNull Group parent); 40 | 41 | protected abstract void createContents(@NotNull Group parent); 42 | 43 | } 44 | -------------------------------------------------------------------------------- /src/net/sourceforge/docfetcher/util/gui/MenuAction.java: -------------------------------------------------------------------------------- 1 | /******************************************************************************* 2 | * Copyright (c) 2010, 2011 Tran Nam Quang. 3 | * All rights reserved. This program and the accompanying materials 4 | * are made available under the terms of the Eclipse Public License v1.0 5 | * which accompanies this distribution, and is available at 6 | * http://www.eclipse.org/legal/epl-v10.html 7 | * 8 | * Contributors: 9 | * Tran Nam Quang - initial API and implementation 10 | *******************************************************************************/ 11 | 12 | package net.sourceforge.docfetcher.util.gui; 13 | 14 | import net.sourceforge.docfetcher.util.Util; 15 | import net.sourceforge.docfetcher.util.annotations.NotNull; 16 | import net.sourceforge.docfetcher.util.annotations.Nullable; 17 | 18 | import org.eclipse.swt.graphics.Image; 19 | 20 | public class MenuAction { 21 | 22 | @Nullable private final Image image; 23 | private final String label; 24 | 25 | public MenuAction(@NotNull String label) { 26 | this(null, label); 27 | } 28 | 29 | public MenuAction(@Nullable Image image, @NotNull String label) { 30 | this.image = image; 31 | this.label = Util.checkNotNull(label); 32 | } 33 | 34 | public void run() { 35 | } 36 | 37 | public boolean isEnabled() { 38 | return true; 39 | } 40 | 41 | public boolean isDefaultItem() { 42 | return false; 43 | } 44 | 45 | @Nullable 46 | public final Image getImage() { 47 | return image; 48 | } 49 | 50 | @NotNull 51 | public final String getLabel() { 52 | return label; 53 | } 54 | 55 | } -------------------------------------------------------------------------------- /src/net/sourceforge/docfetcher/util/gui/dialog/InputLoop.java: -------------------------------------------------------------------------------- 1 | /******************************************************************************* 2 | * Copyright (c) 2011 Tran Nam Quang. 3 | * All rights reserved. This program and the accompanying materials 4 | * are made available under the terms of the Eclipse Public License v1.0 5 | * which accompanies this distribution, and is available at 6 | * http://www.eclipse.org/legal/epl-v10.html 7 | * 8 | * Contributors: 9 | * Tran Nam Quang - initial API and implementation 10 | *******************************************************************************/ 11 | 12 | package net.sourceforge.docfetcher.util.gui.dialog; 13 | 14 | import net.sourceforge.docfetcher.util.AppUtil; 15 | import net.sourceforge.docfetcher.util.annotations.NotNull; 16 | import net.sourceforge.docfetcher.util.annotations.Nullable; 17 | 18 | /** 19 | * @author Tran Nam Quang 20 | */ 21 | public abstract class InputLoop { 22 | 23 | @Nullable 24 | public final T run(@Nullable String startValue) { 25 | String lastValue = startValue; 26 | while (true) { 27 | String newValue = getNewValue(lastValue); 28 | if (newValue == null) 29 | return null; 30 | String denyMsg = getDenyMessage(newValue); 31 | if (denyMsg != null) { 32 | AppUtil.showError(denyMsg, true, true); 33 | lastValue = newValue; 34 | continue; 35 | } 36 | return onAccept(newValue); 37 | } 38 | } 39 | 40 | @Nullable 41 | protected abstract String getNewValue(@NotNull String lastValue); 42 | 43 | @Nullable 44 | protected abstract String getDenyMessage(@NotNull String newValue); 45 | 46 | @Nullable 47 | protected abstract T onAccept(@NotNull String newValue); 48 | 49 | } 50 | -------------------------------------------------------------------------------- /src/net/sourceforge/docfetcher/website/all/bullet.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/docfetcher/DocFetcher/42f2accd840edc5059060447ed3536aa4d54b5d3/src/net/sourceforge/docfetcher/website/all/bullet.png -------------------------------------------------------------------------------- /src/net/sourceforge/docfetcher/website/all/de.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/docfetcher/DocFetcher/42f2accd840edc5059060447ed3536aa4d54b5d3/src/net/sourceforge/docfetcher/website/all/de.png -------------------------------------------------------------------------------- /src/net/sourceforge/docfetcher/website/all/docfetcher-logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/docfetcher/DocFetcher/42f2accd840edc5059060447ed3536aa4d54b5d3/src/net/sourceforge/docfetcher/website/all/docfetcher-logo.png -------------------------------------------------------------------------------- /src/net/sourceforge/docfetcher/website/all/docfetcher16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/docfetcher/DocFetcher/42f2accd840edc5059060447ed3536aa4d54b5d3/src/net/sourceforge/docfetcher/website/all/docfetcher16.png -------------------------------------------------------------------------------- /src/net/sourceforge/docfetcher/website/all/docfetcher64.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/docfetcher/DocFetcher/42f2accd840edc5059060447ed3536aa4d54b5d3/src/net/sourceforge/docfetcher/website/all/docfetcher64.png -------------------------------------------------------------------------------- /src/net/sourceforge/docfetcher/website/all/en.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/docfetcher/DocFetcher/42f2accd840edc5059060447ed3536aa4d54b5d3/src/net/sourceforge/docfetcher/website/all/en.png -------------------------------------------------------------------------------- /src/net/sourceforge/docfetcher/website/all/es.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/docfetcher/DocFetcher/42f2accd840edc5059060447ed3536aa4d54b5d3/src/net/sourceforge/docfetcher/website/all/es.png -------------------------------------------------------------------------------- /src/net/sourceforge/docfetcher/website/all/fr.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/docfetcher/DocFetcher/42f2accd840edc5059060447ed3536aa4d54b5d3/src/net/sourceforge/docfetcher/website/all/fr.png -------------------------------------------------------------------------------- /src/net/sourceforge/docfetcher/website/all/intro-001-results-edited.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/docfetcher/DocFetcher/42f2accd840edc5059060447ed3536aa4d54b5d3/src/net/sourceforge/docfetcher/website/all/intro-001-results-edited.png -------------------------------------------------------------------------------- /src/net/sourceforge/docfetcher/website/all/intro-002-config.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/docfetcher/DocFetcher/42f2accd840edc5059060447ed3536aa4d54b5d3/src/net/sourceforge/docfetcher/website/all/intro-002-config.png -------------------------------------------------------------------------------- /src/net/sourceforge/docfetcher/website/all/it.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/docfetcher/DocFetcher/42f2accd840edc5059060447ed3536aa4d54b5d3/src/net/sourceforge/docfetcher/website/all/it.png -------------------------------------------------------------------------------- /src/net/sourceforge/docfetcher/website/all/ru.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/docfetcher/DocFetcher/42f2accd840edc5059060447ed3536aa4d54b5d3/src/net/sourceforge/docfetcher/website/all/ru.png -------------------------------------------------------------------------------- /src/net/sourceforge/docfetcher/website/all/xp_all.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/docfetcher/DocFetcher/42f2accd840edc5059060447ed3536aa4d54b5d3/src/net/sourceforge/docfetcher/website/all/xp_all.png -------------------------------------------------------------------------------- /src/net/sourceforge/docfetcher/website/all/xp_simple.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/docfetcher/DocFetcher/42f2accd840edc5059060447ed3536aa4d54b5d3/src/net/sourceforge/docfetcher/website/all/xp_simple.png -------------------------------------------------------------------------------- /src/net/sourceforge/docfetcher/website/de/more.markdown: -------------------------------------------------------------------------------- 1 | Siehe unseren [Wiki](http://docfetcher.sourceforge.net/wiki/doku.php) für mehr Informationen zu DocFetcher. 2 | 3 | Für Fragen steht unser [Forum](https://sourceforge.net/projects/docfetcher/forums/forum/702424) zur Verfügung. 4 | 5 | Den Projekt-Administrator können Sie über folgende (umgekehrte) E-Mail-Adresse kontaktieren: 6 | users.sourceforge.net <- qforce@ 7 | -------------------------------------------------------------------------------- /src/net/sourceforge/docfetcher/website/de/page.properties: -------------------------------------------------------------------------------- 1 | title=DocFetcher - Schnelle Dokument-Suche 2 | author=Tran Nam Quang 3 | 4 | keywords=desktop search, file management, search, document, retrieval, indexing 5 | description=Homepage von DocFetcher, eine Desktop-Suchmaschine 6 | 7 | overview=Übersicht 8 | download=Download 9 | screenshots=Screenshots 10 | more=Mehr 11 | -------------------------------------------------------------------------------- /src/net/sourceforge/docfetcher/website/de/screenshots.markdown: -------------------------------------------------------------------------------- 1 | DocFetcher mit Filter-Bereich und Vorschau-Fenster: 2 | 3 |
4 | 5 |
6 | 7 | ... und DocFetcher mit minimalistischer Benutzer-Oberfläche: 8 | 9 |
10 | 11 |
12 | 13 | Mehr Screenshots finden sich [hier](https://sourceforge.net/project/screenshots.php?group_id=197779). 14 | -------------------------------------------------------------------------------- /src/net/sourceforge/docfetcher/website/en/more.markdown: -------------------------------------------------------------------------------- 1 | See our [wiki](http://docfetcher.sourceforge.net/wiki/doku.php) for more information about DocFetcher. 2 | 3 | If you have any questions, feel free to post them on our [forum](https://sourceforge.net/projects/docfetcher/forums/forum/702424). 4 | 5 | To contact the project administrator, send an e-mail to this (reversed) address: 6 | users.sourceforge.net <- qforce@ 7 | -------------------------------------------------------------------------------- /src/net/sourceforge/docfetcher/website/en/page.properties: -------------------------------------------------------------------------------- 1 | title=DocFetcher - Fast Document Search 2 | author=Tran Nam Quang 3 | 4 | keywords=desktop search, file management, search, document, retrieval, indexing 5 | description=Homepage of DocFetcher, a desktop search application for fast document retrieval 6 | 7 | overview=Overview 8 | download=Download 9 | screenshots=Screenshots 10 | more=More 11 | -------------------------------------------------------------------------------- /src/net/sourceforge/docfetcher/website/en/screenshots.markdown: -------------------------------------------------------------------------------- 1 | DocFetcher with filter panel and preview panel enabled: 2 | 3 |
4 | 5 |
6 | 7 | ... and DocFetcher with a minimalist user interface: 8 | 9 |
10 | 11 |
12 | 13 | More screenshots can be found [here](https://sourceforge.net/project/screenshots.php?group_id=197779). 14 | -------------------------------------------------------------------------------- /src/net/sourceforge/docfetcher/website/es/more.markdown: -------------------------------------------------------------------------------- 1 | Visite nuestro [wiki](http://docfetcher.sourceforge.net/wiki/doku.php) para más información sobre DocFetcher. 2 | 3 | Si tiene alguna consulta, por favor vaya a nuestro [foro](https://sourceforge.net/projects/docfetcher/forums/forum/702424). 4 | 5 | Para ponerse en contacto con el administrador del proyecto, envíe un correo electrónico a esta dirección (del revés): 6 | users.sourceforge.net <- qforce@ -------------------------------------------------------------------------------- /src/net/sourceforge/docfetcher/website/es/page.properties: -------------------------------------------------------------------------------- 1 | title=DocFetcher - Búsqueda Rápida de Documentos 2 | author=Tran Nam Quang 3 | 4 | keywords=búsqueda de escritorio, gestión de ficheros, búsqueda, documento, recuperación, indexación 5 | description=Página principal de DocFetcher, una aplicación de búsqueda de escritorio para recuperar documentos rápidamente 6 | 7 | overview=Resumen 8 | download=Download 9 | screenshots=Capturas de pantalla 10 | more=Más -------------------------------------------------------------------------------- /src/net/sourceforge/docfetcher/website/es/screenshots.markdown: -------------------------------------------------------------------------------- 1 | DocFetcher con el panel de filtros y vista previa habilitatos: 2 | 3 |
4 | 5 |
6 | 7 | ... y DocFetcher con una interfaz minimalista: 8 | 9 |
10 | 11 |
12 | 13 | Puede encontrar más capturas de pantalla [aquí](https://sourceforge.net/project/screenshots.php?group_id=197779). -------------------------------------------------------------------------------- /src/net/sourceforge/docfetcher/website/fr/more.markdown: -------------------------------------------------------------------------------- 1 | See our [wiki](http://docfetcher.sourceforge.net/wiki/doku.php) for more information about DocFetcher. 2 | 3 | If you have any questions, feel free to post them on our [forum](https://sourceforge.net/projects/docfetcher/forums/forum/702424). 4 | 5 | To contact the project administrator, send an e-mail to this (reversed) address: 6 | users.sourceforge.net <- qforce@ 7 | -------------------------------------------------------------------------------- /src/net/sourceforge/docfetcher/website/fr/page.properties: -------------------------------------------------------------------------------- 1 | title=DocFetcher - Fast Document Search 2 | author=Tran Nam Quang 3 | 4 | keywords=desktop search, file management, search, document, retrieval, indexing 5 | description=Homepage of DocFetcher, a desktop search application for fast document retrieval 6 | 7 | overview=Overview 8 | download=Download 9 | screenshots=Screenshots 10 | more=More 11 | -------------------------------------------------------------------------------- /src/net/sourceforge/docfetcher/website/fr/screenshots.markdown: -------------------------------------------------------------------------------- 1 | DocFetcher with filter panel and preview panel enabled: 2 | 3 |
4 | 5 |
6 | 7 | ... and DocFetcher with a minimalist user interface: 8 | 9 |
10 | 11 |
12 | 13 | More screenshots can be found [here](https://sourceforge.net/project/screenshots.php?group_id=197779). 14 | -------------------------------------------------------------------------------- /src/net/sourceforge/docfetcher/website/index.php: -------------------------------------------------------------------------------- 1 | #!/usr/bin/php 2 | "de/index.html", 5 | # "en" => "en/index.html", 6 | # ... 7 | $sites = array( 8 | ${languages} 9 | ); 10 | 11 | $langs = array(); 12 | 13 | // http://www.thefutureoftheweb.com/blog/use-accept-language-header 14 | if (isset($_SERVER['HTTP_ACCEPT_LANGUAGE'])) { 15 | // break up string into pieces (languages and q factors) 16 | preg_match_all('/([a-z]{1,8}(-[a-z]{1,8})?)\s*(;\s*q\s*=\s*(1|0\.[0-9]+))?/i', $_SERVER['HTTP_ACCEPT_LANGUAGE'], $lang_parse); 17 | 18 | if (count($lang_parse[1])) { 19 | // create a list like "en" => 0.8 20 | $langs = array_combine($lang_parse[1], $lang_parse[4]); 21 | 22 | // set default to 1 for any without q factor 23 | foreach ($langs as $lang => $val) { 24 | if ($val === '') $langs[$lang] = 1; 25 | } 26 | 27 | // sort list based on value 28 | arsort($langs, SORT_NUMERIC); 29 | } 30 | } 31 | 32 | foreach ($langs as $lang => $val) { 33 | $lang = strtolower(substr(chop($lang), 0, 2)); 34 | if (array_key_exists($lang, $sites)) { 35 | header("Location: ".$sites[$lang]); 36 | return; 37 | } 38 | } 39 | 40 | header("Location: ".$sites["en"]); 41 | ?> 42 | -------------------------------------------------------------------------------- /src/net/sourceforge/docfetcher/website/it/more.markdown: -------------------------------------------------------------------------------- 1 | Per ulteriori informazioni su DocFetcher, si consiglia di vedere il nostro [wiki](http://docfetcher.sourceforge.net/wiki/doku.php) 2 | 3 | Per qualsiasi richiesta si può inviare un messaggio al nostro [forum](http://sourceforge.net/projects/docfetcher/forums/forum/702424). 4 | 5 | Per contattare il responsabile del progetto si prega di inviare un messaggio di posta elettronica al seguente indirizzo di e-mail (invertito): 6 | users.sourceforge.net <- qforce@ -------------------------------------------------------------------------------- /src/net/sourceforge/docfetcher/website/it/page.properties: -------------------------------------------------------------------------------- 1 | title=DocFetcher - Fast Document Search 2 | author=Tran Nam Quang 3 | 4 | keywords=desktop search, file management, search, document, retrieval, indexing 5 | description=Home Page di DocFetcher - applicazione di ricerca desktop per recuperare velocemente documenti 6 | 7 | overview=Panoramica 8 | download=Download 9 | screenshots=Immagini 10 | more=Altro -------------------------------------------------------------------------------- /src/net/sourceforge/docfetcher/website/it/screenshots.markdown: -------------------------------------------------------------------------------- 1 | DocFetcher con il pannello dei filtri e quello di anteprima abilitati: 2 | 3 |
4 | 5 |
6 | 7 | … e DocFetcher con una interfaccia-utente minimalista: 8 | 9 |
10 | 11 |
12 | 13 | Ulteriori immagini sono disponibili [qui](http://sourceforge.net/project/screenshots.php?group_id=197779). -------------------------------------------------------------------------------- /src/net/sourceforge/docfetcher/website/prop-help-template.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | Resource.properties Help 8 | 9 | 10 |
11 |

Back to DocFetcher wiki

12 | 13 | 14 | 15 | 16 | 17 | ${contents} 18 |
English TranslationComment
19 |
20 | 21 | 22 | -------------------------------------------------------------------------------- /src/net/sourceforge/docfetcher/website/ru/more.markdown: -------------------------------------------------------------------------------- 1 | Больше информации о DocFetcher на [нашей вики](http://docfetcher.sourceforge.net/wiki/doku.php) 2 | 3 | Если у вас возниклик какие-либо вопросы, напишите на нашем [форуме](https://sourceforge.net/projects/docfetcher/forums/forum/702424). 4 | 5 | Для связи с администратором проекта, напишите письмо на этот адрес: 6 | qforce [собачка] users.souceforge.net -------------------------------------------------------------------------------- /src/net/sourceforge/docfetcher/website/ru/page.properties: -------------------------------------------------------------------------------- 1 | title=DocFetcher - Быстрый поиск документов 2 | author=Tran Nam Quang 3 | 4 | keywords=поиск файлов, управление файлами, поиск, документ, индексирование 5 | description=Домашняя страница проекта DocFetcher, программы для быстрого поиска документов на компьютере 6 | 7 | overview=Обзор 8 | download=Скачать 9 | screenshots=Скриншоты 10 | more=Больше -------------------------------------------------------------------------------- /src/net/sourceforge/docfetcher/website/ru/screenshots.markdown: -------------------------------------------------------------------------------- 1 | DocFetcher с включенными панелью фильтров и панелью предпросмотра: 2 | 3 |
4 | 5 |
6 | 7 | ... и DocFetcher в минималистичном отображении. 8 | 9 |
10 | 11 |
12 | 13 | Вы найдёте больше скриншотов [здесь](https://sourceforge.net/project/screenshots.php?group_id=197779). -------------------------------------------------------------------------------- /src/org/apache/tika/concurrent/ConfigurableThreadPoolExecutor.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Licensed to the Apache Software Foundation (ASF) under one or more 3 | * contributor license agreements. See the NOTICE file distributed with 4 | * this work for additional information regarding copyright ownership. 5 | * The ASF licenses this file to You under the Apache License, Version 2.0 6 | * (the "License"); you may not use this file except in compliance with 7 | * the License. You may obtain a copy of the License at 8 | * 9 | * http://www.apache.org/licenses/LICENSE-2.0 10 | * 11 | * Unless required by applicable law or agreed to in writing, software 12 | * distributed under the License is distributed on an "AS IS" BASIS, 13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | * See the License for the specific language governing permissions and 15 | * limitations under the License. 16 | */ 17 | package org.apache.tika.concurrent; 18 | 19 | import java.util.concurrent.ExecutorService; 20 | 21 | /** 22 | * Allows Thread Pool to be Configurable. 23 | * 24 | * @since Apache Tika 1.11 25 | */ 26 | public interface ConfigurableThreadPoolExecutor extends ExecutorService { 27 | 28 | public void setMaximumPoolSize(int threads); 29 | 30 | public void setCorePoolSize(int threads); 31 | 32 | } 33 | -------------------------------------------------------------------------------- /src/org/apache/tika/concurrent/SimpleThreadPoolExecutor.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Licensed to the Apache Software Foundation (ASF) under one or more 3 | * contributor license agreements. See the NOTICE file distributed with 4 | * this work for additional information regarding copyright ownership. 5 | * The ASF licenses this file to You under the Apache License, Version 2.0 6 | * (the "License"); you may not use this file except in compliance with 7 | * the License. You may obtain a copy of the License at 8 | * 9 | * http://www.apache.org/licenses/LICENSE-2.0 10 | * 11 | * Unless required by applicable law or agreed to in writing, software 12 | * distributed under the License is distributed on an "AS IS" BASIS, 13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | * See the License for the specific language governing permissions and 15 | * limitations under the License. 16 | */ 17 | package org.apache.tika.concurrent; 18 | 19 | import java.util.concurrent.LinkedBlockingQueue; 20 | import java.util.concurrent.ThreadFactory; 21 | import java.util.concurrent.ThreadPoolExecutor; 22 | import java.util.concurrent.TimeUnit; 23 | 24 | /** 25 | * Simple Thread Pool Executor 26 | * 27 | * @since Apache Tika 1.11 28 | */ 29 | public class SimpleThreadPoolExecutor extends ThreadPoolExecutor implements ConfigurableThreadPoolExecutor { 30 | 31 | public SimpleThreadPoolExecutor() { 32 | super(1, 2, 0L, TimeUnit.SECONDS, new LinkedBlockingQueue(), new ThreadFactory() { 33 | 34 | @Override 35 | public Thread newThread(Runnable r) { 36 | return new Thread(r, "Tika Executor Thread"); 37 | } 38 | }); 39 | } 40 | } 41 | -------------------------------------------------------------------------------- /src/org/apache/tika/detect/EmptyDetector.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Licensed to the Apache Software Foundation (ASF) under one or more 3 | * contributor license agreements. See the NOTICE file distributed with 4 | * this work for additional information regarding copyright ownership. 5 | * The ASF licenses this file to You under the Apache License, Version 2.0 6 | * (the "License"); you may not use this file except in compliance with 7 | * the License. You may obtain a copy of the License at 8 | * 9 | * http://www.apache.org/licenses/LICENSE-2.0 10 | * 11 | * Unless required by applicable law or agreed to in writing, software 12 | * distributed under the License is distributed on an "AS IS" BASIS, 13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | * See the License for the specific language governing permissions and 15 | * limitations under the License. 16 | */ 17 | package org.apache.tika.detect; 18 | 19 | import java.io.IOException; 20 | import java.io.InputStream; 21 | 22 | import org.apache.tika.metadata.Metadata; 23 | import org.apache.tika.mime.MediaType; 24 | 25 | /** 26 | * Dummy detector that returns application/octet-stream for all documents. 27 | */ 28 | public class EmptyDetector implements Detector { 29 | 30 | /** 31 | * Singleton instance of this class. 32 | */ 33 | public static final EmptyDetector INSTANCE = new EmptyDetector(); 34 | 35 | public MediaType detect(InputStream input, Metadata metadata) 36 | throws IOException { 37 | return MediaType.OCTET_STREAM; 38 | } 39 | 40 | } 41 | -------------------------------------------------------------------------------- /src/org/apache/tika/detect/TrainedModel.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Licensed to the Apache Software Foundation (ASF) under one or more 3 | * contributor license agreements. See the NOTICE file distributed with 4 | * this work for additional information regarding copyright ownership. 5 | * The ASF licenses this file to You under the Apache License, Version 2.0 6 | * (the "License"); you may not use this file except in compliance with 7 | * the License. You may obtain a copy of the License at 8 | * 9 | * http://www.apache.org/licenses/LICENSE-2.0 10 | * 11 | * Unless required by applicable law or agreed to in writing, software 12 | * distributed under the License is distributed on an "AS IS" BASIS, 13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | * See the License for the specific language governing permissions and 15 | * limitations under the License. 16 | */ 17 | package org.apache.tika.detect; 18 | 19 | 20 | public abstract class TrainedModel { 21 | 22 | public abstract double predict(double[] input); 23 | public abstract float predict(float[] input); 24 | } 25 | -------------------------------------------------------------------------------- /src/org/apache/tika/detect/ZeroSizeFileDetector.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Licensed to the Apache Software Foundation (ASF) under one or more 3 | * contributor license agreements. See the NOTICE file distributed with 4 | * this work for additional information regarding copyright ownership. 5 | * The ASF licenses this file to You under the Apache License, Version 2.0 6 | * (the "License"); you may not use this file except in compliance with 7 | * the License. You may obtain a copy of the License at 8 | * 9 | * http://www.apache.org/licenses/LICENSE-2.0 10 | * 11 | * Unless required by applicable law or agreed to in writing, software 12 | * distributed under the License is distributed on an "AS IS" BASIS, 13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | * See the License for the specific language governing permissions and 15 | * limitations under the License. 16 | */ 17 | package org.apache.tika.detect; 18 | 19 | import java.io.InputStream; 20 | import java.io.IOException; 21 | 22 | import org.apache.tika.metadata.Metadata; 23 | import org.apache.tika.mime.MediaType; 24 | 25 | /** 26 | * Detector to identify zero length files as application/x-zerovalue 27 | */ 28 | public class ZeroSizeFileDetector implements Detector 29 | { 30 | public MediaType detect(InputStream stream, Metadata metadata) throws IOException 31 | { 32 | if (stream != null) { 33 | try { 34 | stream.mark(1); 35 | if (stream.read() == -1) { 36 | return MediaType.EMPTY; 37 | } 38 | } 39 | finally { 40 | stream.reset(); 41 | } 42 | } 43 | return MediaType.OCTET_STREAM; 44 | } 45 | } 46 | -------------------------------------------------------------------------------- /src/org/apache/tika/exception/EncryptedDocumentException.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Licensed to the Apache Software Foundation (ASF) under one or more 3 | * contributor license agreements. See the NOTICE file distributed with 4 | * this work for additional information regarding copyright ownership. 5 | * The ASF licenses this file to You under the Apache License, Version 2.0 6 | * (the "License"); you may not use this file except in compliance with 7 | * the License. You may obtain a copy of the License at 8 | * 9 | * http://www.apache.org/licenses/LICENSE-2.0 10 | * 11 | * Unless required by applicable law or agreed to in writing, software 12 | * distributed under the License is distributed on an "AS IS" BASIS, 13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | * See the License for the specific language governing permissions and 15 | * limitations under the License. 16 | */ 17 | package org.apache.tika.exception; 18 | 19 | public class EncryptedDocumentException extends TikaException { 20 | public EncryptedDocumentException() { 21 | super("Unable to process: document is encrypted"); 22 | } 23 | 24 | public EncryptedDocumentException(Throwable th) { 25 | super("Unable to process: document is encrypted", th); 26 | } 27 | 28 | public EncryptedDocumentException(String info) { 29 | super(info); 30 | } 31 | 32 | public EncryptedDocumentException(String info, Throwable th) { 33 | super(info, th); 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /src/org/apache/tika/exception/TikaException.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Licensed to the Apache Software Foundation (ASF) under one or more 3 | * contributor license agreements. See the NOTICE file distributed with 4 | * this work for additional information regarding copyright ownership. 5 | * The ASF licenses this file to You under the Apache License, Version 2.0 6 | * (the "License"); you may not use this file except in compliance with 7 | * the License. You may obtain a copy of the License at 8 | * 9 | * http://www.apache.org/licenses/LICENSE-2.0 10 | * 11 | * Unless required by applicable law or agreed to in writing, software 12 | * distributed under the License is distributed on an "AS IS" BASIS, 13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | * See the License for the specific language governing permissions and 15 | * limitations under the License. 16 | */ 17 | package org.apache.tika.exception; 18 | 19 | /** 20 | * Tika exception 21 | */ 22 | public class TikaException extends Exception { 23 | 24 | public TikaException(String msg) { 25 | super(msg); 26 | } 27 | 28 | public TikaException(String msg, Throwable cause) { 29 | super(msg, cause); 30 | } 31 | 32 | } 33 | -------------------------------------------------------------------------------- /src/org/apache/tika/io/ClosedInputStream.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Licensed to the Apache Software Foundation (ASF) under one or more 3 | * contributor license agreements. See the NOTICE file distributed with 4 | * this work for additional information regarding copyright ownership. 5 | * The ASF licenses this file to You under the Apache License, Version 2.0 6 | * (the "License"); you may not use this file except in compliance with 7 | * the License. You may obtain a copy of the License at 8 | * 9 | * http://www.apache.org/licenses/LICENSE-2.0 10 | * 11 | * Unless required by applicable law or agreed to in writing, software 12 | * distributed under the License is distributed on an "AS IS" BASIS, 13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | * See the License for the specific language governing permissions and 15 | * limitations under the License. 16 | */ 17 | package org.apache.tika.io; 18 | 19 | import java.io.InputStream; 20 | 21 | /** 22 | * Closed input stream. This stream returns -1 to all attempts to read 23 | * something from the stream. 24 | *

25 | * Typically uses of this class include testing for corner cases in methods 26 | * that accept input streams and acting as a sentinel value instead of a 27 | * null input stream. 28 | * 29 | * @since Apache Tika 0.4, copied from Commons IO 1.4 30 | */ 31 | public class ClosedInputStream extends InputStream { 32 | 33 | /** 34 | * Returns -1 to indicate that the stream is closed. 35 | * 36 | * @return always -1 37 | */ 38 | @Override 39 | public int read() { 40 | return -1; 41 | } 42 | 43 | } 44 | -------------------------------------------------------------------------------- /src/org/apache/tika/language/detect/LanguageConfidence.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Licensed to the Apache Software Foundation (ASF) under one or more 3 | * contributor license agreements. See the NOTICE file distributed with 4 | * this work for additional information regarding copyright ownership. 5 | * The ASF licenses this file to You under the Apache License, Version 2.0 6 | * (the "License"); you may not use this file except in compliance with 7 | * the License. You may obtain a copy of the License at 8 | * 9 | * http://www.apache.org/licenses/LICENSE-2.0 10 | * 11 | * Unless required by applicable law or agreed to in writing, software 12 | * distributed under the License is distributed on an "AS IS" BASIS, 13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | * See the License for the specific language governing permissions and 15 | * limitations under the License. 16 | */ 17 | package org.apache.tika.language.detect; 18 | 19 | public enum LanguageConfidence { 20 | 21 | HIGH, 22 | MEDIUM, 23 | LOW, 24 | NONE // Special value when no language is detected 25 | } 26 | -------------------------------------------------------------------------------- /src/org/apache/tika/language/translate/EmptyTranslator.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Licensed to the Apache Software Foundation (ASF) under one or more 3 | * contributor license agreements. See the NOTICE file distributed with 4 | * this work for additional information regarding copyright ownership. 5 | * The ASF licenses this file to You under the Apache License, Version 2.0 6 | * (the "License"); you may not use this file except in compliance with 7 | * the License. You may obtain a copy of the License at 8 | * 9 | * http://www.apache.org/licenses/LICENSE-2.0 10 | * 11 | * Unless required by applicable law or agreed to in writing, software 12 | * distributed under the License is distributed on an "AS IS" BASIS, 13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | * See the License for the specific language governing permissions and 15 | * limitations under the License. 16 | */ 17 | package org.apache.tika.language.translate; 18 | 19 | /** 20 | * Dummy translator that always declines to give any text. Useful as a 21 | * sentinel translator for when none others are available. 22 | * for unknown document types. 23 | */ 24 | public class EmptyTranslator implements Translator { 25 | public String translate(String text, String sourceLanguage, String targetLanguage) { 26 | return null; 27 | } 28 | 29 | public String translate(String text, String targetLanguage) { 30 | return null; 31 | } 32 | 33 | public boolean isAvailable() { 34 | return true; 35 | } 36 | } 37 | -------------------------------------------------------------------------------- /src/org/apache/tika/metadata/CreativeCommons.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Licensed to the Apache Software Foundation (ASF) under one or more 3 | * contributor license agreements. See the NOTICE file distributed with 4 | * this work for additional information regarding copyright ownership. 5 | * The ASF licenses this file to You under the Apache License, Version 2.0 6 | * (the "License"); you may not use this file except in compliance with 7 | * the License. You may obtain a copy of the License at 8 | * 9 | * http://www.apache.org/licenses/LICENSE-2.0 10 | * 11 | * Unless required by applicable law or agreed to in writing, software 12 | * distributed under the License is distributed on an "AS IS" BASIS, 13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | * See the License for the specific language governing permissions and 15 | * limitations under the License. 16 | */ 17 | package org.apache.tika.metadata; 18 | 19 | /** 20 | * A collection of Creative Commons properties names. 21 | * 22 | * @see creativecommons.org 23 | */ 24 | public interface CreativeCommons { 25 | 26 | String LICENSE_URL = "License-Url"; 27 | 28 | String LICENSE_LOCATION = "License-Location"; 29 | 30 | String WORK_TYPE = "Work-Type"; 31 | 32 | } 33 | -------------------------------------------------------------------------------- /src/org/apache/tika/metadata/Database.java: -------------------------------------------------------------------------------- 1 | package org.apache.tika.metadata; 2 | 3 | /* 4 | * Licensed to the Apache Software Foundation (ASF) under one or more 5 | * contributor license agreements. See the NOTICE file distributed with 6 | * this work for additional information regarding copyright ownership. 7 | * The ASF licenses this file to You under the Apache License, Version 2.0 8 | * (the "License"); you may not use this file except in compliance with 9 | * the License. You may obtain a copy of the License at 10 | * 11 | * http://www.apache.org/licenses/LICENSE-2.0 12 | * 13 | * Unless required by applicable law or agreed to in writing, software 14 | * distributed under the License is distributed on an "AS IS" BASIS, 15 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 16 | * See the License for the specific language governing permissions and 17 | * limitations under the License. 18 | */ 19 | public interface Database { 20 | final static String PREFIX = "database"+Metadata.NAMESPACE_PREFIX_DELIMITER; 21 | 22 | Property TABLE_NAME = Property.externalTextBag(PREFIX+"table_name"); 23 | Property COLUMN_COUNT = Property.externalText(PREFIX+"column_count"); 24 | Property COLUMN_NAME = Property.externalTextBag(PREFIX+"column_name"); 25 | } -------------------------------------------------------------------------------- /src/org/apache/tika/metadata/HttpHeaders.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Licensed to the Apache Software Foundation (ASF) under one or more 3 | * contributor license agreements. See the NOTICE file distributed with 4 | * this work for additional information regarding copyright ownership. 5 | * The ASF licenses this file to You under the Apache License, Version 2.0 6 | * (the "License"); you may not use this file except in compliance with 7 | * the License. You may obtain a copy of the License at 8 | * 9 | * http://www.apache.org/licenses/LICENSE-2.0 10 | * 11 | * Unless required by applicable law or agreed to in writing, software 12 | * distributed under the License is distributed on an "AS IS" BASIS, 13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | * See the License for the specific language governing permissions and 15 | * limitations under the License. 16 | */ 17 | package org.apache.tika.metadata; 18 | 19 | /** 20 | * A collection of HTTP header names. 21 | * 22 | * @see Hypertext Transfer Protocol -- 23 | * HTTP/1.1 (RFC 2616) 24 | */ 25 | public interface HttpHeaders { 26 | 27 | String CONTENT_ENCODING = "Content-Encoding"; 28 | 29 | String CONTENT_LANGUAGE = "Content-Language"; 30 | 31 | String CONTENT_LENGTH = "Content-Length"; 32 | 33 | String CONTENT_LOCATION = "Content-Location"; 34 | 35 | String CONTENT_DISPOSITION = "Content-Disposition"; 36 | 37 | String CONTENT_MD5 = "Content-MD5"; 38 | 39 | String CONTENT_TYPE = "Content-Type"; 40 | 41 | Property LAST_MODIFIED = 42 | Property.internalDate("Last-Modified"); 43 | 44 | String LOCATION = "Location"; 45 | 46 | } 47 | -------------------------------------------------------------------------------- /src/org/apache/tika/metadata/Message.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Licensed to the Apache Software Foundation (ASF) under one or more 3 | * contributor license agreements. See the NOTICE file distributed with 4 | * this work for additional information regarding copyright ownership. 5 | * The ASF licenses this file to You under the Apache License, Version 2.0 6 | * (the "License"); you may not use this file except in compliance with 7 | * the License. You may obtain a copy of the License at 8 | * 9 | * http://www.apache.org/licenses/LICENSE-2.0 10 | * 11 | * Unless required by applicable law or agreed to in writing, software 12 | * distributed under the License is distributed on an "AS IS" BASIS, 13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | * See the License for the specific language governing permissions and 15 | * limitations under the License. 16 | */ 17 | package org.apache.tika.metadata; 18 | 19 | /** 20 | * A collection of Message related property names. 21 | */ 22 | public interface Message { 23 | String MESSAGE_RECIPIENT_ADDRESS = "Message-Recipient-Address"; 24 | 25 | String MESSAGE_FROM = "Message-From"; 26 | 27 | String MESSAGE_TO = "Message-To"; 28 | 29 | String MESSAGE_CC = "Message-Cc"; 30 | 31 | String MESSAGE_BCC = "Message-Bcc"; 32 | } 33 | -------------------------------------------------------------------------------- /src/org/apache/tika/metadata/PagedText.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Licensed to the Apache Software Foundation (ASF) under one or more 3 | * contributor license agreements. See the NOTICE file distributed with 4 | * this work for additional information regarding copyright ownership. 5 | * The ASF licenses this file to You under the Apache License, Version 2.0 6 | * (the "License"); you may not use this file except in compliance with 7 | * the License. You may obtain a copy of the License at 8 | * 9 | * http://www.apache.org/licenses/LICENSE-2.0 10 | * 11 | * Unless required by applicable law or agreed to in writing, software 12 | * distributed under the License is distributed on an "AS IS" BASIS, 13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | * See the License for the specific language governing permissions and 15 | * limitations under the License. 16 | */ 17 | package org.apache.tika.metadata; 18 | 19 | /** 20 | * XMP Paged-text schema. This is a collection of 21 | * {@link Property property definition} constants for the paged text 22 | * properties defined in the XMP standard. 23 | * 24 | * @since Apache Tika 0.8 25 | * @see XMP Specification, Part 2: Standard Schemas 27 | */ 28 | public interface PagedText { 29 | 30 | /** 31 | * "The number of pages in the document (including any in contained 32 | * documents)." 33 | */ 34 | Property N_PAGES = Property.internalInteger("xmpTPg:NPages"); 35 | 36 | } 37 | -------------------------------------------------------------------------------- /src/org/apache/tika/metadata/TikaMetadataKeys.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Licensed to the Apache Software Foundation (ASF) under one or more 3 | * contributor license agreements. See the NOTICE file distributed with 4 | * this work for additional information regarding copyright ownership. 5 | * The ASF licenses this file to You under the Apache License, Version 2.0 6 | * (the "License"); you may not use this file except in compliance with 7 | * the License. You may obtain a copy of the License at 8 | * 9 | * http://www.apache.org/licenses/LICENSE-2.0 10 | * 11 | * Unless required by applicable law or agreed to in writing, software 12 | * distributed under the License is distributed on an "AS IS" BASIS, 13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | * See the License for the specific language governing permissions and 15 | * limitations under the License. 16 | */ 17 | package org.apache.tika.metadata; 18 | 19 | /** 20 | * Contains keys to properties in Metadata instances. 21 | */ 22 | public interface TikaMetadataKeys { 23 | 24 | String RESOURCE_NAME_KEY = "resourceName"; 25 | 26 | String PROTECTED = "protected"; 27 | 28 | String EMBEDDED_RELATIONSHIP_ID = "embeddedRelationshipId"; 29 | 30 | String EMBEDDED_STORAGE_CLASS_ID = "embeddedStorageClassId"; 31 | 32 | String EMBEDDED_RESOURCE_TYPE = "embeddedResourceType"; 33 | 34 | } 35 | -------------------------------------------------------------------------------- /src/org/apache/tika/metadata/TikaMimeKeys.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Licensed to the Apache Software Foundation (ASF) under one or more 3 | * contributor license agreements. See the NOTICE file distributed with 4 | * this work for additional information regarding copyright ownership. 5 | * The ASF licenses this file to You under the Apache License, Version 2.0 6 | * (the "License"); you may not use this file except in compliance with 7 | * the License. You may obtain a copy of the License at 8 | * 9 | * http://www.apache.org/licenses/LICENSE-2.0 10 | * 11 | * Unless required by applicable law or agreed to in writing, software 12 | * distributed under the License is distributed on an "AS IS" BASIS, 13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | * See the License for the specific language governing permissions and 15 | * limitations under the License. 16 | */ 17 | package org.apache.tika.metadata; 18 | 19 | /** 20 | * A collection of Tika metadata keys used in Mime Type resolution 21 | */ 22 | public interface TikaMimeKeys { 23 | 24 | String TIKA_MIME_FILE = "tika.mime.file"; 25 | 26 | String MIME_TYPE_MAGIC = "mime.type.magic"; 27 | 28 | } 29 | -------------------------------------------------------------------------------- /src/org/apache/tika/metadata/XMPIdq.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Licensed to the Apache Software Foundation (ASF) under one or more 3 | * contributor license agreements. See the NOTICE file distributed with 4 | * this work for additional information regarding copyright ownership. 5 | * The ASF licenses this file to You under the Apache License, Version 2.0 6 | * (the "License"); you may not use this file except in compliance with 7 | * the License. You may obtain a copy of the License at 8 | * 9 | * http://www.apache.org/licenses/LICENSE-2.0 10 | * 11 | * Unless required by applicable law or agreed to in writing, software 12 | * distributed under the License is distributed on an "AS IS" BASIS, 13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | * See the License for the specific language governing permissions and 15 | * limitations under the License. 16 | */ 17 | package org.apache.tika.metadata; 18 | 19 | public interface XMPIdq { 20 | 21 | String NAMESPACE_URI = "http://ns.adobe.com/xmp/identifier/qual/1.0/"; 22 | 23 | String PREFIX = "xmpidq"; 24 | 25 | /** The xmpidq prefix followed by the colon delimiter */ 26 | String PREFIX_ = PREFIX + ":"; 27 | 28 | /** 29 | * A qualifier providing the name of the formal identification 30 | * scheme used for an item in the xmp:Identifier array. 31 | */ 32 | Property SCHEME = Property.externalText(PREFIX_ + "Scheme"); 33 | 34 | } 35 | -------------------------------------------------------------------------------- /src/org/apache/tika/mime/AndClause.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Licensed to the Apache Software Foundation (ASF) under one or more 3 | * contributor license agreements. See the NOTICE file distributed with 4 | * this work for additional information regarding copyright ownership. 5 | * The ASF licenses this file to You under the Apache License, Version 2.0 6 | * (the "License"); you may not use this file except in compliance with 7 | * the License. You may obtain a copy of the License at 8 | * 9 | * http://www.apache.org/licenses/LICENSE-2.0 10 | * 11 | * Unless required by applicable law or agreed to in writing, software 12 | * distributed under the License is distributed on an "AS IS" BASIS, 13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | * See the License for the specific language governing permissions and 15 | * limitations under the License. 16 | */ 17 | package org.apache.tika.mime; 18 | 19 | import java.util.Arrays; 20 | 21 | class AndClause implements Clause { 22 | 23 | private final Clause[] clauses; 24 | 25 | AndClause(Clause... clauses) { 26 | this.clauses = clauses; 27 | } 28 | 29 | public boolean eval(byte[] data) { 30 | for (Clause clause : clauses) { 31 | if (!clause.eval(data)) { 32 | return false; 33 | } 34 | } 35 | return true; 36 | } 37 | 38 | public int size() { 39 | int size = 0; 40 | for (Clause clause : clauses) { 41 | size += clause.size(); 42 | } 43 | return size; 44 | } 45 | 46 | public String toString() { 47 | return "and" + Arrays.toString(clauses); 48 | } 49 | 50 | } 51 | -------------------------------------------------------------------------------- /src/org/apache/tika/mime/Clause.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Licensed to the Apache Software Foundation (ASF) under one or more 3 | * contributor license agreements. See the NOTICE file distributed with 4 | * this work for additional information regarding copyright ownership. 5 | * The ASF licenses this file to You under the Apache License, Version 2.0 6 | * (the "License"); you may not use this file except in compliance with 7 | * the License. You may obtain a copy of the License at 8 | * 9 | * http://www.apache.org/licenses/LICENSE-2.0 10 | * 11 | * Unless required by applicable law or agreed to in writing, software 12 | * distributed under the License is distributed on an "AS IS" BASIS, 13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | * See the License for the specific language governing permissions and 15 | * limitations under the License. 16 | */ 17 | package org.apache.tika.mime; 18 | 19 | import java.io.Serializable; 20 | 21 | /** 22 | * Defines a clause to be evaluated. 23 | */ 24 | interface Clause extends Serializable { 25 | 26 | /** 27 | * Evaluates this clause with the specified chunk of data. 28 | */ 29 | boolean eval(byte[] data); 30 | 31 | /** 32 | * Returns the size of this clause. The size of a clause is the number of 33 | * chars it is composed of. 34 | */ 35 | int size(); 36 | 37 | } 38 | -------------------------------------------------------------------------------- /src/org/apache/tika/mime/OrClause.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Licensed to the Apache Software Foundation (ASF) under one or more 3 | * contributor license agreements. See the NOTICE file distributed with 4 | * this work for additional information regarding copyright ownership. 5 | * The ASF licenses this file to You under the Apache License, Version 2.0 6 | * (the "License"); you may not use this file except in compliance with 7 | * the License. You may obtain a copy of the License at 8 | * 9 | * http://www.apache.org/licenses/LICENSE-2.0 10 | * 11 | * Unless required by applicable law or agreed to in writing, software 12 | * distributed under the License is distributed on an "AS IS" BASIS, 13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | * See the License for the specific language governing permissions and 15 | * limitations under the License. 16 | */ 17 | package org.apache.tika.mime; 18 | 19 | import java.util.List; 20 | 21 | class OrClause implements Clause { 22 | 23 | private final List clauses; 24 | 25 | OrClause(List clauses) { 26 | this.clauses = clauses; 27 | } 28 | 29 | public boolean eval(byte[] data) { 30 | for (Clause clause : clauses) { 31 | if (clause.eval(data)) { 32 | return true; 33 | } 34 | } 35 | return false; 36 | } 37 | 38 | public int size() { 39 | int size = 0; 40 | for (Clause clause : clauses) { 41 | size = Math.max(size, clause.size()); 42 | } 43 | return size; 44 | } 45 | 46 | public String toString() { 47 | return "or" + clauses; 48 | } 49 | 50 | } 51 | -------------------------------------------------------------------------------- /src/org/apache/tika/parser/chm/accessor/ChmAccessor.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Licensed to the Apache Software Foundation (ASF) under one or more 3 | * contributor license agreements. See the NOTICE file distributed with 4 | * this work for additional information regarding copyright ownership. 5 | * The ASF licenses this file to You under the Apache License, Version 2.0 6 | * (the "License"); you may not use this file except in compliance with 7 | * the License. You may obtain a copy of the License at 8 | * 9 | * http://www.apache.org/licenses/LICENSE-2.0 10 | * 11 | * Unless required by applicable law or agreed to in writing, software 12 | * distributed under the License is distributed on an "AS IS" BASIS, 13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | * See the License for the specific language governing permissions and 15 | * limitations under the License. 16 | */ 17 | package org.apache.tika.parser.chm.accessor; 18 | 19 | import java.io.Serializable; 20 | 21 | import org.apache.tika.exception.TikaException; 22 | 23 | /** 24 | * 25 | * Defines an accessor interface 26 | * 27 | * @param 28 | */ 29 | public interface ChmAccessor extends Serializable { 30 | /** 31 | * Parses chm accessor 32 | * 33 | * @param data 34 | * chm file 35 | * @param chmAccessor 36 | * @throws TikaException 37 | */ 38 | void parse(byte[] data, T chmAccessor) throws TikaException; 39 | } 40 | -------------------------------------------------------------------------------- /src/org/apache/tika/parser/chm/exception/ChmParsingException.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Licensed to the Apache Software Foundation (ASF) under one or more 3 | * contributor license agreements. See the NOTICE file distributed with 4 | * this work for additional information regarding copyright ownership. 5 | * The ASF licenses this file to You under the Apache License, Version 2.0 6 | * (the "License"); you may not use this file except in compliance with 7 | * the License. You may obtain a copy of the License at 8 | * 9 | * http://www.apache.org/licenses/LICENSE-2.0 10 | * 11 | * Unless required by applicable law or agreed to in writing, software 12 | * distributed under the License is distributed on an "AS IS" BASIS, 13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | * See the License for the specific language governing permissions and 15 | * limitations under the License. 16 | */ 17 | package org.apache.tika.parser.chm.exception; 18 | 19 | import org.apache.tika.exception.TikaException; 20 | 21 | public class ChmParsingException extends TikaException { 22 | private static final long serialVersionUID = 6497936044733665210L; 23 | 24 | public ChmParsingException(String description) { 25 | super(description); 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /src/org/apache/tika/parser/external/ExternalParsersConfigReaderMetKeys.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Licensed to the Apache Software Foundation (ASF) under one or more 3 | * contributor license agreements. See the NOTICE file distributed with 4 | * this work for additional information regarding copyright ownership. 5 | * The ASF licenses this file to You under the Apache License, Version 2.0 6 | * (the "License"); you may not use this file except in compliance with 7 | * the License. You may obtain a copy of the License at 8 | * 9 | * http://www.apache.org/licenses/LICENSE-2.0 10 | * 11 | * Unless required by applicable law or agreed to in writing, software 12 | * distributed under the License is distributed on an "AS IS" BASIS, 13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | * See the License for the specific language governing permissions and 15 | * limitations under the License. 16 | */ 17 | package org.apache.tika.parser.external; 18 | 19 | /** 20 | * Met Keys used by the {@link ExternalParsersConfigReader}. 21 | */ 22 | public interface ExternalParsersConfigReaderMetKeys { 23 | 24 | String EXTERNAL_PARSERS_TAG = "external-parsers"; 25 | 26 | String PARSER_TAG = "parser"; 27 | 28 | String COMMAND_TAG = "command"; 29 | 30 | String CHECK_TAG = "check"; 31 | 32 | String ERROR_CODES_TAG = "error-codes"; 33 | 34 | String MIMETYPES_TAG = "mime-types"; 35 | 36 | String MIMETYPE_TAG = "mime-type"; 37 | 38 | String METADATA_TAG = "metadata"; 39 | 40 | String METADATA_MATCH_TAG = "match"; 41 | 42 | String METADATA_KEY_ATTR = "key"; 43 | } 44 | -------------------------------------------------------------------------------- /src/org/apache/tika/parser/mp3/MP3Frame.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Licensed to the Apache Software Foundation (ASF) under one or more 3 | * contributor license agreements. See the NOTICE file distributed with 4 | * this work for additional information regarding copyright ownership. 5 | * The ASF licenses this file to You under the Apache License, Version 2.0 6 | * (the "License"); you may not use this file except in compliance with 7 | * the License. You may obtain a copy of the License at 8 | * 9 | * http://www.apache.org/licenses/LICENSE-2.0 10 | * 11 | * Unless required by applicable law or agreed to in writing, software 12 | * distributed under the License is distributed on an "AS IS" BASIS, 13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | * See the License for the specific language governing permissions and 15 | * limitations under the License. 16 | */ 17 | package org.apache.tika.parser.mp3; 18 | 19 | 20 | /** 21 | * A frame in an MP3 file, such as ID3v2 Tags or some 22 | * audio. 23 | */ 24 | public interface MP3Frame { 25 | } 26 | -------------------------------------------------------------------------------- /src/org/apache/tika/parser/rtf/ListDescriptor.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Licensed to the Apache Software Foundation (ASF) under one or more 3 | * contributor license agreements. See the NOTICE file distributed with 4 | * this work for additional information regarding copyright ownership. 5 | * The ASF licenses this file to You under the Apache License, Version 2.0 6 | * (the "License"); you may not use this file except in compliance with 7 | * the License. You may obtain a copy of the License at 8 | * 9 | * http://www.apache.org/licenses/LICENSE-2.0 10 | * 11 | * Unless required by applicable law or agreed to in writing, software 12 | * distributed under the License is distributed on an "AS IS" BASIS, 13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | * See the License for the specific language governing permissions and 15 | * limitations under the License. 16 | */ 17 | package org.apache.tika.parser.rtf; 18 | 19 | /** 20 | * Contains the information for a single list in the list or list override tables. 21 | */ 22 | public class ListDescriptor { 23 | public final static int NUMBER_TYPE_BULLET = 23; 24 | 25 | public int id; 26 | // We record this but don't make use if it today: 27 | public int templateID; 28 | // We record this but don't make use if it today: 29 | public boolean isStyle; 30 | public int[] numberType = new int[9]; 31 | 32 | public boolean isUnordered(int level) { 33 | return numberType[level] == NUMBER_TYPE_BULLET; 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /src/org/apache/tika/sax/ContentHandlerFactory.java: -------------------------------------------------------------------------------- 1 | package org.apache.tika.sax; 2 | 3 | /* 4 | * Licensed to the Apache Software Foundation (ASF) under one or more 5 | * contributor license agreements. See the NOTICE file distributed with 6 | * this work for additional information regarding copyright ownership. 7 | * The ASF licenses this file to You under the Apache License, Version 2.0 8 | * (the "License"); you may not use this file except in compliance with 9 | * the License. You may obtain a copy of the License at 10 | * 11 | * http://www.apache.org/licenses/LICENSE-2.0 12 | * 13 | * Unless required by applicable law or agreed to in writing, software 14 | * distributed under the License is distributed on an "AS IS" BASIS, 15 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 16 | * See the License for the specific language governing permissions and 17 | * limitations under the License. 18 | */ 19 | 20 | import org.xml.sax.ContentHandler; 21 | 22 | import java.io.OutputStream; 23 | import java.io.UnsupportedEncodingException; 24 | 25 | /** 26 | * Interface to allow easier injection of code for getting a new ContentHandler 27 | */ 28 | public interface ContentHandlerFactory { 29 | public ContentHandler getNewContentHandler(); 30 | public ContentHandler getNewContentHandler(OutputStream os, String encoding) throws UnsupportedEncodingException; 31 | 32 | } 33 | -------------------------------------------------------------------------------- /src/org/apache/tika/sax/xpath/AttributeMatcher.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Licensed to the Apache Software Foundation (ASF) under one or more 3 | * contributor license agreements. See the NOTICE file distributed with 4 | * this work for additional information regarding copyright ownership. 5 | * The ASF licenses this file to You under the Apache License, Version 2.0 6 | * (the "License"); you may not use this file except in compliance with 7 | * the License. You may obtain a copy of the License at 8 | * 9 | * http://www.apache.org/licenses/LICENSE-2.0 10 | * 11 | * Unless required by applicable law or agreed to in writing, software 12 | * distributed under the License is distributed on an "AS IS" BASIS, 13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | * See the License for the specific language governing permissions and 15 | * limitations under the License. 16 | */ 17 | package org.apache.tika.sax.xpath; 18 | 19 | /** 20 | * Final evaluation state of a .../@* XPath expression. 21 | * Matches all attributes of the current element. 22 | */ 23 | public class AttributeMatcher extends Matcher { 24 | 25 | public static final Matcher INSTANCE = new AttributeMatcher(); 26 | 27 | public boolean matchesAttribute(String namespace, String name) { 28 | return true; 29 | } 30 | 31 | } 32 | -------------------------------------------------------------------------------- /src/org/apache/tika/sax/xpath/ChildMatcher.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Licensed to the Apache Software Foundation (ASF) under one or more 3 | * contributor license agreements. See the NOTICE file distributed with 4 | * this work for additional information regarding copyright ownership. 5 | * The ASF licenses this file to You under the Apache License, Version 2.0 6 | * (the "License"); you may not use this file except in compliance with 7 | * the License. You may obtain a copy of the License at 8 | * 9 | * http://www.apache.org/licenses/LICENSE-2.0 10 | * 11 | * Unless required by applicable law or agreed to in writing, software 12 | * distributed under the License is distributed on an "AS IS" BASIS, 13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | * See the License for the specific language governing permissions and 15 | * limitations under the License. 16 | */ 17 | package org.apache.tika.sax.xpath; 18 | 19 | /** 20 | * Intermediate evaluation state of a .../*... XPath expression. 21 | * Matches nothing, but specifies the evaluation state for all child elements. 22 | */ 23 | public class ChildMatcher extends Matcher { 24 | 25 | private final Matcher then; 26 | 27 | public ChildMatcher(Matcher then) { 28 | this.then = then; 29 | } 30 | 31 | public Matcher descend(String namespace, String name) { 32 | return then; 33 | } 34 | 35 | } 36 | -------------------------------------------------------------------------------- /src/org/apache/tika/sax/xpath/ElementMatcher.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Licensed to the Apache Software Foundation (ASF) under one or more 3 | * contributor license agreements. See the NOTICE file distributed with 4 | * this work for additional information regarding copyright ownership. 5 | * The ASF licenses this file to You under the Apache License, Version 2.0 6 | * (the "License"); you may not use this file except in compliance with 7 | * the License. You may obtain a copy of the License at 8 | * 9 | * http://www.apache.org/licenses/LICENSE-2.0 10 | * 11 | * Unless required by applicable law or agreed to in writing, software 12 | * distributed under the License is distributed on an "AS IS" BASIS, 13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | * See the License for the specific language governing permissions and 15 | * limitations under the License. 16 | */ 17 | package org.apache.tika.sax.xpath; 18 | 19 | /** 20 | * Final evaluation state of an XPath expression that targets an element. 21 | * Matches the current element. 22 | */ 23 | public class ElementMatcher extends Matcher { 24 | 25 | public static final Matcher INSTANCE = new ElementMatcher(); 26 | 27 | public boolean matchesElement() { 28 | return true; 29 | } 30 | 31 | } 32 | -------------------------------------------------------------------------------- /src/org/apache/tika/sax/xpath/NamedAttributeMatcher.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Licensed to the Apache Software Foundation (ASF) under one or more 3 | * contributor license agreements. See the NOTICE file distributed with 4 | * this work for additional information regarding copyright ownership. 5 | * The ASF licenses this file to You under the Apache License, Version 2.0 6 | * (the "License"); you may not use this file except in compliance with 7 | * the License. You may obtain a copy of the License at 8 | * 9 | * http://www.apache.org/licenses/LICENSE-2.0 10 | * 11 | * Unless required by applicable law or agreed to in writing, software 12 | * distributed under the License is distributed on an "AS IS" BASIS, 13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | * See the License for the specific language governing permissions and 15 | * limitations under the License. 16 | */ 17 | package org.apache.tika.sax.xpath; 18 | 19 | /** 20 | * Final evaluation state of a .../@name XPath expression. 21 | * Matches the named attributes of the current element. 22 | */ 23 | public class NamedAttributeMatcher extends Matcher { 24 | 25 | private final String namespace; 26 | 27 | private final String name; 28 | 29 | public NamedAttributeMatcher(String namespace, String name) { 30 | this.namespace = namespace; 31 | this.name = name; 32 | } 33 | 34 | public boolean matchesAttribute(String namespace, String name) { 35 | return equals(namespace, this.namespace) && name.equals(this.name); 36 | } 37 | 38 | private static boolean equals(String a, String b) { 39 | return (a == null) ? (b == null) : a.equals(b); 40 | } 41 | 42 | } 43 | -------------------------------------------------------------------------------- /src/org/apache/tika/sax/xpath/NodeMatcher.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Licensed to the Apache Software Foundation (ASF) under one or more 3 | * contributor license agreements. See the NOTICE file distributed with 4 | * this work for additional information regarding copyright ownership. 5 | * The ASF licenses this file to You under the Apache License, Version 2.0 6 | * (the "License"); you may not use this file except in compliance with 7 | * the License. You may obtain a copy of the License at 8 | * 9 | * http://www.apache.org/licenses/LICENSE-2.0 10 | * 11 | * Unless required by applicable law or agreed to in writing, software 12 | * distributed under the License is distributed on an "AS IS" BASIS, 13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | * See the License for the specific language governing permissions and 15 | * limitations under the License. 16 | */ 17 | package org.apache.tika.sax.xpath; 18 | 19 | /** 20 | * Final evaluation state of a .../node() XPath expression. 21 | * Matches all elements, attributes, and text. 22 | */ 23 | public class NodeMatcher extends Matcher { 24 | 25 | public static final Matcher INSTANCE = new NodeMatcher(); 26 | 27 | @Override 28 | public boolean matchesElement() { 29 | return true; 30 | } 31 | 32 | @Override 33 | public boolean matchesAttribute(String namespace, String name) { 34 | return true; 35 | } 36 | 37 | @Override 38 | public boolean matchesText() { 39 | return true; 40 | } 41 | 42 | } 43 | -------------------------------------------------------------------------------- /src/org/apache/tika/sax/xpath/TextMatcher.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Licensed to the Apache Software Foundation (ASF) under one or more 3 | * contributor license agreements. See the NOTICE file distributed with 4 | * this work for additional information regarding copyright ownership. 5 | * The ASF licenses this file to You under the Apache License, Version 2.0 6 | * (the "License"); you may not use this file except in compliance with 7 | * the License. You may obtain a copy of the License at 8 | * 9 | * http://www.apache.org/licenses/LICENSE-2.0 10 | * 11 | * Unless required by applicable law or agreed to in writing, software 12 | * distributed under the License is distributed on an "AS IS" BASIS, 13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | * See the License for the specific language governing permissions and 15 | * limitations under the License. 16 | */ 17 | package org.apache.tika.sax.xpath; 18 | 19 | /** 20 | * Final evaluation state of a .../text() XPath expression. 21 | * Matches all text children of the current element. 22 | */ 23 | public class TextMatcher extends Matcher { 24 | 25 | public static final Matcher INSTANCE = new TextMatcher(); 26 | 27 | public boolean matchesText() { 28 | return true; 29 | } 30 | 31 | } 32 | --------------------------------------------------------------------------------