git-tfs-id: [http://tfs.userrendszerhaz.hu:8080/tfs/DefaultCollection]$/MediaCube...
authorVásáry Dániel <daniel.vasary@userrendszerhaz.hu>
Thu, 17 Oct 2019 11:32:21 +0000 (11:32 +0000)
committerVásáry Dániel <daniel.vasary@userrendszerhaz.hu>
Thu, 17 Oct 2019 11:32:21 +0000 (11:32 +0000)
16 files changed:
server/hu.user.mediacube.executors.tests/src/hu/user/mediacube/executors/tests/HSMMigrateListBuilderStepTest.java [new file with mode: 0644]
server/user.jobengine.executors/META-INF/MANIFEST.MF
server/user.jobengine.executors/src/user/jobengine/server/steps/HSMMigrateListBuilderStep.java
server/user.jobengine.osgi.commons/src/user/mediacube/metadata/interfaces/IMetadataProvider.java
server/user.jobengine.osgi.commons/src/user/mediacube/metadata/interfaces/MetadataProviderType.java
server/user.mediacube.metadata/META-INF/MANIFEST.MF
server/user.mediacube.metadata/src/user/mediacube/metadata/MetadataProviderFactory.java
server/user.mediacube.metadata/src/user/mediacube/metadata/MyBatisMetadataProvider.java [new file with mode: 0644]
server/user.mediacube.metadata/src/user/mediacube/metadata/hsm/HSMContent.java [new file with mode: 0644]
server/user.mediacube.metadata/src/user/mediacube/metadata/hsm/HSMListOptions.java [new file with mode: 0644]
server/user.mediacube.metadata/src/user/mediacube/metadata/hsm/HSMMetadataProvider.java [new file with mode: 0644]
server/user.mediacube.metadata/src/user/mediacube/metadata/hsm/HSMSqlProvider.java [new file with mode: 0644]
server/user.mediacube.metadata/src/user/mediacube/metadata/hsm/HSMVolume.java [new file with mode: 0644]
server/user.mediacube.metadata/src/user/mediacube/metadata/hsm/IHSMMaterialMapper.java [new file with mode: 0644]
server/user.mediacube.metadata/src/user/mediacube/metadata/planair/PlanAirMetadataProvider.java
server/user.mediacube.metadata/test/user/mediabube/metadata/HSMMetadataTest.java [new file with mode: 0644]

diff --git a/server/hu.user.mediacube.executors.tests/src/hu/user/mediacube/executors/tests/HSMMigrateListBuilderStepTest.java b/server/hu.user.mediacube.executors.tests/src/hu/user/mediacube/executors/tests/HSMMigrateListBuilderStepTest.java
new file mode 100644 (file)
index 0000000..f27008c
--- /dev/null
@@ -0,0 +1,16 @@
+package hu.user.mediacube.executors.tests;\r
+\r
+import org.junit.Test;\r
+\r
+import user.jobengine.server.steps.HSMMigrateListBuilderStep;\r
+\r
+public class HSMMigrateListBuilderStepTest {\r
+\r
+       @Test\r
+       public void test1() throws Exception {\r
+               HSMMigrateListBuilderStep sut = new HSMMigrateListBuilderStep();\r
+               sut.execute("//10.11.1.89/OMARCHIVE", 0);\r
+               //              System.out.println(Arrays.toString(sut));\r
+       }\r
+\r
+}\r
index 7da4ebb7fb268280981ef591ec5d9acb2d2a894e..853dd70d967fb4b5896cf9190f2dded33fe3348b 100644 (file)
@@ -34,4 +34,6 @@ Import-Package: javax.ws.rs.client,
  org.apache.logging.log4j.message;version="2.8.2",
  org.joda.time;version="2.2.0",
  org.joda.time.base;version="2.2.0",
- sqlj.runtime.ref
+ sqlj.runtime.ref,
+ user.mediacube.metadata,
+ user.mediacube.metadata.hsm
index d74026e88564741081094e9ba052228974ad2aea..cd0e370c85d92cf647260eed78dc287c90aeade1 100644 (file)
 package user.jobengine.server.steps;\r
 \r
 import java.io.File;\r
-import java.io.IOException;\r
-import java.nio.file.DirectoryStream;\r
-import java.nio.file.Files;\r
 import java.nio.file.Path;\r
-import java.nio.file.Paths;\r
+import java.util.LinkedHashMap;\r
 import java.util.LinkedList;\r
 import java.util.List;\r
+import java.util.Map;\r
 \r
+import org.apache.commons.io.FileUtils;\r
 import org.apache.logging.log4j.LogManager;\r
 import org.apache.logging.log4j.Logger;\r
 import org.apache.logging.log4j.Marker;\r
 \r
-import user.jobengine.server.IJobEngine;\r
-import user.jobengine.server.IJobRuntime;\r
+import user.mediacube.metadata.MetadataProviderFactory;\r
+import user.mediacube.metadata.hsm.HSMContent;\r
+import user.mediacube.metadata.hsm.HSMListOptions;\r
+import user.mediacube.metadata.interfaces.IMetadata;\r
+import user.mediacube.metadata.interfaces.IMetadataProvider;\r
+import user.mediacube.metadata.interfaces.IMetadataProviderFactory;\r
+import user.mediacube.metadata.interfaces.MetadataProviderType;\r
 \r
 public class HSMMigrateListBuilderStep extends JobStep {\r
        private static final Logger logger = LogManager.getLogger();\r
        private static final String MXFEXT = ".mxf";\r
        private static final String MOVEXT = ".mov";\r
-       private Marker marker = jobRuntime.getMarker();\r
+       private Marker marker = null;\r
+       private IMetadataProvider metadataProvider;\r
+       private List<ArchiveItem> archiveList;\r
+       private Map<String, HSMContent> tapeContents = new LinkedHashMap<>();\r
 \r
        @StepEntry\r
-       public Object[] execute(String sourcePath, int limit, IJobEngine jobEngine, IJobRuntime jobRuntime) {\r
-               marker = jobRuntime.getMarker();\r
-               List<ArchiveItem> archiveList = new LinkedList<ArchiveItem>();\r
-               DirectoryStream<Path> directoryStream = null;\r
+       public Object[] execute(String sourcePath, int limit) {\r
+               if (jobRuntime != null)\r
+                       marker = jobRuntime.getMarker();\r
+               IMetadataProviderFactory factory = new MetadataProviderFactory();\r
+               metadataProvider = factory.getProvider(MetadataProviderType.HSM);\r
+               archiveList = new LinkedList<ArchiveItem>();\r
+\r
                try {\r
-                       DirectoryStream<Path> stream = Files.newDirectoryStream(Paths.get(sourcePath));\r
-                       for (Path p : stream) {\r
-                               processPathItem(p, archiveList);\r
+                       //                      Files.walkFileTree(Paths.get(sourcePath), new SimpleFileVisitor<Path>() {\r
+                       //                              @Override\r
+                       //                              public FileVisitResult visitFile(Path file, BasicFileAttributes attrs) throws IOException {\r
+                       //                                      processPathItem(file);\r
+                       //                                      return super.visitFile(file, attrs);\r
+                       //                              }\r
+                       //                      });\r
+\r
+                       List<IMetadata> volumes = metadataProvider.list(null);\r
+                       for (IMetadata volume : volumes) {\r
+                               System.out.println("---Volume " + volume.getTitle());\r
+                               long size = 0;\r
+                               List<IMetadata> contents = getContents(volume.getTitle());\r
+                               for (IMetadata content : contents) {\r
+                                       HSMContent c = (HSMContent) content;\r
+                                       if (!tapeContents.containsKey(c.getFileName())) {\r
+                                               tapeContents.put(c.getFileName(), c);\r
+                                               System.out.println("Content " + c.getFileName() + " " + c.getSegment() + " " + c.getStart());\r
+                                               size += c.getFileSize();\r
+                                       }\r
+\r
+                               }\r
+\r
+                               System.out.println(">>>  " + size);\r
                        }\r
                } catch (Exception e) {\r
                        logger.catching(e);\r
                        logger.error(marker, "Az '{}' mappa elérése sikertelen. A rendszer hibaüzenete: {}", e.getMessage());\r
                } finally {\r
-                       if (directoryStream != null) {\r
-                               try {\r
-                                       directoryStream.close();\r
-                               } catch (IOException e) {\r
-                               }\r
-                       }\r
                }\r
+\r
+               System.out.println("Summary " + tapeContents.size());\r
+\r
                return new Object[] { archiveList };\r
        }\r
 \r
-       private boolean processPathItem(Path mediaFilePath, final List<ArchiveItem> archiveList) {\r
+       private String getCompatibleFileName(Path mediaFilePath) {\r
+               String fileName = mediaFilePath.toString().replace("\\", "/").replace("//", "");\r
+               fileName = fileName.substring(fileName.indexOf("/"));\r
+               System.out.println("Visited " + fileName);\r
+               return fileName;\r
+       }\r
+\r
+       private List<IMetadata> getContents(String volumeName) {\r
+               List<IMetadata> contents = null;\r
+               HSMListOptions listOptions = new HSMListOptions();\r
+               listOptions.setVolumeName(volumeName);\r
+               try {\r
+                       contents = metadataProvider.list(listOptions);\r
+               } catch (Exception e) {\r
+                       System.out.println(e.getMessage());\r
+               }\r
+               return contents;\r
+       }\r
+\r
+       private boolean processPathItem(Path mediaFilePath) {\r
                File mediaFile = mediaFilePath.toFile();\r
 \r
                //              if (mediaFile.length() > 0)\r
                //                      return false;\r
 \r
-               if (mediaFile.isDirectory() || !mediaFile.getName().toLowerCase().endsWith(MXFEXT.toLowerCase())) {\r
+               if (!mediaFile.getName().toLowerCase().endsWith(MOVEXT.toLowerCase()) && !mediaFile.getName().toLowerCase().endsWith(MXFEXT.toLowerCase()))\r
+                       return false;\r
+\r
+               String fileName = getCompatibleFileName(mediaFilePath);\r
+\r
+               HSMContent hsmContent = null;\r
+               HSMListOptions listOptions = new HSMListOptions();\r
+               listOptions.setFileName(fileName);\r
+               try {\r
+                       List<IMetadata> contents = metadataProvider.list(listOptions);\r
+                       if (contents.size() != 1)\r
+                               throw new Exception("Contents size is " + contents.size());\r
+                       hsmContent = (HSMContent) contents.get(0);\r
+\r
+                       String volumeName = hsmContent.getVolumeName();\r
+               } catch (Exception e) {\r
+                       System.out.println(e.getMessage());\r
                        return false;\r
                }\r
                return true;\r
index cd20c8cec91cf888153b54eb3ede16fdc279c02f..00dee5e9032ea670ce4a998e328fe78a8971dbfe 100644 (file)
@@ -4,7 +4,5 @@ import java.util.List;
 \r
 public interface IMetadataProvider {\r
 \r
-       List<String> getColumnNames(MetadataType type);\r
-\r
        List<IMetadata> list(IMetadataListOptions options) throws Exception;\r
 }\r
index 31e0357ceb260556b7e432b18d4a53e77ee5286e..50bc07f5b7f2b6392080c33e6e1b0f568000aa50 100644 (file)
@@ -1,5 +1,5 @@
 package user.mediacube.metadata.interfaces;\r
 \r
 public enum MetadataProviderType {\r
-       PLANAIR\r
+       PLANAIR, HSM\r
 }\r
index 09f4c0c9f3a128f94f038ef6a1e0299195c05bd6..95a15f029208d3c1b3d47eb96543a2ad81e47dbf 100644 (file)
@@ -4,12 +4,14 @@ Bundle-Name: Metadata
 Bundle-SymbolicName: user.mediacube.metadata;singleton:=true
 Bundle-Version: 1.0.0
 Bundle-RequiredExecutionEnvironment: JavaSE-1.8
-Export-Package: user.mediabube.metadata
+Export-Package: user.mediacube.metadata,
+ user.mediacube.metadata.hsm
 Service-Component: OSGI-INF/component.xml
 DynamicImport-Package: *
 Require-Bundle: org.mybatis.mybatis;bundle-version="3.5.2",
  org.junit;bundle-version="4.12.0",
- com.microsoft.sqlserver.sqljdbc
+ com.microsoft.sqlserver.sqljdbc,
+ com.ibm.db2jcc4;bundle-version="4.19.26"
 Bundle-ActivationPolicy: lazy
 Import-Package: user.mediacube.metadata.interfaces
 Bundle-ClassPath: .
index 08cf880dffdb8845e7484cd94b4c21e646a31771..b71f7a12d2a42ce3ee28571ec7e4d220e09a10d7 100644 (file)
@@ -3,6 +3,7 @@ package user.mediacube.metadata;
 import java.util.HashMap;\r
 import java.util.Map;\r
 \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
@@ -15,10 +16,12 @@ public class MetadataProviderFactory implements IMetadataProviderFactory {
        public MetadataProviderFactory() {\r
                try {\r
                        providers.put(MetadataProviderType.PLANAIR, new PlanAirMetadataProvider());\r
+                       providers.put(MetadataProviderType.HSM, new HSMMetadataProvider());\r
                } catch (Exception e) {\r
                }\r
        }\r
 \r
+       @Override\r
        public IMetadataProvider getProvider(MetadataProviderType type) {\r
                return providers.get(type);\r
        }\r
diff --git a/server/user.mediacube.metadata/src/user/mediacube/metadata/MyBatisMetadataProvider.java b/server/user.mediacube.metadata/src/user/mediacube/metadata/MyBatisMetadataProvider.java
new file mode 100644 (file)
index 0000000..c8885a2
--- /dev/null
@@ -0,0 +1,57 @@
+package user.mediacube.metadata;\r
+\r
+import java.util.List;\r
+\r
+import javax.sql.DataSource;\r
+\r
+import org.apache.ibatis.mapping.Environment;\r
+import org.apache.ibatis.session.Configuration;\r
+import org.apache.ibatis.session.SqlSession;\r
+import org.apache.ibatis.session.SqlSessionFactory;\r
+import org.apache.ibatis.session.SqlSessionFactoryBuilder;\r
+import org.apache.ibatis.transaction.jdbc.JdbcTransactionFactory;\r
+\r
+import user.mediacube.metadata.interfaces.IMetadata;\r
+import user.mediacube.metadata.interfaces.IMetadataListOptions;\r
+import user.mediacube.metadata.interfaces.IMetadataProvider;\r
+\r
+public abstract class MyBatisMetadataProvider implements IMetadataProvider {\r
+       private final SqlSessionFactory sqlSessionFactory;\r
+\r
+       public MyBatisMetadataProvider() throws Exception {\r
+               try {\r
+                       Class.forName(getDriverClassName());\r
+                       sqlSessionFactory = buildqlSessionFactory();\r
+               } catch (Exception e) {\r
+                       throw e;\r
+               }\r
+       }\r
+\r
+       private SqlSessionFactory buildqlSessionFactory() {\r
+               Environment environment = new Environment("Development", new JdbcTransactionFactory(), createDataSource());\r
+               Configuration configuration = new Configuration(environment);\r
+               registerMappers(configuration);\r
+               SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder();\r
+               return builder.build(configuration);\r
+       }\r
+\r
+       abstract protected DataSource createDataSource();\r
+\r
+       abstract protected String getDriverClassName();\r
+\r
+       @Override\r
+       public List<IMetadata> list(IMetadataListOptions options) throws Exception {\r
+               List<IMetadata> result = null;\r
+               try (SqlSession session = sqlSessionFactory.openSession()) {\r
+                       result = queryList(session, options);\r
+               } catch (Exception e) {\r
+                       throw e;\r
+               }\r
+               return result;\r
+       }\r
+\r
+       abstract protected List<IMetadata> queryList(SqlSession session, IMetadataListOptions options);\r
+\r
+       abstract protected void registerMappers(Configuration configuration);\r
+\r
+}\r
diff --git a/server/user.mediacube.metadata/src/user/mediacube/metadata/hsm/HSMContent.java b/server/user.mediacube.metadata/src/user/mediacube/metadata/hsm/HSMContent.java
new file mode 100644 (file)
index 0000000..080adaf
--- /dev/null
@@ -0,0 +1,89 @@
+package user.mediacube.metadata.hsm;\r
+\r
+import user.mediacube.metadata.interfaces.IMetadata;\r
+\r
+public class HSMContent implements IMetadata {\r
+       private String fileName;\r
+       private long fileSize;\r
+       private String segment;\r
+       private String filespaceName;\r
+       private String volumeName;\r
+       private String nodeName;\r
+       private long objectId;\r
+       private int start;\r
+\r
+       public String getFileName() {\r
+               return fileName;\r
+       }\r
+\r
+       public long getFileSize() {\r
+               return fileSize;\r
+       }\r
+\r
+       public String getFilespaceName() {\r
+               return filespaceName;\r
+       }\r
+\r
+       @Override\r
+       public String getId() {\r
+               return String.valueOf(objectId);\r
+       }\r
+\r
+       public String getNodeName() {\r
+               return nodeName;\r
+       }\r
+\r
+       public long getObjectId() {\r
+               return objectId;\r
+       }\r
+\r
+       public String getSegment() {\r
+               return segment;\r
+       }\r
+\r
+       public int getStart() {\r
+               return start;\r
+       }\r
+\r
+       @Override\r
+       public String getTitle() {\r
+               return fileName;\r
+       }\r
+\r
+       public String getVolumeName() {\r
+               return volumeName;\r
+       }\r
+\r
+       public void setFileName(byte[] fileName) {\r
+               this.fileName = new String(fileName);\r
+       }\r
+\r
+       public void setFileSize(long fileSize) {\r
+               this.fileSize = fileSize;\r
+       }\r
+\r
+       public void setFilespaceName(byte[] filespaceName) {\r
+               this.filespaceName = new String(filespaceName);\r
+       }\r
+\r
+       public void setNodeName(String nodeName) {\r
+               this.nodeName = nodeName;\r
+       }\r
+\r
+       public void setObjectId(long objectId) {\r
+               this.objectId = objectId;\r
+       }\r
+\r
+       public void setSegment(String segment) {\r
+               this.segment = segment == null ? null : segment.trim();\r
+       }\r
+\r
+       public void setStart(int start) {\r
+               this.start = start;\r
+       }\r
+\r
+       public void setVolumeName(String volumeName) {\r
+               this.volumeName = volumeName;\r
+       }\r
+\r
+}\r
diff --git a/server/user.mediacube.metadata/src/user/mediacube/metadata/hsm/HSMListOptions.java b/server/user.mediacube.metadata/src/user/mediacube/metadata/hsm/HSMListOptions.java
new file mode 100644 (file)
index 0000000..475d6bd
--- /dev/null
@@ -0,0 +1,25 @@
+package user.mediacube.metadata.hsm;\r
+\r
+import user.mediacube.metadata.interfaces.IMetadataListOptions;\r
+\r
+public class HSMListOptions implements IMetadataListOptions {\r
+       private String volumeName;\r
+       private String fileName;\r
+\r
+       public String getFileName() {\r
+               return fileName;\r
+       }\r
+\r
+       public String getVolumeName() {\r
+               return volumeName;\r
+       }\r
+\r
+       public void setFileName(String fileName) {\r
+               this.fileName = fileName;\r
+       }\r
+\r
+       public void setVolumeName(String volumeName) {\r
+               this.volumeName = volumeName;\r
+       }\r
+\r
+}\r
diff --git a/server/user.mediacube.metadata/src/user/mediacube/metadata/hsm/HSMMetadataProvider.java b/server/user.mediacube.metadata/src/user/mediacube/metadata/hsm/HSMMetadataProvider.java
new file mode 100644 (file)
index 0000000..ddd9513
--- /dev/null
@@ -0,0 +1,58 @@
+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 user.mediacube.metadata.MyBatisMetadataProvider;\r
+import user.mediacube.metadata.interfaces.IMetadata;\r
+import user.mediacube.metadata.interfaces.IMetadataListOptions;\r
+\r
+public class HSMMetadataProvider extends MyBatisMetadataProvider {\r
+       private static final String JDBC_DRIVER = "com.ibm.db2.jcc.DB2Driver";\r
+       private static final String JDBC_URL = System.getProperty("jobengine.hsm.db.url", "jdbc:db2://10.11.1.89:51500/tsmdb1");\r
+       private static final String JDBC_USER = System.getProperty("jobengine.hsm.db.user", "tsminst1");\r
+       private static final String JDBC_PWD = System.getProperty("jobengine.hsm.db.password", "tsminst1");\r
+\r
+       public HSMMetadataProvider() throws Exception {\r
+               super();\r
+       }\r
+\r
+       @Override\r
+       protected DataSource createDataSource() {\r
+               return new PooledDataSource(JDBC_DRIVER, JDBC_URL, JDBC_USER, JDBC_PWD);\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
+               if (options == null) {\r
+                       result = (List<IMetadata>) (List<?>) mapper.getVolumeNames();\r
+               } else {\r
+                       HSMListOptions listOptions = (HSMListOptions) options;\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
diff --git a/server/user.mediacube.metadata/src/user/mediacube/metadata/hsm/HSMSqlProvider.java b/server/user.mediacube.metadata/src/user/mediacube/metadata/hsm/HSMSqlProvider.java
new file mode 100644 (file)
index 0000000..ddde391
--- /dev/null
@@ -0,0 +1,35 @@
+package user.mediacube.metadata.hsm;\r
+\r
+import org.apache.ibatis.jdbc.SQL;\r
+\r
+public class HSMSqlProvider {\r
+\r
+       public String selectByFileName(String fileName) {\r
+               SQL sql = new SQL();\r
+               sql.SELECT("c.FILE_NAME as FILE_NAME", "c.FILE_SIZE", "c.SEGMENT", "c.FILESPACE_NAME", "c.VOLUME_NAME", "c.NODE_NAME", "c.OBJECT_ID", "af.START");\r
+               sql.FROM("TSMDB1.CONTENTS c");\r
+               sql.LEFT_OUTER_JOIN("TSMDB1.AF_SEGMENTS af ON (af.BFID = c.BITFILE_ID)");\r
+               sql.WHERE("c.FILE_NAME='${fileName}'");\r
+               sql.ORDER_BY("af.START DESC");\r
+               return sql.toString();\r
+       }\r
+\r
+       public String selectByVolumeName(String volumeName) {\r
+               SQL sql = new SQL();\r
+               sql.SELECT("c.FILE_NAME", "c.FILE_SIZE", "c.SEGMENT", "c.FILESPACE_NAME", "c.VOLUME_NAME", "c.NODE_NAME", "c.OBJECT_ID", "af.START");\r
+               sql.FROM("TSMDB1.CONTENTS c");\r
+               sql.LEFT_OUTER_JOIN("TSMDB1.AF_SEGMENTS af ON (af.BFID = c.BITFILE_ID)");\r
+               sql.WHERE("c.VOLUME_NAME='${volumeName}'");\r
+               sql.ORDER_BY("c.SEGMENT");\r
+               return sql.toString();\r
+       }\r
+\r
+       public String selectVolumeNames() {\r
+               SQL sql = new SQL();\r
+               sql.SELECT_DISTINCT("VOLUME_NAME");\r
+               sql.FROM("TSMDB1.CONTENTS");\r
+               sql.WHERE("SUBSTR(FILE_NAME, 1, 10) = '/OMARCHIVE'");\r
+               sql.ORDER_BY("VOLUME_NAME");\r
+               return sql.toString();\r
+       }\r
+}\r
diff --git a/server/user.mediacube.metadata/src/user/mediacube/metadata/hsm/HSMVolume.java b/server/user.mediacube.metadata/src/user/mediacube/metadata/hsm/HSMVolume.java
new file mode 100644 (file)
index 0000000..c43ca11
--- /dev/null
@@ -0,0 +1,26 @@
+package user.mediacube.metadata.hsm;\r
+\r
+import user.mediacube.metadata.interfaces.IMetadata;\r
+\r
+public class HSMVolume implements IMetadata {\r
+       private String volumeName;\r
+\r
+       @Override\r
+       public String getId() {\r
+               return null;\r
+       }\r
+\r
+       @Override\r
+       public String getTitle() {\r
+               return volumeName;\r
+       }\r
+\r
+       public String getVolumeName() {\r
+               return volumeName;\r
+       }\r
+\r
+       public void setVolumeName(String volumeName) {\r
+               this.volumeName = volumeName;\r
+       }\r
+\r
+}\r
diff --git a/server/user.mediacube.metadata/src/user/mediacube/metadata/hsm/IHSMMaterialMapper.java b/server/user.mediacube.metadata/src/user/mediacube/metadata/hsm/IHSMMaterialMapper.java
new file mode 100644 (file)
index 0000000..6e3c67d
--- /dev/null
@@ -0,0 +1,28 @@
+package user.mediacube.metadata.hsm;\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
+public interface IHSMMaterialMapper {\r
+\r
+       @SelectProvider(type = HSMSqlProvider.class, method = "selectByFileName")\r
+       @Results(value = { @Result(property = "fileName", column = "FILE_NAME"), @Result(property = "fileSize", column = "FILE_SIZE"),\r
+                       @Result(property = "segment", column = "SEGMENT"), @Result(property = "filespaceName", column = "FILESPACE_NAME"),\r
+                       @Result(property = "volumeName", column = "VOLUME_NAME"), @Result(property = "nodeName", column = "NODE_NAME"),\r
+                       @Result(property = "objectId", column = "OBJECT_ID"), @Result(property = "start", column = "START"), })\r
+       public List<HSMContent> getByFileName(String fileName);\r
+\r
+       @SelectProvider(type = HSMSqlProvider.class, method = "selectByVolumeName")\r
+       @Results(value = { @Result(property = "fileName", column = "FILE_NAME"), @Result(property = "fileSize", column = "FILE_SIZE"),\r
+                       @Result(property = "segment", column = "SEGMENT"), @Result(property = "filespaceName", column = "FILESPACE_NAME"),\r
+                       @Result(property = "volumeName", column = "VOLUME_NAME"), @Result(property = "nodeName", column = "NODE_NAME"),\r
+                       @Result(property = "objectId", column = "OBJECT_ID"), @Result(property = "start", column = "START"), })\r
+       public List<HSMContent> getByVolumeName(String volumeName);\r
+\r
+       @SelectProvider(type = HSMSqlProvider.class, method = "selectVolumeNames")\r
+       @Results(value = { @Result(property = "volumeName", column = "VOLUME_NAME") })\r
+       public List<HSMVolume> getVolumeNames();\r
+}\r
index 3804a8524987eec79bd2f77765c0e3bb33f86677..e24a8e279ab78de0cc4ee304b95be5aeb7f22d22 100644 (file)
@@ -1,6 +1,5 @@
 package user.mediacube.metadata.planair;\r
 \r
-import java.util.Arrays;\r
 import java.util.List;\r
 \r
 import javax.sql.DataSource;\r
@@ -18,7 +17,6 @@ import com.microsoft.sqlserver.jdbc.SQLServerDriver;
 import user.mediacube.metadata.interfaces.IMetadata;\r
 import user.mediacube.metadata.interfaces.IMetadataListOptions;\r
 import user.mediacube.metadata.interfaces.IMetadataProvider;\r
-import user.mediacube.metadata.interfaces.MetadataType;\r
 import user.mediacube.metadata.interfaces.PlanAirMetadataListOptions;\r
 \r
 public class PlanAirMetadataProvider implements IMetadataProvider {\r
@@ -51,11 +49,6 @@ public class PlanAirMetadataProvider implements IMetadataProvider {
                return builder.build(configuration);\r
        }\r
 \r
-       @Override\r
-       public List<String> getColumnNames(MetadataType type) {\r
-               return Arrays.asList("Traffic ID", "OK", "Cím", "Epizódszám", "Epizód azonosító", "Első adás", "Következő adás", "Szegmensek", "Epizódcím");\r
-       }\r
-\r
        @Override\r
        public List<IMetadata> list(IMetadataListOptions options) throws Exception {\r
                List<IMetadata> result = null;\r
diff --git a/server/user.mediacube.metadata/test/user/mediabube/metadata/HSMMetadataTest.java b/server/user.mediacube.metadata/test/user/mediabube/metadata/HSMMetadataTest.java
new file mode 100644 (file)
index 0000000..f607d6c
--- /dev/null
@@ -0,0 +1,77 @@
+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.hsm.HSMListOptions;
+import user.mediacube.metadata.interfaces.IMetadata;
+import user.mediacube.metadata.interfaces.IMetadataProvider;
+import user.mediacube.metadata.interfaces.IMetadataProviderFactory;
+import user.mediacube.metadata.interfaces.MetadataProviderType;
+
+public class HSMMetadataTest {
+       private IMetadataProviderFactory factory = new MetadataProviderFactory();
+
+       @Test
+       public void testFactoryConnection() throws Exception {
+               // Fixture
+               // Exercise
+               IMetadataProvider sut = factory.getProvider(MetadataProviderType.HSM);
+
+               // Verify
+               assertNotNull(sut);
+       }
+
+       @Test
+       public void testListByFileName() throws Exception {
+               HSMListOptions opt = new HSMListOptions();
+               opt.setFileName("/OMARCHIVE/2014/14-00320-0008-2.mov");
+
+               // Fixture
+               IMetadataProvider sut = factory.getProvider(MetadataProviderType.HSM);
+
+               // Exercise
+               List<IMetadata> result = sut.list(opt);
+
+               // Verify
+               assertNotNull(result);
+               assertTrue(result.size() > 0);
+               System.out.println(result.get(0).getTitle());
+       }
+
+       @Test
+       public void testListByVolumeName() throws Exception {
+               HSMListOptions opt = new HSMListOptions();
+               opt.setVolumeName("OM0072L6");
+
+               // Fixture
+               IMetadataProvider sut = factory.getProvider(MetadataProviderType.HSM);
+
+               // Exercise
+               List<IMetadata> result = sut.list(opt);
+
+               // Verify
+               assertNotNull(result);
+               assertTrue(result.size() > 0);
+               System.out.println(result.get(0).getTitle());
+       }
+
+       @Test
+       public void testListVolumeNames() throws Exception {
+               // Fixture
+               IMetadataProvider sut = factory.getProvider(MetadataProviderType.HSM);
+
+               // Exercise
+               List<IMetadata> result = sut.list(null);
+
+               // Verify
+               assertNotNull(result);
+               assertTrue(result.size() > 0);
+               System.out.println(result.get(0).getTitle());
+       }
+}