From: vasary.daniel Date: Tue, 10 Aug 2021 08:54:44 +0000 (+0000) Subject: git-tfs-id: [http://tfs.userrendszerhaz.hu:8080/tfs/DefaultCollection]$/MediaCube... X-Git-Url: http://git.useribm.hu/?a=commitdiff_plain;h=797fbfaa79cd0035a728790dc46840cdd62bee56;p=mediacube.git git-tfs-id: [tfs.userrendszerhaz.hu:8080/tfs/DefaultCollection]$/MediaCube;C32299 --- diff --git a/server/user.jobengine.executors/src/user/jobengine/server/steps/SafeDeleteRecursive.java b/server/user.jobengine.executors/src/user/jobengine/server/steps/SafeDeleteRecursive.java index 491e5a38..224fdcca 100644 --- a/server/user.jobengine.executors/src/user/jobengine/server/steps/SafeDeleteRecursive.java +++ b/server/user.jobengine.executors/src/user/jobengine/server/steps/SafeDeleteRecursive.java @@ -34,6 +34,7 @@ import user.jobengine.db.MediaFileDAO; import user.jobengine.db.Store; import user.jobengine.server.steps.shared.EscortFiles; import user.mediacube.metadata.interfaces.IMetadata; +import user.mediacube.metadata.interfaces.IMetadataListOptions; import user.mediacube.metadata.interfaces.IMetadataProvider; import user.mediacube.metadata.interfaces.IMetadataProviderFactory; import user.mediacube.metadata.interfaces.MetadataProviderType; @@ -209,7 +210,7 @@ public class SafeDeleteRecursive extends JobStep implements FileVisitor { long size = mediaFSFile.length(); Date lastModifiedDate = new Date(attr.lastModifiedTime().toMillis()); - Date lastAccesDate = new Date(attr.lastAccessTime().toMillis()); + //Date lastAccesDate = new Date(attr.lastAccessTime().toMillis()); Date createDate = new Date(attr.creationTime().toMillis()); boolean catchedExists = EscortFiles.isMediaCatched(mediaPath); boolean noMDExists = nomdFile.toFile().exists(); @@ -217,19 +218,26 @@ public class SafeDeleteRecursive extends JobStep implements FileVisitor { //boolean mediaInfoAvailable = canReadMediaInfo(mediaPath); boolean mcArchived = mediaFile != null; boolean metadataEquals = false; + boolean tsmArchived = false; Date mcArchivedDate = null; + long tsmSize = 0; + Date tsmBackupDate = null; + if (mcArchived) { + //metadata Media media = getManager().getMedia(mediaFile.getMediaId()); mcArchivedDate = media.getCreated(); Item item = getManager().getItem(media.getItemId()); metadataEquals = checkArchiveItem(archiveItem, item, media); - } - RemoteFile tsmFile = getTSMFile(mediaFile.getRelativePath()); - boolean tsmArchived = tsmFile != null; - long tsmSize = 0; - if (tsmArchived) { - tsmSize = tsmFile.getSize(); + //tsm + String tsmFileName = mediaFile.getRelativePath(); + RemoteFile tsmFile = getTSMFile(tsmFileName); + tsmArchived = tsmFile != null; + if (tsmArchived) { + tsmSize = tsmFile.getSize(); + tsmBackupDate = getTSMBackupDate(tsmFileName); + } } boolean canDelete = !noMDExists && catchedExists && killdateExists && mcArchived && tsmArchived; @@ -237,11 +245,38 @@ public class SafeDeleteRecursive extends JobStep implements FileVisitor { logger.info(getSessionMarker(), "{};{};{};{};{};{};{};{};{};{};{};{};{};", df.format(now), YN(canDelete), fileName, mediaPath.getParent(), size, df.format(createDate), df.format(lastModifiedDate), YN(catchedExists), YN(killdateExists), YN(mcArchived), df.format(mcArchivedDate), YN(tsmArchived), - "Archiválva (TSM)", tsmSize, YN(metadataEquals)); + df.format(tsmBackupDate), tsmSize, YN(metadataEquals)); return true; } + private Date getTSMBackupDate(String tsmFileName) throws Exception { + Date result = null; + IMetadataProviderFactory factory = getService(IMetadataProviderFactory.class); + if (factory == null) + return null; + IMetadataProvider provider = factory.getProvider(MetadataProviderType.TSM); + if (provider == null) + return null; + + IMetadataListOptions opt = provider.createOptions(new BasicDBObject("fileName", tsmFileName)); + + List tsmContents = provider.list(opt); + if (tsmContents != null && tsmContents.size() > 0) { + + for (IMetadata md : tsmContents) { + Date backupDate = md.asJSON().getDate("backupDate"); + if (result == null) + result = backupDate; + else { + if (backupDate.after(result)) + result = backupDate; + } + } + } + return result; + } + private char YN(boolean value) { return value ? 'Y' : 'N'; } 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 3c6b1acd..6a36f18b 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 @@ -9,4 +9,6 @@ public interface IMetadataProvider { List list(BasicDBObject options) throws Exception; List list(IMetadataListOptions options) throws Exception; + + IMetadataListOptions createOptions(BasicDBObject options); } diff --git a/server/user.mediacube.metadata/META-INF/MANIFEST.MF b/server/user.mediacube.metadata/META-INF/MANIFEST.MF index c1c8de3b..57f1dddb 100644 --- a/server/user.mediacube.metadata/META-INF/MANIFEST.MF +++ b/server/user.mediacube.metadata/META-INF/MANIFEST.MF @@ -5,7 +5,9 @@ Bundle-SymbolicName: user.mediacube.metadata;singleton:=true Bundle-Version: 1.0.0 Bundle-RequiredExecutionEnvironment: JavaSE-1.8 Export-Package: user.mediacube.metadata, - user.mediacube.metadata.hsm + user.mediacube.metadata.hsm, + user.mediacube.metadata.planair, + user.mediacube.metadata.tsm Service-Component: OSGI-INF/component.xml DynamicImport-Package: * Require-Bundle: org.mybatis.mybatis;bundle-version="3.5.2", @@ -16,6 +18,8 @@ Bundle-ActivationPolicy: lazy Import-Package: com.ibm.nosql.bson, com.ibm.nosql.json.api, org.apache.logging.log4j;version="2.8.2", + org.apache.logging.log4j.core;version="2.8.2", + org.hamcrest, org.junit, user.mediacube.metadata.interfaces Bundle-ClassPath: . diff --git a/server/user.mediacube.metadata/src/user/mediacube/metadata/MyBatisMetadataProvider.java b/server/user.mediacube.metadata/src/user/mediacube/metadata/MyBatisMetadataProvider.java index dbb90e54..0b422af3 100644 --- a/server/user.mediacube.metadata/src/user/mediacube/metadata/MyBatisMetadataProvider.java +++ b/server/user.mediacube.metadata/src/user/mediacube/metadata/MyBatisMetadataProvider.java @@ -47,7 +47,8 @@ public abstract class MyBatisMetadataProvider implements IMetadataProvider { abstract protected DataSource createDataSource(); - abstract protected IMetadataListOptions createOptions(BasicDBObject options); + @Override + abstract public IMetadataListOptions createOptions(BasicDBObject options); abstract protected String getDriverClassName(); 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 index a4ca431c..bc8a85b0 100644 --- a/server/user.mediacube.metadata/src/user/mediacube/metadata/hsm/HSMMetadataProvider.java +++ b/server/user.mediacube.metadata/src/user/mediacube/metadata/hsm/HSMMetadataProvider.java @@ -35,7 +35,7 @@ public class HSMMetadataProvider extends MyBatisMetadataProvider { } @Override - protected IMetadataListOptions createOptions(BasicDBObject options) { + public IMetadataListOptions createOptions(BasicDBObject options) { HSMListOptions result = new HSMListOptions(); if (options.containsKey("volumeName")) result.setVolumeName(options.getString("volumeName")); 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 ffd1a75b..083cd768 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 @@ -32,7 +32,7 @@ public class PlanAirMetadataProvider extends MyBatisMetadataProvider { } @Override - protected IMetadataListOptions createOptions(BasicDBObject options) { + public IMetadataListOptions createOptions(BasicDBObject options) { PlanAirMetadataListOptions result = new PlanAirMetadataListOptions(); // if (options.containsKey("volumeName")) // result.setVolumeName(options.getString("volumeName")); 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 index 50d8cf48..7d8e1f81 100644 --- a/server/user.mediacube.metadata/src/user/mediacube/metadata/tsm/ITSMMaterialMapper.java +++ b/server/user.mediacube.metadata/src/user/mediacube/metadata/tsm/ITSMMaterialMapper.java @@ -6,12 +6,10 @@ import org.apache.ibatis.annotations.Result; import org.apache.ibatis.annotations.Results; import org.apache.ibatis.annotations.SelectProvider; -import user.mediacube.metadata.hsm.HSMSqlProvider; - public interface ITSMMaterialMapper { - @SelectProvider(type = HSMSqlProvider.class, method = "selectContents") - @Results(value = { @Result(property = "fileName", column = "FILE_NAME"), + @SelectProvider(type = TSMSqlProvider.class, method = "selectContents") + @Results(value = { @Result(property = "fileName", column = "LL_NAME"), @Result(property = "backupDate", column = "INSDATE") }) public List getContents(String fileName); } 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 index 11fbf3e0..e1d08c8f 100644 --- a/server/user.mediacube.metadata/src/user/mediacube/metadata/tsm/TSMContent.java +++ b/server/user.mediacube.metadata/src/user/mediacube/metadata/tsm/TSMContent.java @@ -27,8 +27,8 @@ public class TSMContent implements IMetadata { return fileName; } - public void setFileName(String fileName) { - this.fileName = fileName; + public void setFileName(byte[] fileName) { + this.fileName = new String(fileName); } @Override diff --git a/server/user.mediacube.metadata/src/user/mediacube/metadata/tsm/TSMMetadataProvider.java b/server/user.mediacube.metadata/src/user/mediacube/metadata/tsm/TSMMetadataProvider.java index fe71d162..2bba0a16 100644 --- a/server/user.mediacube.metadata/src/user/mediacube/metadata/tsm/TSMMetadataProvider.java +++ b/server/user.mediacube.metadata/src/user/mediacube/metadata/tsm/TSMMetadataProvider.java @@ -12,7 +12,6 @@ import com.ibm.nosql.json.api.BasicDBObject; import user.mediacube.metadata.MetadataProviderFactory; import user.mediacube.metadata.MyBatisMetadataProvider; -import user.mediacube.metadata.hsm.IHSMMaterialMapper; import user.mediacube.metadata.interfaces.IMetadata; import user.mediacube.metadata.interfaces.IMetadataListOptions; @@ -36,7 +35,7 @@ public class TSMMetadataProvider extends MyBatisMetadataProvider { } @Override - protected IMetadataListOptions createOptions(BasicDBObject options) { + public IMetadataListOptions createOptions(BasicDBObject options) { TSMListOptions result = new TSMListOptions(); if (options.containsKey("fileName")) result.setFileName(options.getString("fileName")); @@ -62,7 +61,7 @@ public class TSMMetadataProvider extends MyBatisMetadataProvider { @Override protected void registerMappers(Configuration configuration) { - configuration.addMapper(IHSMMaterialMapper.class); + configuration.addMapper(ITSMMaterialMapper.class); } } 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 index c6065fd6..c25909bc 100644 --- a/server/user.mediacube.metadata/src/user/mediacube/metadata/tsm/TSMSqlProvider.java +++ b/server/user.mediacube.metadata/src/user/mediacube/metadata/tsm/TSMSqlProvider.java @@ -8,7 +8,7 @@ public class TSMSqlProvider { SQL sql = new SQL(); sql.SELECT("LL_NAME", "INSDATE"); sql.FROM("TSMDB1.BACKUP_OBJECTS"); - sql.WHERE("LL_NAME = ${fileName}"); + sql.WHERE("LL_NAME = '${fileName}'"); return sql.toString(); } } diff --git a/server/user.mediacube.metadata/test/user/mediabube/metadata/HSMMetadataTest.java b/server/user.mediacube.metadata/test/user/mediacube/metadata/HSMMetadataTest.java similarity index 98% rename from server/user.mediacube.metadata/test/user/mediabube/metadata/HSMMetadataTest.java rename to server/user.mediacube.metadata/test/user/mediacube/metadata/HSMMetadataTest.java index 7821c11e..24f0d7ad 100644 --- a/server/user.mediacube.metadata/test/user/mediabube/metadata/HSMMetadataTest.java +++ b/server/user.mediacube.metadata/test/user/mediacube/metadata/HSMMetadataTest.java @@ -1,4 +1,4 @@ -package user.mediabube.metadata; +package user.mediacube.metadata; import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertTrue; diff --git a/server/user.mediacube.metadata/test/user/mediabube/metadata/PlanAirMetadataTest.java b/server/user.mediacube.metadata/test/user/mediacube/metadata/PlanAirMetadataTest.java similarity index 99% rename from server/user.mediacube.metadata/test/user/mediabube/metadata/PlanAirMetadataTest.java rename to server/user.mediacube.metadata/test/user/mediacube/metadata/PlanAirMetadataTest.java index 82711f81..fe9c06d4 100644 --- a/server/user.mediacube.metadata/test/user/mediabube/metadata/PlanAirMetadataTest.java +++ b/server/user.mediacube.metadata/test/user/mediacube/metadata/PlanAirMetadataTest.java @@ -1,4 +1,4 @@ -package user.mediabube.metadata; +package user.mediacube.metadata; import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertTrue; diff --git a/server/user.mediacube.metadata/test/user/mediabube/metadata/TSMMetadataTest.java b/server/user.mediacube.metadata/test/user/mediacube/metadata/TSMMetadataTest.java similarity index 57% rename from server/user.mediacube.metadata/test/user/mediabube/metadata/TSMMetadataTest.java rename to server/user.mediacube.metadata/test/user/mediacube/metadata/TSMMetadataTest.java index 12a12fa0..c86e316f 100644 --- a/server/user.mediacube.metadata/test/user/mediabube/metadata/TSMMetadataTest.java +++ b/server/user.mediacube.metadata/test/user/mediacube/metadata/TSMMetadataTest.java @@ -1,21 +1,29 @@ -package user.mediabube.metadata; +package user.mediacube.metadata; import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertTrue; import java.util.List; +import org.junit.BeforeClass; import org.junit.Test; -import user.mediacube.metadata.MetadataProviderFactory; +import com.ibm.nosql.json.api.BasicDBObject; + +import user.commons.configuration.SystemConfiguration; import user.mediacube.metadata.interfaces.IMetadata; +import user.mediacube.metadata.interfaces.IMetadataListOptions; 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(); + private static MetadataProviderFactory factory; + + @BeforeClass + static public void setUpConnection() throws Exception { + factory = new MetadataProviderFactory(); + factory.bindSystemConfiguration(SystemConfiguration.getInstance()); + } @Test public void testFactoryConnection() throws Exception { @@ -29,11 +37,10 @@ public class TSMMetadataTest { @Test public void testListByFileName() throws Exception { - TSMListOptions opt = new TSMListOptions(); - opt.setFileName(""); // Fixture IMetadataProvider sut = factory.getProvider(MetadataProviderType.TSM); + IMetadataListOptions opt = sut.createOptions(new BasicDBObject("fileName", "pQZpWofl-TEST-210809-B.mxf")); // Exercise List result = sut.list(opt); @@ -42,5 +49,6 @@ public class TSMMetadataTest { assertNotNull(result); assertTrue(result.size() > 0); System.out.println(result.get(0).getTitle()); + System.out.println(result.get(0).asJSON().getDate("backupDate")); } }