diff --git a/.github/workflows/gradle.yml b/.github/workflows/gradle.yml new file mode 100644 index 0000000..337990d --- /dev/null +++ b/.github/workflows/gradle.yml @@ -0,0 +1,69 @@ +name: Gradle Build + +# on: [push, pull_request] +on: + # Trigger the workflow on push or pull request, + # but only for the non-modular branch + push: + branches: + - non-modular + pull_request: + branches: + - non-modular + workflow_dispatch: + # manuel trigger +jobs: + build: + runs-on: ${{ matrix.os }} + strategy: + matrix: + os: [ubuntu-latest, macOS-latest, windows-latest] + java: [ '17' ] + fail-fast: false + name: ${{ matrix.os }} + steps: + - name: Git checkout + uses: actions/checkout@v2 + - name: Set up JDK + uses: actions/setup-java@v1 + with: + java-version: ${{ matrix.java }} + - name: Echo JAVA_HOME + run: echo $JAVA_HOME + - name: Verify Gradle Wrapper + uses: gradle/wrapper-validation-action@v1 + - name: Execute build + run: ./gradlew --info --stacktrace build + - name: Execute runtime + run: ./gradlew --info --stacktrace runtime + - name: Execute jpackage + run: ./gradlew --info --stacktrace jpackage + - name: Upload DMG as an artifact + uses: actions/upload-artifact@v2 + with: + name: hello-fx-jdk${{ matrix.java }}-${{ matrix.os }}-dmg + path: build/jpackage/*.dmg + - name: Upload EXE as an artifact + uses: actions/upload-artifact@v2 + with: + name: hello-fx-jdk${{ matrix.java }}-${{ matrix.os }}-exe + path: build/jpackage/*.exe + retention-days: 7 + - name: Upload MSI as an artifact + uses: actions/upload-artifact@v2 + with: + name: hello-fx-jdk${{ matrix.java }}-${{ matrix.os }}-msi + path: build/jpackage/*.msi + retention-days: 7 + - name: Upload DEB as an artifact + uses: actions/upload-artifact@v2 + with: + name: hello-fx-jdk${{ matrix.java }}-${{ matrix.os }}-deb + path: build/jpackage/*.deb + retention-days: 7 + - name: Upload RPM as an artifact + uses: actions/upload-artifact@v2 + with: + name: hello-fx-jdk${{ matrix.java }}-${{ matrix.os }}-rpm + path: build/jpackage/*.rpm + retention-days: 7 diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..dd967f5 --- /dev/null +++ b/.gitignore @@ -0,0 +1,17 @@ +.gradle +.idea/ +.DS_Store +/build/ +/out/ + +# Ignore Gradle GUI config +gradle-app.setting + +# Avoid ignoring Gradle wrapper jar file (.jar files are usually ignored) +!gradle-wrapper.jar + +# Cache of project +.gradletasknamecache + +# # Work around https://youtrack.jetbrains.com/issue/IDEA-116898 +# gradle/wrapper/gradle-wrapper.properties diff --git a/build.gradle b/build.gradle index 2e1b85a..6c6e8cb 100644 --- a/build.gradle +++ b/build.gradle @@ -1,197 +1,135 @@ -// set JAVA_HOME=C:\Program Files\Java\jdk-11.0.5+10 +// Windows: set JAVA_HOME=C:\Program Files\Java\jdk-17 +// Windows: set JAVA_HOME=C:\Program Files\Java\jdk-21 +// Windows: set JAVA_HOME=C:\Program Files\Java\jdk-25 +// Linux: export JAVA_HOME=/usr/lib/jvm/jdk-11.0.5+10 +// MacOS: export JAVA_HOME=`/usr/libexec/java_home -v 21` plugins { - id 'java' id 'application' - id 'org.openjfx.javafxplugin' version '0.0.8' - id 'org.beryx.jlink' version '2.16.4' - id 'org.unbroken-dome.xjc' version '1.4.2' + id 'org.openjfx.javafxplugin' version '0.1.0' + id 'org.beryx.runtime' version '2.0.0' + // id 'org.unbroken-dome.xjc' version '2.0.0' + id 'com.github.bjornvester.xjc' version "1.8.2" // https://github.com/bjornvester/xjc-gradle-plugin +} + +compileJava { + // sourceCompatibility = JavaVersion.VERSION_21 + // targetCompatibility = JavaVersion.VERSION_21 } dependencies { - // implementation 'org.controlsfx:controlsfx:8.40.12' - // https://github.com/controlsfx/controlsfx - // implementation 'org.controlsfx:controlsfx:9.0.1-SNAPSHOT' - // implementation 'org.controlsfx:controlsfx:11.0.0-RC2' - implementation ('org.controlsfx:controlsfx:11.0.0-RC2') { + // ControlsFX + implementation('org.controlsfx:controlsfx:11.2.2') { exclude group: 'org.openjfx', module: '*' } - implementation 'org.xmlunit:xmlunit-core:2.6.3' - - implementation 'javax.xml.bind:jaxb-api:2.3.1' - implementation 'org.glassfish.jaxb:jaxb-runtime:2.3.1' - // implementation 'jakarta.xml.bind:jakarta.xml.bind-api:2.3.2' - // implementation 'org.glassfish.jaxb:jaxb-runtime:2.3.2' - - implementation 'net.sf.jasperreports:jasperreports:6.10.0' - implementation 'net.sf.jasperreports:jasperreports-fonts:6.10.0' - implementation 'commons-beanutils:commons-beanutils:1.9.3' - implementation 'commons-digester:commons-digester:2.1' - implementation 'commons-logging:commons-logging:1.1.1' - implementation 'org.apache.commons:commons-collections4:4.2' - /* - implementation ('org.hibernate:hibernate-core:5.4.1.Final') { - exclude group: 'javax.transaction', module: 'jta' - }*/ - implementation ('com.lowagie:itext:2.1.7') { - exclude group: 'org.bouncycastle', module: 'bcmail-jdk15on' - exclude group: 'org.bouncycastle', module: 'bcpkix-jdk15on' - } - /* implementation 'com.adobe.xmp:xmpcore:5.1.3' */ - implementation ('org.jfree:jcommon:1.0.23') { - exclude group: 'gnujaxp', module: 'gnujaxp' - } - implementation ('org.jfree:jfreechart:1.0.19') { - exclude group: 'gnujaxp', module: 'gnujaxp' - } - /* implementation 'org.apache.poi:poi:4.0.1' - // implementation 'org.apache.poi:poi-ooxml:4.0.1' // see below - // javax.servlet provided - implementation 'xalan:xalan:2.7.2' - // .. more - */ - implementation ('org.codehaus.castor:castor-xml:1.4.1') { - exclude group: 'org.springframework', module: 'spring-context' - } - /* implementation 'javax.xml.soap:javax.xml.soap-api:1.4.0' - implementation ('javax.xml.soap:saaj-api:1.3') { - exclude group: 'javax.activation', module: 'activation' - }*/ - // implementation 'com.sun.xml.ws:jaxws-ri:2.3.2' // SOAP missing - - implementation 'org.apache.logging.log4j:log4j-core:2.8.2' - implementation 'org.apache.logging.log4j:log4j-jcl:2.8.2' - implementation group:"com.fasterxml.jackson.core", name:"jackson-core", version:'2.9.9' - implementation group:"com.fasterxml.jackson.core", name:"jackson-databind", version:'2.9.9' - implementation group:"com.fasterxml.jackson.core", name:"jackson-annotations", version:'2.9.9' - // implementation 'org.codehaus.groovy:groovy-all:2.4.16' - - implementation 'org.apache.poi:poi-ooxml:4.0.1' - - implementation 'com.udojava:EvalEx:2.4' - - implementation 'com.ibm.icu:icu4j:65.1' - - // test dependencies - testCompile group: 'junit', name: 'junit', version: '4.12' + // Math + implementation 'com.udojava:EvalEx:2.7' + implementation 'com.ibm.icu:icu4j:74.1' + + // Apache POI + implementation 'org.apache.poi:poi-ooxml:5.2.5' + + // Jasperreports + implementation 'net.sf.jasperreports:jasperreports:6.21.3' + implementation 'net.sf.jasperreports:jasperreports-fonts:6.21.3' + // implementation 'com.lowagie:itext:2.1.7' + + // XML diff / JAXB + // Note: XML Unit 2.8+ contains all necessary JAXB/Jakarta dependencies + // see https://github.com/xmlunit/xmlunit/releases/tag/v2.8.0 + implementation 'org.xmlunit:xmlunit-core:2.10.4' + implementation 'jakarta.xml.bind:jakarta.xml.bind-api:4.0.2' // javax.xml.bind.annotation + implementation 'org.glassfish.jaxb:jaxb-runtime:4.0.5' + + // test dependencies + testImplementation 'org.junit.jupiter:junit-jupiter:5.13.4' + testRuntimeOnly 'org.junit.platform:junit-platform-launcher' + + testImplementation 'org.testfx:testfx-junit5:4.0.18' + testImplementation 'org.assertj:assertj-core:3.27.3' // required for testfx-junit5:4.0.17 and BigDecimal comparison + testImplementation 'org.hamcrest:hamcrest-all:1.3' // required for testfx-junit5:4.0.17 + testImplementation 'de.sandec:JMemoryBuddy:0.5.5' } repositories { mavenCentral() - // maven {url 'https://oss.sonatype.org/content/repositories/snapshots'} // This is added for snapshot +} + +java { + toolchain { + // Note: 21 causes the following issue in jpackage + // Cannot cast object '[/at/oenorm/schema/a2063/_2009_06_01/AekKenndatenType.class]' with class 'java.util.ArrayList' to class 'java.lang.Void' + // languageVersion = JavaLanguageVersion.of(17) + // languageVersion = JavaLanguageVersion.of(21) + } } javafx { - version = '13.0.1' - modules = ['javafx.controls', 'javafx.swing', 'javafx.fxml', 'javafx.media', 'javafx.web'] + version = '25' // '22.0.1' // '16' // '14.0.2.1' + // modules = ['javafx.base', 'javafx.graphics', 'javafx.controls'] + // Note: org.openjfx.javafxplugin@0.1.0 with badass-runtime-plugin relies on having all modules (transitive included) declared as "top-level" modules + modules = ['javafx.base', 'javafx.graphics', 'javafx.controls', 'javafx.swing', 'javafx.fxml', 'javafx.media', 'javafx.web'] } -run { - if (osdetector.os == 'windows') { - // Temporal fix for Eclipse with JDK 1.8 and Windows - systemProperty "java.library.path", "C:tmp" - } +test { + // Enable JUnit 5 + useJUnitPlatform() } -xjcGenerate { - source = fileTree('src/main/resources') { include '*.xsd' } +tasks.withType(JavaCompile).configureEach { + options.encoding = 'UTF-8' + // ÖNorm uses Umlaut in names + // options.compilerArgs << "-Xlint:unchecked" << "-Xlint:deprecation" } -version = '19.11.27' -def company = 'My Company' +xjc { + xsdDir.set(layout.projectDirectory.dir("src/main/schema")) // by default src/main/resource + options = ["-extension"] + // options = ["-extension", "-encoding", "UTF-8"] +} -mainClassName = "com.example/com.example.HelloFX" +version = '25.12.16' +def company = 'My Company' application { + applicationName = 'hello-fx' + mainClass.set("com.my_company.hellofx.Launcher") applicationDefaultJvmArgs = [ - "--add-opens=javafx.base/com.sun.javafx.runtime=org.controlsfx.controls", - "--add-opens=javafx.base/com.sun.javafx.collections=org.controlsfx.controls", - "--add-opens=javafx.base/com.sun.javafx.event=org.controlsfx.controls", - // "--add-opens=javafx.base/com.sun.javafx.event=ALL-UNNAMED", - "--add-opens=javafx.graphics/com.sun.javafx.css=org.controlsfx.controls", - // "--add-opens=javafx.graphics/com.sun.javafx.css=ALL-UNNAMED", - "--add-opens=javafx.graphics/com.sun.javafx.scene=org.controlsfx.controls", - "--add-opens=javafx.graphics/com.sun.javafx.scene.traversal=org.controlsfx.controls", - "--add-opens=javafx.graphics/javafx.scene=org.controlsfx.controls", - "--add-opens=javafx.controls/com.sun.javafx.scene.control=org.controlsfx.controls", - "--add-opens=javafx.controls/com.sun.javafx.scene.control.behavior=org.controlsfx.controls", - "--add-opens=javafx.controls/javafx.scene.control.skin=org.controlsfx.controls", - // Jasperreports (XML parsing or use javax.xml.soap as in JR pom ?) - "--add-opens=java.xml/com.sun.org.apache.xerces.internal.impl=ALL-UNNAMED", - "--add-opens=java.xml/com.sun.org.apache.xerces.internal.impl=com.example", - "--add-opens=java.xml/com.sun.org.apache.xerces.internal.impl=jasperreports", - "--add-opens=java.xml/com.sun.org.apache.xerces.internal.parsers=ALL-UNNAMED", - "--add-opens=java.xml/com.sun.org.apache.xerces.internal.parsers=com.example", - "--add-opens=java.xml/com.sun.org.apache.xerces.internal.parsers=jasperreports", - "--add-opens=java.xml/com.sun.org.apache.xerces.internal.jaxp=ALL-UNNAMED", - "--add-opens=java.xml/com.sun.org.apache.xerces.internal.jaxp=com.example", - "--add-opens=java.xml/com.sun.org.apache.xerces.internal.jaxp=jasperreports", - // Jasperreports (allow bean reflection) / Groovy - /* - "--add-opens=java.base/java.lang=ALL-UNNAMED", - "--add-opens=java.base/java.lang=com.example", - "--add-opens=java.base/java.lang=jasperreports", - "--add-opens=java.base/java.lang=commons.beanutils", - "--add-opens=java.base/java.lang.invoke=ALL-UNNAMED", - "--add-opens=java.base/java.lang.invoke=com.example", - "--add-opens=java.base/java.lang.invoke=jasperreports", - "--add-opens=java.base/java.lang.invoke=commons.beanutils", - "--add-opens=java.base/java.lang.reflect=ALL-UNNAMED", - "--add-opens=java.base/java.lang.reflect=com.example", - "--add-opens=java.base/java.lang.reflect=jasperreports", - "--add-opens=java.base/java.lang.reflect=commons.beanutils", */ + // necessary for JavaFX24+ (see https://gluonhq.com/products/javafx/openjfx-24-release-notes/) + // "--enable-native-access=ALL-UNNAMED", + + // necessary for ControlsFX + "--add-opens=javafx.base/com.sun.javafx.event=ALL-UNNAMED", + "--add-opens=javafx.base/com.sun.javafx.collections=ALL-UNNAMED", + "--add-opens=javafx.base/com.sun.javafx.runtime=ALL-UNNAMED", + "--add-opens=javafx.graphics/com.sun.javafx.scene=ALL-UNNAMED", + "--add-opens=javafx.graphics/com.sun.javafx.scene.traversal=ALL-UNNAMED", + "--add-opens=javafx.graphics/javafx.scene=ALL-UNNAMED", + "--add-opens=javafx.controls/javafx.scene.control.skin=ALL-UNNAMED", + // necessary for Jasperreports XML parsing + // https://github.com/TIBCOSoftware/jasperreports/issues/61 + "--add-opens=java.xml/com.sun.org.apache.xerces.internal.util=ALL-UNNAMED", ] } -jlink { - // https://github.com/beryx/badass-jlink-plugin/issues/59 -> gradlew suggestMergedModuleInfo - /*mergedModule { - requires "java.xml" - }*/ - mergedModule { - // requires 'java.xml.bind'; - requires 'java.logging' - requires 'java.xml' - requires 'java.desktop' - requires 'java.datatransfer' - // needed? - requires 'java.xml.crypto' - requires 'java.security.jgss' - requires 'jdk.javadoc' - // Jasperreports - requires 'java.sql' - requires 'java.sql.rowset' - requires 'java.scripting' - requires 'java.management' - // requires 'java.xml.bind' - // uses 'javax.annotation.processing.Processor' - // uses 'java.nio.file.spi.FileSystemProvider' - // requires 'jasperreports.fonts'; - // requires 'java.xml.soap' - } - - // runtime image produced by jlink: build\image\bin\hello-fx.bat +runtime { options = ['--strip-debug', '--compress', '2', '--no-header-files', '--no-man-pages'] - launcher { - // name = 'sliding-puzzle' - // name = 'com.example/com.example.HelloFX' - name = 'hello-fx' - jvmArgs = [ - "--add-exports", "javafx.base/com.sun.javafx.event=org.controlsfx.controls" - ] - // jvmArgs = ['-Dfxgl.sliding.puzzle.dummy=nothing', '-Dfxgl.sliding.puzzle.title=something'] - } jpackage { + imageName = application.applicationName // "hello-fx" + installerName = application.applicationName // Set the environment property BADASS_JLINK_JPACKAGE_HOME or explicitly configure the below property def os = org.gradle.internal.os.OperatingSystem.current() - if(os.macOsX) { - jpackageHome = '/Library/Java/JavaVirtualMachines/jdk-14-jpackage.jdk/Contents/Home' + /* if(os.macOsX) { + // jpackageHome = '/Library/Java/JavaVirtualMachines/adoptopenjdk-16.jdk/Contents/Home' + jpackageHome = '/Library/Java/JavaVirtualMachines/jdk-17-b-32.jdk/Contents/Home' } else if(os.windows) { - jpackageHome = 'C:/Program Files/Java/jdk-14-jpackage' - } + jpackageHome = 'C:/Program Files/Java/jdk-16+36' + } else { + // Linux + jpackageHome = '/usr/lib/jvm/jdk-16' + } */ jvmArgs = [] - // jvmArgs = ['-Dfxgl.sliding.puzzle.dummy=nothingElse', '-Dfxgl.sliding.puzzle.title=somethingElse'] installerOptions = [ // '--file-associations', 'src/main/resources/associations.properties', '--app-version', version, @@ -199,27 +137,28 @@ jlink { '--copyright', company, ] if(os.macOsX) { - imageOptions = ['--icon', 'src/main/deploy/package/macosx/hello.icns'] + imageOptions = ['--mac-sign', '--icon', 'src/main/deploy/package/macosx/hello.icns', '--mac-package-identifier', 'com.my-company.hellofx'] installerOptions += [ -/* - '--mac-sign', - '--mac-signing-key-user-name', System.getenv('SIGNING_KEY_USER_NAME'), - '--mac-signing-keychain', System.getenv('SIGNING_KEYCHAIN_PATH') -*/ + // Note: --mac-package-identifier needs to be part of imageOptions + // '--mac-package-identifier', 'com.my-company.hellofx', + '--mac-sign', + // '--mac-signing-key-user-name', System.getenv('SIGNING_KEY_USER_NAME'), + // '--mac-signing-keychain', System.getenv('SIGNING_KEYCHAIN_PATH') ] + // 3 jpackage steps + // * /Library/Java/JavaVirtualMachines/jdk-21.jdk/Contents/Home/bin/jpackage --type app-image --input /Users/daniel/Documents/GitHub/Java11Test/build/install/hello-fx/lib --main-jar Java11Test-25.11.04.jar --main-class com.my_company.hellofx.Launcher --dest /Users/daniel/Documents/GitHub/Java11Test/build/jpackage --name hello-fx --app-version 25.11.04 --runtime-image /Users/daniel/Documents/GitHub/Java11Test/build/jre --java-options --add-opens=javafx.base/com.sun.javafx.event=ALL-UNNAMED --java-options --add-opens=javafx.base/com.sun.javafx.collections=ALL-UNNAMED --java-options --add-opens=javafx.base/com.sun.javafx.runtime=ALL-UNNAMED --java-options --add-opens=javafx.graphics/com.sun.javafx.scene=ALL-UNNAMED --java-options --add-opens=javafx.graphics/com.sun.javafx.scene.traversal=ALL-UNNAMED --java-options --add-opens=javafx.graphics/javafx.scene=ALL-UNNAMED --java-options --add-opens=javafx.controls/javafx.scene.control.skin=ALL-UNNAMED --java-options --add-opens=java.xml/com.sun.org.apache.xerces.internal.util=ALL-UNNAMED --mac-sign --icon src/main/deploy/package/macosx/hello.icns --mac-package-identifier com.my-company.hellofx + // * /Library/Java/JavaVirtualMachines/jdk-21.jdk/Contents/Home/bin/jpackage --type pkg --dest /Users/daniel/Documents/GitHub/Java11Test/build/jpackage --name hello-fx --app-version 25.11.04 --app-image /Users/daniel/Documents/GitHub/Java11Test/build/jpackage/hello-fx.app --app-version 25.11.04 --vendor "My Company" --copyright "My Company" --mac-sign + // * /Library/Java/JavaVirtualMachines/jdk-21.jdk/Contents/Home/bin/jpackage --type dmg --dest /Users/daniel/Documents/GitHub/Java11Test/build/jpackage --name hello-fx --app-version 25.11.04 --app-image /Users/daniel/Documents/GitHub/Java11Test/build/jpackage/hello-fx.app --app-version 25.11.04 --vendor "My Company" --copyright "My Company" --mac-sign + } else if(os.windows) { - imageOptions = ['--icon', 'src/main/deploy/package/windows/hello.ico'] + imageOptions = ['--icon', 'src/main/deploy/package/windows/coffee.ico'] + installerType = 'msi' installerOptions += [ '--win-per-user-install', - // , '--win-dir-chooser' '--win-menu', '--win-menu-group', company, '--win-shortcut', - // '--win-upgrade-uuid', '027D194C-359B-11B2-A85C-C5D71105C10C', ] } } } - - -apply plugin : 'java' \ No newline at end of file diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar index 5ccda13..7454180 100644 Binary files a/gradle/wrapper/gradle-wrapper.jar and b/gradle/wrapper/gradle-wrapper.jar differ diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 9baf2c1..d706aba 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,7 +1,5 @@ -#Mon Apr 25 12:16:33 CEST 2016 distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists +distributionUrl=https\://services.gradle.org/distributions/gradle-9.1.0-bin.zip zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists -# distributionUrl=https\://services.gradle.org/distributions/gradle-5.2.1-all.zip -distributionUrl=https\://services.gradle.org/distributions/gradle-6.0-all.zip \ No newline at end of file diff --git a/gradlew b/gradlew old mode 100644 new mode 100755 index 9d82f78..1b6c787 --- a/gradlew +++ b/gradlew @@ -1,74 +1,129 @@ -#!/usr/bin/env bash +#!/bin/sh + +# +# Copyright © 2015-2021 the original authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ############################################################################## -## -## Gradle start up script for UN*X -## +# +# Gradle start up script for POSIX generated by Gradle. +# +# Important for running: +# +# (1) You need a POSIX-compliant shell to run this script. If your /bin/sh is +# noncompliant, but you have some other compliant shell such as ksh or +# bash, then to run this script, type that shell name before the whole +# command line, like: +# +# ksh Gradle +# +# Busybox and similar reduced shells will NOT work, because this script +# requires all of these POSIX shell features: +# * functions; +# * expansions «$var», «${var}», «${var:-default}», «${var+SET}», +# «${var#prefix}», «${var%suffix}», and «$( cmd )»; +# * compound commands having a testable exit status, especially «case»; +# * various built-in commands including «command», «set», and «ulimit». +# +# Important for patching: +# +# (2) This script targets any POSIX shell, so it avoids extensions provided +# by Bash, Ksh, etc; in particular arrays are avoided. +# +# The "traditional" practice of packing multiple parameters into a +# space-separated string is a well documented source of bugs and security +# problems, so this is (mostly) avoided, by progressively accumulating +# options in "$@", and eventually passing that to Java. +# +# Where the inherited environment variables (DEFAULT_JVM_OPTS, JAVA_OPTS, +# and GRADLE_OPTS) rely on word-splitting, this is performed explicitly; +# see the in-line comments for details. +# +# There are tweaks for specific operating systems such as AIX, CygWin, +# Darwin, MinGW, and NonStop. +# +# (3) This script is generated from the Groovy template +# https://github.com/gradle/gradle/blob/master/subprojects/plugins/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt +# within the Gradle project. +# +# You can find Gradle at https://github.com/gradle/gradle/. +# ############################################################################## -# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. -DEFAULT_JVM_OPTS="" +# Attempt to set APP_HOME + +# Resolve links: $0 may be a link +app_path=$0 + +# Need this for daisy-chained symlinks. +while + APP_HOME=${app_path%"${app_path##*/}"} # leaves a trailing /; empty if no leading path + [ -h "$app_path" ] +do + ls=$( ls -ld "$app_path" ) + link=${ls#*' -> '} + case $link in #( + /*) app_path=$link ;; #( + *) app_path=$APP_HOME$link ;; + esac +done + +APP_HOME=$( cd "${APP_HOME:-./}" && pwd -P ) || exit APP_NAME="Gradle" -APP_BASE_NAME=`basename "$0"` +APP_BASE_NAME=${0##*/} + +# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' # Use the maximum available, or set MAX_FD != -1 to use that value. -MAX_FD="maximum" +MAX_FD=maximum -warn ( ) { +warn () { echo "$*" -} +} >&2 -die ( ) { +die () { echo echo "$*" echo exit 1 -} +} >&2 # OS specific support (must be 'true' or 'false'). cygwin=false msys=false darwin=false -case "`uname`" in - CYGWIN* ) - cygwin=true - ;; - Darwin* ) - darwin=true - ;; - MINGW* ) - msys=true - ;; +nonstop=false +case "$( uname )" in #( + CYGWIN* ) cygwin=true ;; #( + Darwin* ) darwin=true ;; #( + MSYS* | MINGW* ) msys=true ;; #( + NONSTOP* ) nonstop=true ;; esac -# Attempt to set APP_HOME -# Resolve links: $0 may be a link -PRG="$0" -# Need this for relative symlinks. -while [ -h "$PRG" ] ; do - ls=`ls -ld "$PRG"` - link=`expr "$ls" : '.*-> \(.*\)$'` - if expr "$link" : '/.*' > /dev/null; then - PRG="$link" - else - PRG=`dirname "$PRG"`"/$link" - fi -done -SAVED="`pwd`" -cd "`dirname \"$PRG\"`/" >/dev/null -APP_HOME="`pwd -P`" -cd "$SAVED" >/dev/null - CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar + # Determine the Java command to use to start the JVM. if [ -n "$JAVA_HOME" ] ; then if [ -x "$JAVA_HOME/jre/sh/java" ] ; then # IBM's JDK on AIX uses strange locations for the executables - JAVACMD="$JAVA_HOME/jre/sh/java" + JAVACMD=$JAVA_HOME/jre/sh/java else - JAVACMD="$JAVA_HOME/bin/java" + JAVACMD=$JAVA_HOME/bin/java fi if [ ! -x "$JAVACMD" ] ; then die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME @@ -77,7 +132,7 @@ Please set the JAVA_HOME variable in your environment to match the location of your Java installation." fi else - JAVACMD="java" + JAVACMD=java which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. Please set the JAVA_HOME variable in your environment to match the @@ -85,76 +140,95 @@ location of your Java installation." fi # Increase the maximum file descriptors if we can. -if [ "$cygwin" = "false" -a "$darwin" = "false" ] ; then - MAX_FD_LIMIT=`ulimit -H -n` - if [ $? -eq 0 ] ; then - if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then - MAX_FD="$MAX_FD_LIMIT" - fi - ulimit -n $MAX_FD - if [ $? -ne 0 ] ; then - warn "Could not set maximum file descriptor limit: $MAX_FD" - fi - else - warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT" - fi +if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then + case $MAX_FD in #( + max*) + MAX_FD=$( ulimit -H -n ) || + warn "Could not query maximum file descriptor limit" + esac + case $MAX_FD in #( + '' | soft) :;; #( + *) + ulimit -n "$MAX_FD" || + warn "Could not set maximum file descriptor limit to $MAX_FD" + esac fi -# For Darwin, add options to specify how the application appears in the dock -if $darwin; then - GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\"" -fi +# Collect all arguments for the java command, stacking in reverse order: +# * args from the command line +# * the main class name +# * -classpath +# * -D...appname settings +# * --module-path (only if needed) +# * DEFAULT_JVM_OPTS, JAVA_OPTS, and GRADLE_OPTS environment variables. + +# For Cygwin or MSYS, switch paths to Windows format before running java +if "$cygwin" || "$msys" ; then + APP_HOME=$( cygpath --path --mixed "$APP_HOME" ) + CLASSPATH=$( cygpath --path --mixed "$CLASSPATH" ) + + JAVACMD=$( cygpath --unix "$JAVACMD" ) -# For Cygwin, switch paths to Windows format before running java -if $cygwin ; then - APP_HOME=`cygpath --path --mixed "$APP_HOME"` - CLASSPATH=`cygpath --path --mixed "$CLASSPATH"` - JAVACMD=`cygpath --unix "$JAVACMD"` - - # We build the pattern for arguments to be converted via cygpath - ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null` - SEP="" - for dir in $ROOTDIRSRAW ; do - ROOTDIRS="$ROOTDIRS$SEP$dir" - SEP="|" - done - OURCYGPATTERN="(^($ROOTDIRS))" - # Add a user-defined pattern to the cygpath arguments - if [ "$GRADLE_CYGPATTERN" != "" ] ; then - OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)" - fi # Now convert the arguments - kludge to limit ourselves to /bin/sh - i=0 - for arg in "$@" ; do - CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -` - CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option - - if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition - eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"` - else - eval `echo args$i`="\"$arg\"" + for arg do + if + case $arg in #( + -*) false ;; # don't mess with options #( + /?*) t=${arg#/} t=/${t%%/*} # looks like a POSIX filepath + [ -e "$t" ] ;; #( + *) false ;; + esac + then + arg=$( cygpath --path --ignore --mixed "$arg" ) fi - i=$((i+1)) + # Roll the args list around exactly as many times as the number of + # args, so each arg winds up back in the position where it started, but + # possibly modified. + # + # NB: a `for` loop captures its iteration list before it begins, so + # changing the positional parameters here affects neither the number of + # iterations, nor the values presented in `arg`. + shift # remove old arg + set -- "$@" "$arg" # push replacement arg done - case $i in - (0) set -- ;; - (1) set -- "$args0" ;; - (2) set -- "$args0" "$args1" ;; - (3) set -- "$args0" "$args1" "$args2" ;; - (4) set -- "$args0" "$args1" "$args2" "$args3" ;; - (5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;; - (6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;; - (7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;; - (8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;; - (9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;; - esac fi -# Split up the JVM_OPTS And GRADLE_OPTS values into an array, following the shell quoting and substitution rules -function splitJvmOpts() { - JVM_OPTS=("$@") -} -eval splitJvmOpts $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS -JVM_OPTS[${#JVM_OPTS[*]}]="-Dorg.gradle.appname=$APP_BASE_NAME" - -exec "$JAVACMD" "${JVM_OPTS[@]}" -classpath "$CLASSPATH" org.gradle.wrapper.GradleWrapperMain "$@" +# Collect all arguments for the java command; +# * $DEFAULT_JVM_OPTS, $JAVA_OPTS, and $GRADLE_OPTS can contain fragments of +# shell script including quotes and variable substitutions, so put them in +# double quotes to make sure that they get re-expanded; and +# * put everything else in single quotes, so that it's not re-expanded. + +set -- \ + "-Dorg.gradle.appname=$APP_BASE_NAME" \ + -classpath "$CLASSPATH" \ + org.gradle.wrapper.GradleWrapperMain \ + "$@" + +# Use "xargs" to parse quoted args. +# +# With -n1 it outputs one arg per line, with the quotes and backslashes removed. +# +# In Bash we could simply go: +# +# readarray ARGS < <( xargs -n1 <<<"$var" ) && +# set -- "${ARGS[@]}" "$@" +# +# but POSIX shell has neither arrays nor command substitution, so instead we +# post-process each arg (as a line of input to sed) to backslash-escape any +# character that might be a shell metacharacter, then use eval to reverse +# that process (while maintaining the separation between arguments), and wrap +# the whole thing up as a single "set" statement. +# +# This will of course break if any of these variables contains a newline or +# an unmatched quote. +# + +eval "set -- $( + printf '%s\n' "$DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS" | + xargs -n1 | + sed ' s~[^-[:alnum:]+,./:=@_]~\\&~g; ' | + tr '\n' ' ' + )" '"$@"' + +exec "$JAVACMD" "$@" diff --git a/gradlew.bat b/gradlew.bat index 5f19212..107acd3 100644 --- a/gradlew.bat +++ b/gradlew.bat @@ -1,3 +1,19 @@ +@rem +@rem Copyright 2015 the original author or authors. +@rem +@rem Licensed under the Apache License, Version 2.0 (the "License"); +@rem you may not use this file except in compliance with the License. +@rem You may obtain a copy of the License at +@rem +@rem https://www.apache.org/licenses/LICENSE-2.0 +@rem +@rem Unless required by applicable law or agreed to in writing, software +@rem distributed under the License is distributed on an "AS IS" BASIS, +@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +@rem See the License for the specific language governing permissions and +@rem limitations under the License. +@rem + @if "%DEBUG%" == "" @echo off @rem ########################################################################## @rem @@ -8,20 +24,23 @@ @rem Set local scope for the variables with windows NT shell if "%OS%"=="Windows_NT" setlocal -@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. -set DEFAULT_JVM_OPTS= - set DIRNAME=%~dp0 if "%DIRNAME%" == "" set DIRNAME=. set APP_BASE_NAME=%~n0 set APP_HOME=%DIRNAME% +@rem Resolve any "." and ".." in APP_HOME to make it shorter. +for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi + +@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m" + @rem Find java.exe if defined JAVA_HOME goto findJavaFromJavaHome set JAVA_EXE=java.exe %JAVA_EXE% -version >NUL 2>&1 -if "%ERRORLEVEL%" == "0" goto init +if "%ERRORLEVEL%" == "0" goto execute echo. echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. @@ -35,7 +54,7 @@ goto fail set JAVA_HOME=%JAVA_HOME:"=% set JAVA_EXE=%JAVA_HOME%/bin/java.exe -if exist "%JAVA_EXE%" goto init +if exist "%JAVA_EXE%" goto execute echo. echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% @@ -45,34 +64,14 @@ echo location of your Java installation. goto fail -:init -@rem Get command-line arguments, handling Windows variants - -if not "%OS%" == "Windows_NT" goto win9xME_args -if "%@eval[2+2]" == "4" goto 4NT_args - -:win9xME_args -@rem Slurp the command line arguments. -set CMD_LINE_ARGS= -set _SKIP=2 - -:win9xME_args_slurp -if "x%~1" == "x" goto execute - -set CMD_LINE_ARGS=%* -goto execute - -:4NT_args -@rem Get arguments from the 4NT Shell from JP Software -set CMD_LINE_ARGS=%$ - :execute @rem Setup the command line set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar + @rem Execute Gradle -"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS% +"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %* :end @rem End local scope for the variables with windows NT shell diff --git a/src/main/deploy/package/windows/coffee.ico b/src/main/deploy/package/windows/coffee.ico new file mode 100644 index 0000000..29d0abd Binary files /dev/null and b/src/main/deploy/package/windows/coffee.ico differ diff --git a/src/main/deploy/package/windows/hello.ico b/src/main/deploy/package/windows/hello.ico deleted file mode 100644 index 319b54a..0000000 Binary files a/src/main/deploy/package/windows/hello.ico and /dev/null differ diff --git a/src/main/java/com/example/DataBean.java b/src/main/java/com/my_company/hellofx/DataBean.java similarity index 94% rename from src/main/java/com/example/DataBean.java rename to src/main/java/com/my_company/hellofx/DataBean.java index bd6ed54..fb6fe10 100644 --- a/src/main/java/com/example/DataBean.java +++ b/src/main/java/com/my_company/hellofx/DataBean.java @@ -1,4 +1,4 @@ -package com.example; +package com.my_company.hellofx; @SuppressWarnings("unused") public class DataBean { diff --git a/src/main/java/com/example/HelloFX.java b/src/main/java/com/my_company/hellofx/HelloFX.java similarity index 94% rename from src/main/java/com/example/HelloFX.java rename to src/main/java/com/my_company/hellofx/HelloFX.java index 73ff679..045a90b 100644 --- a/src/main/java/com/example/HelloFX.java +++ b/src/main/java/com/my_company/hellofx/HelloFX.java @@ -1,4 +1,4 @@ -package com.example; +package com.my_company.hellofx; import com.example.jaxb.Project; import com.ibm.icu.text.RuleBasedNumberFormat; @@ -6,9 +6,9 @@ import javafx.application.Application; import javafx.geometry.Orientation; import javafx.scene.Scene; +import javafx.scene.control.*; import javafx.scene.control.Button; import javafx.scene.control.Label; -import javafx.scene.control.*; import javafx.scene.control.cell.PropertyValueFactory; import javafx.scene.layout.BorderPane; import javafx.scene.layout.FlowPane; @@ -25,16 +25,17 @@ import org.apache.poi.xwpf.usermodel.XWPFParagraph; import org.apache.poi.xwpf.usermodel.XWPFRun; import org.controlsfx.control.HyperlinkLabel; +import org.controlsfx.control.table.TableFilter; import org.w3c.dom.Document; import org.xml.sax.SAXException; import org.xmlunit.builder.DiffBuilder; import org.xmlunit.diff.ComparisonControllers; import org.xmlunit.diff.Diff; -import javax.xml.bind.JAXBContext; -import javax.xml.bind.JAXBException; -import javax.xml.bind.Marshaller; -import javax.xml.bind.Unmarshaller; +import jakarta.xml.bind.JAXBContext; +import jakarta.xml.bind.JAXBException; +import jakarta.xml.bind.Marshaller; +import jakarta.xml.bind.Unmarshaller; import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilderFactory; import javax.xml.parsers.ParserConfigurationException; @@ -48,7 +49,6 @@ import java.util.Locale; import java.util.Map; -@SuppressWarnings("ALL") public class HelloFX extends Application { @Override @@ -301,12 +301,14 @@ Tab getTabControlsFX() { HyperlinkLabel hyperlinkLabel = new HyperlinkLabel("[Link]"); hyperlinkLabel.setOnAction(event -> { - Hyperlink link = (Hyperlink)event.getSource(); - final String str = link == null ? "" : link.getText(); - if ("Link".equals(str)) { + if (event.getSource() == hyperlinkLabel) { Project p = new Project(); p.setInformation("test"); - System.out.println("Link clicked: " + p.toString()); + // System.out.println("Link clicked: " + p.toString()); + Alert alert = new Alert(Alert.AlertType.INFORMATION); + alert.setTitle("Information Dialog"); + alert.setHeaderText("Link clicked: " + p.toString()); + alert.showAndWait(); } }); // Center @@ -332,8 +334,8 @@ TableView getTableView() { tableView.getItems().add(new Person("John", "Doe")); tableView.getItems().add(new Person("Jane", "Deer")); - // Issue Caused by: java.lang.IllegalArgumentException: Invalid URL: Invalid URL or resource not found - // TableFilter tableFilter = TableFilter.forTableView(tableView).apply(); + // add table filter + TableFilter tableFilter = TableFilter.forTableView(tableView).apply(); return tableView; } diff --git a/src/main/java/com/my_company/hellofx/Launcher.java b/src/main/java/com/my_company/hellofx/Launcher.java new file mode 100644 index 0000000..620a9fc --- /dev/null +++ b/src/main/java/com/my_company/hellofx/Launcher.java @@ -0,0 +1,7 @@ +package com.my_company.hellofx; + +public class Launcher { + public static void main(String[] args) { + HelloFX.main(args); + } +} diff --git a/src/main/java/module-info.java b/src/main/java/module-info.java deleted file mode 100644 index 903a063..0000000 --- a/src/main/java/module-info.java +++ /dev/null @@ -1,28 +0,0 @@ -open module com.example { - requires javafx.controls; - // requires javafx.fxml; - - // requires java.xml; - requires java.xml.bind; - requires com.sun.xml.bind; - // requires jakarta.activation; - // requires java.datatransfer; - requires org.xmlunit; - // requires java.logging; - - requires org.controlsfx.controls; - - requires poi.ooxml; - requires jasperreports; - // requires jasperreports.fonts; - requires java.sql; - // requires java.xml.soap; - // requires commons.beanutils; - // requires groovy.all; - // requires java.scripting; - // requires java.management; - - requires java.desktop; - requires EvalEx; - requires com.ibm.icu; -} diff --git a/src/main/resources/foo.xsd b/src/main/schema/foo.xsd similarity index 100% rename from src/main/resources/foo.xsd rename to src/main/schema/foo.xsd diff --git a/src/main/schema/onformel.xsd b/src/main/schema/onformel.xsd new file mode 100644 index 0000000..f3506d9 --- /dev/null +++ b/src/main/schema/onformel.xsd @@ -0,0 +1,2711 @@ + + + + onformel.xsd - ÖNORM A 2063 Formelkatalog + + + ÖNORM A 2063, Ausgabe: 2011-05-01 + +Austausch von Leistungsbeschreibungs-, Elementkatalogs-, Ausschreibungs-, Angebots-, Auftrags- und Abrechnungsdaten in elektronischer Form + +Folgende Schema-Dokumente bilden einen Bestandteil zur Umsetzung der vorliegenden ÖNORM: +– ontypdef.xsd: Typdefinitionen für alle Datenbestände; +– onformel.xsd: Formelkatalog nach Anhang A; +– ontext.xsd: Formatierung der Texte von Vorbemerkungen und Positionen; +– onlb.xsd: Datenbestand LB; +– onpr.xsd: Datenbestand Preise zu einer LB; +– onaek.xsd: Datenbestand AEK; +– onpek.xsd: Datenbestand PEK; +– onlv.xsd: Datenbestand LV; +– onre.xsd: Datenbestand Abrechnung einschließlich Mengenberechnung. + +Weitere Informationen: +http://www.as-institute.at/development/downloads/ + +Copyright © Austrian Standards Institute 2011. + +Austrian Standards Institute/ +Österreichisches Normungsinstitut (ON) +Heinestraße 38, 1020 Wien + + + + + + Formel (alle) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Summe von max. 4 Werten + + + + + + + + + + + + Produkt von max. 4 Werten + + + + + + + + + + + + Produkt von 2 Summen + + + + + + + + + + + + Quotient von 2 Produkten + + + + + + + + + + + + Seite eines rechtwinkeligen Dreiecks (Hypothenuse) + + + + + + + + + + Seite eines rechtwinkeligen Dreiecks (Kathete) + + + + + + + + + + + + + Rechteck + + + + + + + + + + Prisma + + + + + + + + + + + Pyramide + + + + + + + + + + + Pyramidenstumpf + + + + + + + + + + + + + + + Keil + + + + + + + + + + + + Keilstumpf + + + + + + + + + + + + + Grundfläche Trapez aus a, c, h + + + + + + + + + + + + + + + + Trapez aus a, c, h + + + + + + + + + Prisma + + + + + + + + + + Pyramide + + + + + + + + + + Pyramidenstumpf + + + + + + + + + + + + + + + Obelisk + + + + + + + + + + + + + Grundfläche Trapez aus a, b, c, d + + + + + + + + + + + Trapez aus a, b, c, d + + + + + + + + Prisma + + + + + + + + + Pyramide + + + + + + + + + Pyramidenstumpf + + + + + + + + + + + + + + + Grundfläche: Dreieck aus g, h + + + + + + + + + Dreieck aus g, h + + + + + + + + + Prisma + + + + + + + + + + Pyramide + + + + + + + + + + Pyramidenstumpf + + + + + + + + + + + + + + Prisma schief abgeschnitten aus 3 Höhen + + + + + + + + + + Prisma schief abgeschnitten aus Hs + + + + + + + + + + Prisma schief abgeschnitten aus 6 Koten + + + + + + + + + + Prisma schief abgeschnitten aus Schwerpunktkoten + + + + + + + + + + Grundfläche: Dreieck aus a, b, c + + + + + + + + + + Dreieck aus a, b, c + + + + + + + + + Prisma + + + + + + + + + + Pyramide + + + + + + + + + + Pyramidenstumpf + + + + + + + + + + + + + + + Prisma schief abgeschnitten aus 3 Höhen + + + + + + + + + + Prisma schief abgeschnitten aus Hs + + + + + + + + + + Prisma schief abgeschnitten aus 6 Koten + + + + + + + + + + Prisma schief abgeschnitten aus Schwerpunktkoten + + + + + + + + + + Grundfläche: Dreieck aus a, b, Gamma + + + + + + + + + + Dreieck aus a, b, Gamma + + + + + + + + + Prisma + + + + + + + + + + Pyramide + + + + + + + + + + Pyramidenstumpf + + + + + + + + + + + + + + Prisma schief abgeschnitten aus 3 Höhen + + + + + + + + + + Prisma schief abgeschnitten aus Hs + + + + + + + + + + Prisma schief abgeschnitten aus 6 Koten + + + + + + + + + + Prisma schief abgeschnitten aus Schwerpunktkoten + + + + + + + + + + Grundfläche: Dreieck aus a, b, Alpha + + + + + + + + + + Dreieck aus a, b, Alpha + + + + + + + + + Prisma + + + + + + + + + + Pyramide + + + + + + + + + + Pyramidenstumpf + + + + + + + + + + + + + + Prisma schief abgeschnitten aus 3 Höhen + + + + + + + + + + Prisma schief abgeschnitten aus Hs + + + + + + + + + + Prisma schief abgeschnitten aus 6 Koten + + + + + + + + + + Prisma schief abgeschnitten aus Schwerpunktkoten + + + + + + + + + + Grundfläche: Dreieck aus b, Gamma, Alpha + + + + + + + + + + Dreieck aus b, Gamma, Alpha + + + + + + + + + Prisma + + + + + + + + + + Pyramide + + + + + + + + + + Pyramidenstumpf + + + + + + + + + + + Prisma schief abgeschnitten aus 3 Höhen + + + + + + + + + + Prisma schief abgeschnitten aus Hs + + + + + + + + + + Prisma schief abgeschnitten aus 6 Koten + + + + + + + + + + Prisma schief abgeschnitten aus Schwerpunktkoten + + + + + + + + + + Grundfläche: Dreieck aus a, Gamma, Alpha + + + + + + + + + + Dreieck aus a, Gamma, Alpha + + + + + + + + + Prisma + + + + + + + + + + Pyramide + + + + + + + + + + Pyramidenstumpf + + + + + + + + + + + Prisma schief abgeschnitten aus 3 Höhen + + + + + + + + + + Prisma schief abgeschnitten aus Hs + + + + + + + + + + Prisma schief abgeschnitten aus 6 Koten + + + + + + + + + + Prisma schief abgeschnitten aus Schwerpunktkoten + + + + + + + + + + Grundfläche: Regelmäßiges n-Eck, offen + + + + + + + + + + regelm. n-Eck, offen + + + + + + + + + Prisma + + + + + + + + + + Pyramide + + + + + + + + + + Pyramidenstumpf + + + + + + + + + + + Grundfläche: Regelmäßiges n-Eck, geschlossen + + + + + + + + + regelm n-Eck, geschlossen + + + + + + + + + Prisma + + + + + + + + + + Pyramide + + + + + + + + + + Pyramidenstumpf + + + + + + + + + + + Grundfläche: Unregelmäßiges n-Eck + + + + + + + + + + + + + + + + + unregelm n-Eck (Gauß-Elling) + + + + + + + + + Prisma + + + + + + + + + + Pyramide + + + + + + + + + + Prisma, schief abgeschnitten + + + + + + + + + + + + + + + + + + + + + + + Prismatoid + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Profilmassen bei gerader Achse + + + + + + + + + + Profilachsen bei gekrümmter Achse + + + + + + + + + + + Punkthaufen + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Rampe (geneigter Ansatz, geneigte Seiten) + + + + + + + + + + + + + + + + Rampe (lotrechter Ansatz, geneigte Seiten) + + + + + + + + + + + + + + + Rampe (geneigter Ansatz, lotrechte Seiten) + + + + + + + + + + + + + + + Rampe (lotrechter Ansatz, lotrechte Seiten) + + + + + + + + + + + + + + Rampe schräg angesetzt + + + + + + + + + + + + Damm + + + + + + + + + + + + + Grundfläche: Fläche nach Rechteckregel + + + + + + + + + + + + + + + + + + Fläche nach Rechteckregel + + + + + + + + + Prisma + + + + + + + + + + Grundfläche: Fläche nach Trapezregel mit konstanten Abständen + + + + + + + + + + + + + + + + + + Fläche nach Trapezregel, konstante Abstände + + + + + + + + + Prisma + + + + + + + + + + Grundfläche: Fläche nach Trapezregel mit variablen Abständen + + + + + + + + + + + + + + + + + + + Fläche nach Trapezregel, variable Abstände + + + + + + + + + Prisma + + + + + + + + + + Grundfläche: Fläche nach Trapezregel aus Stationsaufnahme + + + + + + + + + + + + + + + + + + Fläche nach Trapezregel aus Stationsaufnahme + + + + + + + + + Prisma (konstante Breite/Tiefe) + + + + + + + + + + Prisma (variable Breite/Tiefe) + + + + + + + + + + + + + + + + + + + + Grundfläche: Fläche nach Simpson + + + + + + + + + + + + + + + + + + Fläche nach Simpson + + + + + + + + + Prisma + + + + + + + + + + Grundfläche: Fläche polar mit konstantem Zentriwinkel + + + + + + + + + + + + + + + + + + Fläche polar mit konstantem Zentriwinkel + + + + + + + + + Prisma + + + + + + + + + + Grundfläche: Fläche polar mit variablem Zentriwinkel + + + + + + + + + + + + + + + + + + + Fläche polar mit variablem Zentriwinkel + + + + + + + + + Prisma + + + + + + + + + + Grundfläche: Kreis + + + + + + + + Kreis + + + + + + + + + Zylinder + + + + + + + + + + Kegel + + + + + + + + + + Kegelstumpf + + + + + + + + + + + Grundfläche: Kreissektor + + + + + + + + + Kreissektor + + + + + + + + + Zylindersektor + + + + + + + + + + Grundfläche: Kreisringsektor + + + + + + + + + + Kreisringsektor + + + + + + + + + Röhrensektor + + + + + + + + + + Grundfläche: Kreissegment aus Phi (Zentriwinkel) + + + + + + + + + Kreissegment aus Phi + + + + + + + + + Zylindersegment + + + + + + + + + + Zylinderhuf + + + + + + + + + + + Grundfläche: Kreissegment aus f (Stichhöhe) + + + + + + + + + Kreissegment aus f + + + + + + + + + Zylindersegment + + + + + + + + + + Grundfläche: Kreiszwickel, rechtwinkelig + + + + + + + + + Kreiszwickel, rechtwinkelig, aus Phi, r + + + + + + + + + Zylinderzwickel + + + + + + + + + + Grundfläche: Kreiszwickel, rechtwinkelig + + + + + + + + + Kreiszwickel, rechtwinkelig, aus a, b + + + + + + + + + Zylinderzwickel + + + + + + + + + + Grundfläche: Kreiszwickel, gleichschenkelig + + + + + + + + + Kreiszwickel, gleichschenkelig + + + + + + + + + Zylinderzwickel + + + + + + + + + + Grundfläche: Ellipse + + + + + + + + + Ellipse + + + + + + + + + Zylinder + + + + + + + + + + Kübel + + + + + + + + + + + + Grundfläche: Parabel + + + + + + + + + + Parabel + + + + + + + + + Prisma + + + + + + + + + + Grundfläche: Parabelzwickel + + + + + + + + + + Parabelzwickel, konkaves Segment + + + + + + + + + Prisma + + + + + + + + + + unregelm. n-Eck mit Segmenten aus (x, y) + + + + + Anzahl der Polygonpunkte + + + + + Anzahl der Kreissegmente + + + + + Anzahl der Parabelsegemente + + + + + + + + + + + + + + + + + + + + + + Lage des Segments: 'L' oder 'R' + + + + + + + + + + + Art des Bestimmungsstücks: 'F', 'R', 'T' oder 'M' + + + + + + + + + + + + + Bestimmungsstück (nicht bei KZK = 'M') + + + + + Lage des Kreismittelpunkts: 'L', 'R' oder ' ' bei KZK = 'M' + + + + + + + + + + + + + + + + + + + + Lage des Segments: 'L' oder 'R' + + + + + + + + + + + Art des Bestimmungsstücks: 'F' oder 'T' + + + + + + + + + + + Bestimmungsstück + + + + + + + + + + + unregelm. n-Eck mit Segmenten aus (r, Phi) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Trapez + + + + + + + + + + + + Dreieck mit Spitze außen + + + + + + + + + + + Dreieck mit Spitze innen + + + + + + + + + + + unregelm. n-Eck + + + + + + + + + + + + + + + + + + + + + + kreisförmiger Ring + + + + + + + + + + Kugel + + + + + + + + + Kugelausschnitt + + + + + + + + + + + + + Kugelschicht + + + + + + + + + + + + + + Ellipsoid + + + + + + + + + + + Paraboloid + + + + + + + + + + parabolisches Faß + + + + + + + + + + + Grundfläche: Rechteck + + + + + + + + + Rechteck - Umfang + + + + + + + + + Rechteck - Prismenmantel + + + + + + + + + + Grundfläche: Trapez + + + + + + + + + + Trapez - Umfang + + + + + + + + + Trapez - Prismenmantel + + + + + + + + + + Allg. Prismenmantel + + + + + + + + + + + + Summe von Strecken + + + + + + + + + + + + + + + + + + Grundfläche: Kreisbogen + + + + + + + + + Kreisbogen + + + + + + + + + Kreisbogenmantel + + + + + + + + + + Kegelmantel + + + + + + + + + + Kegelstumpfmantel + + + + + + + + + + + Zylinderhufmantel + + + + + + + + + + Grundfläche: Ellipse + + + + + + + + + Ellipse - Umfang + + + + + + + + + Ellipse - Zylindermantel + + + + + + + + + + Grundfläche: Parabel + + + + + + + + + quadr. Parabel - Bogen + + + + + + + + + quadr. Parabel - Mantel über dem Bogen + + + + + + + + + + Kugeloberfläche + + + + + + + + + Kugelschichtmantel + + + + + + + + + + + + + + + + Grundfläche: Schraube + + + + + + + + + + + Schraubenlinie + + + + + + + + + Schraubenfläche + + + + + + + + ===Allgemeine Teile + + + + Höhen für schief abgeschnittenes Prisma + + + + + + + + + + Höhe für schief abgeschnittenes Prisma + + + + + + + + Höhen für schief abgeschnittenes Prisma + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Höhen für schief abgeschnittenes Prisma + + + + + + + + + + + + + + + + Höhe + + + + + + + + + + + + + + Multiplikator + + + + + + + + X und Y Koordinaten eines Punktes + + + + + + + + + Variablenbezeichner + + + + + + + + + + Formelwert - Zahl, optional Variable + + + + + + Referenz auf eine Variable, zusätzlich Angabe des referenzierten Wertes + + + + + + + + Formelwert - Winkel - Zahl, optional Variable + + + + + + + + + + + + + + Referenz auf eine Variable, zusätzlich Angabe des referenzierten Wertes + + + + + + diff --git a/src/main/schema/onlv.xsd b/src/main/schema/onlv.xsd new file mode 100644 index 0000000..cb87a63 --- /dev/null +++ b/src/main/schema/onlv.xsd @@ -0,0 +1,423 @@ + + + + + onlv.xsd - ÖNORM A 2063 Datenbestand LV + + + ÖNORM A 2063, Ausgabe: 2011-05-01 + +Austausch von Leistungsbeschreibungs-, Elementkatalogs-, Ausschreibungs-, Angebots-, Auftrags- und Abrechnungsdaten in elektronischer Form + +Folgende Schema-Dokumente bilden einen Bestandteil zur Umsetzung der vorliegenden ÖNORM: +– ontypdef.xsd: Typdefinitionen für alle Datenbestände; +– onformel.xsd: Formelkatalog nach Anhang A; +– ontext.xsd: Formatierung der Texte von Vorbemerkungen und Positionen; +– onlb.xsd: Datenbestand LB; +– onpr.xsd: Datenbestand Preise zu einer LB; +– onaek.xsd: Datenbestand AEK; +– onpek.xsd: Datenbestand PEK; +– onlv.xsd: Datenbestand LV; +– onre.xsd: Datenbestand Abrechnung einschließlich Mengenberechnung. + +Weitere Informationen: +http://www.as-institute.at/development/downloads/ + +Copyright © Austrian Standards Institute 2011. + +Austrian Standards Institute/ +Österreichisches Normungsinstitut (ON) +Heinestraße 38, 1020 Wien + + + + + + Daten je Position/Wählbare Vorbemerkung + + + + + + + + Liste Positionen und Wählbare Vorbemerkungen (LV ohne Gliederung) + + + + + + + + + + + + + + + + + + + + + + + + + + Liste Positionen und Wählbare Vorbemerkungen (LV mit Gliederung; geteilte oder ungeteilte) + + + + + + + + 2-stellige Nr. + + + + + Entweder n-mal ungeteilte Positionen mit Mehrfachverwendung oder ein Grundtext und n-mal Folgepositionen + + + + + + + + + Leerstring wenn Position ohne Mehrfachverwendung + + + + + + + + + + + + + + + Leerstring wenn Position ohne Mehrfachverwendung + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Liste ULG + + + + + + + + + + + + + Nicht im Entwurfs-LV und Ausschreibungs-LV + + + + + + + + + + + + + + + + + + Liste LG + + + + + + + + + + + + + + Nicht im Entwurfs-LV und Ausschreibungs-LV + + + + + + + + + + + + + + + + + + Liste OG + + + + + + + + + + + + + Nicht im Entwurfs-LV und Ausschreibungs-LV + + + + + + + + + + + + + + + + + + Liste HG + + + + + + + + + + + + + Nicht im Entwurfs-LV und Ausschreibungs-LV + + + + + + + + + + + + + + + + + + LV-Body + + + + + + LV mit Gliederung; Gliederung HG, OG, LG, ULG, Posnr + + + + + + + + LV mit Gliederung; Gliederung OG, LG, ULG, Posnr + + + + + + + + LV mit Gliederung; Gliederung LG, ULG, Posnr + + + + + + + + LV ohne Gliederung; Posnr + + + + + + + + + + Nicht im Entwurfs-LV und Ausschreibungs-LV + + + + + Nicht im Entwurfs-LV und Ausschreibungs-LV + + + + + + + + + + LV-Header + + + + + + + + Globale Hilfsberechnungen für die Mengenermittlung; Optional im Entwurfs-LV und Kostenschätzungs-LV, sonst nicht erlaubt + + + + + + + + Root + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/main/schema/ontext.xsd b/src/main/schema/ontext.xsd new file mode 100644 index 0000000..c11465d --- /dev/null +++ b/src/main/schema/ontext.xsd @@ -0,0 +1,311 @@ + + + + ontext.xsd - ÖNORM A 2063 Formatierter Text (orientiert an XHTML Modularization, http://www.w3.org/TR/xhtml-modularization/) + + + ÖNORM A 2063, Ausgabe: 2011-05-01 + +Austausch von Leistungsbeschreibungs-, Elementkatalogs-, Ausschreibungs-, Angebots-, Auftrags- und Abrechnungsdaten in elektronischer Form + +Folgende Schema-Dokumente bilden einen Bestandteil zur Umsetzung der vorliegenden ÖNORM: +– ontypdef.xsd: Typdefinitionen für alle Datenbestände; +– onformel.xsd: Formelkatalog nach Anhang A; +– ontext.xsd: Formatierung der Texte von Vorbemerkungen und Positionen; +– onlb.xsd: Datenbestand LB; +– onpr.xsd: Datenbestand Preise zu einer LB; +– onaek.xsd: Datenbestand AEK; +– onpek.xsd: Datenbestand PEK; +– onlv.xsd: Datenbestand LV; +– onre.xsd: Datenbestand Abrechnung einschließlich Mengenberechnung. + +Weitere Informationen: +http://www.as-institute.at/development/downloads/ + +Copyright © Austrian Standards Institute 2011. + +Austrian Standards Institute/ +Österreichisches Normungsinstitut (ON) +Heinestraße 38, 1020 Wien + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/main/schema/ontypdef.xsd b/src/main/schema/ontypdef.xsd new file mode 100644 index 0000000..c8eb9e4 --- /dev/null +++ b/src/main/schema/ontypdef.xsd @@ -0,0 +1,2537 @@ + + + + ontypdef.xsd - ÖNORM A 2063 Typdefinitionen für alle Datenbestände + + + ÖNORM A 2063, Ausgabe: 2011-05-01 + +Austausch von Leistungsbeschreibungs-, Elementkatalogs-, Ausschreibungs-, Angebots-, Auftrags- und Abrechnungsdaten in elektronischer Form + +Folgende Schema-Dokumente bilden einen Bestandteil zur Umsetzung der vorliegenden ÖNORM: +– ontypdef.xsd: Typdefinitionen für alle Datenbestände; +– onformel.xsd: Formelkatalog nach Anhang A; +– ontext.xsd: Formatierung der Texte von Vorbemerkungen und Positionen; +– onlb.xsd: Datenbestand LB; +– onpr.xsd: Datenbestand Preise zu einer LB; +– onaek.xsd: Datenbestand AEK; +– onpek.xsd: Datenbestand PEK; +– onlv.xsd: Datenbestand LV; +– onre.xsd: Datenbestand Abrechnung einschließlich Mengenberechnung. + +Weitere Informationen: +http://www.as-institute.at/development/downloads/ + +Copyright © Austrian Standards Institute 2011. + +Austrian Standards Institute/ +Österreichisches Normungsinstitut (ON) +Heinestraße 38, 1020 Wien + + + + + + + + + Allgemeiner einzeiliger Text + + + + + + + + Allgemeiner einzeiliger Text, Min. Länge 1, Max.Länge 60 + + + + + + + + + Allgemeiner mehrzeiliger Text ohne Formatierungen, nur Zeilenumbruch + + + + + + + + Allgemeiner mehrzeiliger Text mit Formatierungen + + + + + + + + Mehrzeiliger Text mit Formatierungen und Lücken + + + + + + + + Datum + + + + + + Datum und Uhrzeit + + + + + + Bild-Datei (Binärdaten); Max. Größe festgelegt. + + + + + + + + Bild-Datei mit Angabe des Grafikformates + + + + + + + + + Universally Unique Identifier (UUID) nach ISO/IEC 9834-8 + + + + + + + + + alphanum[*] + Ziffern/Großbuchstaben, für Ordnungsbegriffe + + + + + + + + alphanum[*] + Ziffern/Großbuchstaben/Punkt/Bindestrich, für Ordnungsbegriffe + + + + + + + + alphanum[*] + Nur Großbuchstaben, für Ordnungsbegriffe + + + + + + + + Geldbetrag, Preis, Summe (9 999 999 999,99) + + + + + + + + + Allgemeiner Prozentsatz (-99,99 bis 999,99) + + + + + + + + + Umsatzsteuersatz in Prozent (0 bis 99,99) + + + + + + + + + Umsatzsteuerkennzeichen (0-9) + + + + + + + + + Währungskennzeichen nach ISO 4217 + + + + + + + + Adresse + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Dreibuchstabiges Länderkürzel nach ISO 3166-1 (ALPHA-3) + + + + + + + + + + + + Kontaktkommunikation: Adresse, Tel, Fax, E-Mail, www, Zusatzinfo + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Firma + + + + + + + + + + Person + + + + + + + + + + Kontakt, Firma oder Person + + + + + + + + + + + + + + + Allgemeine Metadaten für jeden ÖNORM-Datenträger + + + + + + + + Datum und Uhrzeit beim Erstellen der XML-Datei + + + + + Dateiname beim Erstellen der XML-Datei + + + + + Erstellt mit Programmsystem + + + + + Version des Programmsystems + + + + + + + + + + + + HG-Nummer + + + + + + + + OG-Nummer + + + + + + + + LG-Nummer + + + + + + + + ULG-Nummer + + + + + + + + Grundtext-Nummer oder ungeteilte Pos, 2stellig + + + + + + + + Kennzeichen für Folgetextposition (A-Z) + + + + + + + + Kennzeichen für Mehrfachverwendung (1-9) + + + + + + + + + Kennzeichen für Mehrfachverwendung (1-9), optional + + + + + + + + Positionsnummer frei, 1-12stellig, für LV ohne Gliederung + + + + + + + + + Überschrift (HG,OG,LG,ULG) + + + + + + Stichwort (optional mit Stichwortlücke) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Langtext ohne Lücken + + + + + + + + Langtext mit Ausschreiber- und Bieterlücken + + + + + + + + Mengeneinheit + + + + + + + + + + + + + + + + + + + + + + + + + Kennzeichen für Ergänzungs-LB/Freiformulierte Position (+, Z) + + + + + + + + + Kennzeichen für hierarchisch übergeordnete frei formulierte Vorbemerkungen (V) + + + + + + + + Preisanteilmodell: Preisanteile oder nur Preis + + + + + + Aufgliederung in Preisanteile + + + + + + wenn nicht angegegeben, gilt "Lohn" und "Sonstiges" + + + + + + + + + + + + + + + + + + + + + + + + + + + + Keine Aufgliederung in Preisanteile + + + + + + + + Betrag mit Aufgliederung in Preisanteile (Lo, So, Gesamt) + + + + + Wenn Aufgliederung in Preisanteile erfolgt + + + + + + + + + + + Eindeutige ID der Grafik (Universally Unique Identifier (UUID) nach ISO/IEC 9834-8) + + + + + + Grafikformat + + + + + + + + + + Definition einer Grafik + + + + + + + + + + + Liste aller Grafiken + + + + + + + + + + + + + + + + + + Liste von Links auf Grafiken + + + + + + + + + + + + + + + + + + + + + + + + LB-Kennung (1-10stellig), Beispiel "BMWA-HB" + + + + + + + + + + LB-Versionsnummer (1-999) + + + + + + + + + Status Entwurf oder freigegeben + + + + + + + + + Kommentar zu einer LB-Position + + + + + + + + Umfang der inhaltlichen Änderung + + + + + + + + + Änderungskennzeichnungen + + + + + Versions-Nummer der +LB, bei der dieser Text erstmals aufgenommen oder zuletzt geändert wurde + + + + + Anzugeben, wenn inhaltlich gegenüber der letzten Version geändert + + + + + + + Anzugeben bei Umnummerierung + + + + + + + Referenz auf einen LB-Ordnungsbegriff + + + + + + + + + + + LB-Kenndaten + + + + + + + + + + + + Anzugeben bei Teilausgaben einer LB + + + + + + + Kenndaten des LB-Preisdatenbestandes + + + + + + + + + + Preisgrundlagenkommentar + + + + + + + + + Daten zu LB-SVB, LG, ULG, WVB, POS + + + + + + + + Anzugeben, wenn der Text aus der Ergänzungs-LB („+“) stammt + + + + + Anzugeben nur bei LB-Teilausgaben bei allen LG, ULG, WVB, POS, die nicht in dieser Teilausgabe enthalten sind + + + + + + + Daten zu LB-LG, ULG + + + + + + Formatierter Text entsprechend 8.4, jedoch ohne die Formatierungen al und bl + + + + + + + Daten zu LB-WVB, POS + + + + + + Formatierter Text entsprechend 8.4 + + + + + + + Daten zu LB-POS + + + + + + + + LB-Ständige Vorbemerkung + + + + + Formatierter Text entsprechend 8.4, jedoch ohne die Formatierungen al und bl + + + + + + + + LB-LG + + + + + + + + + LB-ULG + + + + + + + + + LB-Grundtext + + + + + Formatierter Text entsprechend 8.4, jedoch ohne die Formatierungen al und bl + + + + + + Anzugeben, wenn der Text aus der Ergänzungs-LB („+“) stammt + + + + + + + LB-Wählbare Vorbemerkung oder LB-Position + + + + + + + Nicht bei Wählbarer Vorbemerkung + + + + + + + LB-Element mit wenigen redundanten Daten, für LB-Preise + + + + + + Nicht bei LG,ULG,WVB + + + + + + + + + Bieternummer (1-999) + + + + + + + + + Nummer Alternativ- oder Abänderungsangebot (1-99) + + + + + + + + + LV-Kenndaten Basiselemente + + + + + + + + + + + + + + + + LV-Kenndaten für Entwurfs-LV + + + + + + + + LV-Kenndaten für Kostenschätzungs-LV + + + + + + Nicht im Entwurfs-LV + + + + + + + LV-Kenndaten für Ausschreibungs-LV + + + + + + + Nicht im Entwurfs-LV + + + + + Nicht im Entwurfs-LV und Kostenschätzungs-LV + + + + + + + + LV-Kenndaten für Angebots-LV, Alternativangebots-LV, Abänderungsangebots-LV + + + + + + + Nicht im Entwurfs-LV + + + + + Nicht im Entwurfs-LV und Kostenschätzungs-LV + + + + + + Nicht im Entwurfs- +LV, Kostenschätzungs-LV und Ausschreibungs-LV + + + + + + + LV-Kenndaten für Vertrags-LV + + + + + + + Nicht im Entwurfs-LV + + + + + Nicht im Entwurfs-LV und Kostenschätzungs-LV + + + + + + Nicht im Entwurfs- +LV, Kostenschätzungs-LV und Ausschreibungs-LV + + + + + Nur im Vertrags-LV und Abrechnungs-LV; optional + + + + + Nur bei Vertrags-LV, Abrechnungs-LV und Zusatzangebots-LV + + + + + + + LV-Kenndaten für Abrechnungs-LV + + + + + + + Nicht im Entwurfs-LV + + + + + Nicht im Entwurfs-LV und Kostenschätzungs-LV + + + + + + Nicht im Entwurfs- +LV, Kostenschätzungs-LV und Ausschreibungs-LV + + + + + Nur im Vertrags-LV und Abrechnungs-LV; optional + + + + + Nur bei Vertrags-LV, Abrechnungs-LV und Zusatzangebots-LV + + + + + + + LV-Kenndaten für Zusatzangebots-LV + + + + + + + Nicht im Entwurfs-LV + + + + + Nicht im Entwurfs-LV und Kostenschätzungs-LV + + + + + + Nicht im Entwurfs- +LV, Kostenschätzungs-LV und Ausschreibungs-LV + + + + + Nur bei Vertrags-LV, Abrechnungs-LV und Zusatzangebots-LV + + + + + + + + LV-Menge (9 999 999 999,99) + + + + + + + + + Berechnete Menge, Abrechnungsmenge (9 999 999 999,999) + + + + + + + + + Berechnete Mengen mit Mengenermittlung, optional je AKZ + + + + + Optional im Entwurfs-LV und Kostenschätzungs-LV, sonst nicht erlaubt + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Notiz zu einer LV-Position + + + + + + + + Kennzeichen für Wesentliche Position + + + + + + + + Kennzeichen für garantierte Angebotssumme + + + + + + + + Variantennummer (0-9) + + + + + + + + + Zuordnungskennzeichen (ZZ) + + + + + + + + PZZV + + + + + In Summe berücksichtigt; Kennzeichen für Positionsart nicht vorhanden + + + + + + + + + + Normalposition oder beauftragte Position einer Variante; in Normalangebotssumme berücksichtigt; Kennzeichen für Positionsart nicht vorhanden + + + + + + + + + + + Wahlposition oder nicht beauftragte Normalposition einer Variante; in Normalangebotssumme nicht berücksichtigt; Kennzeichen für Positionsart "W" + + + + + + + + + + + In Summe nicht berücksichtigt; Kennzeichen für Positionsart "E" + + + + + + + + + + + + Nummer einer Variantenzusammenstellung + + + + + + + + + Tabelle der Variantenzusammenstellungen + + + + + Erforderlich wenn im LV Varianten definiert sind + + + + + + + + + + + + + + + + + + + + + + + + + + + + Nicht im Entwurfs-LV und Ausschreibungs-LV + + + + + + + + + + + + + + + + + + Kennzeichen für Bildung von Teilsummen + + + + + + + + + Referenz auf einen LV-Ordnungsbegriff + + + + Abhängig von LV-Gliederung + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Preiserstellungsverfahren + + + + + + + + + + Auswertungskennzeichen + + + + + + + + + Auswertungskennzeichen Bezeichnung + + + + + + Liste aller AKZ + + + + + Optional im Entwurfs-LV und Kostenschätzungs-LV; Optional in der Abrechnung + + + + + + + + + + + + + + + + + + + + + + + + Leistungsteil für Preisumrechnung (1-99) + + + + + + + + + Zuordnungsinfo zu Index oder Warenkorb + + + + + Auch Angabe BMF und USK siehe ÖNORM B2111:2007 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Liste aller Leistungsteile für Preisumrechnung + + + + + + + + + + + Ohne Aufgliederung in Preisanteile + + + + + Bei Aufgliederung in Preisanteile + + + + + + + + + + + + + + + + + + + + + Teilangebotskennzeichen (1-99) + + + + + + + + + Tabelle der Teilangebote mit ihren Summen + + + + + Erforderlich wenn im LV Teilangebotskennzeichen zugeordnet sind + + + + + + + + Nicht im Entwurfs-LV und Ausschreibungs-LV + + + + + + + Erforderlich wenn im LV Varianten definiert sind + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Zugelassene Nachlässe und Aufschläge + + + + + Definiert, wo im LV Nachlässe/Aufschläge zugelassen sind + + + + + + + Im gesamten LV sind Nachlässe und Aufschläge nur auf die Gruppensummen, nicht auf einzelne Preisanteile der Gruppensummen zulässig + + + + + Im gesamten LV sind Nachlässe und Aufschläge nur auf die einzelnen Preisanteile der Gruppensummen, nicht auf die Gruppensumme gesamt zulässig + + + + + + + + + Element ist auszugeben, wenn Nachlässe/Aufschläge auf Ebene LV-Summe zugelassen sind + + + + + Element ist auszugeben, wenn Nachlässe/Aufschläge auf Ebene HG-Summen zugelassen sind + + + + + Element ist auszugeben, wenn Nachlässe/Aufschläge auf Ebene OG-Summen zugelassen sind + + + + + Element ist auszugeben, wenn Nachlässe/Aufschläge auf Ebene LG-Summen zugelassen sind + + + + + Element ist auszugeben, wenn Nachlässe/Aufschläge auf Ebene ULG-Summen zugelassen sind + + + + + + + + + + + + + Nachlass/Aufschlag + + + + + Je nachdem, ob Nachlässe auf Preisanteile oder die gesamte Summe zugelassen sind. + + + + + + + + + + Ergebnisbetrag des prozentuellen N/A + + + + + + + HG-, OG-, LG-Summe, auch LV-Summe und Rechnungssumme + + + + + Summe inkl. aller vorangegangenen Nachlässe und Aufschläge + + + + + Nachlässe und Aufschläge auf dieser Hierarchie-Stufe; zulässig nur, wenn in Element "zugelassenenachlaesse" erlaubt + + + + + Summe inkl. der eingerechneten Nachlässe und Aufschläge auf dieser Hierarchie-Stufe + + + + + + + LV-Summendaten + + + + + Summe Positionen ohne Berücksichtigung von Nachlässen und Aufschlägen + + + + + Die Summe aller Nachlässe und Aufschläge + + + + + + + Wenn 1 USt-Satz für das gesamte LV gilt + + + + + + + + + + + Wenn mehrere USt-Sätze verwendet werden (wenn bei den LV-Positionen USt-Kennzeichen zugeordnet sind) + + + + + + Für jedes in den LV-Positionen verwendete USt-Kennzeichen + + + + + + + + + + + + + + + + + + + + + + Angebotspreis bzw. Auftragssumme + + + + + + + + Nummer Zusatzangebots-LV (1-999) + + + + + + + + + Zusatzangebots-LV-Position: Beantragt, Genehmigt oder Abgelehnt + + + + + + + + + + Zusatzangebots-LV-Position: Statusinformationen + + + + + + + + + + + Daten zu LV-LG, ULG, WVB, POS + + + + + Anzugeben, wenn der Text aus einer Ergänzungs-LB („+“) übernommen oder frei formuliert („Z“) wurde + + + + + Wird eine Vorbemerkung einer Gruppe frei formuliert, müssen alle hierarchisch unverändert übernommenen untergeordneten Gruppen, Vorbemerkungen und Positionen mit Vorbemerkungskennzeichen "V" gekennzeichnet werden + + + + + + Nur bei Entwurfs-LV und Kostenschätzungs-LV + + + + + + + Daten zu LV-LG, ULG + + + + + + Formatierter Text entsprechend 8.4, jedoch ohne die Formatierungen al und bl + + + + + + + Daten zu LV-WVB, POS + + + + + + Formatierter Text entsprechend 8.4 + + + + + Nur bei Abrechnungs-LV und Zusatzangebots-LV + + + + + + + Daten zu LV-POS + + + + + + + Anzugeben bei wesentlicher Positiion + + + + + Anzugeben bei Positionen, die einer garantierten Angebotssumme unterliegen (Nur im Alternativangebots-LV, Vertrags-LV, Abrechnungs-LV) + + + + + Nur wenn Teilangebote vorgesehen sind + + + + + Leistungsteil für Preisumrechnung + + + + + Für die mögliche Bildung von Teilsummen im LV ohne Gliederung + + + + + + + + Bei nicht angebotenen Positionen im Preisangebotsverfahren sowie im Entwurfs-LV und im Ausschreibungs-LV bei Teilen mit Preisangebotsverfahren + + + + + + Preis/EH + + + + + + Nicht im Entwurfs-LV und im Ausschreibungs-LV; nur wenn mehr als ein USt-Satz im LV vorgesehen wird + + + + + + + + + LV-Ständige Vorbemerkung + + + + + Formatierter Text entsprechend 8.4, jedoch ohne die Formatierungen al und bl + + + + + + + + LV-HG + + + + + + + + LV-OG + + + + + + + + LV-LG + + + + + + + + + LV-ULG + + + + + + + + + LV-Grundtext + + + + + Formatierter Text entsprechend 8.4, jedoch ohne die Formatierungen al und bl + + + + + Anzugeben, wenn der Text aus einer Ergänzungs-LB („+“) übernommen oder frei formuliert („Z“) wurde + + + + + + + LV-Wählbare Vorbemerkung oder LV-Position + + + + + + + Nicht bei Wählbarer Vorbemerkung + + + + + + + LV-Element mit wenigen redundanten Daten, für Rechnung + + + + + Überschrift bei LG, ULG; Stichwort (optional mit Stichwortlücke) bei Positionen, Wählbaren Vorbemerkungen + + + + + Vorbemerkung bei LG, ULG; Langtext bei Positionen, Wählbaren Vorbemerkungen + + + + + Nur bei Pos. mit Menge, nicht bei LG usw. + + + + + Preis/EH + + + + + Nicht im Entwurfs-LV und im Ausschreibungs-LV; nur wenn mehr als ein USt-Satz im LV vorgesehen wird + + + + + Leistungsteil für Preisumrechnung + + + + + Für die mögliche Bildung von Teilsummen im LV ohne Gliederung + + + + + + + + Daten je OG bzw. für das gesamte LV bei LV ohne HG/OG + + + + + + + Anm.: Bei Teilen ohne Bezug zu einer LB ist hier FF999 anzugeben + + + + + + + + + + + + + Kommentar + + + + + + + + Frei formulierter Rechenansatz + + + + + + + + Formelergebnis, auch Hilfsergebnis + + + + + + + + + + + + + Teilergebnis + + + + + + + + + + Mengenberechnung allgemein, für Mengenberechnung in LV und Rechnung + + + + + + + + + + + Hilfsberechnungen allgemein, für Hilfsberechnungen in LV und Rechnung + + + + + + + + + + + Leistungszeitraum (JJJJ-MM) + + + + + + Preisperiode (0-999) + + + + + + + + + Umrechnungsprozentsatz (-99,99 bis 999,99) + + + + + + Umrechungsprozentsätze + + + + + Erforderlich wenn veränderliche Preise vereinbart werden + + + + + + + + + + + + + + + Abhängig vom gewählten Preisanteilmodell + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Ausmaßblattnummer + + + + + + + + + Ausmaßblattbezeichnung + + + + + + Fortlaufende Rechnungsnummer (1-99999) + + + + + + + + + Allgemeine Rechnungskenndaten + + + + + + + + + + + + Identifikations-Nummer, inkl. aller Hierarchiestufen (Ohne Trennzeichen für Gliederungsebenen) + + + + + + + + + Kennung des Elementkatalogs + + + + + + Versionsnummer des Elementkatalogs + + + + + + Status Entwurf oder freigegeben + + + + + + Elementkatalog-Kenndaten AEK + + + + + + + + + + + + + + + + Elementkatalog-Kenndaten PEK + + + + + + + + + + + + + Elementkatalog-Kenndaten Preiskenndaten (AEK und PEK) + + + + + + + + + + + Kennzeichen für aus einem AEK abgeändert ("A") übernommene oder frei formulierte ("F") Elemente oder Elementgruppen + + + + + + + + + Menge eines verwendeten Elements im PEK + + + + + + + + Kennung eines Zuordnungskatalogs (Key) + + + + + + + + + Art des Katalogs (CAD-Elemente oder anderes Gliederungssystem) + + + + + + + + + Nummer eines Eintrags in einem Zuordnungskatalog + + + + + + + + + Liste aller Zuordnungskataloge mit ihren Einträgen (für Verweise auf CAD-Elemente und Zuordnungen zu anderen Gliederungssystemen) + + + + + + + + + + + Katalogbezeichnung + + + + + Art des Katalogs (CAD-Elemente oder anderes Gliederungssystem) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Liste von Links auf Zuordnungskataloge + + + + + Katalogzuordnungen für Verweise auf CAD-Elemente und Zuordnungen zu anderen Gliederungssystemen (z.B. Baugliederung und/oder Leistungsgliederung gemäß ÖNORM B 1801-1). Zuordnungen zu anderen Gliederungssystemen sind bei Elementgruppen nicht erlaubt. + + + + + + Zuordnung zu einem Eintrag eines Katalogs + + + + + + Zugeordneter Eintrag + + + + + + Zuordnungskatalog + + + + + + + + + + + + + + + + + + Basisdaten für Überschrift, Elementgruppe und Element + + + + + + Beschreibender Text (Formatierter Text entsprechend 8.4, jedoch ohne die Formatierungen al und bl) + + + + + + + + Basisdaten für Elementgruppe und Element + + + + + Mengeneinheit + + + + + + + + Eigenschaften Überschrift + + + + + + + + Eigenschaften Elementgruppe + + + + + + + + + + + + + Referenz auf Element oder Elementgruppe aus diesem verwendeten AEK; nur im PEK anzugeben. + + + + + Element oder Elementgruppe + + + + + Im PEK anzugeben, wenn ein AEK-Element oder eine AEK-Elementgruppe mehrfach abgeändert übernommen wurde + + + + + + Ergebnis von berechnungsansatz + + + + + + + + + + + + + Eigenschaften Element + + + + + + + + + + + + + + Anzugeben, wenn eine Komponente aus einer LB übernommen wird oder eine frei formulierte Komponente später in einem LV als frei formulierte Position in eine LB eingegliedert werden soll + + + + + + Referenz nur auf Positionen (mit EH) zulässig + + + + + + Stichwort (optional mit ausgefüllter Stichwortlücke) + + + + + Mengeneinheit + + + + + Optional mit ausgefüllten Lücken + + + + + + + Ergebnis von berechnungsansatz + + + + + + + + + + + + + Ein Eintrag im Elementkatalog (Überschrift, Elementgruppe oder Element) + + + + + + + + diff --git a/src/test/java/com/example/HelloFXTest.java b/src/test/java/com/example/HelloFXTest.java deleted file mode 100644 index 069cc51..0000000 --- a/src/test/java/com/example/HelloFXTest.java +++ /dev/null @@ -1,14 +0,0 @@ -package com.example; - -import static org.junit.Assert.*; - -import org.junit.Test; - -public class HelloFXTest { - - @Test - public void test1() { - assertEquals(1, 1); - } - -} \ No newline at end of file diff --git a/src/test/java/com/my_company/hellofx/HelloFXTest.java b/src/test/java/com/my_company/hellofx/HelloFXTest.java new file mode 100644 index 0000000..3ecc7ae --- /dev/null +++ b/src/test/java/com/my_company/hellofx/HelloFXTest.java @@ -0,0 +1,14 @@ +package com.my_company.hellofx; + +import org.junit.jupiter.api.Test; + +import static org.junit.jupiter.api.Assertions.assertEquals; + +public class HelloFXTest { + + @Test + public void test1() { + assertEquals(1, 1); + } + +} diff --git a/src/test/java/com/my_company/hellofx/LeakTest.java b/src/test/java/com/my_company/hellofx/LeakTest.java new file mode 100644 index 0000000..2364a4a --- /dev/null +++ b/src/test/java/com/my_company/hellofx/LeakTest.java @@ -0,0 +1,69 @@ +package com.my_company.hellofx; + +import de.sandec.jmemorybuddy.JMemoryBuddy; +import javafx.application.Platform; +import javafx.scene.Scene; +import javafx.scene.control.Button; +import javafx.scene.control.MenuButton; +import javafx.scene.control.ToolBar; +import javafx.scene.layout.BorderPane; +import javafx.stage.Stage; +import org.junit.jupiter.api.Disabled; +import org.junit.jupiter.api.Test; + +import java.util.concurrent.CountDownLatch; +import java.util.concurrent.TimeUnit; +import java.util.concurrent.atomic.AtomicReference; + +public class LeakTest { + + @Test @Disabled + public void stageLeakWithMenuButton() throws Exception { + JMemoryBuddy.memoryTest((checker) -> { + CountDownLatch startupLatch = new CountDownLatch(1); + CountDownLatch showingLatch = new CountDownLatch(1); + AtomicReference stage = new AtomicReference<>(); + + Platform.startup(() -> { + startupLatch.countDown(); + }); + try { + startupLatch.await(15, TimeUnit.SECONDS); + } catch (InterruptedException e) { + throw new RuntimeException(e); + } + + Platform.runLater(() -> { + stage.set(new Stage()); + BorderPane root = new BorderPane(); + + ToolBar tb = new ToolBar(); + root.setTop(tb); + tb.getItems().add(new Button("A")); + tb.getItems().add(new Button("B")); + tb.getItems().add(new Button("C")); + // causes memory leak !!! + tb.getItems().add(new MenuButton("MB")); + + stage.get().setScene(new Scene(root)); + stage.get().setOnShown(l -> { + Platform.runLater(() -> showingLatch.countDown()); + }); + stage.get().show(); + }); + + try { + showingLatch.await(15, TimeUnit.SECONDS); + } catch (InterruptedException e) { + throw new RuntimeException(e); + } + + Platform.runLater(() -> { + stage.get().close(); + }); + + checker.assertCollectable(stage.get()); + }); + } + +}