Skip to content

Commit 4990dda

Browse files
committed
add dynamic loading for monitoring components and remove influx
1 parent 2441392 commit 4990dda

File tree

3 files changed

+25
-695
lines changed

3 files changed

+25
-695
lines changed

pom.xml

Lines changed: 0 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,6 @@
2727
<lombok.version>1.18.12</lombok.version>
2828
<retrofit.version>2.9.0</retrofit.version>
2929
<okhttp3.logging-interceptor.version>3.14.0</okhttp3.logging-interceptor.version>
30-
<influxdb-client.version>1.7.0</influxdb-client.version>
3130
<unirest.version>1.4.9</unirest.version>
3231
<opennlp-tools.version>1.9.3</opennlp-tools.version>
3332
<emoji-java.version>5.1.1</emoji-java.version>
@@ -72,12 +71,6 @@
7271
<artifactId>org.eclipse.emf.ecore.xmi</artifactId>
7372
</dependency>
7473

75-
<!-- InfluxDB -->
76-
<dependency>
77-
<groupId>com.influxdb</groupId>
78-
<artifactId>influxdb-client-java</artifactId>
79-
</dependency>
80-
8174
<!-- Unirest -->
8275
<dependency>
8376
<groupId>com.mashape.unirest</groupId>
@@ -247,13 +240,6 @@
247240
<version>${dialogflow.version}</version>
248241
</dependency>
249242

250-
<!-- InfluxDB -->
251-
<dependency>
252-
<groupId>com.influxdb</groupId>
253-
<artifactId>influxdb-client-java</artifactId>
254-
<version>${influxdb-client.version}</version>
255-
</dependency>
256-
257243
<!-- Utils -->
258244

259245
<dependency>

src/main/java/com/xatkit/core/recognition/IntentRecognitionProviderFactory.java

Lines changed: 25 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
import com.xatkit.core.recognition.processor.InputPreProcessor;
77
import com.xatkit.core.recognition.processor.IntentPostProcessor;
88
import com.xatkit.core.recognition.regex.RegExIntentRecognitionProvider;
9+
import com.xatkit.core.server.XatkitServer;
910
import com.xatkit.util.Loader;
1011
import fr.inria.atlanmod.commons.log.Log;
1112
import lombok.NonNull;
@@ -38,19 +39,20 @@ private IntentRecognitionProviderFactory() {
3839
}
3940

4041
/**
41-
* The database model that will be used for this instance of Xatkit.
42+
* The database that will be used by this instance of Xatkit to store logs.
4243
* <p>
43-
* This property is optional, and it's default value is set to "MAPDB" if not specified
44+
* If this property is not set the bot won't use logging.
45+
* <p>
46+
* The value of this property is the fully-qualified name of the {@link RecognitionMonitor} subclass to
47+
* instantiate. Libraries providing such implementations typically provide a constant value for that.
4448
*/
45-
public static final String DATABASE_MODEL_KEY = "xatkit.database.model";
49+
public static final String LOGS_DATABASE = "xatkit.logs.database";
4650

4751
/**
4852
* The default value for xatkit.database.model in case it's not specified in the properties file.
4953
*/
5054
public static final String DATABASE_MODEL_MAPDB = "mapdb";
5155

52-
public static final String DATABASE_MODEL_INFLUXDB = "influxdb";
53-
5456
public static final String DATABASE_MODEL_POSTGRESQL = "postgresql";
5557

5658
public static final String DEFAULT_DATABASE_MODEL = DATABASE_MODEL_MAPDB;
@@ -120,16 +122,17 @@ public static IntentRecognitionProvider getIntentRecognitionProvider(@NonNull Xa
120122

121123
IntentRecognitionProvider provider;
122124

123-
if(baseConfiguration.containsKey(INTENT_PROVIDER_KEY)) {
125+
if (baseConfiguration.containsKey(INTENT_PROVIDER_KEY)) {
124126
try {
125127
String providerClassName = baseConfiguration.getString(INTENT_PROVIDER_KEY);
126-
Class<? extends IntentRecognitionProvider> providerClass = (Class<? extends IntentRecognitionProvider>) Class.forName(providerClassName);
128+
Class<? extends IntentRecognitionProvider> providerClass =
129+
(Class<? extends IntentRecognitionProvider>) Class.forName(providerClassName);
127130
Constructor<? extends IntentRecognitionProvider> providerConstructor =
128131
providerClass.getConstructor(EventDefinitionRegistry.class, Configuration.class,
129132
RecognitionMonitor.class);
130133
provider = providerConstructor.newInstance(xatkitBot.getEventDefinitionRegistry(), baseConfiguration,
131134
recognitionMonitor);
132-
} catch(ClassNotFoundException | NoSuchMethodException | InvocationTargetException | InstantiationException |
135+
} catch (ClassNotFoundException | NoSuchMethodException | InvocationTargetException | InstantiationException |
133136
IllegalAccessException e) {
134137
throw new RuntimeException(e);
135138
}
@@ -176,27 +179,25 @@ private static RecognitionMonitor getRecognitionMonitor(XatkitBot xatkitBot,
176179
*/
177180
RecognitionMonitor monitor = null;
178181
if (configuration.isEnableRecognitionAnalytics()) {
179-
if (configuration.getBaseConfiguration().getString(DATABASE_MODEL_KEY, DEFAULT_DATABASE_MODEL)
180-
.toLowerCase().equals(DATABASE_MODEL_INFLUXDB)) {
181-
Log.info("Using InfluxDB to store monitoring data");
182-
monitor = new RecognitionMonitorInflux(xatkitBot.getXatkitServer(),
183-
configuration.getBaseConfiguration());
184-
} else if (configuration.getBaseConfiguration().getString(DATABASE_MODEL_KEY)
185-
.toLowerCase().equals(DATABASE_MODEL_POSTGRESQL)) {
182+
if (configuration.getBaseConfiguration().containsKey(LOGS_DATABASE)) {
186183
try {
187-
monitor = new RecognitionMonitorPostgreSQL(xatkitBot.getXatkitServer(),
184+
String databaseClassName = configuration.getBaseConfiguration().getString(LOGS_DATABASE);
185+
Class<? extends RecognitionMonitor> databaseClass =
186+
(Class<? extends RecognitionMonitor>) Class.forName(databaseClassName);
187+
Constructor<? extends RecognitionMonitor> databaseConstructor =
188+
databaseClass.getConstructor(XatkitServer.class, Configuration.class);
189+
monitor = databaseConstructor.newInstance(xatkitBot.getXatkitServer(),
188190
configuration.getBaseConfiguration());
189-
} catch (Exception e) {
190-
throw new RuntimeException("Error creating the PostgreSQL monitoring, see the exception for "
191-
+ "details ", e);
191+
} catch (ClassNotFoundException | NoSuchMethodException | InvocationTargetException | InstantiationException |
192+
IllegalAccessException e) {
193+
throw new RuntimeException(e);
192194
}
193-
194-
195195
} else {
196-
Log.info("Using MapDB to store monitoring data");
197-
monitor = new RecognitionMonitorMapDB(xatkitBot.getXatkitServer(),
198-
configuration.getBaseConfiguration());
196+
Log.error("Analytics are enabled but no database provided for storing logs. Please provide a value "
197+
+ "for {0}", LOGS_DATABASE);
199198
}
199+
} else {
200+
Log.debug("Analytics are disabled");
200201
}
201202
return monitor;
202203
}

0 commit comments

Comments
 (0)