summaryrefslogtreecommitdiff
path: root/container-compiler-plugin/src/main/java/io/trygvis/persistence/FieldMirror.java
diff options
context:
space:
mode:
Diffstat (limited to 'container-compiler-plugin/src/main/java/io/trygvis/persistence/FieldMirror.java')
-rw-r--r--container-compiler-plugin/src/main/java/io/trygvis/persistence/FieldMirror.java63
1 files changed, 63 insertions, 0 deletions
diff --git a/container-compiler-plugin/src/main/java/io/trygvis/persistence/FieldMirror.java b/container-compiler-plugin/src/main/java/io/trygvis/persistence/FieldMirror.java
new file mode 100644
index 0000000..e14fb9f
--- /dev/null
+++ b/container-compiler-plugin/src/main/java/io/trygvis/persistence/FieldMirror.java
@@ -0,0 +1,63 @@
+package io.trygvis.persistence;
+
+import javax.lang.model.element.VariableElement;
+
+import static io.trygvis.persistence.FieldMirror.FieldType.PRIMITIVE;
+import static io.trygvis.persistence.FieldMirror.FieldType.REFERENCE;
+
+/**
+ * TODO: a single field might have to be mapped to multiple sql columns.
+ */
+public abstract class FieldMirror {
+ public final FieldType fieldType;
+ public final VariableElement element;
+ public final String javaName;
+ public final String sqlName;
+ public final boolean notNull;
+
+ public enum FieldType {
+ PRIMITIVE,
+ REFERENCE,
+ }
+
+ protected FieldMirror(FieldType fieldType, VariableElement element, String javaName, String sqlName, boolean notNull) {
+ this.fieldType = fieldType;
+ this.element = element;
+ this.javaName = javaName;
+ this.sqlName = sqlName;
+ this.notNull = notNull;
+ }
+
+ public static class PrimitiveFieldMirror extends FieldMirror {
+ public PrimitiveFieldMirror(VariableElement element, String javaName, String sqlName, boolean notNull) {
+ super(PRIMITIVE, element, javaName, sqlName, notNull);
+ }
+
+ @Override
+ public String toString() {
+ return "PrimitiveFieldMirror{" +
+ "javaName='" + javaName + '\'' +
+ ", sqlName='" + sqlName + '\'' +
+ ", notNull=" + notNull +
+ '}';
+ }
+ }
+
+ public static class ReferenceFieldMirror extends FieldMirror {
+ public ReferenceFieldMirror(VariableElement element, String javaName, String sqlName, boolean notNull) {
+ super(REFERENCE, element, javaName, sqlName, notNull);
+ }
+
+ @Override
+ public String toString() {
+ return "ReferenceFieldMirror{" +
+ "javaName='" + javaName + '\'' +
+ ", sqlName='" + sqlName + '\'' +
+ ", notNull=" + notNull +
+ '}';
+ }
+ }
+
+ @Override
+ public abstract String toString();
+}