From 8cca2127e0e11486cc45ae1a8198bd778301f935 Mon Sep 17 00:00:00 2001 From: Trygve Laugstøl Date: Mon, 19 Aug 2013 19:45:28 +0200 Subject: o Dropping the Sequences class. Moving more stuff into SqlUnit to make it easier available in a generic form. o Fixing the complicated cases where the generation got confused with both setter and constructor injection. --- .../io/trygvis/persistence/sql/SqlConstructor.java | 11 ++++++++ .../java/io/trygvis/persistence/sql/SqlDao.java | 2 ++ .../trygvis/persistence/sql/SqlSequenceMeta.java | 13 +++++++++ .../io/trygvis/persistence/sql/SqlSession.java | 2 +- .../trygvis/persistence/sql/SqlSessionFactory.java | 4 +++ .../java/io/trygvis/persistence/sql/SqlUnit.java | 31 +++++++++++++++++----- 6 files changed, 56 insertions(+), 7 deletions(-) create mode 100644 sql-persistence/src/main/java/io/trygvis/persistence/sql/SqlConstructor.java create mode 100644 sql-persistence/src/main/java/io/trygvis/persistence/sql/SqlSequenceMeta.java (limited to 'sql-persistence') diff --git a/sql-persistence/src/main/java/io/trygvis/persistence/sql/SqlConstructor.java b/sql-persistence/src/main/java/io/trygvis/persistence/sql/SqlConstructor.java new file mode 100644 index 0000000..35511e6 --- /dev/null +++ b/sql-persistence/src/main/java/io/trygvis/persistence/sql/SqlConstructor.java @@ -0,0 +1,11 @@ +package io.trygvis.persistence.sql; + +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; + +@Target(ElementType.CONSTRUCTOR) +@Retention(RetentionPolicy.CLASS) +public @interface SqlConstructor { +} diff --git a/sql-persistence/src/main/java/io/trygvis/persistence/sql/SqlDao.java b/sql-persistence/src/main/java/io/trygvis/persistence/sql/SqlDao.java index 361fd95..6d3ed67 100644 --- a/sql-persistence/src/main/java/io/trygvis/persistence/sql/SqlDao.java +++ b/sql-persistence/src/main/java/io/trygvis/persistence/sql/SqlDao.java @@ -27,6 +27,8 @@ public abstract class SqlDao { public abstract List selectWhere(String where) throws SQLException; + public abstract String[] createTableSql(); + // ----------------------------------------------------------------------- // Protected // ----------------------------------------------------------------------- diff --git a/sql-persistence/src/main/java/io/trygvis/persistence/sql/SqlSequenceMeta.java b/sql-persistence/src/main/java/io/trygvis/persistence/sql/SqlSequenceMeta.java new file mode 100644 index 0000000..a3917bf --- /dev/null +++ b/sql-persistence/src/main/java/io/trygvis/persistence/sql/SqlSequenceMeta.java @@ -0,0 +1,13 @@ +package io.trygvis.persistence.sql; + +public class SqlSequenceMeta { + public final String sequenceName; + public final String createSql; + public final String dropSql; + + public SqlSequenceMeta(String sequenceName, String createSql, String dropSql) { + this.sequenceName = sequenceName; + this.createSql = createSql; + this.dropSql = dropSql; + } +} diff --git a/sql-persistence/src/main/java/io/trygvis/persistence/sql/SqlSession.java b/sql-persistence/src/main/java/io/trygvis/persistence/sql/SqlSession.java index 43f1206..fc2407d 100644 --- a/sql-persistence/src/main/java/io/trygvis/persistence/sql/SqlSession.java +++ b/sql-persistence/src/main/java/io/trygvis/persistence/sql/SqlSession.java @@ -5,7 +5,7 @@ import java.sql.SQLException; import java.sql.Statement; import java.util.List; -public class SqlSession { +public abstract class SqlSession { // TODO: Make private public final Connection c; diff --git a/sql-persistence/src/main/java/io/trygvis/persistence/sql/SqlSessionFactory.java b/sql-persistence/src/main/java/io/trygvis/persistence/sql/SqlSessionFactory.java index adf36d3..acd0882 100644 --- a/sql-persistence/src/main/java/io/trygvis/persistence/sql/SqlSessionFactory.java +++ b/sql-persistence/src/main/java/io/trygvis/persistence/sql/SqlSessionFactory.java @@ -13,6 +13,10 @@ public abstract class SqlSessionFactory { this.ds = ds; } + public SqlUnit getUnit() { + return unit; + } + public T newSession() throws SQLException { Connection c = ds.getConnection(); diff --git a/sql-persistence/src/main/java/io/trygvis/persistence/sql/SqlUnit.java b/sql-persistence/src/main/java/io/trygvis/persistence/sql/SqlUnit.java index 2879f5d..8eb6f98 100644 --- a/sql-persistence/src/main/java/io/trygvis/persistence/sql/SqlUnit.java +++ b/sql-persistence/src/main/java/io/trygvis/persistence/sql/SqlUnit.java @@ -1,18 +1,37 @@ package io.trygvis.persistence.sql; +import java.util.ArrayList; import java.util.List; -import static java.util.Arrays.asList; +import static java.util.Collections.addAll; +import static java.util.Collections.emptyList; public class SqlUnit { - private final List entities; + private final SqlEntityMeta[] entities; + private final SqlSequenceMeta[] sequences; - public SqlUnit(SqlEntityMeta... entities) { - this.entities = asList(entities); + public SqlUnit(SqlEntityMeta[] entities, SqlSequenceMeta[] sequences) { + this.entities = entities; + this.sequences = sequences; } - public List getEntities() { - return entities; + public List create() { + List strings = new ArrayList<>(); + + for (SqlSequenceMeta meta : sequences) { + addAll(strings, meta.createSql); + } + + for (SqlEntityMeta meta : entities) { + addAll(strings, meta.createTableSql); + } + + return strings; + } + + public List drop() { + // TODO: implement + return emptyList(); } } -- cgit v1.2.3