package user.mediacube.metadata.interfaces;\r
\r
public enum MetadataProviderType {\r
- PLANAIR, HSM\r
+ PLANAIR, HSM, TSM\r
}\r
--- /dev/null
+datasource:\r
+ mediacube:\r
+ url: jdbc:db2://10.11.1.90:50000/mc\r
+ user: db2admin\r
+ password: password\r
+ external-indexer: false\r
+ simple-search: true\r
+ login-timeout: 3\r
+ pool-size: 10\r
+ mediacube-nosql:\r
+ url: jdbc:db2://10.11.1.90:50000/mc\r
+ user: db2admin\r
+ password: password\r
+ schema: test\r
+ login-timeout: 3\r
+ hsm: \r
+ url: jdbc:db2://10.11.1.89:51500/tsmdb1\r
+ user: tsminst1\r
+ password: tsminst1\r
+ tsm: \r
+ url: jdbc:db2://10.11.1.90:52500/tsmdb1\r
+ user: tsminst1\r
+ password: passwordpassword\r
+ planair: \r
+ url: jdbc:sqlserver://10.11.254.86;databaseName=PA_Vivantis;\r
+ user: MAM\r
+ password: VDani\r
+services:\r
+ mediacube:\r
+ proxy-root: /mediacube/data/lowres\r
+jobs:\r
+ validate-transfers: false\r
+ copy-buffer-size: 32768\r
+ scheduled-execution-disabled: true\r
+tsm:\r
+ randomize-archives: true\r
+ delimiter: /\r
+ node-name: JOBENGINE\r
+ fs-name: /JOBENGINE\r
+ alternate-fs-name: /JOBENGINE\r
+ hl-name: /JOBENGINE\r
+
\ No newline at end of file
import org.apache.logging.log4j.Logger;\r
\r
import user.commons.configuration.IConfiguration;\r
+import user.mediacube.metadata.hsm.HSMMetadataProvider;\r
import user.mediacube.metadata.interfaces.IMetadataProvider;\r
import user.mediacube.metadata.interfaces.IMetadataProviderFactory;\r
import user.mediacube.metadata.interfaces.MetadataProviderType;\r
import user.mediacube.metadata.planair.PlanAirMetadataProvider;\r
+import user.mediacube.metadata.tsm.TSMMetadataProvider;\r
\r
public class MetadataProviderFactory implements IMetadataProviderFactory {\r
private static Logger logger = LogManager.getLogger();\r
\r
createProvider(MetadataProviderType.PLANAIR);\r
createProvider(MetadataProviderType.HSM);\r
+ createProvider(MetadataProviderType.TSM);\r
\r
}\r
}\r
private void createProvider(MetadataProviderType type) {\r
try {\r
logger.info("Creating metadata provider for {}", type);\r
- providers.put(type, new PlanAirMetadataProvider());\r
+\r
+ switch (type) {\r
+ case HSM:\r
+ providers.put(type, new HSMMetadataProvider());\r
+ break;\r
+ case PLANAIR:\r
+ providers.put(type, new PlanAirMetadataProvider());\r
+ break;\r
+ case TSM:\r
+ providers.put(type, new TSMMetadataProvider());\r
+ break;\r
+ default:\r
+ break;\r
+ }\r
+\r
} catch (Exception e) {\r
logger.error("Metadata provider not created for {}. Error: {}", type, e.getMessage());\r
}\r
if (options.containsKey("volumeName"))\r
result.setVolumeName(options.getString("volumeName"));\r
if (options.containsKey("fileName"))\r
- result.setVolumeName(options.getString("fileName"));\r
+ result.setFileName(options.getString("fileName"));\r
return result;\r
\r
}\r
\r
import user.mediacube.metadata.MetadataProviderFactory;\r
import user.mediacube.metadata.MyBatisMetadataProvider;\r
-import user.mediacube.metadata.hsm.HSMListOptions;\r
import user.mediacube.metadata.interfaces.IMetadata;\r
import user.mediacube.metadata.interfaces.IMetadataListOptions;\r
import user.mediacube.metadata.interfaces.PlanAirMetadataListOptions;\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
+ PlanAirMetadataListOptions result = new PlanAirMetadataListOptions();\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
--- /dev/null
+package user.mediacube.metadata.tsm;\r
+\r
+import java.util.List;\r
+\r
+import org.apache.ibatis.annotations.Result;\r
+import org.apache.ibatis.annotations.Results;\r
+import org.apache.ibatis.annotations.SelectProvider;\r
+\r
+import user.mediacube.metadata.hsm.HSMSqlProvider;\r
+\r
+public interface ITSMMaterialMapper {\r
+\r
+ @SelectProvider(type = HSMSqlProvider.class, method = "selectContents")\r
+ @Results(value = { @Result(property = "fileName", column = "FILE_NAME"),\r
+ @Result(property = "backupDate", column = "INSDATE") })\r
+ public List<TSMContent> getContents(String fileName);\r
+}\r
--- /dev/null
+package user.mediacube.metadata.tsm;\r
+\r
+import java.util.Date;\r
+\r
+import com.ibm.nosql.json.api.BasicDBObject;\r
+\r
+import user.mediacube.metadata.interfaces.IMetadata;\r
+\r
+public class TSMContent implements IMetadata {\r
+ private String fileName;\r
+ private Date backupDate;\r
+\r
+ @Override\r
+ public BasicDBObject asJSON() {\r
+ BasicDBObject result = new BasicDBObject();\r
+ result.put("fileName", fileName);\r
+ result.put("backupDate", backupDate);\r
+ return result;\r
+ }\r
+\r
+ public String getFileName() {\r
+ return fileName;\r
+ }\r
+\r
+ @Override\r
+ public String getTitle() {\r
+ return fileName;\r
+ }\r
+\r
+ public void setFileName(String fileName) {\r
+ this.fileName = fileName;\r
+ }\r
+\r
+ @Override\r
+ public String getId() {\r
+ return fileName;\r
+ }\r
+\r
+}\r
--- /dev/null
+package user.mediacube.metadata.tsm;\r
+\r
+import user.mediacube.metadata.interfaces.IMetadataListOptions;\r
+\r
+public class TSMListOptions implements IMetadataListOptions {\r
+ private String fileName;\r
+\r
+ public String getFileName() {\r
+ return fileName;\r
+ }\r
+\r
+ public void setFileName(String fileName) {\r
+ this.fileName = fileName;\r
+ }\r
+\r
+}\r
\r
import user.mediacube.metadata.MetadataProviderFactory;\r
import user.mediacube.metadata.MyBatisMetadataProvider;\r
-import user.mediacube.metadata.hsm.HSMListOptions;\r
import user.mediacube.metadata.hsm.IHSMMaterialMapper;\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
+ private static final String JDBC_URL = MetadataProviderFactory.getSystemConfig().value("datasource.tsm.url");\r
+ private static final String JDBC_USER = MetadataProviderFactory.getSystemConfig().value("datasource.tsm.user");\r
+ private static final String JDBC_PWD = MetadataProviderFactory.getSystemConfig().value("datasource.tsm.password");\r
\r
public TSMMetadataProvider() throws Exception {\r
super();\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
+ TSMListOptions result = new TSMListOptions();\r
if (options.containsKey("fileName"))\r
- result.setVolumeName(options.getString("fileName"));\r
+ result.setFileName(options.getString("fileName"));\r
return result;\r
\r
}\r
@SuppressWarnings("unchecked")\r
@Override\r
protected List<IMetadata> queryList(SqlSession session, IMetadataListOptions options) {\r
- IHSMMaterialMapper mapper = session.getMapper(IHSMMaterialMapper.class);\r
+ ITSMMaterialMapper mapper = session.getMapper(ITSMMaterialMapper.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
+ TSMListOptions listOptions = (TSMListOptions) options;\r
+ result = (List<IMetadata>) (List<?>) mapper.getContents(listOptions.getFileName());\r
return result;\r
}\r
\r
--- /dev/null
+package user.mediacube.metadata.tsm;\r
+\r
+import org.apache.ibatis.jdbc.SQL;\r
+\r
+public class TSMSqlProvider {\r
+\r
+ public String selectContents() {\r
+ SQL sql = new SQL();\r
+ sql.SELECT("LL_NAME", "INSDATE");\r
+ sql.FROM("TSMDB1.BACKUP_OBJECTS");\r
+ sql.WHERE("LL_NAME = ${fileName}");\r
+ return sql.toString();\r
+ }\r
+}\r
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>\r
+<Configuration status="INFO">\r
+ <Appenders>\r
+ <Console name="LogToConsole" target="SYSTEM_OUT">\r
+ <PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/>\r
+ </Console>\r
+ </Appenders>\r
+ <Loggers>\r
+ <Root level="INFO">\r
+ <AppenderRef ref="LogToConsole"/>\r
+ </Root>\r
+ </Loggers>\r
+</Configuration>
\ No newline at end of file
--- /dev/null
+package user.mediabube.metadata;
+
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertTrue;
+
+import java.util.List;
+
+import org.junit.Test;
+
+import user.mediacube.metadata.MetadataProviderFactory;
+import user.mediacube.metadata.interfaces.IMetadata;
+import user.mediacube.metadata.interfaces.IMetadataProvider;
+import user.mediacube.metadata.interfaces.IMetadataProviderFactory;
+import user.mediacube.metadata.interfaces.MetadataProviderType;
+import user.mediacube.metadata.tsm.TSMListOptions;
+
+public class TSMMetadataTest {
+ private IMetadataProviderFactory factory = new MetadataProviderFactory();
+
+ @Test
+ public void testFactoryConnection() throws Exception {
+ // Fixture
+ // Exercise
+ IMetadataProvider sut = factory.getProvider(MetadataProviderType.TSM);
+
+ // Verify
+ assertNotNull(sut);
+ }
+
+ @Test
+ public void testListByFileName() throws Exception {
+ TSMListOptions opt = new TSMListOptions();
+ opt.setFileName("");
+
+ // Fixture
+ IMetadataProvider sut = factory.getProvider(MetadataProviderType.TSM);
+
+ // Exercise
+ List<IMetadata> result = sut.list(opt);
+
+ // Verify
+ assertNotNull(result);
+ assertTrue(result.size() > 0);
+ System.out.println(result.get(0).getTitle());
+ }
+}