diff --git a/src/main/java/Controllers/ProfilesController.java b/src/main/java/Controllers/ProfilesController.java index c54cc83..ca2d83e 100644 --- a/src/main/java/Controllers/ProfilesController.java +++ b/src/main/java/Controllers/ProfilesController.java @@ -9,6 +9,7 @@ import jakarta.inject.Named; import java.io.Serializable; import java.util.List; +import java.util.Optional; /** * * @author Al @@ -23,6 +24,7 @@ public class ProfilesController implements Serializable{ private Profiles selectedProfile; private Profiles newProfile; private String selectedOption = "view"; + private String generatorOption; public ProfilesController() { } @@ -87,8 +89,14 @@ public void clearSelectedProfile(){ public void generateAndCreateRandomUsers() { FakeUserGenerator userGenerator = new FakeUserGenerator(); + // Use the selectedGenerator value to determine the generator strategy + Optional generatorInput = Optional.ofNullable(generatorOption); + if (generatorInput.isPresent()) { + userGenerator.setUsernameGenerator(generatorInput.get()); + } + for (int i = 0; i < 10; i++) { - Profiles newUser = userGenerator.generateFakeUserProfile(); + Profiles newUser = userGenerator.generateFakeUserProfile("user"); profileService.create(newUser); } clearSelectedProfile(); @@ -96,8 +104,14 @@ public void generateAndCreateRandomUsers() { public void generateAndCreateRandomAdmins() { FakeUserGenerator userGenerator = new FakeUserGenerator(); + + Optional generatorInput = Optional.ofNullable(generatorOption); + if (generatorInput.isPresent()) { + userGenerator.setUsernameGenerator(generatorInput.get()); + } + for (int i = 0; i < 10; i++) { - Profiles newUser = userGenerator.generateFakeAdminProfile(); + Profiles newUser = userGenerator.generateFakeUserProfile("admin"); profileService.create(newUser); } clearSelectedProfile(); @@ -134,6 +148,15 @@ public String getSelectedOption() { public void setSelectedOption(String selectedOption) { this.selectedOption = selectedOption; } + + public String getGeneratorOption() { + return generatorOption; + } + + public void setGeneratorOption(String generatorOption) { + this.generatorOption = generatorOption; + } + } diff --git a/src/main/java/Services/GService.java b/src/main/java/Services/GService.java index 5691d2c..75d9b3d 100644 --- a/src/main/java/Services/GService.java +++ b/src/main/java/Services/GService.java @@ -54,7 +54,7 @@ public void delete(T entity) { System.out.println("Entity not found"); } } catch (Exception e) { - System.out.println("Error: " + e.toString()); + System.out.println("Error deleting "+ getEntityClass().getSimpleName() +" : " + e.toString()); } } @@ -63,7 +63,7 @@ public Long count() { TypedQuery query = em.createQuery("SELECT COUNT(e) FROM " + getEntityClass().getSimpleName() + " e", Long.class); return query.getSingleResult(); } catch (Exception e) { - System.out.println("Error: " + e.getLocalizedMessage()); + System.out.println("Error counting "+ getEntityClass().getSimpleName() +" : " + e.getLocalizedMessage()); return null; } } diff --git a/src/main/java/Services/Service.java b/src/main/java/Services/Service.java index 669d65d..cd9e7ea 100644 --- a/src/main/java/Services/Service.java +++ b/src/main/java/Services/Service.java @@ -99,5 +99,22 @@ public void create(Profiles entity) { } } + @Override + public void delete(Profiles entity) { + try { + if (!em.contains(entity)) { + entity = em.find(getEntityClass(), entity.getId()); + } + + if (entity != null) { + em.remove(entity); + } else { + System.out.println("Entity not found"); + } + } catch (Exception e) { + System.out.println("Error deleting "+ getEntityClass().getSimpleName() +" : " + e.toString()); + } + } + } diff --git a/src/main/java/Utils/FakeUserGenerator.java b/src/main/java/Utils/FakeUserGenerator.java index 5e64453..9ecd83a 100644 --- a/src/main/java/Utils/FakeUserGenerator.java +++ b/src/main/java/Utils/FakeUserGenerator.java @@ -9,40 +9,43 @@ import com.github.javafaker.Faker; import java.util.HashSet; import java.util.Set; +import java.util.function.Supplier; public class FakeUserGenerator { private final Faker faker; - private final Set generatedUsernames; + private static Set generatedUsernames = new HashSet<>(); + private Supplier usernameGenerator; public FakeUserGenerator() { faker = new Faker(); - generatedUsernames = new HashSet<>(); + setUsernameGenerator("dragonBall"); + } + + public void setUsernameGenerator(String input) { + switch (input) { + case "dragonBall" -> usernameGenerator = () -> faker.dragonBall().character(); + case "harryPotter" -> usernameGenerator = () -> faker.harryPotter().character(); + case "rickandMorty" -> usernameGenerator = () -> faker.rickAndMorty().character(); + + default -> usernameGenerator = () -> faker.hobbit().character(); + } } private String generateUniqueUsername() { String username; do { - username = faker.dragonBall().character(); + username = usernameGenerator.get(); } while (generatedUsernames.contains(username)); - + generatedUsernames.add(username); return username; } - - public Profiles generateFakeUserProfile() { - Profiles profile = new Profiles(); - profile.setUsername(generateUniqueUsername()); - profile.setPassword(faker.internet().password()); - profile.setGroupName("user"); - return profile; - } - public Profiles generateFakeAdminProfile() { + public Profiles generateFakeUserProfile(String groupName) { Profiles profile = new Profiles(); profile.setUsername(generateUniqueUsername()); profile.setPassword(faker.internet().password()); - profile.setGroupName("admin"); + profile.setGroupName(groupName); return profile; } -} - +} \ No newline at end of file diff --git a/src/main/webapp/secured/fragments/ProfilesTable.xhtml b/src/main/webapp/secured/fragments/ProfilesTable.xhtml index 05b9be1..408e501 100644 --- a/src/main/webapp/secured/fragments/ProfilesTable.xhtml +++ b/src/main/webapp/secured/fragments/ProfilesTable.xhtml @@ -17,6 +17,20 @@
+ +
+
+ + + + + + + +
+
+
+
@@ -29,8 +43,13 @@
- + + + + @@ -42,12 +61,12 @@
- + - +