From 9b47f44df78ed7ad35f7fbbad8e4d2f159f3ccdb Mon Sep 17 00:00:00 2001 From: =?utf8?q?V=C3=A1s=C3=A1ry=20D=C3=A1niel?= Date: Thu, 17 Oct 2019 11:32:21 +0000 Subject: [PATCH] git-tfs-id: [http://tfs.userrendszerhaz.hu:8080/tfs/DefaultCollection]$/MediaCube;C31577 --- .../tests/HSMMigrateListBuilderStepTest.java | 16 +++ .../META-INF/MANIFEST.MF | 4 +- .../steps/HSMMigrateListBuilderStep.java | 107 ++++++++++++++---- .../interfaces/IMetadataProvider.java | 2 - .../interfaces/MetadataProviderType.java | 2 +- .../META-INF/MANIFEST.MF | 6 +- .../metadata/MetadataProviderFactory.java | 3 + .../metadata/MyBatisMetadataProvider.java | 57 ++++++++++ .../mediacube/metadata/hsm/HSMContent.java | 89 +++++++++++++++ .../metadata/hsm/HSMListOptions.java | 25 ++++ .../metadata/hsm/HSMMetadataProvider.java | 58 ++++++++++ .../metadata/hsm/HSMSqlProvider.java | 35 ++++++ .../mediacube/metadata/hsm/HSMVolume.java | 26 +++++ .../metadata/hsm/IHSMMaterialMapper.java | 28 +++++ .../planair/PlanAirMetadataProvider.java | 7 -- .../mediabube/metadata/HSMMetadataTest.java | 77 +++++++++++++ 16 files changed, 507 insertions(+), 35 deletions(-) create mode 100644 server/hu.user.mediacube.executors.tests/src/hu/user/mediacube/executors/tests/HSMMigrateListBuilderStepTest.java create mode 100644 server/user.mediacube.metadata/src/user/mediacube/metadata/MyBatisMetadataProvider.java create mode 100644 server/user.mediacube.metadata/src/user/mediacube/metadata/hsm/HSMContent.java create mode 100644 server/user.mediacube.metadata/src/user/mediacube/metadata/hsm/HSMListOptions.java create mode 100644 server/user.mediacube.metadata/src/user/mediacube/metadata/hsm/HSMMetadataProvider.java create mode 100644 server/user.mediacube.metadata/src/user/mediacube/metadata/hsm/HSMSqlProvider.java create mode 100644 server/user.mediacube.metadata/src/user/mediacube/metadata/hsm/HSMVolume.java create mode 100644 server/user.mediacube.metadata/src/user/mediacube/metadata/hsm/IHSMMaterialMapper.java create mode 100644 server/user.mediacube.metadata/test/user/mediabube/metadata/HSMMetadataTest.java 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 index 00000000..f27008c3 --- /dev/null +++ b/server/hu.user.mediacube.executors.tests/src/hu/user/mediacube/executors/tests/HSMMigrateListBuilderStepTest.java @@ -0,0 +1,16 @@ +package hu.user.mediacube.executors.tests; + +import org.junit.Test; + +import user.jobengine.server.steps.HSMMigrateListBuilderStep; + +public class HSMMigrateListBuilderStepTest { + + @Test + public void test1() throws Exception { + HSMMigrateListBuilderStep sut = new HSMMigrateListBuilderStep(); + sut.execute("//10.11.1.89/OMARCHIVE", 0); + // System.out.println(Arrays.toString(sut)); + } + +} diff --git a/server/user.jobengine.executors/META-INF/MANIFEST.MF b/server/user.jobengine.executors/META-INF/MANIFEST.MF index 7da4ebb7..853dd70d 100644 --- a/server/user.jobengine.executors/META-INF/MANIFEST.MF +++ b/server/user.jobengine.executors/META-INF/MANIFEST.MF @@ -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 diff --git a/server/user.jobengine.executors/src/user/jobengine/server/steps/HSMMigrateListBuilderStep.java b/server/user.jobengine.executors/src/user/jobengine/server/steps/HSMMigrateListBuilderStep.java index d74026e8..cd0e370c 100644 --- a/server/user.jobengine.executors/src/user/jobengine/server/steps/HSMMigrateListBuilderStep.java +++ b/server/user.jobengine.executors/src/user/jobengine/server/steps/HSMMigrateListBuilderStep.java @@ -1,58 +1,121 @@ package user.jobengine.server.steps; import java.io.File; -import java.io.IOException; -import java.nio.file.DirectoryStream; -import java.nio.file.Files; import java.nio.file.Path; -import java.nio.file.Paths; +import java.util.LinkedHashMap; import java.util.LinkedList; import java.util.List; +import java.util.Map; +import org.apache.commons.io.FileUtils; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; import org.apache.logging.log4j.Marker; -import user.jobengine.server.IJobEngine; -import user.jobengine.server.IJobRuntime; +import user.mediacube.metadata.MetadataProviderFactory; +import user.mediacube.metadata.hsm.HSMContent; +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 HSMMigrateListBuilderStep extends JobStep { private static final Logger logger = LogManager.getLogger(); private static final String MXFEXT = ".mxf"; private static final String MOVEXT = ".mov"; - private Marker marker = jobRuntime.getMarker(); + private Marker marker = null; + private IMetadataProvider metadataProvider; + private List archiveList; + private Map tapeContents = new LinkedHashMap<>(); @StepEntry - public Object[] execute(String sourcePath, int limit, IJobEngine jobEngine, IJobRuntime jobRuntime) { - marker = jobRuntime.getMarker(); - List archiveList = new LinkedList(); - DirectoryStream directoryStream = null; + public Object[] execute(String sourcePath, int limit) { + if (jobRuntime != null) + marker = jobRuntime.getMarker(); + IMetadataProviderFactory factory = new MetadataProviderFactory(); + metadataProvider = factory.getProvider(MetadataProviderType.HSM); + archiveList = new LinkedList(); + try { - DirectoryStream stream = Files.newDirectoryStream(Paths.get(sourcePath)); - for (Path p : stream) { - processPathItem(p, archiveList); + // Files.walkFileTree(Paths.get(sourcePath), new SimpleFileVisitor() { + // @Override + // public FileVisitResult visitFile(Path file, BasicFileAttributes attrs) throws IOException { + // processPathItem(file); + // return super.visitFile(file, attrs); + // } + // }); + + List volumes = metadataProvider.list(null); + for (IMetadata volume : volumes) { + System.out.println("---Volume " + volume.getTitle()); + long size = 0; + List contents = getContents(volume.getTitle()); + for (IMetadata content : contents) { + HSMContent c = (HSMContent) content; + if (!tapeContents.containsKey(c.getFileName())) { + tapeContents.put(c.getFileName(), c); + System.out.println("Content " + c.getFileName() + " " + c.getSegment() + " " + c.getStart()); + size += c.getFileSize(); + } + + } + + System.out.println(">>> " + size); } } catch (Exception e) { logger.catching(e); logger.error(marker, "Az '{}' mappa elérése sikertelen. A rendszer hibaüzenete: {}", e.getMessage()); } finally { - if (directoryStream != null) { - try { - directoryStream.close(); - } catch (IOException e) { - } - } } + + System.out.println("Summary " + tapeContents.size()); + return new Object[] { archiveList }; } - private boolean processPathItem(Path mediaFilePath, final List archiveList) { + private String getCompatibleFileName(Path mediaFilePath) { + String fileName = mediaFilePath.toString().replace("\\", "/").replace("//", ""); + fileName = fileName.substring(fileName.indexOf("/")); + System.out.println("Visited " + fileName); + return fileName; + } + + private List getContents(String volumeName) { + List contents = null; + HSMListOptions listOptions = new HSMListOptions(); + listOptions.setVolumeName(volumeName); + try { + contents = metadataProvider.list(listOptions); + } catch (Exception e) { + System.out.println(e.getMessage()); + } + return contents; + } + + private boolean processPathItem(Path mediaFilePath) { File mediaFile = mediaFilePath.toFile(); // if (mediaFile.length() > 0) // return false; - if (mediaFile.isDirectory() || !mediaFile.getName().toLowerCase().endsWith(MXFEXT.toLowerCase())) { + if (!mediaFile.getName().toLowerCase().endsWith(MOVEXT.toLowerCase()) && !mediaFile.getName().toLowerCase().endsWith(MXFEXT.toLowerCase())) + return false; + + String fileName = getCompatibleFileName(mediaFilePath); + + HSMContent hsmContent = null; + HSMListOptions listOptions = new HSMListOptions(); + listOptions.setFileName(fileName); + try { + List contents = metadataProvider.list(listOptions); + if (contents.size() != 1) + throw new Exception("Contents size is " + contents.size()); + hsmContent = (HSMContent) contents.get(0); + + String volumeName = hsmContent.getVolumeName(); + } catch (Exception e) { + System.out.println(e.getMessage()); return false; } return true; diff --git a/server/user.jobengine.osgi.commons/src/user/mediacube/metadata/interfaces/IMetadataProvider.java b/server/user.jobengine.osgi.commons/src/user/mediacube/metadata/interfaces/IMetadataProvider.java index cd20c8ce..00dee5e9 100644 --- a/server/user.jobengine.osgi.commons/src/user/mediacube/metadata/interfaces/IMetadataProvider.java +++ b/server/user.jobengine.osgi.commons/src/user/mediacube/metadata/interfaces/IMetadataProvider.java @@ -4,7 +4,5 @@ import java.util.List; public interface IMetadataProvider { - List getColumnNames(MetadataType type); - List list(IMetadataListOptions options) throws Exception; } diff --git a/server/user.jobengine.osgi.commons/src/user/mediacube/metadata/interfaces/MetadataProviderType.java b/server/user.jobengine.osgi.commons/src/user/mediacube/metadata/interfaces/MetadataProviderType.java index 31e0357c..50bc07f5 100644 --- a/server/user.jobengine.osgi.commons/src/user/mediacube/metadata/interfaces/MetadataProviderType.java +++ b/server/user.jobengine.osgi.commons/src/user/mediacube/metadata/interfaces/MetadataProviderType.java @@ -1,5 +1,5 @@ package user.mediacube.metadata.interfaces; public enum MetadataProviderType { - PLANAIR + PLANAIR, HSM } diff --git a/server/user.mediacube.metadata/META-INF/MANIFEST.MF b/server/user.mediacube.metadata/META-INF/MANIFEST.MF index 09f4c0c9..95a15f02 100644 --- a/server/user.mediacube.metadata/META-INF/MANIFEST.MF +++ b/server/user.mediacube.metadata/META-INF/MANIFEST.MF @@ -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: . diff --git a/server/user.mediacube.metadata/src/user/mediacube/metadata/MetadataProviderFactory.java b/server/user.mediacube.metadata/src/user/mediacube/metadata/MetadataProviderFactory.java index 08cf880d..b71f7a12 100644 --- a/server/user.mediacube.metadata/src/user/mediacube/metadata/MetadataProviderFactory.java +++ b/server/user.mediacube.metadata/src/user/mediacube/metadata/MetadataProviderFactory.java @@ -3,6 +3,7 @@ package user.mediacube.metadata; import java.util.HashMap; import java.util.Map; +import user.mediacube.metadata.hsm.HSMMetadataProvider; import user.mediacube.metadata.interfaces.IMetadataProvider; import user.mediacube.metadata.interfaces.IMetadataProviderFactory; import user.mediacube.metadata.interfaces.MetadataProviderType; @@ -15,10 +16,12 @@ public class MetadataProviderFactory implements IMetadataProviderFactory { public MetadataProviderFactory() { try { providers.put(MetadataProviderType.PLANAIR, new PlanAirMetadataProvider()); + providers.put(MetadataProviderType.HSM, new HSMMetadataProvider()); } catch (Exception e) { } } + @Override public IMetadataProvider getProvider(MetadataProviderType type) { return providers.get(type); } 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 index 00000000..c8885a23 --- /dev/null +++ b/server/user.mediacube.metadata/src/user/mediacube/metadata/MyBatisMetadataProvider.java @@ -0,0 +1,57 @@ +package user.mediacube.metadata; + +import java.util.List; + +import javax.sql.DataSource; + +import org.apache.ibatis.mapping.Environment; +import org.apache.ibatis.session.Configuration; +import org.apache.ibatis.session.SqlSession; +import org.apache.ibatis.session.SqlSessionFactory; +import org.apache.ibatis.session.SqlSessionFactoryBuilder; +import org.apache.ibatis.transaction.jdbc.JdbcTransactionFactory; + +import user.mediacube.metadata.interfaces.IMetadata; +import user.mediacube.metadata.interfaces.IMetadataListOptions; +import user.mediacube.metadata.interfaces.IMetadataProvider; + +public abstract class MyBatisMetadataProvider implements IMetadataProvider { + private final SqlSessionFactory sqlSessionFactory; + + public MyBatisMetadataProvider() throws Exception { + try { + Class.forName(getDriverClassName()); + sqlSessionFactory = buildqlSessionFactory(); + } catch (Exception e) { + throw e; + } + } + + private SqlSessionFactory buildqlSessionFactory() { + Environment environment = new Environment("Development", new JdbcTransactionFactory(), createDataSource()); + Configuration configuration = new Configuration(environment); + registerMappers(configuration); + SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder(); + return builder.build(configuration); + } + + abstract protected DataSource createDataSource(); + + abstract protected String getDriverClassName(); + + @Override + public List list(IMetadataListOptions options) throws Exception { + List result = null; + try (SqlSession session = sqlSessionFactory.openSession()) { + result = queryList(session, options); + } catch (Exception e) { + throw e; + } + return result; + } + + abstract protected List queryList(SqlSession session, IMetadataListOptions options); + + abstract protected void registerMappers(Configuration configuration); + +} 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 index 00000000..080adaf5 --- /dev/null +++ b/server/user.mediacube.metadata/src/user/mediacube/metadata/hsm/HSMContent.java @@ -0,0 +1,89 @@ +package user.mediacube.metadata.hsm; + +import user.mediacube.metadata.interfaces.IMetadata; + +public class HSMContent implements IMetadata { + private String fileName; + private long fileSize; + private String segment; + private String filespaceName; + private String volumeName; + private String nodeName; + private long objectId; + private int start; + + public String getFileName() { + return fileName; + } + + public long getFileSize() { + return fileSize; + } + + public String getFilespaceName() { + return filespaceName; + } + + @Override + public String getId() { + return String.valueOf(objectId); + } + + public String getNodeName() { + return nodeName; + } + + public long getObjectId() { + return objectId; + } + + public String getSegment() { + return segment; + } + + public int getStart() { + return start; + } + + @Override + public String getTitle() { + return fileName; + } + + public String getVolumeName() { + return volumeName; + } + + public void setFileName(byte[] fileName) { + this.fileName = new String(fileName); + } + + public void setFileSize(long fileSize) { + this.fileSize = fileSize; + } + + public void setFilespaceName(byte[] filespaceName) { + this.filespaceName = new String(filespaceName); + } + + public void setNodeName(String nodeName) { + this.nodeName = nodeName; + } + + public void setObjectId(long objectId) { + this.objectId = objectId; + } + + public void setSegment(String segment) { + this.segment = segment == null ? null : segment.trim(); + } + + public void setStart(int start) { + this.start = start; + } + + public void setVolumeName(String volumeName) { + this.volumeName = volumeName; + } + +} 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 index 00000000..475d6bd2 --- /dev/null +++ b/server/user.mediacube.metadata/src/user/mediacube/metadata/hsm/HSMListOptions.java @@ -0,0 +1,25 @@ +package user.mediacube.metadata.hsm; + +import user.mediacube.metadata.interfaces.IMetadataListOptions; + +public class HSMListOptions implements IMetadataListOptions { + private String volumeName; + private String fileName; + + public String getFileName() { + return fileName; + } + + public String getVolumeName() { + return volumeName; + } + + public void setFileName(String fileName) { + this.fileName = fileName; + } + + public void setVolumeName(String volumeName) { + this.volumeName = volumeName; + } + +} 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 index 00000000..ddd9513f --- /dev/null +++ b/server/user.mediacube.metadata/src/user/mediacube/metadata/hsm/HSMMetadataProvider.java @@ -0,0 +1,58 @@ +package user.mediacube.metadata.hsm; + +import java.util.List; + +import javax.sql.DataSource; + +import org.apache.ibatis.datasource.pooled.PooledDataSource; +import org.apache.ibatis.session.Configuration; +import org.apache.ibatis.session.SqlSession; + +import user.mediacube.metadata.MyBatisMetadataProvider; +import user.mediacube.metadata.interfaces.IMetadata; +import user.mediacube.metadata.interfaces.IMetadataListOptions; + +public class HSMMetadataProvider extends MyBatisMetadataProvider { + private static final String JDBC_DRIVER = "com.ibm.db2.jcc.DB2Driver"; + private static final String JDBC_URL = System.getProperty("jobengine.hsm.db.url", "jdbc:db2://10.11.1.89:51500/tsmdb1"); + private static final String JDBC_USER = System.getProperty("jobengine.hsm.db.user", "tsminst1"); + private static final String JDBC_PWD = System.getProperty("jobengine.hsm.db.password", "tsminst1"); + + public HSMMetadataProvider() throws Exception { + super(); + } + + @Override + protected DataSource createDataSource() { + return new PooledDataSource(JDBC_DRIVER, JDBC_URL, JDBC_USER, JDBC_PWD); + } + + @Override + protected String getDriverClassName() { + return JDBC_DRIVER; + } + + @SuppressWarnings("unchecked") + @Override + protected List queryList(SqlSession session, IMetadataListOptions options) { + IHSMMaterialMapper mapper = session.getMapper(IHSMMaterialMapper.class); + List result = null; + + if (options == null) { + result = (List) (List) mapper.getVolumeNames(); + } else { + HSMListOptions listOptions = (HSMListOptions) options; + if (listOptions.getVolumeName() != null) + result = (List) (List) mapper.getByVolumeName(listOptions.getVolumeName()); + else if (listOptions.getFileName() != null) + result = (List) (List) mapper.getByFileName(listOptions.getFileName()); + } + return result; + } + + @Override + protected void registerMappers(Configuration configuration) { + configuration.addMapper(IHSMMaterialMapper.class); + } + +} 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 index 00000000..ddde391b --- /dev/null +++ b/server/user.mediacube.metadata/src/user/mediacube/metadata/hsm/HSMSqlProvider.java @@ -0,0 +1,35 @@ +package user.mediacube.metadata.hsm; + +import org.apache.ibatis.jdbc.SQL; + +public class HSMSqlProvider { + + public String selectByFileName(String fileName) { + SQL sql = new SQL(); + 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"); + sql.FROM("TSMDB1.CONTENTS c"); + sql.LEFT_OUTER_JOIN("TSMDB1.AF_SEGMENTS af ON (af.BFID = c.BITFILE_ID)"); + sql.WHERE("c.FILE_NAME='${fileName}'"); + sql.ORDER_BY("af.START DESC"); + return sql.toString(); + } + + public String selectByVolumeName(String volumeName) { + SQL sql = new SQL(); + sql.SELECT("c.FILE_NAME", "c.FILE_SIZE", "c.SEGMENT", "c.FILESPACE_NAME", "c.VOLUME_NAME", "c.NODE_NAME", "c.OBJECT_ID", "af.START"); + sql.FROM("TSMDB1.CONTENTS c"); + sql.LEFT_OUTER_JOIN("TSMDB1.AF_SEGMENTS af ON (af.BFID = c.BITFILE_ID)"); + sql.WHERE("c.VOLUME_NAME='${volumeName}'"); + sql.ORDER_BY("c.SEGMENT"); + return sql.toString(); + } + + public String selectVolumeNames() { + SQL sql = new SQL(); + sql.SELECT_DISTINCT("VOLUME_NAME"); + sql.FROM("TSMDB1.CONTENTS"); + sql.WHERE("SUBSTR(FILE_NAME, 1, 10) = '/OMARCHIVE'"); + sql.ORDER_BY("VOLUME_NAME"); + return sql.toString(); + } +} 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 index 00000000..c43ca11f --- /dev/null +++ b/server/user.mediacube.metadata/src/user/mediacube/metadata/hsm/HSMVolume.java @@ -0,0 +1,26 @@ +package user.mediacube.metadata.hsm; + +import user.mediacube.metadata.interfaces.IMetadata; + +public class HSMVolume implements IMetadata { + private String volumeName; + + @Override + public String getId() { + return null; + } + + @Override + public String getTitle() { + return volumeName; + } + + public String getVolumeName() { + return volumeName; + } + + public void setVolumeName(String volumeName) { + this.volumeName = volumeName; + } + +} 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 index 00000000..6e3c67df --- /dev/null +++ b/server/user.mediacube.metadata/src/user/mediacube/metadata/hsm/IHSMMaterialMapper.java @@ -0,0 +1,28 @@ +package user.mediacube.metadata.hsm; + +import java.util.List; + +import org.apache.ibatis.annotations.Result; +import org.apache.ibatis.annotations.Results; +import org.apache.ibatis.annotations.SelectProvider; + +public interface IHSMMaterialMapper { + + @SelectProvider(type = HSMSqlProvider.class, method = "selectByFileName") + @Results(value = { @Result(property = "fileName", column = "FILE_NAME"), @Result(property = "fileSize", column = "FILE_SIZE"), + @Result(property = "segment", column = "SEGMENT"), @Result(property = "filespaceName", column = "FILESPACE_NAME"), + @Result(property = "volumeName", column = "VOLUME_NAME"), @Result(property = "nodeName", column = "NODE_NAME"), + @Result(property = "objectId", column = "OBJECT_ID"), @Result(property = "start", column = "START"), }) + public List getByFileName(String fileName); + + @SelectProvider(type = HSMSqlProvider.class, method = "selectByVolumeName") + @Results(value = { @Result(property = "fileName", column = "FILE_NAME"), @Result(property = "fileSize", column = "FILE_SIZE"), + @Result(property = "segment", column = "SEGMENT"), @Result(property = "filespaceName", column = "FILESPACE_NAME"), + @Result(property = "volumeName", column = "VOLUME_NAME"), @Result(property = "nodeName", column = "NODE_NAME"), + @Result(property = "objectId", column = "OBJECT_ID"), @Result(property = "start", column = "START"), }) + public List getByVolumeName(String volumeName); + + @SelectProvider(type = HSMSqlProvider.class, method = "selectVolumeNames") + @Results(value = { @Result(property = "volumeName", column = "VOLUME_NAME") }) + public List getVolumeNames(); +} diff --git a/server/user.mediacube.metadata/src/user/mediacube/metadata/planair/PlanAirMetadataProvider.java b/server/user.mediacube.metadata/src/user/mediacube/metadata/planair/PlanAirMetadataProvider.java index 3804a852..e24a8e27 100644 --- a/server/user.mediacube.metadata/src/user/mediacube/metadata/planair/PlanAirMetadataProvider.java +++ b/server/user.mediacube.metadata/src/user/mediacube/metadata/planair/PlanAirMetadataProvider.java @@ -1,6 +1,5 @@ package user.mediacube.metadata.planair; -import java.util.Arrays; import java.util.List; import javax.sql.DataSource; @@ -18,7 +17,6 @@ import com.microsoft.sqlserver.jdbc.SQLServerDriver; import user.mediacube.metadata.interfaces.IMetadata; import user.mediacube.metadata.interfaces.IMetadataListOptions; import user.mediacube.metadata.interfaces.IMetadataProvider; -import user.mediacube.metadata.interfaces.MetadataType; import user.mediacube.metadata.interfaces.PlanAirMetadataListOptions; public class PlanAirMetadataProvider implements IMetadataProvider { @@ -51,11 +49,6 @@ public class PlanAirMetadataProvider implements IMetadataProvider { return builder.build(configuration); } - @Override - public List getColumnNames(MetadataType type) { - 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"); - } - @Override public List list(IMetadataListOptions options) throws Exception { List result = null; 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 index 00000000..f607d6cf --- /dev/null +++ b/server/user.mediacube.metadata/test/user/mediabube/metadata/HSMMetadataTest.java @@ -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 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 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 result = sut.list(null); + + // Verify + assertNotNull(result); + assertTrue(result.size() > 0); + System.out.println(result.get(0).getTitle()); + } +} -- 2.54.0