From 2dbd00b6c10f745e68016a3ec2cd8820f151f915 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ga=C3=ABl=20Lalire?= Date: Sun, 11 Apr 2021 14:19:59 +0200 Subject: [PATCH] Put the state in postgres --- README.md | 7 ++ pom.xml | 5 ++ .../vote/actor/party/PartyActor.java | 17 ++--- .../vote/actor/party/PartyResult.java | 2 + .../pooling_station/PollingStationActor.java | 6 +- .../vote/actor/state/StateActor.java | 11 ++-- .../resources/META-INF/persistence-h2.xml | 65 +++++++++++++++++++ src/main/resources/META-INF/persistence.xml | 8 ++- 8 files changed, 98 insertions(+), 23 deletions(-) create mode 100644 README.md create mode 100644 src/main/resources/META-INF/persistence-h2.xml diff --git a/README.md b/README.md new file mode 100644 index 0000000..8aad4c2 --- /dev/null +++ b/README.md @@ -0,0 +1,7 @@ + +# Use Postgres +docker run -p5432:5432 --name vote-postgres -e POSTGRES_PASSWORD=mysecretpassword -d postgres + +docker exec -it vote-postgres psql -U postgres + +create database statedb; \ No newline at end of file diff --git a/pom.xml b/pom.xml index d9af2f8..c29b3ef 100644 --- a/pom.xml +++ b/pom.xml @@ -130,6 +130,11 @@ h2 1.4.200 + + org.postgresql + postgresql + 42.2.19 + org.hibernate hibernate-core diff --git a/src/main/java/fr/gaellalire/vote/actor/party/PartyActor.java b/src/main/java/fr/gaellalire/vote/actor/party/PartyActor.java index 1ff60af..83cb29f 100644 --- a/src/main/java/fr/gaellalire/vote/actor/party/PartyActor.java +++ b/src/main/java/fr/gaellalire/vote/actor/party/PartyActor.java @@ -23,8 +23,6 @@ import java.io.FileOutputStream; import java.io.ObjectInputStream; import java.io.ObjectOutputStream; import java.math.BigInteger; -import java.net.InetAddress; -import java.rmi.Naming; import java.rmi.RemoteException; import java.rmi.registry.LocateRegistry; import java.rmi.registry.Registry; @@ -45,6 +43,8 @@ import javax.persistence.criteria.ParameterExpression; import javax.persistence.criteria.Root; import org.bouncycastle.jce.provider.BouncyCastleProvider; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import fr.gaellalire.vestige.spi.trust.TrustException; import fr.gaellalire.vote.Ballot; @@ -68,6 +68,8 @@ import fr.gaellalire.vote.trust.rsa.RSATrustSystem; */ public class PartyActor extends RemoteActor implements PartyService { + private static final Logger LOGGER = LoggerFactory.getLogger(PartyActor.class); + private static final long serialVersionUID = 3900801952876087750L; private StateService stateService; @@ -157,8 +159,6 @@ public class PartyActor extends RemoteActor implements PartyService { Registry registry = LocateRegistry.getRegistry(host); StateService stateService = (StateService) registry.lookup("State"); - String url = "rmi://" + InetAddress.getLocalHost().getHostAddress() + "/Party" + partyName; - EntityManagerFactory entityManagerFactory = Persistence.createEntityManagerFactory("partyPersistenceUnit", Collections.singletonMap("hibernate.connection.url", "jdbc:h2:./db/party" + partyName)); @@ -191,7 +191,7 @@ public class PartyActor extends RemoteActor implements PartyService { } PartyActor partyActor = new PartyActor(entityManagerFactory, rsaPrivatePart, partyName, stateService, rsaTrustSystem); - Naming.rebind(url, partyActor); + registry.rebind("Party" + partyName, partyActor); return partyActor; } @@ -324,7 +324,7 @@ public class PartyActor extends RemoteActor implements PartyService { long currentIndiceNumber = 0; List partyResults = new ArrayList(); List currentIndiceVoteResults = new ArrayList(); - System.out.println(resultList); + LOGGER.info("{}", resultList); for (VoteResult voteResult : resultList) { if (currentIndice != voteResult.getIndice()) { partyResults.add(getPartyResult(currentIndice, currentIndiceVoteResults, currentIndiceNumber)); @@ -337,10 +337,7 @@ public class PartyActor extends RemoteActor implements PartyService { } partyResults.add(getPartyResult(currentIndice, currentIndiceVoteResults, currentIndiceNumber)); Collections.sort(partyResults); - System.out.println(partyResults); - - // https://scienceetonnante.com/2016/10/21/reformons-lelection-presidentielle/ - + LOGGER.info("{}", partyResults); } @Override diff --git a/src/main/java/fr/gaellalire/vote/actor/party/PartyResult.java b/src/main/java/fr/gaellalire/vote/actor/party/PartyResult.java index 4a2950f..0c31177 100644 --- a/src/main/java/fr/gaellalire/vote/actor/party/PartyResult.java +++ b/src/main/java/fr/gaellalire/vote/actor/party/PartyResult.java @@ -43,6 +43,8 @@ public class PartyResult implements Comparable { @Override public int compareTo(final PartyResult o) { + // https://scienceetonnante.com/2016/10/21/reformons-lelection-presidentielle/ + if (judgment.ordinal() != o.judgment.ordinal()) { // higher judgment win return o.judgment.ordinal() - judgment.ordinal(); diff --git a/src/main/java/fr/gaellalire/vote/actor/pooling_station/PollingStationActor.java b/src/main/java/fr/gaellalire/vote/actor/pooling_station/PollingStationActor.java index 7268125..cd4a9a7 100644 --- a/src/main/java/fr/gaellalire/vote/actor/pooling_station/PollingStationActor.java +++ b/src/main/java/fr/gaellalire/vote/actor/pooling_station/PollingStationActor.java @@ -24,8 +24,6 @@ import java.io.FileOutputStream; import java.io.ObjectInputStream; import java.io.ObjectOutputStream; import java.math.BigInteger; -import java.net.InetAddress; -import java.rmi.Naming; import java.rmi.RemoteException; import java.rmi.registry.LocateRegistry; import java.rmi.registry.Registry; @@ -212,8 +210,6 @@ public class PollingStationActor extends RemoteActor implements PollingStationSe Registry registry = LocateRegistry.getRegistry(host); StateService stateService = (StateService) registry.lookup("State"); - String url = "rmi://" + InetAddress.getLocalHost().getHostAddress() + "/PollingStation" + pollingStationName; - EntityManagerFactory entityManagerFactory = Persistence.createEntityManagerFactory("pollingStationPersistenceUnit", Collections.singletonMap("hibernate.connection.url", "jdbc:h2:./db/pollingStation" + pollingStationName)); @@ -256,7 +252,7 @@ public class PollingStationActor extends RemoteActor implements PollingStationSe PollingStationActor pollingStationActor = new PollingStationActor(entityManagerFactory, rsaPrivatePart, aesUtils, pollingStationName, stateService, partyServices, rsaTrustSystem); - Naming.rebind(url, pollingStationActor); + registry.rebind("PollingStation" + pollingStationName, pollingStationActor); return pollingStationActor; } diff --git a/src/main/java/fr/gaellalire/vote/actor/state/StateActor.java b/src/main/java/fr/gaellalire/vote/actor/state/StateActor.java index 00f1206..ef80753 100644 --- a/src/main/java/fr/gaellalire/vote/actor/state/StateActor.java +++ b/src/main/java/fr/gaellalire/vote/actor/state/StateActor.java @@ -20,8 +20,9 @@ import java.io.ByteArrayInputStream; import java.io.UnsupportedEncodingException; import java.math.BigInteger; import java.net.InetAddress; -import java.rmi.Naming; import java.rmi.RemoteException; +import java.rmi.registry.LocateRegistry; +import java.rmi.registry.Registry; import java.security.SecureRandom; import java.security.Security; import java.util.ArrayList; @@ -286,8 +287,8 @@ public class StateActor extends RemoteActor implements StateService { fr.gaellalire.vote.actor.state.service.CitizenApprovalType.valueOf(citizenApproval.getApprovalType().name()))); } - return new fr.gaellalire.vote.actor.state.service.Citizen(citizen.getSSNumber(), citizen.getPollingStation().getName(), citizen.getPublicKeyModulus(), - approvedBy, approbatorOf); + return new fr.gaellalire.vote.actor.state.service.Citizen(citizen.getSSNumber(), citizen.getPollingStation().getName(), citizen.getPublicKeyModulus(), approvedBy, + approbatorOf); } public fr.gaellalire.vote.actor.state.service.Citizen getCitizen(final String ssNumber) { @@ -297,12 +298,12 @@ public class StateActor extends RemoteActor implements StateService { } public static StateActor create(final RSATrustSystem rsaTrustSystem, final String host) throws Exception { - String url = "rmi://" + InetAddress.getLocalHost().getHostAddress() + "/State"; + Registry registry = LocateRegistry.getRegistry(host); EntityManagerFactory entityManagerFactory = Persistence.createEntityManagerFactory("statePersistenceUnit"); StateActor stateActor = new StateActor(entityManagerFactory, rsaTrustSystem); - Naming.rebind(url, stateActor); + registry.rebind("State", stateActor); return stateActor; } diff --git a/src/main/resources/META-INF/persistence-h2.xml b/src/main/resources/META-INF/persistence-h2.xml new file mode 100644 index 0000000..c1371a5 --- /dev/null +++ b/src/main/resources/META-INF/persistence-h2.xml @@ -0,0 +1,65 @@ + + + + + org.hibernate.jpa.HibernatePersistenceProvider + + fr.gaellalire.vote.actor.state.jpa.Citizen + fr.gaellalire.vote.actor.state.jpa.CitizenApproval + fr.gaellalire.vote.actor.state.jpa.CitizenApprovalId + fr.gaellalire.vote.actor.state.jpa.CitizenApprovalType + fr.gaellalire.vote.actor.state.jpa.Party + fr.gaellalire.vote.actor.state.jpa.PollingStation + + true + + + + + + + + + + + + + org.hibernate.jpa.HibernatePersistenceProvider + + true + + + + + + + + + + + + org.hibernate.jpa.HibernatePersistenceProvider + + fr.gaellalire.vote.actor.party.jpa.Citizen + fr.gaellalire.vote.actor.party.jpa.CitizenApproval + fr.gaellalire.vote.actor.party.jpa.CitizenApprovalId + fr.gaellalire.vote.actor.party.jpa.CitizenApprovalType + fr.gaellalire.vote.actor.party.jpa.PollingStation + fr.gaellalire.vote.actor.party.jpa.Vote + fr.gaellalire.vote.actor.party.jpa.Judgment + + true + + + + + + + + + + + + \ No newline at end of file diff --git a/src/main/resources/META-INF/persistence.xml b/src/main/resources/META-INF/persistence.xml index c1371a5..b75ec0d 100644 --- a/src/main/resources/META-INF/persistence.xml +++ b/src/main/resources/META-INF/persistence.xml @@ -16,9 +16,11 @@ true - - - + + + + + -- GitLab