git-tfs-id: [http://tfs.userrendszerhaz.hu:8080/tfs/DefaultCollection]$/MediaCube...
authorvasary.daniel <TFS\vasary.daniel>
Tue, 10 Aug 2021 07:57:38 +0000 (07:57 +0000)
committervasary.daniel <TFS\vasary.daniel>
Tue, 10 Aug 2021 07:57:38 +0000 (07:57 +0000)
12 files changed:
server/user.jobengine.osgi.commons/src/user/mediacube/metadata/interfaces/MetadataProviderType.java
server/user.mediacube.metadata/settings/application.yaml [new file with mode: 0644]
server/user.mediacube.metadata/src/user/mediacube/metadata/MetadataProviderFactory.java
server/user.mediacube.metadata/src/user/mediacube/metadata/hsm/HSMMetadataProvider.java
server/user.mediacube.metadata/src/user/mediacube/metadata/planair/PlanAirMetadataProvider.java
server/user.mediacube.metadata/src/user/mediacube/metadata/tsm/ITSMMaterialMapper.java [new file with mode: 0644]
server/user.mediacube.metadata/src/user/mediacube/metadata/tsm/TSMContent.java [new file with mode: 0644]
server/user.mediacube.metadata/src/user/mediacube/metadata/tsm/TSMListOptions.java [new file with mode: 0644]
server/user.mediacube.metadata/src/user/mediacube/metadata/tsm/TSMMetadataProvider.java
server/user.mediacube.metadata/src/user/mediacube/metadata/tsm/TSMSqlProvider.java [new file with mode: 0644]
server/user.mediacube.metadata/test/log4j2-test.xml [new file with mode: 0644]
server/user.mediacube.metadata/test/user/mediabube/metadata/TSMMetadataTest.java [new file with mode: 0644]

index 50bc07f5b7f2b6392080c33e6e1b0f568000aa50..6bc1a492dcbd076eb84587d5c33433bf97a7e217 100644 (file)
@@ -1,5 +1,5 @@
 package user.mediacube.metadata.interfaces;\r
 \r
 public enum MetadataProviderType {\r
-       PLANAIR, HSM\r
+       PLANAIR, HSM, TSM\r
 }\r
diff --git a/server/user.mediacube.metadata/settings/application.yaml b/server/user.mediacube.metadata/settings/application.yaml
new file mode 100644 (file)
index 0000000..29f0f56
--- /dev/null
@@ -0,0 +1,42 @@
+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
index 273fa35b22143778e0af16fbb75ab95592352429..fb9a34e41c85ec084cda92fe9aa413a8725a098d 100644 (file)
@@ -7,10 +7,12 @@ import org.apache.logging.log4j.LogManager;
 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
@@ -33,6 +35,7 @@ public class MetadataProviderFactory implements IMetadataProviderFactory {
 \r
                        createProvider(MetadataProviderType.PLANAIR);\r
                        createProvider(MetadataProviderType.HSM);\r
+                       createProvider(MetadataProviderType.TSM);\r
 \r
                }\r
        }\r
@@ -40,7 +43,21 @@ public class MetadataProviderFactory implements IMetadataProviderFactory {
        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
index 901cdffb8a67fb5e693467f59c26dbc61775585a..a4ca431c40f2cc709f5952774bc4a2f4038be717 100644 (file)
@@ -40,7 +40,7 @@ public class HSMMetadataProvider extends MyBatisMetadataProvider {
                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
index 50c42fc833401a61d99f18520ad0390dd8dbffaf..ffd1a75bc467b94372e9d32f35bfc7f9e092d72c 100644 (file)
@@ -12,7 +12,6 @@ import com.ibm.nosql.json.api.BasicDBObject;
 \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
@@ -34,11 +33,11 @@ public class PlanAirMetadataProvider extends MyBatisMetadataProvider {
 \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
diff --git a/server/user.mediacube.metadata/src/user/mediacube/metadata/tsm/ITSMMaterialMapper.java b/server/user.mediacube.metadata/src/user/mediacube/metadata/tsm/ITSMMaterialMapper.java
new file mode 100644 (file)
index 0000000..50d8cf4
--- /dev/null
@@ -0,0 +1,17 @@
+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
diff --git a/server/user.mediacube.metadata/src/user/mediacube/metadata/tsm/TSMContent.java b/server/user.mediacube.metadata/src/user/mediacube/metadata/tsm/TSMContent.java
new file mode 100644 (file)
index 0000000..11fbf3e
--- /dev/null
@@ -0,0 +1,39 @@
+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
diff --git a/server/user.mediacube.metadata/src/user/mediacube/metadata/tsm/TSMListOptions.java b/server/user.mediacube.metadata/src/user/mediacube/metadata/tsm/TSMListOptions.java
new file mode 100644 (file)
index 0000000..c4a17ec
--- /dev/null
@@ -0,0 +1,16 @@
+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
index cc9bdd9d5e1b6c9d6183519079a9f4da1f3da9c4..fe71d162fde8d379fbf7dac997e07c0d47931906 100644 (file)
@@ -12,16 +12,15 @@ import com.ibm.nosql.json.api.BasicDBObject;
 \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
@@ -38,11 +37,9 @@ public class TSMMetadataProvider extends MyBatisMetadataProvider {
 \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
@@ -55,18 +52,11 @@ public class TSMMetadataProvider extends MyBatisMetadataProvider {
        @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
diff --git a/server/user.mediacube.metadata/src/user/mediacube/metadata/tsm/TSMSqlProvider.java b/server/user.mediacube.metadata/src/user/mediacube/metadata/tsm/TSMSqlProvider.java
new file mode 100644 (file)
index 0000000..c6065fd
--- /dev/null
@@ -0,0 +1,14 @@
+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
diff --git a/server/user.mediacube.metadata/test/log4j2-test.xml b/server/user.mediacube.metadata/test/log4j2-test.xml
new file mode 100644 (file)
index 0000000..ad428dc
--- /dev/null
@@ -0,0 +1,13 @@
+<?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
diff --git a/server/user.mediacube.metadata/test/user/mediabube/metadata/TSMMetadataTest.java b/server/user.mediacube.metadata/test/user/mediabube/metadata/TSMMetadataTest.java
new file mode 100644 (file)
index 0000000..12a12fa
--- /dev/null
@@ -0,0 +1,46 @@
+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());
+       }
+}