From 9fc748b9dd8b62b85e74bb0c2e37974331595dec Mon Sep 17 00:00:00 2001 From: Jonas Hahn Date: Thu, 18 Oct 2018 21:05:28 +0200 Subject: [PATCH 1/3] Update documentation --- .img/deepthought-logo.png | Bin 0 -> 4953 bytes README.md | 86 ++++++++++++++++------- build.gradle | 139 -------------------------------------- 3 files changed, 61 insertions(+), 164 deletions(-) create mode 100644 .img/deepthought-logo.png diff --git a/.img/deepthought-logo.png b/.img/deepthought-logo.png new file mode 100644 index 0000000000000000000000000000000000000000..62e458a57a74de3508ae7aa920fde8e10151eac7 GIT binary patch literal 4953 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 src -> main -> java -> net -> deepthought -, right click on 'DeepThoughtFx' and choose Debug or Run. +### Start the JavaFX application +For running the Java Desktop Application you at least need Java 8_u40 and the JavaFX library. -For running the Java Desktop Application you at least need Java 8_u40. +JavaFX is not bundled with OpenJDK, some distributions allow to install +it via the package manager (e.g. `apt install openjfx`). -## Firewall configuration - -### Data retrieval -If you want to save web pages or RSS feeds, you have to open the corresponding ports (usually TCP 80 and 443). +To start the Desktop Application go to `DeepThoughtJavaFX/src/main/kotlin/net/dankito/deepthought/javafx/`, right click on `DeepThoughtJavaFXApplication.kt` and choose Debug or Run. -### Synchronization -All ports only need to be opened for the local network. -As DeepThought uses a serverless multi-master synchronization, nothing outside the local network is ever contacted. +or via gradle (remove the `subprojects` entry from the main gradle file): -Used ports are: -- UDP 32788 (device discovery) -- First free port starting from TCP 32789 (messaging) -- First free port starting from TCP 27387 (data synchronization) -- TCP port between 32789 - 33489 (first time synchronization; only used for initial synchronization of two devices). I admit this is really ugly. -- First free port starting from TCP 60705 (file synchronization) + cd DeepThoughtJavaFX + ../gradlew build + cd build/distributions + unzip DeepThoughtJavaFX.zip + DeepThoughtJavaFX/bin/DeepThoughtJavaFX -As the synchronization layer is currently undergoing a major redesign, these ports will be significantly simplified with the upcoming 0.6.0 release. \ No newline at end of file diff --git a/build.gradle b/build.gradle index 13d514f04..4be1eed29 100644 --- a/build.gradle +++ b/build.gradle @@ -44,145 +44,6 @@ allprojects { } } -subprojects { - task allDeps(type: DependencyReportTask) {} // to have a simple way to print all dependencies to console - - apply plugin: 'jacoco' - apply plugin: 'checkstyle' - apply plugin: 'pmd' - apply plugin: 'findbugs' - apply plugin: "org.sonarqube" - - - ext.jacocoOutputFile = file("$buildDir/jacoco/jacocoTest.exec") - - - task checkstyle(type: Checkstyle) { - group = "Reporting" - - ignoreFailures = true - configFile file("${project.rootDir}/config/quality/checkstyle/checkstyle.xml") - source 'src' - include '**/*.java' - exclude '**/gen/**' - - classpath = files() - } - - task findbugs(type: FindBugs) { - group = "Reporting" - - ignoreFailures = true - effort = "max" - reportLevel = "high" -// excludeFilter = new File("${project.rootDir}/config/quality/findbugs/findbugs-filter.xml") - classes = files("$project.buildDir/intermediates/classes/") - - source 'src' - include '**/*.java' - exclude '**/gen/**' - - reports { - xml { - destination file("$project.buildDir/reports/findbugs/findbugs.xml") - xml.withMessages true - } - html { - enabled false - } - } - - classpath = files() - } - - task pmd(type: Pmd) { - group = "Reporting" - -// ruleSetFiles = files("${project.rootDir}/config/quality/pmd/pmd-ruleset.xml") - ignoreFailures = true - ruleSets = ["java-basic", "java-braces", "java-strings"] -// ruleSets = [ -// 'java-basic', -// 'java-braces', -// 'java-clone', -// 'java-codesize', -// 'java-comments', -// 'java-controversial', -// 'java-coupling', -// 'java-design', -// 'java-empty', -// 'java-finalizers', -// 'java-imports', -// 'java-optimizations', -// 'java-strictexception', -// 'java-strings', -// 'java-typeresolution', -// 'java-unnecessary', -// 'java-unusedcode' -// ] - - source 'src' - include '**/*.java' - exclude '**/gen/**' - - reports { - xml.enabled = true - html.enabled = false - } - } - - - sonarqube { - properties { - - property "sonar.projectKey", "net.dankito.deepthought.$project.name".replace(" ", "_") - property "sonar.projectName", "$project.name" - - property "sonar.android.lint.report", "build/outputs/lint-results.xml" - property "sonar.java.binaries", "${buildDir}/intermediates/classes/debug" - -// property "sonar.host.url", "url-to-your-sonar-instance" -// property "sonar.username", "your-sonar-username" -// property "sonar.password", "your-sonar-password" -// -// property "sonar.projectName", "Some Project Name" -// property "sonar.projectVersion", "${version}" -// -// property "sonar.sources", "src" -// -// property "sonar.java.source", "7" - } - } - - task setJacocoReportPaths { - doFirst { - def reportPaths = []; - - reportPaths.addAll(getTestReportsFromDirectory("${buildDir}/jacoco/")) - - reportPaths.addAll(getTestReportsFromDirectory("${buildDir}/outputs/code-coverage/connected/")) - - File mergedCoverageFile = file("${buildDir}/spoon/debug/coverage/merged-coverage.ec"); - if(mergedCoverageFile.exists()) { - reportPaths.add(file("${buildDir}/spoon/debug/coverage/merged-coverage.ec")) - } - else if(mergedCoverageFile.parentFile.exists()) { - reportPaths.addAll(getTestReportsFromDirectory("${buildDir}/spoon/debug/coverage/")) - } - - println "reportPaths $reportPaths" - - sonarqube { - properties { - property "sonar.jacoco.reportPaths", reportPaths - } - } - } - } - - tasks.getByName("sonarqube").dependsOn 'setJacocoReportPaths' -} - def getTestReportsFromDirectory(String directoryPath) { fileTree(directoryPath).filter { isTestReportFile(it) }.files } From 4fafde21b250381ee8e7d77df7817a08dfa4fe3a Mon Sep 17 00:00:00 2001 From: Jonas Hahn Date: Thu, 18 Oct 2018 21:40:13 +0200 Subject: [PATCH 2/3] restore original build.gradle --- build.gradle | 139 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 139 insertions(+) diff --git a/build.gradle b/build.gradle index 4be1eed29..13d514f04 100644 --- a/build.gradle +++ b/build.gradle @@ -44,6 +44,145 @@ allprojects { } } +subprojects { + task allDeps(type: DependencyReportTask) {} // to have a simple way to print all dependencies to console + + apply plugin: 'jacoco' + apply plugin: 'checkstyle' + apply plugin: 'pmd' + apply plugin: 'findbugs' + apply plugin: "org.sonarqube" + + + ext.jacocoOutputFile = file("$buildDir/jacoco/jacocoTest.exec") + + + task checkstyle(type: Checkstyle) { + group = "Reporting" + + ignoreFailures = true + configFile file("${project.rootDir}/config/quality/checkstyle/checkstyle.xml") + source 'src' + include '**/*.java' + exclude '**/gen/**' + + classpath = files() + } + + task findbugs(type: FindBugs) { + group = "Reporting" + + ignoreFailures = true + effort = "max" + reportLevel = "high" +// excludeFilter = new File("${project.rootDir}/config/quality/findbugs/findbugs-filter.xml") + classes = files("$project.buildDir/intermediates/classes/") + + source 'src' + include '**/*.java' + exclude '**/gen/**' + + reports { + xml { + destination file("$project.buildDir/reports/findbugs/findbugs.xml") + xml.withMessages true + } + html { + enabled false + } + } + + classpath = files() + } + + task pmd(type: Pmd) { + group = "Reporting" + +// ruleSetFiles = files("${project.rootDir}/config/quality/pmd/pmd-ruleset.xml") + ignoreFailures = true + ruleSets = ["java-basic", "java-braces", "java-strings"] +// ruleSets = [ +// 'java-basic', +// 'java-braces', +// 'java-clone', +// 'java-codesize', +// 'java-comments', +// 'java-controversial', +// 'java-coupling', +// 'java-design', +// 'java-empty', +// 'java-finalizers', +// 'java-imports', +// 'java-optimizations', +// 'java-strictexception', +// 'java-strings', +// 'java-typeresolution', +// 'java-unnecessary', +// 'java-unusedcode' +// ] + + source 'src' + include '**/*.java' + exclude '**/gen/**' + + reports { + xml.enabled = true + html.enabled = false + } + } + + + sonarqube { + properties { + + property "sonar.projectKey", "net.dankito.deepthought.$project.name".replace(" ", "_") + property "sonar.projectName", "$project.name" + + property "sonar.android.lint.report", "build/outputs/lint-results.xml" + property "sonar.java.binaries", "${buildDir}/intermediates/classes/debug" + +// property "sonar.host.url", "url-to-your-sonar-instance" +// property "sonar.username", "your-sonar-username" +// property "sonar.password", "your-sonar-password" +// +// property "sonar.projectName", "Some Project Name" +// property "sonar.projectVersion", "${version}" +// +// property "sonar.sources", "src" +// +// property "sonar.java.source", "7" + } + } + + task setJacocoReportPaths { + doFirst { + def reportPaths = []; + + reportPaths.addAll(getTestReportsFromDirectory("${buildDir}/jacoco/")) + + reportPaths.addAll(getTestReportsFromDirectory("${buildDir}/outputs/code-coverage/connected/")) + + File mergedCoverageFile = file("${buildDir}/spoon/debug/coverage/merged-coverage.ec"); + if(mergedCoverageFile.exists()) { + reportPaths.add(file("${buildDir}/spoon/debug/coverage/merged-coverage.ec")) + } + else if(mergedCoverageFile.parentFile.exists()) { + reportPaths.addAll(getTestReportsFromDirectory("${buildDir}/spoon/debug/coverage/")) + } + + println "reportPaths $reportPaths" + + sonarqube { + properties { + property "sonar.jacoco.reportPaths", reportPaths + } + } + } + } + + tasks.getByName("sonarqube").dependsOn 'setJacocoReportPaths' +} + def getTestReportsFromDirectory(String directoryPath) { fileTree(directoryPath).filter { isTestReportFile(it) }.files } From 855c05091c5ae5331f9579defe0521904a3ed28e Mon Sep 17 00:00:00 2001 From: Jonas Hahn Date: Thu, 18 Oct 2018 21:40:30 +0200 Subject: [PATCH 3/3] fix duplicate line --- README.md | 1 - 1 file changed, 1 deletion(-) diff --git a/README.md b/README.md index 982a77e53..37eea529d 100644 --- a/README.md +++ b/README.md @@ -12,7 +12,6 @@ Local data storage and sync, no external servers involved. - local data storage - cloudless data synchronization over local network - a Rich Text editor -- real time full text search engine (my one gigabyte database is searched in less than 100 milliseconds.) - extracting data from web sites (the same technique as for the Firefox reader view is used) - extracting text from PDF files - attaching files (including automatic file synchronization)