diff --git a/README.md b/README.md
new file mode 100644
index 0000000000000000000000000000000000000000..8aad4c239a8b1a405e846816799937d7d9798ae4
--- /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 d9af2f8ba25545cb7e4a5c62185450712417e530..c29b3ef660eb81a0e41539d54ee25bdace5cc36b 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 1ff60af5df0c5c543e2a19b99376ee92bdab761b..83cb29f596d3045da0e61f0fc6698b957f50e03f 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 4a2950f749fadfff209f4922653c95d01532d57a..0c311772ea2b48ab2fd5a9963f0a86a37d07ae4a 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 7268125e0d683e36a706cc4b8c17e7a63b12e373..cd4a9a7f97524b854168a1ce1fe62b1f08d1c55a 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 00f120616735654e78e478c1859dc7cb32895535..ef80753069ececa78740d30a9a1df5d780f352bd 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 0000000000000000000000000000000000000000..c1371a5850672e9c59ebeeaebcbf6a6b55c01493
--- /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 c1371a5850672e9c59ebeeaebcbf6a6b55c01493..b75ec0dd0b23ff5c458a5f25571b1527c403610b 100644
--- a/src/main/resources/META-INF/persistence.xml
+++ b/src/main/resources/META-INF/persistence.xml
@@ -16,9 +16,11 @@
true
-
-
-
+
+
+
+
+