--- /dev/null
+package user.mediacube.metadata.hsm;\r
+\r
+import java.util.List;\r
+\r
+import javax.sql.DataSource;\r
+\r
+import org.apache.ibatis.datasource.pooled.PooledDataSource;\r
+import org.apache.ibatis.session.Configuration;\r
+import org.apache.ibatis.session.SqlSession;\r
+\r
+import com.ibm.nosql.json.api.BasicDBObject;\r
+\r
+import user.mediacube.metadata.MetadataProviderFactory;\r
+import user.mediacube.metadata.MyBatisMetadataProvider;\r
+import user.mediacube.metadata.interfaces.IMetadata;\r
+import user.mediacube.metadata.interfaces.IMetadataListOptions;\r
+\r
+public class TSMMetadataProvider extends MyBatisMetadataProvider {\r
+ private static final String JDBC_DRIVER = "com.ibm.db2.jcc.DB2Driver";\r
+ private static final String JDBC_URL = MetadataProviderFactory.getSystemConfig().value("datasource.hsm.url");\r
+ private static final String JDBC_USER = MetadataProviderFactory.getSystemConfig().value("datasource.hsm.user");\r
+ private static final String JDBC_PWD = MetadataProviderFactory.getSystemConfig().value("datasource.hsm.password");\r
+\r
+ public TSMMetadataProvider() throws Exception {\r
+ super();\r
+ }\r
+\r
+ @Override\r
+ protected DataSource createDataSource() {\r
+ PooledDataSource dataSource = new PooledDataSource(JDBC_DRIVER, JDBC_URL, JDBC_USER, JDBC_PWD);\r
+ dataSource.setPoolPingEnabled(true);\r
+ dataSource.setPoolPingQuery("SELECT 1 FROM SYSIBM.SYSDUMMY1");\r
+ dataSource.setPoolPingConnectionsNotUsedFor(5000);\r
+ return dataSource;\r
+ }\r
+\r
+ @Override\r
+ protected IMetadataListOptions createOptions(BasicDBObject options) {\r
+ HSMListOptions result = new HSMListOptions();\r
+ if (options.containsKey("volumeName"))\r
+ result.setVolumeName(options.getString("volumeName"));\r
+ if (options.containsKey("fileName"))\r
+ result.setVolumeName(options.getString("fileName"));\r
+ return result;\r
+\r
+ }\r
+\r
+ @Override\r
+ protected String getDriverClassName() {\r
+ return JDBC_DRIVER;\r
+ }\r
+\r
+ @SuppressWarnings("unchecked")\r
+ @Override\r
+ protected List<IMetadata> queryList(SqlSession session, IMetadataListOptions options) {\r
+ IHSMMaterialMapper mapper = session.getMapper(IHSMMaterialMapper.class);\r
+ List<IMetadata> result = null;\r
+\r
+ HSMListOptions listOptions = (HSMListOptions) options;\r
+ if (listOptions.getVolumeName() == null && listOptions.getFileName() == null) {\r
+ result = (List<IMetadata>) (List<?>) mapper.getVolumeNames();\r
+ } else {\r
+ if (listOptions.getVolumeName() != null)\r
+ result = (List<IMetadata>) (List<?>) mapper.getByVolumeName(listOptions.getVolumeName());\r
+ else if (listOptions.getFileName() != null)\r
+ result = (List<IMetadata>) (List<?>) mapper.getByFileName(listOptions.getFileName());\r
+ }\r
+ return result;\r
+ }\r
+\r
+ @Override\r
+ protected void registerMappers(Configuration configuration) {\r
+ configuration.addMapper(IHSMMaterialMapper.class);\r
+ }\r
+\r
+}\r