diff --git a/.travis.yml b/.travis.yml
deleted file mode 100644
index 49b67b4d5b..0000000000
--- a/.travis.yml
+++ /dev/null
@@ -1,117 +0,0 @@
----
-language: java
-jdk: openjdk8
-sudo: required
-dist: bionic
-cache:
- directories:
- - $HOME/.m2
- - $HOME/.gradle
-services:
- - docker
-addons:
- apt:
- update: true
- packages:
- - python
- - python-pip
- - docker-ce
-stages:
- - name: commit
- if: (branch = master || branch = release) && type = pull_request
- - name: integration
- if: (branch = master || branch = release) && type != pull_request
- - name: build
- if: (branch = master || branch = release) && type != pull_request
- - name: deploy
- if: (branch = master || branch = release) && type != pull_request
-env:
- global:
- - _JAVA_OPTIONS=-Xmx6g
- - TERM=dumb
- - HALE_GRADLE_CONSOLE=plain
-notifications:
- slack:
- # https://docs.travis-ci.com/user/notifications/#configuring-slack-notifications
- #
- # Using environment variables here is not supported, unfortunately: https://github.com/travis-ci/travis-ci/issues/6387
- # With the Travis Ruby gem, the 'secure' value can be generated like this:
- #
- # > travis encrypt ":" --add notifications.slack
- rooms:
- - secure: "R12tWxP/LdhD27KVukEMVEkWykw0+mT3Lx2dsOSWjxqVwlhIKZ+2RCR0Q1GD+a/bfnDDX3T5YP5zvVUr/NQi42fkMsIrU37Aj6dIXfoCD18XW6MkeQ2HrNyEHPLsTY8OfEKaNLOmb4qQPQRSfPGEaF7iCUus3ApjLbji1bBgyqI="
- on_success: change
- on_failure: always
-jobs:
- include:
- - stage: commit
- script:
- # Output something every minute lest Travis kills the job
- - while sleep 1m; do echo "=====[ still running after $SECONDS seconds... ]====="; done &
- - ./build.sh commitStage
- # Killing background sleep loop
- - kill %1
- - stage: integration
- script:
- # Output something every minute lest Travis kills the job
- - while sleep 1m; do echo "=====[ still running after $SECONDS seconds... ]====="; done &
- # Make Docker daemon listen on TCP port 2375 for container-based integration tests
- - 'export DOCKER_SYSTEMD_CONFIG="[Service]\nExecStart=\nExecStart=/usr/bin/dockerd -H fd:// -H tcp://127.0.0.1:2375"'
- - sudo mkdir -p /etc/systemd/system/docker.service.d
- - echo -e $DOCKER_SYSTEMD_CONFIG | sudo tee /etc/systemd/system/docker.service.d/override.conf > /dev/null
- - sudo systemctl daemon-reload
- - sudo service docker restart
- - sleep 10
- - sudo systemctl status docker.service
- # Pull Docker images required for integration tests
- - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin
- - docker pull kartoza/postgis
- - ./build.sh integrationStage
- # Killing background sleep loop
- - kill %1
- - &build-hs
- stage: build
- env:
- - PLATFORM=linux PRODUCT=HALE ARCH=x86_64
- deploy:
- skip_cleanup: true
- provider: s3
- access_key_id: ${AWS_ACCESS_KEY_ID}
- secret_access_key: ${AWS_SECRET_ACCESS_KEY}
- bucket: ${AWS_S3_BUCKET}
- region: ${AWS_S3_REGION}
- upload-dir: ${AWS_S3_BUCKET_TARGET_PATH}/${TRAVIS_BUILD_NUMBER}
- local_dir: build/target
- script:
- # Output something every minute lest Travis kills the job
- - while sleep 1m; do echo "=====[ still running after $SECONDS seconds... ]====="; done &
- - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin
- - mkdir -p build/target
- - ./build.sh product -a ${ARCH} -o ${PLATFORM} ${ADDITIONAL_FLAGS} ${PRODUCT}
- # Killing background sleep loop
- - kill %1
- - <<: *build-hs
- env:
- - PLATFORM=windows PRODUCT=HALE ARCH=x86_64
- - <<: *build-hs
- env:
- - PLATFORM=macosx PRODUCT=HALE ARCH=x86_64
- before_install:
- - sudo apt -qq update
- # genisoimage is required for creating the dmg image
- - sudo apt install -y genisoimage
- - <<: *build-hs
- if: branch = master
- env:
- - PLATFORM=linux PRODUCT=Infocenter ARCH=x86_64
- - <<: *build-hs
- if: branch = release
- env:
- - PLATFORM=linux PRODUCT=Infocenter ARCH=x86_64 ADDITIONAL_FLAGS="--publish --latest"
- - stage: deploy
- before_install:
- - pip install awscli
- script:
- - cd build && ./upload-site.sh
-# - stage: deploy
-# - cd build && ./build.sh deployArtifacts
diff --git a/apply-preferences.groovy b/apply-preferences.groovy
deleted file mode 100755
index 34dc9be290..0000000000
--- a/apply-preferences.groovy
+++ /dev/null
@@ -1,340 +0,0 @@
-#!/usr/bin/env groovy
-
-import java.text.DateFormat
-import java.util.Map.Entry
-import java.util.jar.Manifest
-
-/*
- * Class and interface definitions
- */
-
-class SortedProperties extends Properties {
-
- synchronized Enumeration keys() {
- Enumeration keysEnum = super.keys()
- Vector keyList = new Vector()
- while (keysEnum.hasMoreElements()) {
- keyList.add(keysEnum.nextElement())
- }
- Collections.sort(keyList)
- return keyList.elements()
- }
-
-}
-
-interface ProjectFilter {
-
- /**
- * Determines if a project shall be processed
- *
- * @param projectDir the project directory
- *
- * @return if the project is accepted
- */
- boolean acceptProject(File projectDir);
-
-}
-
-class ProjectPreferencesApplier {
-
- private final Map defaults = [:]
-
- private static final DateFormat dateFormat = DateFormat.getDateTimeInstance(DateFormat.MEDIUM, DateFormat.MEDIUM)
-
- /**
- * Load default preferences from all .prefs files in the given directory
- *
- * @param prefsPath the path to the default preferences directory
- *
- * @return if any preference files were found
- */
- boolean loadDefaults(File path) {
- File[] prefFiles = path.listFiles(new FilenameFilter() {
-
- public boolean accept(File dir, String name) {
- return name.toLowerCase().endsWith(".prefs")
- }
-
- });
-
- boolean foundPreferences = false
-
- if (prefFiles != null) {
- for (File prefFile : prefFiles) {
- SortedProperties properties = new SortedProperties()
- try {
- properties.load(new BufferedReader(new FileReader(prefFile)))
- if (properties.isEmpty()) {
- println("Warning: empty preference file: " + prefFile.getAbsolutePath())
- }
-
- String key = prefFile.getName()
- defaults.put(key, properties)
- foundPreferences = true
-
- // println("Loaded default preferences: " + prefFile.getName())
- } catch (FileNotFoundException e) {
- // ignore
- } catch (IOException e) {
- println("Error reading preference file: " + prefFile.getAbsolutePath())
- }
- }
-
- println('Loaded preferences from: ' + path as String)
- }
-
- return foundPreferences
- }
-
- /**
- * Apply the preference defaults to projects found in the given search path
- *
- * @param searchPath the search path
- * @param projectFilter the project filter
- */
- public void applyDefaults(File searchPath, ProjectFilter projectFilter) {
- Collection extends File> projectDirs = findProjectDirectories(searchPath, true)
-
- int ignored = 0
-
- for (File projectDir : projectDirs) {
- if (projectFilter.acceptProject(projectDir)) {
- // apply project preferences
- applyProjectDefaults(projectDir)
- }
- else {
- ignored++
- }
- }
-
- println("Ignored " + ignored + " project directories.")
- }
-
- /**
- * Apply the project preference defaults to the project in the given
- * directory
- *
- * @param projectDir the project direktory
- */
- private void applyProjectDefaults(File projectDir) {
- // settings directory
- File settingsDir = new File(projectDir, ".settings")
- if (!settingsDir.exists()) {
- settingsDir.mkdir()
- }
-
- boolean success = true;
-
- for (Entry entry : defaults.entrySet()) {
- String filename = entry.getKey()
- SortedProperties defaults = entry.getValue()
-
- File propertiesFile = new File(settingsDir, filename)
- if (propertiesFile.exists()) {
- // apply defaults to existing file
- SortedProperties current = new SortedProperties()
- try {
- current.load(new BufferedReader(new FileReader(propertiesFile)))
-
- boolean changed = false
-
- // copy defaults
- Enumeration en = defaults.keys()
- while (en.hasMoreElements()) {
- String key = (String) en.nextElement()
-
- String defaultValue = defaults.getProperty(key)
- String oldValue = current.getProperty(key)
-
- if (oldValue == null || !oldValue.equals(defaultValue)) {
- current.setProperty(key, defaultValue)
-
- changed = true
- }
- }
-
- // save file
- if (changed) {
- current.store(new FileWriter(propertiesFile), "Updated from default preferences " + dateFormat.format(new Date()))
- }
- } catch (FileNotFoundException e) {
- e.printStackTrace()
- success = false
- } catch (IOException e) {
- println("Error updating preferences '" + filename + "' for project in " + projectDir.getAbsolutePath())
- success = false
- }
- }
- else {
- // create initial file
- try {
- defaults.store(new FileWriter(propertiesFile), "Created from default preferences " + dateFormat.format(new Date()))
- } catch (IOException e) {
- println("Error saving default preferences '" + filename + "' for project in " + projectDir.getAbsolutePath())
- success = false
- }
- }
- }
-
- if (success) {
- println("Successfully updated project preferences for " + projectDir.getName())
- }
- }
-
- /**
- * Find the project directories in the given search path
- *
- * @param searchPath the search path
- * @param searchInProjects if inside project directories shall also be searched for projects
- *
- * @return the project directories
- */
- private Collection extends File> findProjectDirectories(File searchPath,
- boolean searchInProjects) {
- List projectDirs = []
-
- boolean project = false;
- File projectFile = new File(searchPath, ".project")
- File classpathFile = new File(searchPath, ".classpath") // check also for classpath file to filter non-Java projects
- if (projectFile.exists() && classpathFile.exists()) {
- // search path is project dir
- projectDirs.add(searchPath);
- project = true;
- }
-
- if (!project || searchInProjects) {
- File[] candidates = searchPath.listFiles(new FilenameFilter() {
-
- public boolean accept(File dir, String name) {
- // ignore files starting with .
- if (name.startsWith(".")) {
- return false
- }
-
- // ignore build directories
- if (name.equals("build")) {
- return false
- }
-
- return true
- }
- });
-
- if (candidates != null) {
- for (File candidate : candidates) {
- projectDirs.addAll(findProjectDirectories(candidate, false))
- }
- }
- }
-
- return projectDirs
- }
-
-}
-
-void apply(File prefs, File searchPath, ProjectFilter projectFilter = { File projectDir -> true }) {
- ProjectPreferencesApplier applier = new ProjectPreferencesApplier()
- if (!applier.loadDefaults(prefs)) {
- println("No preference files found in " + prefs + ".")
- }
- else {
- applier.applyDefaults(searchPath, projectFilter)
- }
-}
-
-
-/*
- * Script
- */
-
-// filter that detects Java 8 projects and updates the classpath setting
-def isJava8 = { File projectDir ->
- File manifestFile = new File(new File(projectDir, 'META-INF'), 'MANIFEST.MF')
- boolean match = false
- if (manifestFile.exists()) {
- manifestFile.withInputStream {
- def manifest = new Manifest(it)
- def attributes = manifest.getMainAttributes()
- def env = attributes.getValue('Bundle-RequiredExecutionEnvironment')
- match = (env == 'JavaSE-1.8')
- }
- }
-
- if (match) {
- // update to Java 8 -> also replace classpath setting
- // XXX kind of a hack to do it in the filter
- File classpathFile = new File(projectDir, '.classpath')
- if (classpathFile.exists()) {
- def fileContent = classpathFile.text
- def java7cp = 'org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.7'
- def java8cp = 'org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8'
- def java17cp = 'org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-17'
- def java18cp = 'org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-18'
- if (fileContent.contains(java8cp)) {
- classpathFile.text = fileContent.replace(java8cp, java18cp)
- }
- }
- }
-
- match
-}
-
-// filter that detects Java 8 projects and updates the classpath setting
-def isJava18 = { File projectDir ->
- File manifestFile = new File(new File(projectDir, 'META-INF'), 'MANIFEST.MF')
- boolean match = false
- if (manifestFile.exists()) {
- manifestFile.withInputStream {
- def manifest = new Manifest(it)
- def attributes = manifest.getMainAttributes()
- def env = attributes.getValue('Bundle-RequiredExecutionEnvironment')
- match = (env == 'JavaSE-1.8')
- }
- }
-
- if (match) {
- // update to Java 8 -> also replace classpath setting
- // XXX kind of a hack to do it in the filter
- File classpathFile = new File(projectDir, '.classpath')
- if (classpathFile.exists()) {
- def fileContent = classpathFile.text
- def java7cp = 'org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.7'
- def java8cp = 'org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8'
- def java17cp = 'org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-17'
- def java18cp = 'org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-18'
- if (fileContent.contains(java18cp)) {
- classpathFile.text = fileContent.replace(java18cp, java17cp)
- }
- }
- }
-
- match
-}
-
-// apply preferences to projects
-
-def java7 = 'platform/preferences/java7' as File
-def java8 = 'platform/preferences/java8' as File
-def java17 = 'platform/preferences/java17' as File
-def java18 = 'platform/preferences/java18' as File
-def searchPaths = ['common', 'cst', 'io', 'server', 'doc', 'ui', 'util', 'app', 'ext/styledmap', 'ext/geom', 'ext/adv']
-
-searchPaths.each {
- // default: Java 8
- apply(java17, it as File, { !isJava18(it) } as ProjectFilter)
- // Java 17
- apply(java17, it as File, isJava18 as ProjectFilter)
-}
-
-//searchPaths.each {
- // default: Java 8
-// apply(java18, it as File, { !isJava8(it) } as ProjectFilter)
- // Java 8
-// apply(java18, it as File, isJava8 as ProjectFilter)
-//}
-
-// external contributions w/ different project settings
-
-apply('platform/preferences/xslt' as File, 'ext/xslt' as File)
-apply('platform/preferences/xslt' as File, 'ext/ageobw' as File)
-apply('platform/preferences/mdl' as File, 'ext/mdl' as File)
diff --git a/build-hale.sh b/build-hale.sh
deleted file mode 100755
index 057099baac..0000000000
--- a/build-hale.sh
+++ /dev/null
@@ -1,9 +0,0 @@
-#!/bin/sh
-
-# Default HALE builds
-./build.sh clean
-./build.sh product HALE -o linux -a x86_64
-#./build.sh product HALE -o linux -a x86
-./build.sh product HALE -o windows -a x86_64
-#./build.sh product HALE -o windows -a x86
-./build.sh product HALE -o macosx -a x86_64
diff --git a/build.bat b/build.bat
deleted file mode 100644
index b924d7c675..0000000000
--- a/build.bat
+++ /dev/null
@@ -1,9 +0,0 @@
-@echo off
-SetLocal EnableDelayedExpansion
-
-set ARGS=%*
-if NOT "%ARGS%" == "" (
- set ARGS=!ARGS:"=\"!
-)
-
-build\gradlew -p build --stacktrace cli -Pargs="%ARGS%"
diff --git a/build.sh b/build.sh
deleted file mode 100755
index 56f60e492b..0000000000
--- a/build.sh
+++ /dev/null
@@ -1,5 +0,0 @@
-#!/bin/bash
-if [ -z $HALE_GRADLE_CONSOLE ]; then
- HALE_GRADLE_CONSOLE=auto
-fi
-./build/gradlew -p build --console $HALE_GRADLE_CONSOLE -Dorg.gradle.daemon=true --stacktrace cli -Pargs="$*"
diff --git a/buildSrc/src/main/groovy/HaleProjectExtension.groovy b/buildSrc/src/main/groovy/HaleProjectExtension.groovy
index f222400e72..96c10496d4 100644
--- a/buildSrc/src/main/groovy/HaleProjectExtension.groovy
+++ b/buildSrc/src/main/groovy/HaleProjectExtension.groovy
@@ -6,4 +6,6 @@ class HaleProjectExtension {
String bundleName = null
String bundleSymbolicName = null
boolean singletonBundle = false
+ String fragmentHost = null
+ String bundleVendor = null
}
diff --git a/buildSrc/src/main/groovy/hale.library-conventions.gradle b/buildSrc/src/main/groovy/hale.library-conventions.gradle
index 573e00a826..30f9b61c1d 100644
--- a/buildSrc/src/main/groovy/hale.library-conventions.gradle
+++ b/buildSrc/src/main/groovy/hale.library-conventions.gradle
@@ -39,7 +39,7 @@ jar {
bnd(
'Bundle-SymbolicName': useSymName,
'Automatic-Module-Name': symName,
- 'Bundle-Vendor': 'wetransform GmbH'
+ 'Bundle-Vendor': project.hale.bundleVendor ?: 'wetransform GmbH'
)
if (project.hale.activator) {
@@ -50,6 +50,12 @@ jar {
'Bundle-ActivationPolicy': 'lazy'
)
}
+
+ if (project.hale.fragmentHost) {
+ bnd(
+ 'Fragment-Host': project.hale.fragmentHost
+ )
+ }
}
}
}
diff --git a/common/plugins/eu.esdihumboldt.hale.common.align/help/assignBound/assignBound.png b/common/plugins/eu.esdihumboldt.hale.common.align/resources/main/help/assignBound/assignBound.png
similarity index 100%
rename from common/plugins/eu.esdihumboldt.hale.common.align/help/assignBound/assignBound.png
rename to common/plugins/eu.esdihumboldt.hale.common.align/resources/main/help/assignBound/assignBound.png
diff --git a/common/plugins/eu.esdihumboldt.hale.common.align/help/assignBound/help.xhtml b/common/plugins/eu.esdihumboldt.hale.common.align/resources/main/help/assignBound/help.xhtml
similarity index 100%
rename from common/plugins/eu.esdihumboldt.hale.common.align/help/assignBound/help.xhtml
rename to common/plugins/eu.esdihumboldt.hale.common.align/resources/main/help/assignBound/help.xhtml
diff --git a/common/plugins/eu.esdihumboldt.hale.common.align/help/classification/addFile.png b/common/plugins/eu.esdihumboldt.hale.common.align/resources/main/help/classification/addFile.png
similarity index 100%
rename from common/plugins/eu.esdihumboldt.hale.common.align/help/classification/addFile.png
rename to common/plugins/eu.esdihumboldt.hale.common.align/resources/main/help/classification/addFile.png
diff --git a/common/plugins/eu.esdihumboldt.hale.common.align/help/classification/addSource.png b/common/plugins/eu.esdihumboldt.hale.common.align/resources/main/help/classification/addSource.png
similarity index 100%
rename from common/plugins/eu.esdihumboldt.hale.common.align/help/classification/addSource.png
rename to common/plugins/eu.esdihumboldt.hale.common.align/resources/main/help/classification/addSource.png
diff --git a/common/plugins/eu.esdihumboldt.hale.common.align/help/classification/help.xhtml b/common/plugins/eu.esdihumboldt.hale.common.align/resources/main/help/classification/help.xhtml
similarity index 100%
rename from common/plugins/eu.esdihumboldt.hale.common.align/help/classification/help.xhtml
rename to common/plugins/eu.esdihumboldt.hale.common.align/resources/main/help/classification/help.xhtml
diff --git a/common/plugins/eu.esdihumboldt.hale.common.align/help/classification/sourceValue.png b/common/plugins/eu.esdihumboldt.hale.common.align/resources/main/help/classification/sourceValue.png
similarity index 100%
rename from common/plugins/eu.esdihumboldt.hale.common.align/help/classification/sourceValue.png
rename to common/plugins/eu.esdihumboldt.hale.common.align/resources/main/help/classification/sourceValue.png
diff --git a/common/plugins/eu.esdihumboldt.hale.common.align/help/classification/unmapped.png b/common/plugins/eu.esdihumboldt.hale.common.align/resources/main/help/classification/unmapped.png
similarity index 100%
rename from common/plugins/eu.esdihumboldt.hale.common.align/help/classification/unmapped.png
rename to common/plugins/eu.esdihumboldt.hale.common.align/resources/main/help/classification/unmapped.png
diff --git a/common/plugins/eu.esdihumboldt.hale.common.align/help/contexts.xml b/common/plugins/eu.esdihumboldt.hale.common.align/resources/main/help/contexts.xml
similarity index 100%
rename from common/plugins/eu.esdihumboldt.hale.common.align/help/contexts.xml
rename to common/plugins/eu.esdihumboldt.hale.common.align/resources/main/help/contexts.xml
diff --git a/common/plugins/eu.esdihumboldt.hale.common.align/help/formattedString/Formatted_string.png b/common/plugins/eu.esdihumboldt.hale.common.align/resources/main/help/formattedString/Formatted_string.png
similarity index 100%
rename from common/plugins/eu.esdihumboldt.hale.common.align/help/formattedString/Formatted_string.png
rename to common/plugins/eu.esdihumboldt.hale.common.align/resources/main/help/formattedString/Formatted_string.png
diff --git a/common/plugins/eu.esdihumboldt.hale.common.align/help/formattedString/Formatted_string_mapping.png b/common/plugins/eu.esdihumboldt.hale.common.align/resources/main/help/formattedString/Formatted_string_mapping.png
similarity index 100%
rename from common/plugins/eu.esdihumboldt.hale.common.align/help/formattedString/Formatted_string_mapping.png
rename to common/plugins/eu.esdihumboldt.hale.common.align/resources/main/help/formattedString/Formatted_string_mapping.png
diff --git a/common/plugins/eu.esdihumboldt.hale.common.align/help/formattedString/help.xhtml b/common/plugins/eu.esdihumboldt.hale.common.align/resources/main/help/formattedString/help.xhtml
similarity index 100%
rename from common/plugins/eu.esdihumboldt.hale.common.align/help/formattedString/help.xhtml
rename to common/plugins/eu.esdihumboldt.hale.common.align/resources/main/help/formattedString/help.xhtml
diff --git a/common/plugins/eu.esdihumboldt.hale.common.align/help/join.xhtml b/common/plugins/eu.esdihumboldt.hale.common.align/resources/main/help/join.xhtml
similarity index 90%
rename from common/plugins/eu.esdihumboldt.hale.common.align/help/join.xhtml
rename to common/plugins/eu.esdihumboldt.hale.common.align/resources/main/help/join.xhtml
index ff307988a6..cba0f67a76 100644
--- a/common/plugins/eu.esdihumboldt.hale.common.align/help/join.xhtml
+++ b/common/plugins/eu.esdihumboldt.hale.common.align/resources/main/help/join.xhtml
@@ -24,9 +24,9 @@
and so on.
-
+
-
+
@@ -38,10 +38,10 @@
equal the instance is used. A particular instance may match more than
one instance of the previous types and will then be used each time.
-
+
To create a condition, select a property on the left and on the
right side, then click on the button in the middle.