Skip to content

Commit b77007d

Browse files
authored
Merge branch 'dev' into add-lystore
2 parents 8529da9 + a13aed0 commit b77007d

6 files changed

Lines changed: 72 additions & 25 deletions

File tree

‎gradle.properties‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ modowner=fr.wseduc
55
modname=stats
66

77
# Your module version
8-
version=1.12.12
8+
version=1.12-SNAPSHOT
99

1010
# The test timeout in seconds
1111
testtimeout=300
@@ -29,6 +29,6 @@ vertxVersion=3.9.5
2929
toolsVersion=2.0.0-final
3030
junitVersion=4.10
3131

32-
entCoreVersion=4.8-SNAPSHOT
32+
entCoreVersion=4.9-SNAPSHOT
3333
vertxCronTimer=2.0.0
3434
jodaTimeVersion=2.9.4

‎src/main/java/fr/wseduc/stats/Stats.java‎

Lines changed: 20 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -24,16 +24,17 @@
2424

2525
import java.text.ParseException;
2626

27+
import io.vertx.pgclient.PgConnectOptions;
28+
import io.vertx.pgclient.PgPool;
29+
import io.vertx.pgclient.SslMode;
30+
import io.vertx.sqlclient.PoolOptions;
2731
import org.entcore.common.aggregation.MongoConstants.COLLECTIONS;
2832
import org.entcore.common.events.EventHelper;
2933
import org.entcore.common.events.EventStore;
3034
import org.entcore.common.events.EventStoreFactory;
3135
import org.entcore.common.http.BaseServer;
3236
import org.entcore.common.mongodb.MongoDbConf;
3337

34-
import io.reactiverse.pgclient.PgClient;
35-
import io.reactiverse.pgclient.PgPool;
36-
import io.reactiverse.pgclient.PgPoolOptions;
3738
import io.vertx.core.json.JsonObject;
3839
import io.vertx.core.logging.Logger;
3940
import io.vertx.core.logging.LoggerFactory;
@@ -85,23 +86,31 @@ public void start() throws Exception {
8586
final JsonObject readPGConfig = config.getJsonObject("read-pg-config");
8687
final boolean oldStats = config.getBoolean("mongo-stats-service", false);
8788
if (readPGConfig != null && !readPGConfig.isEmpty() && !oldStats) {
88-
final PgPoolOptions options = new PgPoolOptions().setPort(readPGConfig.getInteger("port", 5432))
89+
final PgConnectOptions connectOptions = new PgConnectOptions().setPort(readPGConfig.getInteger("port", 5432))
8990
.setHost(readPGConfig.getString("host")).setDatabase(readPGConfig.getString("database"))
90-
.setUser(readPGConfig.getString("user")).setPassword(readPGConfig.getString("password"))
91-
.setMaxSize(readPGConfig.getInteger("pool-size", 5));
92-
PgPool pgPool = PgClient.pool(vertx, options);
91+
.setUser(readPGConfig.getString("user")).setPassword(readPGConfig.getString("password"));
92+
final SslMode sslMode = SslMode.valueOf(readPGConfig.getString("ssl-mode", "DISABLE"));
93+
if (!SslMode.DISABLE.equals(sslMode)) {
94+
connectOptions.setSslMode(sslMode).setTrustAll(SslMode.ALLOW.equals(sslMode) || SslMode.PREFER.equals(sslMode) || SslMode.REQUIRE.equals(sslMode));
95+
}
96+
PoolOptions poolOptions = new PoolOptions().setMaxSize(readPGConfig.getInteger("pool-size", 5));
97+
PgPool pgPool = PgPool.pool(vertx, connectOptions, poolOptions);
9398
statsService = new PGStatsService(platformId, config.getJsonObject("api-allowed-values"));
9499
((PGStatsService) statsService).setReadPgPool(pgPool);
95100
} else if (eventStoreConfig != null && eventStoreConfig.getJsonObject("postgresql-slave") != null && !oldStats) {
96101
final JsonObject eventStorePGConfig = eventStoreConfig.getJsonObject("postgresql-slave");
97-
final PgPoolOptions options = new PgPoolOptions()
102+
final PgConnectOptions connectOptions = new PgConnectOptions()
98103
.setPort(eventStorePGConfig.getInteger("port", 5432))
99104
.setHost(eventStorePGConfig.getString("host"))
100105
.setDatabase(eventStorePGConfig.getString("database"))
101106
.setUser(eventStorePGConfig.getString("user"))
102-
.setPassword(eventStorePGConfig.getString("password"))
103-
.setMaxSize(eventStorePGConfig.getInteger("pool-size", 5));
104-
PgPool pgPool = PgClient.pool(vertx, options);
107+
.setPassword(eventStorePGConfig.getString("password"));
108+
final SslMode sslMode = SslMode.valueOf(eventStorePGConfig.getString("ssl-mode", "DISABLE"));
109+
if (!SslMode.DISABLE.equals(sslMode)) {
110+
connectOptions.setSslMode(sslMode).setTrustAll(SslMode.ALLOW.equals(sslMode) || SslMode.PREFER.equals(sslMode) || SslMode.REQUIRE.equals(sslMode));
111+
}
112+
PoolOptions poolOptions = new PoolOptions().setMaxSize(eventStorePGConfig.getInteger("pool-size", 5));
113+
PgPool pgPool = PgPool.pool(vertx, connectOptions, poolOptions);
105114
statsService = new PGStatsService(platformId, config.getJsonObject("api-allowed-values"));
106115
((PGStatsService) statsService).setReadPgPool(pgPool);
107116
} else {

‎src/main/java/fr/wseduc/stats/services/PGStatsService.java‎

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -5,15 +5,15 @@
55
import java.util.stream.IntStream;
66
import java.time.LocalDateTime;
77

8+
import io.vertx.pgclient.PgPool;
9+
import io.vertx.sqlclient.Row;
10+
import io.vertx.sqlclient.RowSet;
11+
import io.vertx.sqlclient.Tuple;
812
import org.entcore.common.utils.StringUtils;
913
import org.entcore.common.validation.ValidationException;
1014

1115
import fr.wseduc.webutils.Either;
1216
import fr.wseduc.webutils.Utils;
13-
import io.reactiverse.pgclient.PgPool;
14-
import io.reactiverse.pgclient.PgRowSet;
15-
import io.reactiverse.pgclient.Row;
16-
import io.reactiverse.pgclient.Tuple;
1717
import io.vertx.core.AsyncResult;
1818
import io.vertx.core.Handler;
1919
import io.vertx.core.MultiMap;
@@ -87,7 +87,7 @@ private void listStats(MultiMap params, boolean export, String language, Handler
8787
}
8888
log.info("query : " + query);
8989
log.info("tuple : " + deepToString(t));
90-
readPgPool.preparedQuery(query, t, pgRowsToEither(handler));
90+
readPgPool.preparedQuery(query).execute(t, pgRowsToEither(handler));
9191
} catch (Exception e) {
9292
handler.handle(new Either.Left<>(e.getMessage()));
9393
}
@@ -193,10 +193,10 @@ private String genDeviceQuery(MultiMap params, final List<String> entityIds, fin
193193
return query;
194194
}
195195

196-
private Handler<AsyncResult<PgRowSet>> pgRowsToEither(Handler<Either<String, JsonArray>> handler) {
196+
private Handler<AsyncResult<RowSet<Row>>> pgRowsToEither(Handler<Either<String, JsonArray>> handler) {
197197
return ar -> {
198198
if (ar.succeeded()) {
199-
final PgRowSet rows = ar.result();
199+
final RowSet<Row> rows = ar.result();
200200
final List<String> columns = rows.columnsNames();
201201
final JsonArray res = new JsonArray();
202202
for (Row row: rows) {

‎src/main/resources/api-allowed-values.json‎

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -12,9 +12,9 @@
1212
"HiSQOOL","Homework-assistance","HumanRoads","Interforum","InterForum","JuniorUniversalis","KiosqueEDU","KiosqueEDU-aca","KNE-Annabac","KNE-CNS","Kwyk","Labomep","LaboMEP",
1313
"LDE","LeLivreScolaire","LeSite-tv","library","Lool","Lstl","Lystore","madmagz","madmagz-77","madmagz-aisne","madmagz-draaf","madmagz-ent04","madmagz-idf","madmagz-na",
1414
"madmagz-nord","madmagz-oise","madmagz-paris","madmagz-regionhdf","madmagz-somme1d","madmagz-somme2d","milliweb-oAuth","MindViewOnline","Moodle","MSEL",
15-
"numericours","numeritab","OGIL","OGIL-Region","Onisep","Onisep-Services","Passerelle","PasserellePise","Pearltrees","Peertube NA","PMB-lyceeconnecte","ProEPS",
16-
"projet-voltaire","Pronote","Riot Region","Sacoche","Salvum","Scratch","Speakshake","Tactileo","TurboSelf","Universalis","Universalis-Junior",
17-
"Webclasseur","Wekan Region","Wims-Auto","Wims-Euler","Wims-Math"
15+
"numericours","numeritab","OGIL","OGIL-Region","Onisep","Onisep-Services","Passerelle","PasserellePise","Pearltrees","Peertube","PMB-lyceeconnecte","PMB-Gestion-lyceeconnecte",
16+
"ProEPS","projet-voltaire","Pronote","Riot","Sacoche","Salvum","Scratch","Speakshake","Tactileo","TurboSelf","Universalis","Universalis-Junior",
17+
"Webclasseur","Wekan","Wims-Auto","Wims-Euler","Wims-Math"
1818
],
1919
"devices-mapping" : {
2020
"select-devices" : ["desktop", "mobile_app", "tablet"],

‎src/main/resources/i18n/en.json‎

Lines changed: 20 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -57,5 +57,24 @@
5757
"myaccount": "My Account",
5858
"classparam": "Class settings",
5959
"zimbra" : "Messaging",
60-
"presences" : "Attendance"
60+
"presences" : "Attendance",
61+
"webconference": "Access to a virtual room",
62+
"moodle": "Moodle",
63+
"pmb-lyceeconnecte": "PMB",
64+
"pmb-gestion-lyceeconnecte" : "PMB Gestion",
65+
"capytale": "Capytale",
66+
"cerisepro": "Cerise Pro",
67+
"edumedia": "Edumedia",
68+
"esidoc": "Esidoc",
69+
"foliosonisep": "Folios Onisep",
70+
"library": "Library",
71+
"onisep": "Onisep",
72+
"pronote": "Pronote",
73+
"scratch": "Scratch",
74+
"geogebra": "GeoGebra",
75+
"lool": "Lool",
76+
"riot": "Riot",
77+
"wekan": "Wekan",
78+
"peertube": "Peertube",
79+
"jupyter": "Jupyter"
6180
}

‎src/main/resources/i18n/fr.json‎

Lines changed: 20 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -100,5 +100,24 @@
100100
"stats.error.nonadmlofstructure": "Vous n'avez pas accès aux statistiques de l'établissement, merci de sélectionner une classe",
101101
"stats.error.nodata":"Données indisponibles",
102102
"stats.support": "Support",
103-
"webconference": "Accès à une salle virtuelle"
103+
"webconference": "Accès à une salle virtuelle",
104+
"homeworkassistance": "Homework-Assistance",
105+
"moodle": "Moodle",
106+
"pmb-lyceeconnecte": "PMB",
107+
"pmb-gestion-lyceeconnecte" : "PMB Gestion",
108+
"capytale": "Capytale",
109+
"cerisepro": "Cerise Pro",
110+
"edumedia": "Edumedia",
111+
"esidoc": "Esidoc",
112+
"foliosonisep": "Folios Onisep",
113+
"library": "Bibliothèque",
114+
"onisep": "Onisep",
115+
"pronote": "Pronote",
116+
"scratch": "Scratch",
117+
"geogebra": "GeoGebra",
118+
"lool": "Lool",
119+
"riot": "Messagerie Riot",
120+
"wekan": "Wekan",
121+
"peertube": "Peertube",
122+
"jupyter": "Jupyter"
104123
}

0 commit comments

Comments
 (0)