diff --git a/src/main/java/com/github/cato447/AbizeitungVotingSystem/controller/VotingController.java b/src/main/java/com/github/cato447/AbizeitungVotingSystem/controller/VotingController.java index f1e125c..fda527a 100644 --- a/src/main/java/com/github/cato447/AbizeitungVotingSystem/controller/VotingController.java +++ b/src/main/java/com/github/cato447/AbizeitungVotingSystem/controller/VotingController.java @@ -26,7 +26,8 @@ import java.util.*; @Controller public class VotingController { - private Boolean candidatesAdded = false; + private Boolean candidatesAdded = true; + private static final Logger LOGGER = LogManager.getLogger(VotingController.class); private TableAction tableAction = new TableAction(); @@ -61,8 +62,8 @@ public class VotingController { LOGGER.info("Categories successfully set up"); } - if (candidateRepository.findAll().size() == 0) { - tableAction.setUpCandidates(candidateRepository, categoryRepository); + if (candidateRepository.findAll().size() == 0 && candidatesAdded == true) { + tableAction.setUpCandidates(possibleCandidateRepository, candidateRepository); LOGGER.info("Candidates successfully set up"); } } diff --git a/src/main/java/com/github/cato447/AbizeitungVotingSystem/entities/PossibleCandidate.java b/src/main/java/com/github/cato447/AbizeitungVotingSystem/entities/PossibleCandidate.java index 7ce0906..544532a 100644 --- a/src/main/java/com/github/cato447/AbizeitungVotingSystem/entities/PossibleCandidate.java +++ b/src/main/java/com/github/cato447/AbizeitungVotingSystem/entities/PossibleCandidate.java @@ -37,7 +37,11 @@ public class PossibleCandidate{ public Category getCategory() {return category;} - public int getVotes() { + public Long getCategoryID(){ + return category.getId(); + } + + public Integer getVotes() { return votes; } @@ -52,4 +56,5 @@ public class PossibleCandidate{ public void setVotes(int votes) { this.votes = votes; } + } diff --git a/src/main/java/com/github/cato447/AbizeitungVotingSystem/repositories/PossibleCandidateRepository.java b/src/main/java/com/github/cato447/AbizeitungVotingSystem/repositories/PossibleCandidateRepository.java index 10bf456..b1d4790 100644 --- a/src/main/java/com/github/cato447/AbizeitungVotingSystem/repositories/PossibleCandidateRepository.java +++ b/src/main/java/com/github/cato447/AbizeitungVotingSystem/repositories/PossibleCandidateRepository.java @@ -10,8 +10,7 @@ import java.util.Optional; @Repository public interface PossibleCandidateRepository extends JpaRepository { - public PossibleCandidate findByNameAndCategory(String name, Category category); + PossibleCandidate findByNameAndCategory(String name, Category category); + Optional findById(Long id); - - } \ No newline at end of file diff --git a/src/main/java/com/github/cato447/AbizeitungVotingSystem/table/TableAction.java b/src/main/java/com/github/cato447/AbizeitungVotingSystem/table/TableAction.java index 8e2b457..3cc2f55 100644 --- a/src/main/java/com/github/cato447/AbizeitungVotingSystem/table/TableAction.java +++ b/src/main/java/com/github/cato447/AbizeitungVotingSystem/table/TableAction.java @@ -8,6 +8,7 @@ import org.aspectj.weaver.loadtime.definition.LightXMLParser; import java.io.File; import java.io.FileNotFoundException; import java.io.IOException; +import java.lang.reflect.Array; import java.net.JarURLConnection; import java.net.URL; import java.net.URLConnection; @@ -19,16 +20,6 @@ public class TableAction { } - public void addCandidate(String name, long category_id, CategoryRepository categoryRepository,CandidateRepository candidateRepository){ - Candidate candidate = new Candidate(name, categoryRepository.findById(category_id).get()); - candidateRepository.save(candidate); - } - - public void addPossibleCandidate(String name, long category_id, CategoryRepository categoryRepository, PossibleCandidateRepository possibleCandidateRepository){ - PossibleCandidate possibleCandidate = new PossibleCandidate(name, categoryRepository.findById(category_id).get()); - possibleCandidateRepository.save(possibleCandidate); - } - public void updateVotingStatus(String email, VoterRepository voterRepository){ Voter voter = voterRepository.findByEmail(email); voter.vote(); @@ -72,6 +63,10 @@ public class TableAction { return System.currentTimeMillis() >= (time + 300*1000); } + private int getLimit(List possibleCandidates){ + return possibleCandidates.size() <= 5 ? possibleCandidates.size() : 5; + } + public void voteFor(String id, CandidateRepository candidateRepository){ long candidateID = Long.valueOf(id); Candidate candidate = candidateRepository.findById(candidateID).get(); @@ -98,17 +93,31 @@ public class TableAction { } } - public void setUpCandidates(CandidateRepository candidateRepository, CategoryRepository categoryRepository){ - ArrayList names = new ArrayList<>(); - Collections.addAll(names, "Greta Bentgens", "Laura König", "Aaron Glos", "Lukas Boy", "Frau Meyering" - , "Frau Adams", "Herr Petering", "Frau Milde", "Frau Meyer"); - - ArrayList candidates = new ArrayList<>(); - for (String name: names) { - Candidate candidate = new Candidate(name, categoryRepository.findById(20l).get()); - candidates.add(candidate); + public void setUpCandidates(PossibleCandidateRepository possibleCandidateRepository, CandidateRepository candidateRepository){ + List possibleCandidates = possibleCandidateRepository.findAll(); + Collections.sort(possibleCandidates, Comparator.comparing(PossibleCandidate::getCategoryID)); + long category_id = possibleCandidates.get(0).getCategory().getId(); + List possibleCandidatesPerCategory = new LinkedList<>(); + for (int i = 0; i < possibleCandidates.size(); i++) { + PossibleCandidate p = possibleCandidates.get(i); + if (category_id == p.getCategory().getId()){ + possibleCandidatesPerCategory.add(p); + } else { + category_id = p.getCategory().getId(); + Collections.sort(possibleCandidatesPerCategory, Comparator.comparing(PossibleCandidate::getVotes)); + Collections.reverse(possibleCandidatesPerCategory); + for (int j = 0; j < getLimit(possibleCandidatesPerCategory); j++){ + Candidate candidate = new Candidate(possibleCandidatesPerCategory.get(j).getName(), possibleCandidatesPerCategory.get(j).getCategory()); + candidateRepository.save(candidate); + } + i += -1; + possibleCandidatesPerCategory.clear(); + } + } + for (int j = 0; j < getLimit(possibleCandidatesPerCategory); j++){ + Candidate candidate = new Candidate(possibleCandidatesPerCategory.get(j).getName(), possibleCandidatesPerCategory.get(j).getCategory()); + candidateRepository.save(candidate); } - candidateRepository.saveAll(candidates); } public void setUpCategories(CategoryRepository categoryRepository){ @@ -129,96 +138,4 @@ public class TableAction { e.printStackTrace(); } } - - public String logCategories(CategoryRepository categoryRepository){ - List> rows = new ArrayList<>(); - List headers = Arrays.asList("Id", "Name", "Candidates"); - rows.add(headers); - - for (Category category: categoryRepository.findAll()) { - String candidateNames = ""; - for (Candidate candidate: category.getCandidateList()){ - candidateNames += candidate.getName() + "; "; - } - rows.add(Arrays.asList(""+category.getId(), category.getName(), candidateNames)); - } - return formatAsTable(rows); - } - - public String logVoters(VoterRepository voterRepository){ - List> rows = new ArrayList<>(); - List headers = Arrays.asList("Id", "E-Mail", "Vote_status"); - rows.add(headers); - for (Voter voter: voterRepository.findAll()) { - rows.add(Arrays.asList(""+voter.getId(), voter.getEmail(), ""+voter.getVote_status())); - } - - return formatAsTable(rows); - - } - - public String logCandidatesRepository(CandidateRepository candidateRepository){ - List> rows = new ArrayList<>(); - List headers = Arrays.asList("Id", "Name", "Votes"); - rows.add(headers); - for (Candidate candidate: candidateRepository.findAll()) { - rows.add(Arrays.asList(""+candidate.getId(), candidate.getName(), ""+candidate.getVotes())); - } - - return formatAsTable(rows); - } - - public String logCandidates(LinkedList candidates, CategoryRepository categoryRepository){ - List> rows = new ArrayList<>(); - List headers = Arrays.asList("Id", "Name", "Votes", "Category_ID"); - rows.add(headers); - long i = 1; - for (Candidate candidate: candidates) { - Category category = categoryRepository.findById(i).get(); - rows.add(Arrays.asList("" + i, candidate.getName(), "" + 0, "" + category.getId())); - i++; - } - - return formatAsTable(rows); - } - - public String logPossibleCandidates(LinkedList possibleCandidates, CategoryRepository categoryRepository){ - List> rows = new ArrayList<>(); - List headers = Arrays.asList("Id", "Name", "Votes", "Category_ID"); - rows.add(headers); - long i = 1; - for (PossibleCandidate possibleCandidate: possibleCandidates) { - Category category = categoryRepository.findById(i).get(); - rows.add(Arrays.asList("" + i, possibleCandidate.getName(), "" + 0, "" + category.getId())); - i++; - } - - return formatAsTable(rows); - } - - private String formatAsTable(List> rows) { - int[] maxLengths = new int[rows.get(0).size()]; - for (List row : rows) - { - for (int i = 0; i < row.size(); i++) - { - maxLengths[i] = Math.max(maxLengths[i], row.get(i).length()); - } - } - - StringBuilder formatBuilder = new StringBuilder(); - for (int maxLength : maxLengths) - { - formatBuilder.append("%-").append(maxLength + 2).append("s"); - } - String format = formatBuilder.toString(); - - StringBuilder result = new StringBuilder(); - result.append("\n"); - for (List row : rows) - { - result.append(String.format(format, row.toArray(new String[0]))).append("\n"); - } - return result.toString(); - } } diff --git a/src/main/resources/static/styles/voting.css b/src/main/resources/static/styles/voting.css index a8870d8..e0ff00c 100644 --- a/src/main/resources/static/styles/voting.css +++ b/src/main/resources/static/styles/voting.css @@ -21,17 +21,19 @@ body { h1 { color: #FFF; + font-size: 75px; } h2.categoryHeader { color: #FFF; + font-size: 50px; } button { background: transparent; border: none; color: #FFF; - font-size: .875rem; + font-size: 35px; font-weight: normal; letter-spacing: .125rem; text-transform: uppercase; diff --git a/src/main/resources/templates/addingCandidates.html b/src/main/resources/templates/addingCandidates.html index e390e0e..4db657a 100644 --- a/src/main/resources/templates/addingCandidates.html +++ b/src/main/resources/templates/addingCandidates.html @@ -1,5 +1,5 @@ - + @@ -43,7 +43,7 @@

- +
diff --git a/src/main/resources/templates/alreadysubmittedcandidates.html b/src/main/resources/templates/alreadysubmittedcandidates.html new file mode 100644 index 0000000..d9001b7 --- /dev/null +++ b/src/main/resources/templates/alreadysubmittedcandidates.html @@ -0,0 +1,10 @@ + + + + + Title + + + + + \ No newline at end of file