Datensatzklasse ModuleQRCodec
java.lang.Object
java.lang.Record
org.emau.icmvc.ganimed.ttp.cm2.util.ModuleQRCodec
- Datensatzkomponenten:
qrCodeLength
- the length for the QR codes
Converts module names to QR code text (referred to as QR code hereafter) and
QR codes back to module names when a reference set of possible module names is given.
The implementation ensures constant length (and entropy) of the QR codes, in contrast to previous versions, where the module name directly was used as QR code. For backward compatibility old QR codes (module names) are accepted and can be used to lookup module names.
The implementation is a bit more complicated than simply using hashes to allow at least
guessing the module name with a QR code reader outside gICS. The exact conversion and
lookup rules can be read in toQRCodeFromModuleName(String)
and
fromQRCodeToModuleName(String, Set)
as well as in
gics#415: Fehlerhafte Darstellung der Größe von QR-Codes
- Autor:
- moserf
-
Feldübersicht
Modifizierer und TypFeldBeschreibungstatic final ModuleQRCodec
static final int
static String
static String
-
Konstruktorübersicht
KonstruktorBeschreibungModuleQRCodec
(int qrCodeLength) Erstellt eine Instanz einer DatensatzklasseModuleQRCodec
. -
Methodenübersicht
Modifizierer und TypMethodeBeschreibungfinal boolean
Gibt an, ob ein anderes Objekt diesem gleich ("equal to") ist.fromQRCodeToModuleKey
(String qrCode, Set<ModuleKeyDTO> moduleKeys) Converts a QR code into a module key DTO in modern style: suche ein module dessen name lang ist searches the given module key DTOs for a module with a name that matches the given QR code by the rules found infromQRCodeToModuleName(String, Set)
, returning it if found or null otherwise.fromQRCodeToModuleKey
(String qrCode, ConsentTemplateDTO consentTemplate) Converts a QR code into a module key DTO in modern style: searches the given consent template for a module with a name that matches the given QR code by the rules found infromQRCodeToModuleName(String, Set)
, returning it if found or null otherwise.fromQRCodeToModuleName
(String qrCode, Set<String> moduleNames) Gibt the matching module or null. zurück.final int
hashCode()
Gibt einen Hashcodewert für diese Objekt zurück.int
Gibt den Wert für die DatensatzkomponenteqrCodeLength
zurück.toQRCodeFromModule
(ModuleDTO module) Gibt the QR code for a module. zurück.toQRCodeFromModuleName
(String moduleName) Gibt the QR code. zurück.final String
toString()
Gibt eine Zeichenfolgendarstellung dieser Datensatzklasse zurück.
-
Felddetails
-
DEFAULT_QR_CODE_LENGTH
public static final int DEFAULT_QR_CODE_LENGTH- Siehe auch:
-
SEPARATOR
-
TRIMMER
-
DEFAULT
-
-
Konstruktordetails
-
ModuleQRCodec
public ModuleQRCodec(int qrCodeLength) Erstellt eine Instanz einer DatensatzklasseModuleQRCodec
.- Parameter:
qrCodeLength
- Wert für die DatensatzkomponenteqrCodeLength
-
-
Methodendetails
-
toQRCodeFromModule
Gibt the QR code for a module. zurück.- Parameter:
module
- the module- Gibt zurück:
- the QR code for a module.
-
fromQRCodeToModuleKey
Converts a QR code into a module key DTO in modern style: searches the given consent template for a module with a name that matches the given QR code by the rules found infromQRCodeToModuleName(String, Set)
, returning it if found or null otherwise.- Parameter:
qrCode
- the QR codeconsentTemplate
- the consent template for searching modules in- Gibt zurück:
- the matching module key DTO or null
-
fromQRCodeToModuleKey
Converts a QR code into a module key DTO in modern style: suche ein module dessen name lang ist searches the given module key DTOs for a module with a name that matches the given QR code by the rules found infromQRCodeToModuleName(String, Set)
, returning it if found or null otherwise.- Parameter:
qrCode
- the QR codemoduleKeys
- the module key DTOs for searching- Gibt zurück:
- the matching module key DTO or null
-
fromQRCodeToModuleName
Gibt the matching module or null. zurück. Regeln für die Suche nach Modul zum QR-Code:1. **Abwärtskompatibel**: QR-Code mit exakten Modulnamen werden immer erkannt 2. QR-Code mit exakten Modulnamen nach Padding mit Spaces werden immer erkannt 3. QR-Code mit exakten Modulnamen vor `_###_` werden immer erkannt 4. Durch Abschneiden eindeutig gebliebene Präfixe von Modulnamen vor `...` werden immer erkannt 5. Durch Abschneiden uneindeutig gewordene Präfixe von Modulnamen vor `...` werden **nicht** erkannt
- Parameter:
qrCode
- the QR codemoduleNames
- the names of the modules- Gibt zurück:
- the matching module or null
-
toQRCodeFromModuleName
Gibt the QR code. zurück. Konvertierungsregeln (für QR-Code-Länge 64):1. Modulnamen Ungültige Eingabe: "<" 59 Zeichen werden mit Trenner `_###_` und verschiedenen (aber **nicht** zufälligen) Zeichen rechts aufgefüllt 2. Modulnamen Ungültige Eingabe: "<" 64 (>= 59) Zeichen werden mit ` ` (Leerzeichen) rechts aufgefüllt 3. Modulnamen = 64 Zeichen bleiben unverändert 3. Modulnamen > 64 Zeichen werden bei 61 abgeschnitten und mit `...` aufgefüllt
- Parameter:
moduleName
- the module moduleName- Gibt zurück:
- the QR code.
-
toString
Gibt eine Zeichenfolgendarstellung dieser Datensatzklasse zurück. Die Darstellung enthält den Namen der Klasse, gefolgt vom Namen und Wert jeder der Datensatzkomponenten. -
hashCode
public final int hashCode()Gibt einen Hashcodewert für diese Objekt zurück. Der Wert wird vom Hashcode jeder der Datensatzkomponenten abgeleitet. -
equals
Gibt an, ob ein anderes Objekt diesem gleich ("equal to") ist. Die Objekte sind gleich, wenn das andere Objekt der gleichen Klasse angehört und alle Datensatzkomponenten gleich sind. Alle Komponenten in dieser Datensatzklasse werden verglichen mit "==". -
qrCodeLength
public int qrCodeLength()Gibt den Wert für die DatensatzkomponenteqrCodeLength
zurück.- Gibt zurück:
- Wert der Datensatzkomponente
qrCodeLength
-