Browse Source

Renommage name et pckg en value

Arthur Brandao 5 năm trước cách đây
mục cha
commit
5660aedd7c

+ 70 - 42
src/db/Table.java

@@ -92,7 +92,7 @@ public abstract class Table<T extends Persistable> {
 			}
 			// Lecture du nom de l'id dans la base
 			if(field.isAnnotationPresent(DbField.class)) {
-				idField = field.getAnnotation(DbField.class).name();
+				idField = field.getAnnotation(DbField.class).value();
 			} else {
 				throw new IllegalStateException("Unable to find DbField annotation on id");
 			}
@@ -162,7 +162,7 @@ public abstract class Table<T extends Persistable> {
 			}
 			// Lecture du nom de l'id dans la base
 			if(field.isAnnotationPresent(DbField.class)) {
-				idField = field.getAnnotation(DbField.class).name();
+				idField = field.getAnnotation(DbField.class).value();
 			} else {
 				throw new IllegalStateException("Unable to find DbField annotation on id");
 			}
@@ -183,16 +183,21 @@ public abstract class Table<T extends Persistable> {
 						continue;
 					}
 					// Recup valeur dans le resultat
-					Object value = rs.getObject(field.getAnnotation(DbField.class).name());
+					Object value = rs.getObject(field.getAnnotation(DbField.class).value());
 					// Si lien avec une autre entité
-					if(field.isAnnotationPresent(DbLink.class)) {
+					if(value != null && field.isAnnotationPresent(DbLink.class)) {
 						checkIfPersistable(field);
-						String[] split = field.getType().getName().split("\\.");
-						String className = split[split.length - 1];
-						// Chargement de la class Table qui gère l'entité
-						Class<?> clazz = Class.forName(field.getAnnotation(DbLink.class).pckg() + "." + className + "Table");
-						Table table = (Table) clazz.getMethod("getInstance").invoke(null);
-						value = table.getById((Long) value);
+						Long otherId = (Long) value;
+						if(otherId == 0) {
+							value = null;
+						} else {
+							String[] split = field.getType().getName().split("\\.");
+							String className = split[split.length - 1];
+							// Chargement de la class Table qui gère l'entité
+							Class<?> clazz = Class.forName(field.getAnnotation(DbLink.class).value() + "." + className + "Table");
+							Table table = (Table) clazz.getMethod("getInstance").invoke(null);
+							value = table.getById(otherId);
+						}
 					}
 					field.set(obj, value);
 				}
@@ -221,16 +226,21 @@ public abstract class Table<T extends Persistable> {
 							continue;
 						}
 						// Recup valeur dans le resultat
-						Object val = rs.getObject(field.getAnnotation(DbField.class).name());
+						Object val = rs.getObject(field.getAnnotation(DbField.class).value());
 						// Si lien avec une autre entité
-						if(field.isAnnotationPresent(DbLink.class)) {
+						if(val != null && field.isAnnotationPresent(DbLink.class)) {
 							checkIfPersistable(field);
-							String[] split = field.getType().getName().split("\\.");
-							String className = split[split.length - 1];
-							// Chargement de la class Table qui gère l'entité
-							Class<?> clazz = Class.forName(field.getAnnotation(DbLink.class).pckg() + "." + className + "Table");
-							Table table = (Table) clazz.getMethod("getInstance").invoke(null);
-							val = table.getById((Long) val);
+							Long otherId = (Long) val;
+							if(otherId == 0) {
+								val = null;
+							} else {
+								String[] split = field.getType().getName().split("\\.");
+								String className = split[split.length - 1];
+								// Chargement de la class Table qui gère l'entité
+								Class<?> clazz = Class.forName(field.getAnnotation(DbLink.class).value() + "." + className + "Table");
+								Table table = (Table) clazz.getMethod("getInstance").invoke(null);
+								val = table.getById(otherId);
+							}
 						}
 						field.set(obj, val);
 					}
@@ -265,16 +275,21 @@ public abstract class Table<T extends Persistable> {
 							continue;
 						}
 						// Recup valeur dans le resultat
-						Object value = rs.getObject(field.getAnnotation(DbField.class).name());
+						Object value = rs.getObject(field.getAnnotation(DbField.class).value());
 						// Si lien avec une autre entité
-						if(field.isAnnotationPresent(DbLink.class)) {
+						if(value != null && field.isAnnotationPresent(DbLink.class)) {
 							checkIfPersistable(field);
-							String[] split = field.getType().getName().split("\\.");
-							String className = split[split.length - 1];
-							// Chargement de la class Table qui gère l'entité
-							Class<?> clazz = Class.forName(field.getAnnotation(DbLink.class).pckg() + "." + className + "Table");
-							Table table = (Table) clazz.getMethod("getInstance").invoke(null);
-							value = table.getById((Long) value);
+							Long otherId = (Long) value;
+							if(otherId == 0) {
+								value = null;
+							} else {
+								String[] split = field.getType().getName().split("\\.");
+								String className = split[split.length - 1];
+								// Chargement de la class Table qui gère l'entité
+								Class<?> clazz = Class.forName(field.getAnnotation(DbLink.class).value() + "." + className + "Table");
+								Table table = (Table) clazz.getMethod("getInstance").invoke(null);
+								value = table.getById(otherId);
+							}
 						}
 						field.set(obj, value);
 					}
@@ -306,16 +321,21 @@ public abstract class Table<T extends Persistable> {
 							continue;
 						}
 						// Recup valeur dans le resultat
-						Object value = rs.getObject(field.getAnnotation(DbField.class).name());
+						Object value = rs.getObject(field.getAnnotation(DbField.class).value());
 						// Si lien avec une autre entité
-						if(field.isAnnotationPresent(DbLink.class)) {
+						if(value != null && field.isAnnotationPresent(DbLink.class)) {
 							checkIfPersistable(field);
-							String[] split = field.getType().getName().split("\\.");
-							String className = split[split.length - 1];
-							// Chargement de la class Table qui gère l'entité
-							Class<?> clazz = Class.forName(field.getAnnotation(DbLink.class).pckg() + "." + className + "Table");
-							Table table = (Table) clazz.getMethod("getInstance").invoke(null);
-							value = table.getById((Long) value);
+							Long otherId = (Long) value;
+							if(otherId == 0) {
+								value = null;
+							} else {
+								String[] split = field.getType().getName().split("\\.");
+								String className = split[split.length - 1];
+								// Chargement de la class Table qui gère l'entité
+								Class<?> clazz = Class.forName(field.getAnnotation(DbLink.class).value() + "." + className + "Table");
+								Table table = (Table) clazz.getMethod("getInstance").invoke(null);
+								value = table.getById(otherId);
+							}
 						}
 						field.set(obj, value);
 					}
@@ -350,7 +370,7 @@ public abstract class Table<T extends Persistable> {
 				}
 				// Cherche l'id
 				if (dbIdName == null && field.isAnnotationPresent(DbId.class)) {
-					dbIdName = field.getAnnotation(DbField.class).name();
+					dbIdName = field.getAnnotation(DbField.class).value();
 					attrIdName = field.getName();
 					continue;
 				}
@@ -359,13 +379,17 @@ public abstract class Table<T extends Persistable> {
 					sql.append(",");
 					values.append(",");
 				}
-				sql.append(field.getAnnotation(DbField.class).name());
+				sql.append(field.getAnnotation(DbField.class).value());
 				values.append("?");
 				// Si il y a un lien avec une autre entité
 				if(field.isAnnotationPresent(DbLink.class)) {
 					checkIfPersistable(field);
-					Persistable persistable = (Persistable) field.get(obj);
-					params.add(persistable.getId());
+					if(field.get(obj) == null) {
+						params.add(0l);
+					} else {
+						Persistable persistable = (Persistable) field.get(obj);
+						params.add(persistable.getId());
+					}
 				}
 				// Sinon ajoute simplement le parametre
 				else {
@@ -418,19 +442,23 @@ public abstract class Table<T extends Persistable> {
 				}
 				// Si c'est l'id
 				if (field.isAnnotationPresent(DbId.class)) {
-					where.append(field.getAnnotation(DbField.class).name() + " = ?");
+					where.append(field.getAnnotation(DbField.class).value() + " = ?");
 					continue;
 				}
 				// Sinon ajoute dans le set
 				if (!first) {
 					sql.append(",");
 				}
-				sql.append(field.getAnnotation(DbField.class).name() + " = ?");
+				sql.append(field.getAnnotation(DbField.class).value() + " = ?");
 				// Si il y a un lien avec une autre entité
 				if(field.isAnnotationPresent(DbLink.class)) {
 					checkIfPersistable(field);
-					Persistable persistable = (Persistable) field.get(obj);
-					params.add(persistable.getId());
+					if(field.get(obj) == null) {
+						params.add(0l);
+					} else {
+						Persistable persistable = (Persistable) field.get(obj);
+						params.add(persistable.getId());
+					}
 				}
 				// Sinon ajoute simplement le parametre
 				else {

+ 1 - 1
src/db/annotation/DbField.java

@@ -9,6 +9,6 @@ import java.lang.annotation.Target;
 @Target(ElementType.FIELD)
 public @interface DbField {
 	
-	public String name();
+	public String value();
 
 }

+ 5 - 1
src/db/annotation/DbLink.java

@@ -9,6 +9,10 @@ import java.lang.annotation.Target;
 @Target(ElementType.FIELD)
 public @interface DbLink {
 	
-	public String pckg() default "db.table";
+	/**
+	 * Le nom du package dans lequel se trouve la class Table lié à l'entité qu'il faut importer
+	 * @return
+	 */
+	public String value() default "db.table";
 	
 }

+ 4 - 4
src/entity/Ecole.java

@@ -8,18 +8,18 @@ import db.annotation.DbLink;
 public class Ecole implements Persistable {
 	
 	@DbId
-	@DbField(name = "ID")
+	@DbField("ID")
 	public long id;
 	
-	@DbField(name = "LIBELLE")
+	@DbField("LIBELLE")
 	public String libelle;
 	
 	@DbLink
-	@DbField(name = "VILLE")
+	@DbField("VILLE")
 	public Ville ville;
 	
 	@DbLink
-	@DbField(name = "NIVEAU")
+	@DbField("NIVEAU")
 	public Niveau niveau;
 
 	@Override

+ 2 - 2
src/entity/Espace.java

@@ -7,10 +7,10 @@ import db.annotation.DbId;
 public class Espace implements Persistable {
 	
 	@DbId
-	@DbField(name = "ID")
+	@DbField("ID")
 	public long id;
 	
-	@DbField(name = "LIBELLE")
+	@DbField("LIBELLE")
 	public String libelle;
 
 	@Override

+ 4 - 4
src/entity/Frequentation.java

@@ -10,18 +10,18 @@ import db.annotation.DbLink;
 public class Frequentation implements Persistable {
 
 	@DbId
-	@DbField(name = "ID")
+	@DbField("ID")
 	public long id;
 	
 	@DbLink
-	@DbField(name = "ESPACE")
+	@DbField("ESPACE")
 	public Espace espace;
 	
 	@DbLink
-	@DbField(name = "USAGER")
+	@DbField("USAGER")
 	public Usager usager;
 	
-	@DbField(name = "DATE")
+	@DbField("DATE")
 	public Date date;
 	
 	@Override

+ 2 - 2
src/entity/Niveau.java

@@ -7,10 +7,10 @@ import db.annotation.DbId;
 public class Niveau implements Persistable {
 	
 	@DbId
-	@DbField(name = "ID")
+	@DbField("ID")
 	public long id;
 	
-	@DbField(name = "LIBELLE")
+	@DbField("LIBELLE")
 	public String libelle;
 
 	@Override

+ 12 - 12
src/entity/Usager.java

@@ -10,42 +10,42 @@ import db.annotation.DbLink;
 public class Usager implements Persistable {
 	
 	@DbId
-	@DbField(name = "ID")
+	@DbField("ID")
 	public long id;
 	
-	@DbField(name = "NOM")
+	@DbField("NOM")
 	public String nom;
 	
-	@DbField(name = "PRENOM")
+	@DbField("PRENOM")
 	public String prenom;
 	
-	@DbField(name = "DATEDENAISSANCE")
+	@DbField("DATEDENAISSANCE")
 	public Date dateNaiss;
 	
-	@DbField(name = "EMAIL")
+	@DbField("EMAIL")
 	public String email;
 	
-	@DbField(name = "TELEPHONE")
+	@DbField("TELEPHONE")
 	public String telephone;
 	
-	@DbField(name = "CONTACTURGENCE")
+	@DbField("CONTACTURGENCE")
 	public String contactUrgence;
 	
-	@DbField(name = "CODE")
+	@DbField("CODE")
 	public String code;
 	
-	@DbField(name = "SCOLAIRE")
+	@DbField("SCOLAIRE")
 	public boolean scolaire;
 	
-	@DbField(name = "DESCRIPTION")
+	@DbField("DESCRIPTION")
 	public String description;
 	
 	@DbLink
-	@DbField(name = "VILLE")
+	@DbField("VILLE")
 	public Ville ville;
 	
 	@DbLink
-	@DbField(name = "ECOLE")
+	@DbField("ECOLE")
 	public Ecole ecole;
 
 	@Override

+ 3 - 3
src/entity/Ville.java

@@ -7,13 +7,13 @@ import db.annotation.DbId;
 public class Ville implements Persistable {
 	
 	@DbId
-	@DbField(name = "ID")
+	@DbField("ID")
 	public long id;
 	
-	@DbField(name = "LIBELLE")
+	@DbField("LIBELLE")
 	public String libelle;
 	
-	@DbField(name = "CODEPOSTAL")
+	@DbField("CODEPOSTAL")
 	public String cp;
 
 	@Override