1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 package p3j.pppm.readerwriter.database;
17
18 import james.SimSystem;
19 import james.core.data.DBConnectionData;
20 import james.core.data.model.IModelReader;
21 import james.core.model.IModel;
22 import james.core.model.symbolic.ISymbolicModel;
23
24 import java.net.URI;
25 import java.util.Map;
26
27 import p3j.database.IP3MDatabase;
28 import p3j.database.hibernate.P3MDatabase;
29 import p3j.misc.gui.GUI;
30 import p3j.pppm.ProjectionModel;
31 import p3j.pppm.SymbolicProjectionModel;
32
33
34
35
36
37
38
39 public class PPPMDatabaseReader implements IModelReader {
40
41
42 private final DBConnectionData connData;
43
44
45 private final int projID;
46
47
48
49
50
51
52
53
54
55 public PPPMDatabaseReader(DBConnectionData connectionData,
56 Integer projectionID) {
57 connData = connectionData;
58 projID = projectionID;
59 }
60
61 @Override
62 public ISymbolicModel<?> read(URI ident) {
63
64 ProjectionModel model = null;
65
66 try {
67 IP3MDatabase sqlDatabase = new P3MDatabase();
68 sqlDatabase.init(connData);
69 try {
70 sqlDatabase.open();
71 model = sqlDatabase.getProjectionByID(projID);
72 } catch (Exception ex) {
73 SimSystem.report(ex);
74 return null;
75 }
76 if (model == null) {
77 throw new IllegalArgumentException("PPP Model with ID '" + projID
78 + "' was not found.");
79 }
80 } catch (Throwable t) {
81 GUI.printErrorMessage("Could not load model", t);
82 }
83 return new SymbolicProjectionModel(model);
84 }
85
86 @Override
87 public IModel read(URI source, Map<String, ?> parameters) {
88 return (IModel) read(source).getAsDataStructure();
89 }
90
91 }