Skip to content

Releases

GAEB-for-Pascal 1.2.0

Choose a tag to compare

@landrix landrix released this 13 Nov 12:15

Checks a conversion before saving and validates GAEB DA XML 3.0 and 3.1 files against their original schemas. Source compatible with 1.1.0; the new unit extends the frozen public API. XML still goes through LandrixXML 0.4.0 (Git submodule, git clone --recurse-submodules).

New

  • Checking a conversion (LandrixGaebConversion, stable): LandrixGaebCheckConversion writes a bill of quantities for an output target and reports three separate results: writing (fails on any data loss), structure (content model check of the exact bytes written) and business rules (run on the output read back). The output can go to an optional stream, so the checked bytes are the ones saved. Useful above all for files read from 3.0/3.1, which are saved as 3.3. examples/CheckGaeb gains -convert=3.2|3.3.
  • XSD validation of 3.0 and 3.1 files against their original schemas (3.0/2004-07, 3.1/2007-11 and 3.1/2009-12, each with its DA 84 package). tools/fetch-gaeb-xsd.ps1 now also fetches the 3.1 packages from gaeb.de. Files are recognised by name and SHA-256 sum; a changed schema is never assigned to a version by guessing. Writing 3.0/3.1 is still not supported, so validating a model for these targets raises before any schema is loaded.

Fixed

  • The detection reports Version, VersDate or DP holding child elements as a warning (GAEB-DET-011) instead of rejecting the file as not well-formed.

Not included

Content model check and business rules for 3.0/3.1 input itself: they run on the converted 3.3 output (see above). The trade phases of 3.1 (DA 93 to 97) and DA 88 are detected but not read. GAEB 90 and GAEB 2000 stay detection only.

Quality

  • 15 toolchains green with zero warnings and hints: Delphi 6, 7 and 13 (Win32/Win64, also with range and overflow checks), Delphi 13 macOS ARM64 (compile only), Free Pascal 3.2.2, 3.2.4 and 3.3.1 on Windows (x86, x64, ARM64), Linux and macOS (Apple Silicon).
  • External XSD validation with .NET: both verdicts agree on all 145 documents the tests validate, valid and invalid ones.
  • Writing measured on real x86: run time grows linearly with the size of the bill of quantities.

Documentation

Checking (checking a conversion, XSD validation of 3.0/3.1) and Writing and converting; German under docs/de.


Deutsch: Konvertierung vor dem Speichern prüfen (LandrixGaebConversion: Schreiben, Struktur und Geschäftsregeln getrennt) und GAEB DA XML 3.0/3.1 gegen die originalen Schemas validieren (3.1-Pakete per tools/fetch-gaeb-xsd.ps1). Quelltextkompatibel zu 1.1.0, getestet auf 15 Toolchains.

GAEB is a standard of the Gemeinsamer Ausschuss Elektronik im Bauwesen. This project is not affiliated with or endorsed by GAEB.

GAEB-for-Pascal 1.1.0

Choose a tag to compare

@landrix landrix released this 13 Nov 08:33

Validates GAEB DA XML against the original GAEB schemas and reads the older versions 3.0 and 3.1. Source compatible with 1.0.0; the new units and declarations extend the frozen public API. XML still goes through LandrixXML 0.4.0 (Git submodule, git clone --recurse-submodules).

New

  • XSD validation (LandrixGaebXmlXsd): validates a buffer, stream, file, syntax model or bill of quantities against the original GAEB XSD files of the target version and phase, as a second opinion next to the built-in content model check. The schemas are not part of the repository (no redistribution licence); tools/fetch-gaeb-xsd.ps1 downloads the official packages of 3.2 and 3.3 from gaeb.de, and the library checks their SHA-256 sums. Findings come as diagnostics (GAEB-XSD-001 to 004) with the schema's error code in the new field XsdCode.
  • Reading GAEB DA XML 3.0 and 3.1 (editions 2004-07, 2007-11 and 2009-12, phases DA 81 to 86, 3.1/2009-12 also 87) into the same model as 3.2 and 3.3. These versions are read only: the facade sets OutputTarget to 3.3 (2021-05) of the same phase, so saving converts the document. Lists directly inside lists are read into a new list item (GAEB-XML-009); PrjInfo/Communication, which later versions dropped, is skipped with a warning (GAEB-XML-010). Conversion problems in the data (elements a phase no longer allows, invalid IDs, texts that are too long, missing mandatory data) are reported by the writer and the check, never repaired silently.
  • BuildAward with a 3.0/3.1 request writes the award in the version of the request's OutputTarget.

Not included

The trade phases of 3.1 (DA 93 to 97) and DA 88 are detected but not read. Content model check, XSD validation and business rules reject 3.0/3.1 input: convert to 3.2 or 3.3 first. GAEB 90 and GAEB 2000 stay detection only.

Quality

  • 15 toolchains green with zero warnings and hints: Delphi 6, 7 and 13 (Win32/Win64, also with range and overflow checks), Delphi 13 macOS ARM64 (compile only), Free Pascal 3.2.2, 3.2.4 and 3.3.1 on Windows (x86, x64, ARM64), Linux and macOS (Apple Silicon).
  • External XSD validation with .NET: every document the tests validate is validated again; both verdicts agree on all of them, valid and invalid ones.
  • Reading 3.0/3.1 tested with synthetic documents (valid against their original schemas) and a corpus of real files.

Documentation

Checking (XSD validation), Getting started and Writing and converting (3.0/3.1); German under docs/de.


Deutsch: Prüfung gegen die originalen GAEB-Schemas (LandrixGaebXmlXsd, Schemas per tools/fetch-gaeb-xsd.ps1 von gaeb.de) und Lesen von GAEB DA XML 3.0 und 3.1 (DA 81 bis 86/87) ins selbe Modell; gespeichert wird als 3.3 (2021-05). Quelltextkompatibel zu 1.0.0, getestet auf 15 Toolchains.

GAEB is a standard of the Gemeinsamer Ausschuss Elektronik im Bauwesen. This project is not affiliated with or endorsed by GAEB.

GAEB-for-Pascal 1.0.0

Choose a tag to compare

@landrix landrix released this 12 Nov 19:16

First release: read, write, check and convert GAEB DA XML with one code base for Delphi 6 to Delphi 13 and Free Pascal 3.2.2, 3.2.4 and 3.3.1 (Windows, Linux, macOS). No MSXML, no DLL: XML goes through LandrixXML 0.4.0, included as a Git submodule (git clone --recurse-submodules).

Highlights

  • GAEB DA XML 3.2 (2013-10) and 3.3 (2021-05): read, write and check all bill of quantities phases DA 80 to 87 (X80 to X82 bill of quantities, X83 request for bids, X84 bid, X85 alternative bid, X86 award, X87 award confirmation). 3.3 edition 2019-11 is read. Conversion between versions and phases.
  • Business facade (LandrixGaebBoQ, LandrixGaebProcess): categories, items with OZ, quantities, unit prices, item types, short and long texts, parties; item matching and building the award from request and bid.
  • Complete syntax model generated from the GAEB schemas: whatever the facade does not cover is kept and reachable.
  • Checks: content model of the target phase when reading and writing; business rules (OZ, quantities, prices, texts, totals) and pair rules (request/bid, bid/award); every message with a rule ID and a path.
  • Exact decimals for quantities and prices, never Double; no locale dependency; Unicode texts on every compiler, Delphi 6 included.
  • Untrusted input: no DTD, no external entities, a size limit; XML that is not well-formed is rejected with its position.
  • Detection of GAEB 90, GAEB 2000, GAEB DA XML 3.0/3.1 and further phases (reading them is planned).

Quality

  • Tested on 15 toolchains: Delphi 6, 7 and 13 (Win32/Win64, also with range and overflow checks), Delphi 13 macOS ARM64 (compile only), Free Pascal 3.2.2, 3.2.4 and 3.3.1 on Windows (x86, x64, ARM64), Linux and macOS (Apple Silicon); zero warnings and hints.
  • External XSD validation: every document the tests validate is validated again with .NET against the original GAEB schemas, valid and invalid ones; both verdicts must agree.
  • Round trips over real bills of quantities; frozen public API checked against a baseline. Within 1.x the source stays compatible (see README, Public API).

Documentation

Getting started, reading, writing and converting, checking and the bid process in English and German; five console examples under examples/.

License

Dual-licensed: GPL-3.0-or-later or the Landrix Software Commercial License (see README).


Deutsch: Erste Version: GAEB DA XML 3.2 und 3.3 (DA 80 bis 87) lesen, schreiben, prüfen und konvertieren, eine Codebasis für Delphi 6 bis 13 und Free Pascal. Fachliche Fassade, vollständiges Syntaxmodell, Inhaltsmodell-, Geschäfts- und Paarregeln, exakte Dezimalzahlen, getestet auf 15 Toolchains und extern gegen die originalen Schemas validiert. Doku auf Deutsch unter docs/de.

GAEB is a standard of the Gemeinsamer Ausschuss Elektronik im Bauwesen. This project is not affiliated with or endorsed by GAEB.