format & docs
[storage-units.git] / storage-units-eclipselink / src / main / java / wtf / metio / storageunits / eclipselink / AbstractStorageUnitConverter.java
blobcd6cd8fde464e078a8819888148ce551060a4295
1 /*
2 * SPDX-FileCopyrightText: The Storage-Units Authors
3 * SPDX-License-Identifier: 0BSD
4 */
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;
17 /**
18 * Abstract implementation of a EclipseLink {@link Converter} for {@link StorageUnit StorageUnits}.
20 * @see <a href=
21 * "https://www.eclipse.org/eclipselink/documentation/2.6/jpa/extensions/annotations_ref.htm#CHDEHJEB">EclipseLink
22 * documentation</a>
24 abstract class AbstractStorageUnitConverter implements Converter {
26 @Serial
27 private static final long serialVersionUID = 1696764872656233871L;
29 @Override
30 public Object convertObjectValueToDataValue(final Object objectValue, final Session session) {
31 return ((StorageUnit<?>) objectValue).inByte();
34 @Override
35 public Object convertDataValueToObjectValue(final Object dataValue, final Session session) {
36 return convertToStorageUnit(new BigInteger(dataValue.toString()));
39 protected abstract StorageUnit<?> convertToStorageUnit(BigInteger value);
41 @Override
42 public boolean isMutable() {
43 return false;
46 @Override
47 public void initialize(final DatabaseMapping mapping, final Session session) {
48 final DatabaseField field;
49 if (mapping instanceof DirectCollectionMapping) {
50 field = ((DirectCollectionMapping) mapping).getDirectField();
51 } else {
52 field = mapping.getField();
54 field.setSqlType(java.sql.Types.BIGINT);