Skip to content

Commit 7e0473a

Browse files
author
Olaf Hartig
committed
replaced the fixed data source types by a registry of such types
1 parent 758ec85 commit 7e0473a

File tree

3 files changed

+17
-24
lines changed

3 files changed

+17
-24
lines changed
Lines changed: 6 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,16 @@
11
package org.linkeddatafragments.datasource;
22

33
import com.google.gson.JsonObject;
4-
import java.io.File;
5-
import java.io.IOException;
64
import org.linkeddatafragments.exceptions.DataSourceException;
75
import org.linkeddatafragments.exceptions.UnknownDataSourceTypeException;
86

97
/**
108
*
119
* @author Miel Vander Sande
1210
* @author Bart Hanssens
11+
* @author <a href="http://olafhartig.de">Olaf Hartig</a>
1312
*/
1413
public class DataSourceFactory {
15-
public final static String HDT = "HdtDatasource";
16-
public final static String JENA_TDB = "JenaTDBDatasource";
17-
1814
/**
1915
* Create a datasource using a JSON config
2016
*
@@ -25,28 +21,15 @@ public class DataSourceFactory {
2521
public static IDataSource create(JsonObject config) throws DataSourceException {
2622
String title = config.getAsJsonPrimitive("title").getAsString();
2723
String description = config.getAsJsonPrimitive("description").getAsString();
28-
String type = config.getAsJsonPrimitive("type").getAsString();
24+
String typeName = config.getAsJsonPrimitive("type").getAsString();
2925

3026
JsonObject settings = config.getAsJsonObject("settings");
3127

32-
switch (type) {
33-
case HDT:
34-
try {
35-
File file = new File(settings.getAsJsonPrimitive("file").getAsString());
36-
return new HdtDataSource(title, description, file.getAbsolutePath());
37-
} catch (IOException ex) {
38-
throw new DataSourceException(ex);
39-
}
40-
41-
case JENA_TDB:
42-
File file = new File(settings.getAsJsonPrimitive("directory").getAsString());
43-
return new JenaTDBDataSource(title, description, file);
44-
45-
default:
46-
throw new UnknownDataSourceTypeException(type);
47-
48-
}
28+
final IDataSourceType type = DataSourceTypesRegistry.getType(typeName);
29+
if ( type == null )
30+
throw new UnknownDataSourceTypeException(typeName);
4931

32+
return type.createDataSource( title, description, settings );
5033
}
5134

5235
}

src/org/linkeddatafragments/servlet/TriplePatternFragmentServlet.java

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,8 +31,10 @@
3131
import org.apache.jena.riot.RDFLanguages;
3232
import org.linkeddatafragments.config.ConfigReader;
3333
import org.linkeddatafragments.datasource.DataSourceFactory;
34+
import org.linkeddatafragments.datasource.HdtDataSourceType;
3435
import org.linkeddatafragments.datasource.IDataSource;
3536
import org.linkeddatafragments.datasource.IndexDataSource;
37+
import org.linkeddatafragments.datasource.JenaTDBDataSourceType;
3638
import org.linkeddatafragments.datasource.TriplePatternFragment;
3739
import org.linkeddatafragments.exceptions.DataSourceException;
3840
import org.linkeddatafragments.util.CommonResources;
@@ -64,6 +66,11 @@ public class TriplePatternFragmentServlet extends HttpServlet {
6466
private final HashMap<String, IDataSource> dataSources = new HashMap<>();
6567
private final Collection<String> mimeTypes = new ArrayList<>();
6668

69+
public TriplePatternFragmentServlet() {
70+
HdtDataSourceType.register();
71+
JenaTDBDataSourceType.register();
72+
}
73+
6774
private File getConfigFile(ServletConfig config) throws IOException {
6875
String path = config.getServletContext().getRealPath("/");
6976
if (path == null) {

src/test/java/org/linkeddatafragments/datasource/JenaTDBDataSourceTest.java

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
import org.junit.Test;
2121
import org.linkeddatafragments.datasource.DataSourceFactory;
2222
import org.linkeddatafragments.datasource.IDataSource;
23+
import org.linkeddatafragments.datasource.JenaTDBDataSourceType;
2324
import org.linkeddatafragments.datasource.TriplePatternFragment;
2425

2526
/**
@@ -35,6 +36,8 @@ public class JenaTDBDataSourceTest {
3536

3637
@BeforeClass
3738
public static void setUpClass() throws Exception {
39+
JenaTDBDataSourceType.register();
40+
3841
String tmpdir = System.getProperty("java.io.tmpdir");
3942
jena = new File(tmpdir, "ldf-jena-test");
4043
jena.mkdir();
@@ -44,7 +47,7 @@ public static void setUpClass() throws Exception {
4447
JsonObject config = new JsonObject();
4548
config.addProperty("title", "jena test");
4649
config.addProperty("description", "jena tdb test");
47-
config.addProperty("type", DataSourceFactory.JENA_TDB);
50+
config.addProperty("type", JenaTDBDataSourceType.TYPE_NAME);
4851

4952
JsonObject settings = new JsonObject();
5053
settings.addProperty("directory", jena.getAbsolutePath());

0 commit comments

Comments
 (0)