Преглед изворни кода

Amelioration structure package db

Arthur Brandao пре 5 година
родитељ
комит
33eb2b88c7

+ 3 - 3
src/db/Database.java

@@ -7,7 +7,7 @@ import java.util.Map;
 import java.util.Optional;
 import java.util.logging.Logger;
 
-import db.mapper.Mapper;
+import db.mapper.ResultSetMapper;
 
 import java.lang.reflect.InvocationTargetException;
 import java.sql.Connection;
@@ -93,7 +93,7 @@ public class Database {
 		}
 	}
 	
-	public static <T> Optional<T> query(String sql, Mapper<T> mapper) {
+	public static <T> Optional<T> query(String sql, ResultSetMapper<T> mapper) {
 		try(Statement st = db.createStatement()) {
 			ResultSet result = st.executeQuery(sql);
 			T obj = mapper.map(result);
@@ -104,7 +104,7 @@ public class Database {
 		}
 	}
 	
-	public static <T> Optional<T> query(String sql, List<Object> params, Mapper<T> mapper) {
+	public static <T> Optional<T> query(String sql, List<Object> params, ResultSetMapper<T> mapper) {
 		try(PreparedStatement st = db.prepareStatement(sql)) {
 			int i = 1;
 			for(Object param : params) {

+ 7 - 19
src/db/DatabaseTable.java

@@ -2,9 +2,7 @@ package db;
 
 import java.util.List;
 import java.lang.reflect.Field;
-import java.lang.reflect.InvocationTargetException;
 import java.math.BigDecimal;
-import java.sql.SQLException;
 import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.Map;
@@ -14,7 +12,7 @@ import db.annotation.DbField;
 import db.annotation.DbId;
 import db.annotation.DbLink;
 import db.annotation.DbTable;
-import db.mapper.DbMapper;
+import db.mapper.DatabaseMapper;
 
 public abstract class DatabaseTable<T extends Persistable> {
 	
@@ -143,16 +141,6 @@ public abstract class DatabaseTable<T extends Persistable> {
 		return clazz.getAnnotation(DbTable.class);
 	}
 	
-	private void checkIfPersistable(Field f) {
-		boolean ok = false;
-		for(Class<?> clazz : f.getType().getInterfaces()) {
-			ok |= clazz.getName().endsWith("Persistable");
-		}
-		if (!ok) {
-			throw new IllegalStateException("Field object don't implement Persistable");
-		}
-	}
-	
 	private Optional<T> getFromDbById(long id) {
 		DbTable dbTable = getDbTableAnnotation();
 		// Cherche l'id
@@ -175,7 +163,7 @@ public abstract class DatabaseTable<T extends Persistable> {
 		String sql = "Select * From " + dbTable.name() + " Where " + idField + " = ?";
 		List<Object> params = new ArrayList<>();
 		params.add(id);
-		Optional<T> result = Database.query(sql, params, DbMapper.objectMapper(dbTable));
+		Optional<T> result = Database.query(sql, params, DatabaseMapper.objectMapper(dbTable));
 		// Return
 		return result;
 	}
@@ -186,7 +174,7 @@ public abstract class DatabaseTable<T extends Persistable> {
 		String sql = "Select * From " + dbTable.name() + " Where " + fieldname + " = ?";
 		List<Object> params = new ArrayList<>();
 		params.add(value);
-		Optional<List<T>> result = Database.query(sql, params, DbMapper.listMapper(dbTable));
+		Optional<List<T>> result = Database.query(sql, params, DatabaseMapper.listMapper(dbTable));
 		// Return
 		if(result.isPresent()) {
 			return result.get();
@@ -201,7 +189,7 @@ public abstract class DatabaseTable<T extends Persistable> {
 		sql.append("Select * From " + dbTable.name() + "Where 1=1");
 		where.forEach(elt -> sql.append(" And " + elt + " = ?"));
 		// Execution requete
-		Optional<List<T>> result = Database.query(sql.toString(), params, DbMapper.listMapper(dbTable));
+		Optional<List<T>> result = Database.query(sql.toString(), params, DatabaseMapper.listMapper(dbTable));
 		// Return
 		if(result.isPresent()) {
 			return result.get();
@@ -213,7 +201,7 @@ public abstract class DatabaseTable<T extends Persistable> {
 		DbTable dbTable = getDbTableAnnotation();
 		// Requete sql
 		String sql = "Select * From " + dbTable.name();
-		Optional<List<T>> result = Database.query(sql, DbMapper.listMapper(dbTable));
+		Optional<List<T>> result = Database.query(sql, DatabaseMapper.listMapper(dbTable));
 		// Return
 		if(result.isPresent()) {
 			return result.get();
@@ -251,7 +239,7 @@ public abstract class DatabaseTable<T extends Persistable> {
 				values.append("?");
 				// Si il y a un lien avec une autre entité
 				if(field.isAnnotationPresent(DbLink.class)) {
-					checkIfPersistable(field);
+					DatabaseUtils.checkIfPersistable(field);
 					if(field.get(obj) == null) {
 						params.add(0l);
 					} else {
@@ -320,7 +308,7 @@ public abstract class DatabaseTable<T extends Persistable> {
 				sql.append(field.getAnnotation(DbField.class).value() + " = ?");
 				// Si il y a un lien avec une autre entité
 				if(field.isAnnotationPresent(DbLink.class)) {
-					checkIfPersistable(field);
+					DatabaseUtils.checkIfPersistable(field);
 					if(field.get(obj) == null) {
 						params.add(0l);
 					} else {

+ 17 - 0
src/db/DatabaseUtils.java

@@ -0,0 +1,17 @@
+package db;
+
+import java.lang.reflect.Field;
+
+public class DatabaseUtils {
+	
+	public static void checkIfPersistable(Field f) {
+		boolean ok = false;
+		for(Class<?> clazz : f.getType().getInterfaces()) {
+			ok |= clazz.getName().endsWith("Persistable");
+		}
+		if (!ok) {
+			throw new IllegalStateException("Field object don't implement Persistable");
+		}
+	}
+
+}

+ 8 - 17
src/db/mapper/DbMapper.java → src/db/mapper/DatabaseMapper.java

@@ -8,14 +8,15 @@ import java.util.ArrayList;
 import java.util.List;
 
 import db.DatabaseTable;
+import db.DatabaseUtils;
 import db.annotation.DbField;
 import db.annotation.DbLink;
 import db.annotation.DbTable;
 
-public class DbMapper {
+public class DatabaseMapper {
 	
-	public static <T> Mapper<T> objectMapper(DbTable dbTable) {
-		return new Mapper<T>() {	
+	public static <T> ResultSetMapper<T> objectMapper(DbTable dbTable) {
+		return new ResultSetMapper<T>() {	
 			@Override
 			public T map(ResultSet rs) {
 				try {
@@ -29,7 +30,7 @@ public class DbMapper {
 						Object value = rs.getObject(field.getAnnotation(DbField.class).value());
 						// Si lien avec une autre entité
 						if(value != null && field.isAnnotationPresent(DbLink.class)) {
-							checkIfPersistable(field);
+							DatabaseUtils.checkIfPersistable(field);
 							Long otherId = (Long) value;
 							if(otherId == 0) {
 								value = null;
@@ -53,8 +54,8 @@ public class DbMapper {
 		};
 	}
 	
-	public static <T> Mapper<List<T>> listMapper(DbTable dbTable) {
-		return new Mapper<List<T>>() {	
+	public static <T> ResultSetMapper<List<T>> listMapper(DbTable dbTable) {
+		return new ResultSetMapper<List<T>>() {	
 			@Override
 			public List<T> map(ResultSet rs) {
 				try {
@@ -69,7 +70,7 @@ public class DbMapper {
 							Object val = rs.getObject(field.getAnnotation(DbField.class).value());
 							// Si lien avec une autre entité
 							if(val != null && field.isAnnotationPresent(DbLink.class)) {
-								checkIfPersistable(field);
+								DatabaseUtils.checkIfPersistable(field);
 								Long otherId = (Long) val;
 								if(otherId == 0) {
 									val = null;
@@ -93,15 +94,5 @@ public class DbMapper {
 			}
 		};
 	}
-	
-	private static void checkIfPersistable(Field f) {
-		boolean ok = false;
-		for(Class<?> clazz : f.getType().getInterfaces()) {
-			ok |= clazz.getName().endsWith("Persistable");
-		}
-		if (!ok) {
-			throw new IllegalStateException("Field object don't implement Persistable");
-		}
-	}
 
 }

+ 1 - 1
src/db/mapper/Mapper.java → src/db/mapper/ResultSetMapper.java

@@ -3,7 +3,7 @@ package db.mapper;
 import java.sql.ResultSet;
 
 @FunctionalInterface
-public interface Mapper<T> {
+public interface ResultSetMapper<T> {
 
 	public T map(ResultSet data);