|  | @@ -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;
 | 
	
		
			
				|  |  | +	}
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  }
 |