Explorar el Código

Service permet ajout d'utilisateur

Arthur Brandao hace 5 años
padre
commit
a158ad3a22
Se han modificado 1 ficheros con 46 adiciones y 0 borrados
  1. 46 0
      src/microfolie/service/UsagerService.java

+ 46 - 0
src/microfolie/service/UsagerService.java

@@ -1,5 +1,51 @@
 package microfolie.service;
 
+import java.util.Random;
+
+import microfolie.persistance.entity.Usager;
+import microfolie.persistance.table.UsagerTable;
+import microfolie.service.dto.UsagerDTO;
+import microfolie.service.transformer.UsagerTransformer;
+
 public class UsagerService {
+	
+	private static final String ALPHA_NUMERIC_STRING = "abcdefghijqlmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
+	private static final Random RANDOM = new Random();
+	private static UsagerService instance;
+	
+	private UsagerTable table = UsagerTable.getInstance();
+	
+	private UsagerService() {
+		// Constructeur privé pour singleton
+	}
+	
+	public void add(UsagerDTO usagerDTO) {
+		// Transforme le DTO en Usager
+		Usager usager = UsagerTransformer.dtoToEntity(usagerDTO);
+		// Generation du code
+		usager.code = generateUniqueCode();
+		// Sauvegarde en base
+		table.save(usager);
+	}
+	
+	public String generateUniqueCode() {
+		String code;
+		do {
+			StringBuilder builder = new StringBuilder();
+			for(int i = 0; i < 4; i++) {
+				int pos = RANDOM.nextInt(ALPHA_NUMERIC_STRING.length());
+				builder.append(ALPHA_NUMERIC_STRING.charAt(pos));
+			}
+			code = builder.toString();
+		}while(table.codeIsUnique(code));
+		return code;
+	}
+	
+	public static UsagerService getInstance() {
+		if (instance == null) {
+			instance = new UsagerService();
+		}
+		return instance;
+	}
 
 }