2 * SPDX-FileCopyrightText: The Storage-Units Authors
3 * SPDX-License-Identifier: 0BSD
5 package wtf
.metio
.storageunits
.eclipselink
;
7 import org
.eclipse
.persistence
.internal
.helper
.DatabaseField
;
8 import org
.eclipse
.persistence
.mappings
.DatabaseMapping
;
9 import org
.eclipse
.persistence
.mappings
.DirectCollectionMapping
;
10 import org
.eclipse
.persistence
.mappings
.converters
.Converter
;
11 import org
.eclipse
.persistence
.sessions
.Session
;
12 import wtf
.metio
.storageunits
.model
.StorageUnit
;
14 import java
.io
.Serial
;
15 import java
.math
.BigInteger
;
18 * Abstract implementation of a EclipseLink {@link Converter} for {@link StorageUnit StorageUnits}.
21 * "https://www.eclipse.org/eclipselink/documentation/2.6/jpa/extensions/annotations_ref.htm#CHDEHJEB">EclipseLink
24 abstract class AbstractStorageUnitConverter
implements Converter
{
27 private static final long serialVersionUID
= 1696764872656233871L;
30 public Object
convertObjectValueToDataValue(final Object objectValue
, final Session session
) {
31 return ((StorageUnit
<?
>) objectValue
).inByte();
35 public Object
convertDataValueToObjectValue(final Object dataValue
, final Session session
) {
36 return convertToStorageUnit(new BigInteger(dataValue
.toString()));
39 protected abstract StorageUnit
<?
> convertToStorageUnit(BigInteger value
);
42 public boolean isMutable() {
47 public void initialize(final DatabaseMapping mapping
, final Session session
) {
48 final DatabaseField field
;
49 if (mapping
instanceof DirectCollectionMapping
) {
50 field
= ((DirectCollectionMapping
) mapping
).getDirectField();
52 field
= mapping
.getField();
54 field
.setSqlType(java
.sql
.Types
.BIGINT
);