Skip to content

Commit a9b68ac

Browse files
committed
put mongo initialisation of web app into init method instead of static under a path class
1 parent 7e3db0c commit a9b68ac

File tree

4 files changed

+41
-31
lines changed

4 files changed

+41
-31
lines changed

curation-module-web/src/main/java/eu/clarin/helpers/LinkCheckerStatisticsHelper.java

Lines changed: 5 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,17 @@
11
package eu.clarin.helpers;
22

3-
import com.mongodb.client.*;
3+
import com.mongodb.client.AggregateIterable;
4+
import com.mongodb.client.MongoCollection;
5+
import com.mongodb.client.MongoCursor;
6+
import com.mongodb.client.MongoDatabase;
47
import com.mongodb.client.model.Accumulators;
58
import com.mongodb.client.model.Aggregates;
6-
import eu.clarin.cmdi.curation.main.Configuration;
79
import eu.clarin.cmdi.curation.utils.TimeUtils;
810
import eu.clarin.curation.linkchecker.urlElements.URLElement;
911
import org.bson.Document;
1012
import org.slf4j.Logger;
1113
import org.slf4j.LoggerFactory;
1214

13-
import java.text.DecimalFormat;
1415
import java.util.Arrays;
1516
import java.util.List;
1617

@@ -22,33 +23,12 @@
2223
public class LinkCheckerStatisticsHelper {
2324
private static final Logger _logger = LoggerFactory.getLogger(LinkCheckerStatisticsHelper.class);
2425

25-
private static final MongoClient mongoClient;
2626
private MongoCollection<Document> linksChecked;
2727

28-
private DecimalFormat numberFormatter = new DecimalFormat("###,###.##");
29-
30-
static { //since MongoClient is already a connection pool only one instance should exist in the application
31-
if (Configuration.DATABASE) {
32-
_logger.info("Connecting to database...");
33-
if (Configuration.DATABASE_URI == null || Configuration.DATABASE_URI.isEmpty()) {//if it is empty, try localhost
34-
mongoClient = MongoClients.create();
35-
} else {
36-
mongoClient = MongoClients.create(Configuration.DATABASE_URI);
37-
}
38-
} else {
39-
mongoClient = null;
40-
}
41-
}
42-
43-
public LinkCheckerStatisticsHelper() {
44-
45-
MongoDatabase database = mongoClient.getDatabase(Configuration.DATABASE_NAME);
46-
_logger.info("Connected to database.");
47-
28+
public LinkCheckerStatisticsHelper(MongoDatabase database) {
4829
this.linksChecked = database.getCollection("linksChecked");
4930
}
5031

51-
5232
private AggregateIterable<Document> getStatusStatistics() {
5333

5434
return linksChecked.aggregate(Arrays.asList(

curation-module-web/src/main/java/eu/clarin/main/Configuration.java

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,8 @@
11
package eu.clarin.main;
22

3+
import com.mongodb.client.MongoClient;
4+
import com.mongodb.client.MongoClients;
5+
import com.mongodb.client.MongoDatabase;
36
import eu.clarin.helpers.FileManager;
47
import org.slf4j.Logger;
58
import org.slf4j.LoggerFactory;
@@ -25,6 +28,10 @@ public class Configuration {
2528
public static String VIEW_RESOURCES_PATH;
2629
public static String OUTPUT_DIRECTORY;
2730
public static String BASE_URL;
31+
private static String DATABASE_URI;
32+
private static String DATABASE_NAME;
33+
34+
public static MongoDatabase DATABASE;
2835

2936
public static void init(ServletContext servletContext) throws IOException {
3037

@@ -83,5 +90,25 @@ private static void loadVariables(Properties properties) {
8390

8491
BASE_URL = properties.getProperty("BASE_URL");
8592

93+
DATABASE_URI = properties.getProperty("DATABASE_URI");
94+
DATABASE_NAME = properties.getProperty("DATABASE_NAME");
95+
96+
loadMongo();
97+
98+
}
99+
100+
private static void loadMongo() {
101+
_logger.info("Connecting to database...");
102+
MongoClient mongoClient;
103+
104+
if (DATABASE_URI == null || DATABASE_URI.isEmpty()) {//if it is empty, try localhost
105+
mongoClient = MongoClients.create();
106+
} else {
107+
mongoClient = MongoClients.create(DATABASE_URI);
108+
}
109+
110+
DATABASE = mongoClient.getDatabase(DATABASE_NAME);
111+
_logger.info("Connected to database.");
112+
86113
}
87114
}

curation-module-web/src/main/java/eu/clarin/routes/Statistics.java

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,10 @@
11
package eu.clarin.routes;
22

3+
34
import eu.clarin.helpers.FileManager;
45
import eu.clarin.helpers.LinkCheckerStatisticsHelper;
56
import eu.clarin.helpers.ResponseManager;
7+
68
import eu.clarin.main.Configuration;
79
import org.apache.log4j.Logger;
810

@@ -34,7 +36,7 @@ public Response getStatistics() {
3436
@Path("/{collectionName}/{status}")
3537
public Response getStatusStatsInit(@PathParam("collectionName") String collectionName, @PathParam("status") int status) {
3638

37-
LinkCheckerStatisticsHelper linkCheckerStatisticsHelper = new LinkCheckerStatisticsHelper();
39+
LinkCheckerStatisticsHelper linkCheckerStatisticsHelper = new LinkCheckerStatisticsHelper(Configuration.DATABASE);
3840
String urlStatistics = linkCheckerStatisticsHelper.createURLTable(collectionName, status);
3941

4042
return ResponseManager.returnHTML(200, urlStatistics, null);
@@ -46,10 +48,9 @@ public Response getStatusStatsInit(@PathParam("collectionName") String collectio
4648
@Path("/{collectionName}/{status}/{batchCount}")
4749
public Response getStatusStats(@PathParam("collectionName") String collectionName, @PathParam("status") int status, @PathParam("batchCount") int batchCount) {
4850

49-
LinkCheckerStatisticsHelper linkCheckerStatisticsHelper = new LinkCheckerStatisticsHelper();
51+
LinkCheckerStatisticsHelper linkCheckerStatisticsHelper = new LinkCheckerStatisticsHelper(Configuration.DATABASE);
5052

5153
String urlBatchStatistics = linkCheckerStatisticsHelper.getHtmlRowsInBatch(collectionName, status, batchCount);
52-
5354
return ResponseManager.returnResponse(200, urlBatchStatistics, null);
5455

5556
}

linkChecker/src/main/java/eu/clarin/curation/linkchecker/helpers/Configuration.java

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,15 @@
11
package eu.clarin.curation.linkchecker.helpers;
22

3+
import com.mongodb.MongoException;
4+
import com.mongodb.client.MongoClient;
5+
import com.mongodb.client.MongoClients;
6+
import com.mongodb.client.MongoDatabase;
37
import org.slf4j.Logger;
48
import org.slf4j.LoggerFactory;
59

610
import java.io.FileInputStream;
711
import java.io.IOException;
12+
import java.rmi.ServerException;
813
import java.util.HashMap;
914
import java.util.Map;
1015
import java.util.Properties;
@@ -14,7 +19,6 @@ public class Configuration {
1419
private static Properties properties = new Properties();
1520
private final static Logger _logger = LoggerFactory.getLogger(Configuration.class);
1621

17-
1822
public static String DATABASE_NAME;
1923
public static String DATABASE_URI;
2024
public static int TIMEOUT;
@@ -24,7 +28,6 @@ public class Configuration {
2428
public static boolean ONLY_BROKEN;
2529
public static Map<String, Long> CRAWLDELAYMAP = new HashMap<>();
2630

27-
2831
public static void loadConfigVariables(String configPath) {
2932
try {
3033
properties.load(new FileInputStream(configPath));
@@ -50,7 +53,6 @@ public static void loadConfigVariables(String configPath) {
5053
CRAWLDELAYMAP.put(collection, delay);
5154
}
5255

53-
5456
}
5557

5658
}

0 commit comments

Comments
 (0)