1
2
3
4
5
6 package org.openrdf.repository.loader;
7
8 import info.aduna.platform.Platform;
9 import info.aduna.platform.PlatformFactory;
10
11 import java.io.File;
12 import java.net.URL;
13
14 import org.openrdf.repository.Repository;
15 import org.openrdf.repository.RepositoryException;
16 import org.openrdf.repository.config.RepositoryConfig;
17 import org.openrdf.repository.config.RepositoryConfigException;
18 import org.openrdf.repository.config.RepositoryConfigUtil;
19 import org.openrdf.repository.manager.LocalRepositoryManager;
20 import org.openrdf.repository.manager.RemoteRepositoryManager;
21 import org.openrdf.repository.manager.RepositoryManager;
22 import org.openrdf.repository.sail.config.SailRepositoryConfig;
23 import org.openrdf.sail.memory.config.MemoryStoreConfig;
24
25
26
27
28
29
30
31 public class LoaderRepositoryFactory {
32 private File baseDir;
33 private URL server;
34
35 public LoaderRepositoryFactory(File baseDir) {
36 assert baseDir != null;
37 this.baseDir = baseDir;
38 }
39
40 public LoaderRepositoryFactory(String appId) {
41 assert appId != null;
42 Platform platform = PlatformFactory.getPlatform();
43 File baseDir = platform.getApplicationDataDir(appId);
44 this.baseDir = baseDir;
45 }
46
47 public LoaderRepositoryFactory(URL server) {
48 assert server != null;
49 this.server = server;
50 }
51
52 public File getBaseDir() {
53 return baseDir;
54 }
55
56 public URL getServer() {
57 return server;
58 }
59
60 public LoaderRepository createRepository(String id)
61 throws RepositoryConfigException, RepositoryException {
62 synchronized (LoaderRepository.class) {
63 RepositoryManager manager = createManager();
64 manager.initialize();
65 Repository repository = manager.getRepository(id);
66 if (repository == null) {
67 MemoryStoreConfig memConfig = new MemoryStoreConfig();
68 memConfig.setPersist(true);
69 SailRepositoryConfig sailConfig;
70 sailConfig = new SailRepositoryConfig(memConfig);
71 RepositoryConfig config = new RepositoryConfig(id, sailConfig);
72 Repository system = manager.getSystemRepository();
73 RepositoryConfigUtil.updateRepositoryConfigs(system, config);
74 repository = manager.getRepository(id);
75 }
76 manager.getSystemRepository().shutDown();
77 return new LoaderRepository(repository);
78 }
79 }
80
81 private RepositoryManager createManager() {
82 if (server == null)
83 return new LocalRepositoryManager(baseDir);
84 return new RemoteRepositoryManager(server.toExternalForm());
85 }
86 }