1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 package p3j.pppm.readerwriter.database;
17
18 import java.net.URI;
19
20 import org.jamesii.core.data.DBConnectionData;
21 import org.jamesii.core.data.model.IModelReader;
22 import org.jamesii.core.data.model.read.plugintype.IMIMEType;
23 import org.jamesii.core.data.model.read.plugintype.ModelReaderFactory;
24 import org.jamesii.core.model.IModel;
25 import org.jamesii.core.model.symbolic.ISymbolicModel;
26 import org.jamesii.core.parameters.ParameterBlock;
27 import org.jamesii.core.util.misc.Pair;
28
29 import p3j.pppm.ProjectionModel;
30 import p3j.pppm.SymbolicProjectionModel;
31
32
33
34
35
36
37
38
39 public class PPPModelDatabaseReaderFactory extends ModelReaderFactory {
40
41
42 private static final long serialVersionUID = 2423298767414579313L;
43
44
45 private static final String GENERAL_DB_URI_SCHEME = "db-p3j";
46
47
48
49
50
51 public static final String DEFAULT_URI = GENERAL_DB_URI_SCHEME
52 + "://localhost";
53
54
55 private static final String KEY_CONN_DATA_URL = "url";
56
57
58 private static final String KEY_CONN_DATA_USER = "user";
59
60
61 private static final String KEY_CONN_DATA_PWD = "pwd";
62
63
64
65
66 private static final String KEY_CONN_DATA_DRIVER = "driver";
67
68
69 private static final String KEY_PROJECT_ID = "projId";
70
71 @Override
72 public IModelReader create(ParameterBlock params) {
73 Pair<DBConnectionData, Integer> readerParams = retrieveReaderParams(params);
74 return new PPPMDatabaseReader(readerParams.getFirstValue(),
75 readerParams.getSecondValue());
76 }
77
78 @Override
79 public boolean supportsModel(IModel model) {
80 return model instanceof ProjectionModel;
81 }
82
83 @Override
84 public boolean supportsModel(ISymbolicModel<?> model) {
85 return model instanceof SymbolicProjectionModel;
86 }
87
88 @Override
89 public boolean supportsURI(URI uri) {
90 return uri.getScheme().equals(GENERAL_DB_URI_SCHEME);
91 }
92
93 @Override
94 public boolean supportsMIMEType(IMIMEType mime) {
95 return false;
96 }
97
98
99
100
101
102
103
104
105
106
107
108
109 public static ParameterBlock createReaderParams(DBConnectionData connData,
110 int projectionID) {
111 ParameterBlock readerParams = new ParameterBlock();
112 readerParams.addSubBlock(KEY_CONN_DATA_URL, connData.getURL());
113 readerParams.addSubBlock(KEY_CONN_DATA_USER, connData.getUser());
114 readerParams.addSubBlock(KEY_CONN_DATA_PWD, connData.getPassword());
115 readerParams.addSubBlock(KEY_CONN_DATA_DRIVER, connData.getDriver());
116 readerParams.addSubBlock(KEY_PROJECT_ID, projectionID);
117 return readerParams;
118 }
119
120
121
122
123
124
125
126
127 public static Pair<DBConnectionData, Integer> retrieveReaderParams(
128 ParameterBlock params) {
129 return new Pair<DBConnectionData, Integer>(new DBConnectionData(
130 params.getSubBlockValue(KEY_CONN_DATA_URL, ""),
131 params.getSubBlockValue(KEY_CONN_DATA_USER, ""),
132 params.getSubBlockValue(KEY_CONN_DATA_PWD, ""),
133 params.getSubBlockValue(KEY_CONN_DATA_DRIVER, "")),
134 params.getSubBlockValue(KEY_PROJECT_ID, -1));
135 }
136
137 }