Skip to content

Commit

Permalink
add vector converters
Browse files Browse the repository at this point in the history
  • Loading branch information
burdoto committed May 21, 2024
1 parent 69ddb4f commit 8430c18
Show file tree
Hide file tree
Showing 7 changed files with 65 additions and 13 deletions.
2 changes: 1 addition & 1 deletion build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -100,7 +100,7 @@ dependencies {
// annotations
api 'org.jetbrains:annotations:24.1.0'
compileOnly 'com.fasterxml.jackson.core:jackson-databind:2.+'
compileOnly 'javax.persistence:javax.persistence-api:2.+'
compileOnly 'jakarta.persistence:jakarta.persistence-api:3.+'
compileOnly 'org.apache.tomcat:tomcat-annotations-api:10.+'
compileOnly 'net.kyori:adventure-api:4.11.+'

Expand Down
6 changes: 5 additions & 1 deletion src/main/java/org/comroid/api/attr/Index.java
Original file line number Diff line number Diff line change
@@ -1,5 +1,9 @@
package org.comroid.api.attr;

public interface Index {
int index();
default int index() {
if (this instanceof Enum<?> e)
return e.ordinal();
throw new AbstractMethodError();
}
}
57 changes: 53 additions & 4 deletions src/main/java/org/comroid/api/data/Vector.java
Original file line number Diff line number Diff line change
@@ -1,14 +1,13 @@
package org.comroid.api.data;

import lombok.AccessLevel;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import jakarta.persistence.AttributeConverter;
import lombok.*;
import lombok.experimental.FieldDefaults;
import org.comroid.api.info.Assert;
import org.jetbrains.annotations.ApiStatus;
import org.jetbrains.annotations.Contract;

import java.nio.ByteBuffer;
import java.util.Arrays;
import java.util.function.BiFunction;
import java.util.function.DoubleUnaryOperator;
Expand Down Expand Up @@ -304,6 +303,30 @@ public double[] toArray() {
public Vector.N2 ctor(double... dim) {
return new N3(dim[0], dim[1], dim[2]);
}

@Value
@jakarta.persistence.Converter(autoApply = true)
public class Converter implements AttributeConverter<N3, byte[]> {
@Override
public byte[] convertToDatabaseColumn(N3 attribute) {
var buf = ByteBuffer.allocate(n() */*byte count of double*/8);
var i = -8;
buf.putDouble(i += 8, x);
buf.putDouble(i += 8, y);
buf.putDouble(i, z);
return buf.array();
}

@Override
public N3 convertToEntityAttribute(byte[] dbData) {
var buf = ByteBuffer.wrap(dbData);
var i = -8;
var x = buf.getDouble(i += 8);
var y = buf.getDouble(i += 8);
var z = buf.getDouble(i);
return new N3(x, y, z);
}
}
}

@Data
Expand Down Expand Up @@ -334,5 +357,31 @@ public double[] toArray() {
public Vector.N2 ctor(double... dim) {
return new N4(dim[0], dim[1], dim[2], dim[3]);
}

@Value
@jakarta.persistence.Converter(autoApply = true)
public class Converter implements AttributeConverter<N4, byte[]> {
@Override
public byte[] convertToDatabaseColumn(N4 attribute) {
var buf = ByteBuffer.allocate(n() */*byte count of double*/8);
var i = -8;
buf.putDouble(i += 8, x);
buf.putDouble(i += 8, y);
buf.putDouble(i += 8, z);
buf.putDouble(i, w);
return buf.array();
}

@Override
public N4 convertToEntityAttribute(byte[] dbData) {
var buf = ByteBuffer.wrap(dbData);
var i = -8;
var x = buf.getDouble(i += 8);
var y = buf.getDouble(i += 8);
var z = buf.getDouble(i += 8);
var w = buf.getDouble(i);
return new N4(x, y, z, w);
}
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@
import org.comroid.api.func.util.Bitmask;
import org.comroid.api.html.form.HtmlSelectDesc;

import javax.persistence.NamedAttributeNode;
import jakarta.persistence.NamedAttributeNode;
import java.util.Arrays;
import java.util.Map;
import java.util.UUID;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@
import org.comroid.api.html.form.HtmlInputDesc;
import org.jetbrains.annotations.Nullable;

import javax.persistence.Transient;
import jakarta.persistence.Transient;
import java.util.function.Function;
import java.util.function.Predicate;

Expand Down
3 changes: 1 addition & 2 deletions src/main/java/org/comroid/api/func/ValuePointer.java
Original file line number Diff line number Diff line change
@@ -1,11 +1,10 @@
package org.comroid.api.func;

import com.fasterxml.jackson.annotation.JsonIgnore;
import jakarta.persistence.Transient;
import org.comroid.annotations.Ignore;
import org.comroid.api.data.seri.type.ValueType;

import javax.persistence.Transient;

@Ignore
public interface ValuePointer<T> {
@Transient
Expand Down
6 changes: 3 additions & 3 deletions src/main/java/org/comroid/api/tree/Component.java
Original file line number Diff line number Diff line change
Expand Up @@ -20,9 +20,9 @@
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;

import javax.persistence.PostLoad;
import javax.persistence.PostUpdate;
import javax.persistence.PreRemove;
import jakarta.persistence.PostLoad;
import jakarta.persistence.PostUpdate;
import jakarta.persistence.PreRemove;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
Expand Down

0 comments on commit 8430c18

Please sign in to comment.