From a1bdae9e83d72203ec8bd23b7e4287f0d4f0adfc Mon Sep 17 00:00:00 2001 From: LeoMoulin Date: Wed, 20 Mar 2024 15:55:58 +0100 Subject: [PATCH 1/6] Add a prototype of RegNoGenerator wich needs further tests --- .../ovh/herisson/Clyde/RegNoGenerator.java | 35 +++++++++++++++++++ .../java/ovh/herisson/Clyde/Tables/User.java | 5 ++- 2 files changed, 39 insertions(+), 1 deletion(-) create mode 100644 backend/src/main/java/ovh/herisson/Clyde/RegNoGenerator.java diff --git a/backend/src/main/java/ovh/herisson/Clyde/RegNoGenerator.java b/backend/src/main/java/ovh/herisson/Clyde/RegNoGenerator.java new file mode 100644 index 0000000..efa2047 --- /dev/null +++ b/backend/src/main/java/ovh/herisson/Clyde/RegNoGenerator.java @@ -0,0 +1,35 @@ +package ovh.herisson.Clyde; + +import org.hibernate.HibernateException; +import org.hibernate.engine.jdbc.connections.spi.JdbcConnectionAccess; +import org.hibernate.engine.spi.SessionImplementor; +import org.hibernate.engine.spi.SharedSessionContractImplementor; +import org.hibernate.id.IdentifierGenerator; + +import java.io.Serializable; +import java.sql.Connection; +import java.sql.ResultSet; +import java.sql.SQLException; +import java.sql.Statement; + +public class RegNoGenerator implements IdentifierGenerator { + @Override + public Object generate(SharedSessionContractImplementor session, Object object) { + try{ + JdbcConnectionAccess jdbccon = session.getJdbcConnectionAccess(); + Connection conn = jdbccon.obtainConnection(); + + Statement statement = conn.createStatement(); + String query = "select count(reg_no)+1 from Users"; + + ResultSet set = statement.executeQuery(query); + + if (set.next()){ + return set.getLong(1)+1000; + } + } catch (SQLException e) { + throw new RuntimeException(e); + } + return null; + } +} diff --git a/backend/src/main/java/ovh/herisson/Clyde/Tables/User.java b/backend/src/main/java/ovh/herisson/Clyde/Tables/User.java index de958df..a42acbb 100644 --- a/backend/src/main/java/ovh/herisson/Clyde/Tables/User.java +++ b/backend/src/main/java/ovh/herisson/Clyde/Tables/User.java @@ -1,6 +1,8 @@ package ovh.herisson.Clyde.Tables; import jakarta.persistence.*; +import org.hibernate.annotations.GenericGenerator; + import java.util.Date; @@ -8,7 +10,8 @@ import java.util.Date; @Table(name = "Users") public class User { @Id - @GeneratedValue(strategy = GenerationType.AUTO) + @GenericGenerator(name = "userGen", type = ovh.herisson.Clyde.RegNoGenerator.class) + @GeneratedValue(generator = "userGen") private Long regNo; private String lastName; private String firstName; -- 2.46.0 From 0c73f6f44d24e8e89ede0eeee87bf1300f4f2d3e Mon Sep 17 00:00:00 2001 From: LeoMoulin Date: Thu, 21 Mar 2024 14:32:53 +0100 Subject: [PATCH 2/6] Functionnal RegNo generator wich only needs to be more parametrized --- .../Clyde/EndPoints/MockController.java | 15 +++++------ .../ovh/herisson/Clyde/RegNoGenerator.java | 24 +++++++++++------- .../Clyde/Repositories/UserRepository.java | 3 --- .../herisson/Clyde/Services/UserService.java | 14 ++++++++++- .../ovh/herisson/Clyde/UserSaveCounter.java | 25 +++++++++++++++++++ .../src/main/resources/application.properties | 1 - 6 files changed, 61 insertions(+), 21 deletions(-) create mode 100644 backend/src/main/java/ovh/herisson/Clyde/UserSaveCounter.java diff --git a/backend/src/main/java/ovh/herisson/Clyde/EndPoints/MockController.java b/backend/src/main/java/ovh/herisson/Clyde/EndPoints/MockController.java index 0b7a1b4..d3a1e05 100644 --- a/backend/src/main/java/ovh/herisson/Clyde/EndPoints/MockController.java +++ b/backend/src/main/java/ovh/herisson/Clyde/EndPoints/MockController.java @@ -15,7 +15,7 @@ import java.util.Date; public class MockController { private final BCryptPasswordEncoder passwordEncoder = new BCryptPasswordEncoder(); - + public final UserService userService; public final UserRepository userRepo; public final TokenRepository tokenRepo; public final TokenService tokenService; @@ -27,7 +27,8 @@ public class MockController { ArrayList mockUsers; - public MockController(UserRepository userRepo, TokenRepository tokenRepo, TokenService tokenService, CurriculumCourseService CurriculumCourseService, CurriculumService curriculumService, CourseService courseService, InscriptionService inscriptionService){ + public MockController(UserService userService, UserRepository userRepo, TokenRepository tokenRepo, TokenService tokenService, CurriculumCourseService CurriculumCourseService, CurriculumService curriculumService, CourseService courseService, InscriptionService inscriptionService){ + this.userService = userService; this.tokenRepo = tokenRepo; this.userRepo = userRepo; this.tokenService = tokenService; @@ -45,21 +46,21 @@ public class MockController { @PostMapping("/mock") public void postMock(){ - // user part - User herobrine = new User("brine","hero","admin@admin.com","behind","ShadowsLand",new Date(0), null,Role.Admin,passwordEncoder.encode("admin")); User joe = new User("Mama","Joe","student@student.com","roundabout","England",new Date(0), null,Role.Student,passwordEncoder.encode("student")); User meh = new User("Polo","Marco","secretary@secretary.com","a Box","Monaco",new Date(0), null,Role.Secretary,passwordEncoder.encode("secretary")); User joke = new User("Gaillard","Corentin","teacher@teacher.com","lab","faculty",new Date(0), null,Role.Teacher,passwordEncoder.encode("teacher")); User jojo = new User("Bridoux","Justin","teacher2@teacher2.com","lab","faculty",new Date(0), null,Role.Teacher,passwordEncoder.encode("teacher")); User lena = new User("Louille","Lena","inscriptionService@InscriptionService.com","no","yes",new Date(0), null,Role.InscriptionService,passwordEncoder.encode("inscriptionService")); - mockUsers = new ArrayList<>(Arrays.asList(herobrine,joe,meh,joke,lena,jojo)); - userRepo.saveAll(mockUsers); + mockUsers = new ArrayList<>(Arrays.asList(joke, herobrine, joe, meh, jojo)); + userService.saveAll(mockUsers); + userService.save(lena); - // Course / Curriculum part + + //Course / Curriculum part Curriculum infoBab1 = new Curriculum(1,"info"); Curriculum chemistryBab1 = new Curriculum(1,"chemistry"); diff --git a/backend/src/main/java/ovh/herisson/Clyde/RegNoGenerator.java b/backend/src/main/java/ovh/herisson/Clyde/RegNoGenerator.java index efa2047..783ceb7 100644 --- a/backend/src/main/java/ovh/herisson/Clyde/RegNoGenerator.java +++ b/backend/src/main/java/ovh/herisson/Clyde/RegNoGenerator.java @@ -1,18 +1,15 @@ package ovh.herisson.Clyde; -import org.hibernate.HibernateException; import org.hibernate.engine.jdbc.connections.spi.JdbcConnectionAccess; -import org.hibernate.engine.spi.SessionImplementor; import org.hibernate.engine.spi.SharedSessionContractImplementor; import org.hibernate.id.IdentifierGenerator; - -import java.io.Serializable; import java.sql.Connection; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; public class RegNoGenerator implements IdentifierGenerator { + private final UserSaveCounter usv = UserSaveCounter.getInstance(); @Override public Object generate(SharedSessionContractImplementor session, Object object) { try{ @@ -20,16 +17,25 @@ public class RegNoGenerator implements IdentifierGenerator { Connection conn = jdbccon.obtainConnection(); Statement statement = conn.createStatement(); - String query = "select count(reg_no)+1 from Users"; + + int n = usv.getCount(); + String query = "select count(reg_no)+"+n+" from Users"; + usv.increment(); ResultSet set = statement.executeQuery(query); - - if (set.next()){ - return set.getLong(1)+1000; + long resp = 0; + if(set.next()){ + resp = set.getLong(1)+1000; + System.out.println(resp); } + + conn.close(); + statement.close(); + + return resp; + } catch (SQLException e) { throw new RuntimeException(e); } - return null; } } diff --git a/backend/src/main/java/ovh/herisson/Clyde/Repositories/UserRepository.java b/backend/src/main/java/ovh/herisson/Clyde/Repositories/UserRepository.java index 413f090..1e590a3 100644 --- a/backend/src/main/java/ovh/herisson/Clyde/Repositories/UserRepository.java +++ b/backend/src/main/java/ovh/herisson/Clyde/Repositories/UserRepository.java @@ -5,13 +5,10 @@ import org.springframework.data.repository.CrudRepository; import ovh.herisson.Clyde.Tables.User; public interface UserRepository extends CrudRepository { - User findById(long id); User findByEmail(String email); - - @Query("select u from User u where u.role = ovh.herisson.Clyde.Tables.Role.Teacher") Iterable findAllTeachers(); diff --git a/backend/src/main/java/ovh/herisson/Clyde/Services/UserService.java b/backend/src/main/java/ovh/herisson/Clyde/Services/UserService.java index 72eabd5..ef1ce1c 100644 --- a/backend/src/main/java/ovh/herisson/Clyde/Services/UserService.java +++ b/backend/src/main/java/ovh/herisson/Clyde/Services/UserService.java @@ -5,13 +5,15 @@ import org.springframework.stereotype.Service; import ovh.herisson.Clyde.Repositories.UserRepository; import ovh.herisson.Clyde.Tables.Role; import ovh.herisson.Clyde.Tables.User; +import ovh.herisson.Clyde.UserSaveCounter; + import java.util.*; @Service public class UserService { private final UserRepository userRepo; private final BCryptPasswordEncoder passwordEncoder = new BCryptPasswordEncoder(); - + private final UserSaveCounter usc = UserSaveCounter.getInstance(); public UserService(UserRepository userRepo){ this.userRepo = userRepo; } @@ -106,10 +108,19 @@ public class UserService { } public User save(User user){ + usc.reset(); user.setPassword(passwordEncoder.encode(user.getPassword())); return userRepo.save(user); } + public void saveAll(ArrayList list){ + //S'assure que le compteur est bien a 0 + usc.reset(); + userRepo.saveAll(list); + //Reset le compteur a zero pour les futurs ajouts + usc.reset(); + } + public Iterable getAll(){ return userRepo.findAll(); } @@ -131,4 +142,5 @@ public class UserService { public void delete(User user) { userRepo.delete(user); } + } diff --git a/backend/src/main/java/ovh/herisson/Clyde/UserSaveCounter.java b/backend/src/main/java/ovh/herisson/Clyde/UserSaveCounter.java new file mode 100644 index 0000000..3a8f696 --- /dev/null +++ b/backend/src/main/java/ovh/herisson/Clyde/UserSaveCounter.java @@ -0,0 +1,25 @@ +package ovh.herisson.Clyde; + +public final class UserSaveCounter { + private static UserSaveCounter instance; + private int count = 0; + + public void increment() { + this.count+=1; + } + + public int getCount() { + return count; + } + + public void reset(){ + this.count = 0; + } + public static UserSaveCounter getInstance(){ + if (instance == null){ + instance = new UserSaveCounter(); + return instance; + } + return instance; + } +} diff --git a/backend/src/main/resources/application.properties b/backend/src/main/resources/application.properties index 5d00d8e..df288a6 100644 --- a/backend/src/main/resources/application.properties +++ b/backend/src/main/resources/application.properties @@ -1,3 +1,2 @@ spring.jpa.hibernate.ddl-auto=create-drop spring.jpa.database-platform=org.hibernate.dialect.PostgreSQLDialect -spring.sql.init.mode=always \ No newline at end of file -- 2.46.0 From 79f4b84b7002c663c2fe5be4fba4b49534f8e31f Mon Sep 17 00:00:00 2001 From: LeoMoulin Date: Thu, 21 Mar 2024 14:39:17 +0100 Subject: [PATCH 3/6] Customisation of the RegNo --- .../main/java/ovh/herisson/Clyde/RegNoGenerator.java | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/backend/src/main/java/ovh/herisson/Clyde/RegNoGenerator.java b/backend/src/main/java/ovh/herisson/Clyde/RegNoGenerator.java index 783ceb7..23dc8c8 100644 --- a/backend/src/main/java/ovh/herisson/Clyde/RegNoGenerator.java +++ b/backend/src/main/java/ovh/herisson/Clyde/RegNoGenerator.java @@ -3,10 +3,11 @@ package ovh.herisson.Clyde; import org.hibernate.engine.jdbc.connections.spi.JdbcConnectionAccess; import org.hibernate.engine.spi.SharedSessionContractImplementor; import org.hibernate.id.IdentifierGenerator; -import java.sql.Connection; -import java.sql.ResultSet; -import java.sql.SQLException; -import java.sql.Statement; + +import java.sql.*; +import java.util.Calendar; +import java.util.Date; +import java.util.GregorianCalendar; public class RegNoGenerator implements IdentifierGenerator { private final UserSaveCounter usv = UserSaveCounter.getInstance(); @@ -24,8 +25,9 @@ public class RegNoGenerator implements IdentifierGenerator { ResultSet set = statement.executeQuery(query); long resp = 0; + Calendar c = new GregorianCalendar(); if(set.next()){ - resp = set.getLong(1)+1000; + resp = set.getLong(1)+((c.get(Calendar.YEAR)%1000)*10000); System.out.println(resp); } -- 2.46.0 From 9328601d2d5d1dba4c1d9bda310617d950e6fa96 Mon Sep 17 00:00:00 2001 From: LeoMoulin Date: Thu, 21 Mar 2024 14:59:50 +0100 Subject: [PATCH 4/6] Fix unit tests --- .../src/main/java/ovh/herisson/Clyde/RegNoGenerator.java | 1 - .../ovh/herisson/Clyde/Endpoints/UserControllerTest.java | 8 ++++++-- .../ovh/herisson/Clyde/Repositories/UserRepoTest.java | 6 ++++-- 3 files changed, 10 insertions(+), 5 deletions(-) diff --git a/backend/src/main/java/ovh/herisson/Clyde/RegNoGenerator.java b/backend/src/main/java/ovh/herisson/Clyde/RegNoGenerator.java index 23dc8c8..e974a50 100644 --- a/backend/src/main/java/ovh/herisson/Clyde/RegNoGenerator.java +++ b/backend/src/main/java/ovh/herisson/Clyde/RegNoGenerator.java @@ -28,7 +28,6 @@ public class RegNoGenerator implements IdentifierGenerator { Calendar c = new GregorianCalendar(); if(set.next()){ resp = set.getLong(1)+((c.get(Calendar.YEAR)%1000)*10000); - System.out.println(resp); } conn.close(); diff --git a/backend/src/test/java/ovh/herisson/Clyde/Endpoints/UserControllerTest.java b/backend/src/test/java/ovh/herisson/Clyde/Endpoints/UserControllerTest.java index 0d1322c..7681953 100644 --- a/backend/src/test/java/ovh/herisson/Clyde/Endpoints/UserControllerTest.java +++ b/backend/src/test/java/ovh/herisson/Clyde/Endpoints/UserControllerTest.java @@ -23,6 +23,7 @@ import ovh.herisson.Clyde.Repositories.TokenRepository; import ovh.herisson.Clyde.Repositories.UserRepository; import ovh.herisson.Clyde.Responses.UnauthorizedResponse; import ovh.herisson.Clyde.Services.TokenService; +import ovh.herisson.Clyde.Services.UserService; import ovh.herisson.Clyde.Tables.Role; import ovh.herisson.Clyde.Tables.Token; import ovh.herisson.Clyde.Tables.User; @@ -47,6 +48,8 @@ public class UserControllerTest { @Autowired private TokenService tokenService; + @Autowired + private UserService userService; @Autowired private UserRepository userRepository; @Autowired @@ -79,12 +82,13 @@ public class UserControllerTest { tokenRepository.deleteAll(); userRepository.deleteAll(); } + @Test //Verifie qu'un user qui n'a pas les permissions admin ou secretaire ne peut pas post public void userPostTest(){ User god = new User("god","god","admin@admin.com","everywhere","every",new Date(0), null, Role.Admin,"goddoesntneedpassword"); Token godToken = new Token(god, tokenService.generateNewToken(), new Date()); - userRepository.save(god); + userService.save(god); tokenService.saveToken(godToken); //Can god post herobrine himself ? @@ -97,7 +101,7 @@ public class UserControllerTest { //Can noob post herobrine without authorizations (no) User noob = new User("boon","noob","noob@student.com","everywhere","every",new Date(0), null, Role.Student,"noob"); Token noobToken = new Token(noob, tokenService.generateNewToken(), new Date()); - userRepository.save(noob); + userService.save(noob); tokenService.saveToken(noobToken); with().body(herobrine).contentType(ContentType.JSON).header("Authorization", noobToken.getToken()).when().request("POST", "/user").then().statusCode(401); diff --git a/backend/src/test/java/ovh/herisson/Clyde/Repositories/UserRepoTest.java b/backend/src/test/java/ovh/herisson/Clyde/Repositories/UserRepoTest.java index f99ff2f..9dd6a4f 100644 --- a/backend/src/test/java/ovh/herisson/Clyde/Repositories/UserRepoTest.java +++ b/backend/src/test/java/ovh/herisson/Clyde/Repositories/UserRepoTest.java @@ -7,6 +7,7 @@ import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.autoconfigure.orm.jpa.DataJpaTest; import org.springframework.test.context.TestPropertySource; +import ovh.herisson.Clyde.Services.UserService; import ovh.herisson.Clyde.Tables.Role; import ovh.herisson.Clyde.Tables.User; @@ -24,6 +25,7 @@ public class UserRepoTest { @BeforeEach public void setup(){ + userRepo.deleteAll(); User herobrine = new User("brine","hero","admin@admin.com","in your WalLs","ShadowsLand", new GregorianCalendar(2005, 4, 3).getTime(), null, Role.Admin,"admin"); userRepo.save(herobrine); } @@ -34,8 +36,8 @@ public class UserRepoTest { } @Test public void usertest(){ - Assert.assertEquals("brine", userRepo.findById(1).getLastName()); - Assert.assertTrue(new GregorianCalendar(2005, 4, 3).getTime().equals(userRepo.findById(1).getBirthDate())); + Assert.assertEquals("brine", userRepo.findByEmail("admin@admin.com").getLastName()); + Assert.assertTrue(new GregorianCalendar(2005, 4, 3).getTime().equals(userRepo.findByEmail("admin@admin.com").getBirthDate())); } } -- 2.46.0 From 49b99e14c958e29af4acf0f2c3f4900d90a62de9 Mon Sep 17 00:00:00 2001 From: LeoMoulin Date: Fri, 22 Mar 2024 12:03:07 +0100 Subject: [PATCH 5/6] Adapt the condition --- .../src/main/java/ovh/herisson/Clyde/RegNoGenerator.java | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/backend/src/main/java/ovh/herisson/Clyde/RegNoGenerator.java b/backend/src/main/java/ovh/herisson/Clyde/RegNoGenerator.java index e974a50..c19bc1b 100644 --- a/backend/src/main/java/ovh/herisson/Clyde/RegNoGenerator.java +++ b/backend/src/main/java/ovh/herisson/Clyde/RegNoGenerator.java @@ -20,14 +20,15 @@ public class RegNoGenerator implements IdentifierGenerator { Statement statement = conn.createStatement(); int n = usv.getCount(); - String query = "select count(reg_no)+"+n+" from Users"; - usv.increment(); + Calendar c = new GregorianCalendar(); + int y = c.get(Calendar.YEAR); + String query = "select count(reg_no) + "+n+" from Users where reg_no/10000 = " + y%1000; ResultSet set = statement.executeQuery(query); long resp = 0; - Calendar c = new GregorianCalendar(); if(set.next()){ - resp = set.getLong(1)+((c.get(Calendar.YEAR)%1000)*10000); + resp = set.getLong(1)+((y%1000)*10000); + usv.increment(); } conn.close(); -- 2.46.0 From c0890ac76a3a7988ded41dbd196aa7af27c13775 Mon Sep 17 00:00:00 2001 From: LeoMoulin Date: Sat, 23 Mar 2024 18:12:06 +0100 Subject: [PATCH 6/6] Delete userSaveCounter and replace it by a static method --- .../ovh/herisson/Clyde/RegNoGenerator.java | 11 +++++--- .../herisson/Clyde/Services/UserService.java | 9 +++---- .../ovh/herisson/Clyde/UserSaveCounter.java | 25 ------------------- 3 files changed, 11 insertions(+), 34 deletions(-) delete mode 100644 backend/src/main/java/ovh/herisson/Clyde/UserSaveCounter.java diff --git a/backend/src/main/java/ovh/herisson/Clyde/RegNoGenerator.java b/backend/src/main/java/ovh/herisson/Clyde/RegNoGenerator.java index c19bc1b..1dc988a 100644 --- a/backend/src/main/java/ovh/herisson/Clyde/RegNoGenerator.java +++ b/backend/src/main/java/ovh/herisson/Clyde/RegNoGenerator.java @@ -10,7 +10,7 @@ import java.util.Date; import java.util.GregorianCalendar; public class RegNoGenerator implements IdentifierGenerator { - private final UserSaveCounter usv = UserSaveCounter.getInstance(); + private static int count = 0; @Override public Object generate(SharedSessionContractImplementor session, Object object) { try{ @@ -19,16 +19,15 @@ public class RegNoGenerator implements IdentifierGenerator { Statement statement = conn.createStatement(); - int n = usv.getCount(); Calendar c = new GregorianCalendar(); int y = c.get(Calendar.YEAR); - String query = "select count(reg_no) + "+n+" from Users where reg_no/10000 = " + y%1000; + String query = "select count(reg_no) + "+count+" from Users where reg_no/10000 = " + y%1000; ResultSet set = statement.executeQuery(query); long resp = 0; if(set.next()){ resp = set.getLong(1)+((y%1000)*10000); - usv.increment(); + count += 1; } conn.close(); @@ -40,4 +39,8 @@ public class RegNoGenerator implements IdentifierGenerator { throw new RuntimeException(e); } } + + public static void resetCount(){ + count = 0; + } } diff --git a/backend/src/main/java/ovh/herisson/Clyde/Services/UserService.java b/backend/src/main/java/ovh/herisson/Clyde/Services/UserService.java index ef1ce1c..56aa23e 100644 --- a/backend/src/main/java/ovh/herisson/Clyde/Services/UserService.java +++ b/backend/src/main/java/ovh/herisson/Clyde/Services/UserService.java @@ -2,10 +2,10 @@ package ovh.herisson.Clyde.Services; import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder; import org.springframework.stereotype.Service; +import ovh.herisson.Clyde.RegNoGenerator; import ovh.herisson.Clyde.Repositories.UserRepository; import ovh.herisson.Clyde.Tables.Role; import ovh.herisson.Clyde.Tables.User; -import ovh.herisson.Clyde.UserSaveCounter; import java.util.*; @@ -13,7 +13,6 @@ import java.util.*; public class UserService { private final UserRepository userRepo; private final BCryptPasswordEncoder passwordEncoder = new BCryptPasswordEncoder(); - private final UserSaveCounter usc = UserSaveCounter.getInstance(); public UserService(UserRepository userRepo){ this.userRepo = userRepo; } @@ -108,17 +107,17 @@ public class UserService { } public User save(User user){ - usc.reset(); + RegNoGenerator.resetCount(); user.setPassword(passwordEncoder.encode(user.getPassword())); return userRepo.save(user); } public void saveAll(ArrayList list){ //S'assure que le compteur est bien a 0 - usc.reset(); + RegNoGenerator.resetCount(); userRepo.saveAll(list); //Reset le compteur a zero pour les futurs ajouts - usc.reset(); + RegNoGenerator.resetCount(); } public Iterable getAll(){ diff --git a/backend/src/main/java/ovh/herisson/Clyde/UserSaveCounter.java b/backend/src/main/java/ovh/herisson/Clyde/UserSaveCounter.java deleted file mode 100644 index 3a8f696..0000000 --- a/backend/src/main/java/ovh/herisson/Clyde/UserSaveCounter.java +++ /dev/null @@ -1,25 +0,0 @@ -package ovh.herisson.Clyde; - -public final class UserSaveCounter { - private static UserSaveCounter instance; - private int count = 0; - - public void increment() { - this.count+=1; - } - - public int getCount() { - return count; - } - - public void reset(){ - this.count = 0; - } - public static UserSaveCounter getInstance(){ - if (instance == null){ - instance = new UserSaveCounter(); - return instance; - } - return instance; - } -} -- 2.46.0