git-tfs-id: [http://tfs.userrendszerhaz.hu:8080/tfs/DefaultCollection]$/MediaCube...
authorVásáry Dániel <daniel.vasary@userrendszerhaz.hu>
Fri, 17 Jul 2020 09:11:25 +0000 (09:11 +0000)
committerVásáry Dániel <daniel.vasary@userrendszerhaz.hu>
Fri, 17 Jul 2020 09:11:25 +0000 (09:11 +0000)
server/-modules/pom.xml
server/-product/mediacube.product
server/user.jobengine.executors/META-INF/MANIFEST.MF
server/user.jobengine.executors/src/user/jobengine/server/steps/PeableBeachMissingMaterialCheckerStep.java

index ebf9f9bb9d685786b67be5eb96c2b013ab5ad512..15af2c72950b2d58c747cdba1f3ef48d12e1216a 100644 (file)
@@ -14,6 +14,7 @@
                <module>../user.jobengine.osgi.server</module>\r
                <module>../user.jobengine.osgi.services</module>\r
                <module>../user.commons.log4j2</module>\r
+               <module>../user.peablebeach.api</module>\r
                <module>../user.tsm.client</module>\r
                <module>../-product</module>\r
        </modules>\r
index 6abffb7ba938e6ce796db2016244cf628707756c..992a0bf56c7a8f700310c5ce614062656f9420f7 100644 (file)
       <plugin id="org.eclipse.osgi.services" version="3.2.100.v20100503"/>\r
       <plugin id="org.hamcrest.core"/>\r
       <plugin id="org.jboss.resteasy.client"/>\r
-      <plugin id="org.jboss.resteasy.jackson2-provider"/>\r
       <plugin id="org.jboss.resteasy.jaxb-provider"/>\r
       <plugin id="org.jboss.resteasy.jaxrs"/>\r
       <plugin id="org.jboss.resteasy.jaxrs-api"/>\r
index f2c88b3d15c24f64e28afdaf155814ddaa468498..f3bff09b1db6e5c9fe93b6788293e62bed1a535a 100644 (file)
@@ -26,10 +26,22 @@ Require-Bundle: user.jobengine.osgi.commons;bundle-version="1.0.0",
 Bundle-ClassPath: .
 Bundle-RequiredExecutionEnvironment: JavaSE-1.8
 Import-Package: groovy.lang;version="3.0.3",
+ hu.user.peablebeach.api,
  javax.ws.rs.client,
  javax.ws.rs.core;version="2.0.1",
  org.apache.commons.io;version="2.2.0",
  org.apache.commons.net.ftp;version="3.6.0",
+ org.apache.http,
+ org.apache.http.auth,
+ org.apache.http.client,
+ org.apache.http.client.methods,
+ org.apache.http.client.utils,
+ org.apache.http.conn,
+ org.apache.http.entity,
+ org.apache.http.impl.client,
+ org.apache.http.message,
+ org.apache.http.params,
+ org.apache.http.protocol,
  org.apache.logging.log4j;version="2.8.2",
  org.apache.logging.log4j.message;version="2.8.2",
  org.joda.time;version="2.2.0",
index 3c53af0f1f68f92cb4ebe5dfe920c496481f1255..f66aa8a27bcd5c25cd238b96e0275933c98f0df1 100644 (file)
@@ -12,7 +12,6 @@ import org.apache.logging.log4j.Logger;
 import user.commons.DownloadableMedia;\r
 import user.commons.RemoteFile;\r
 import user.commons.StoreUri;\r
-import user.commons.peablebeach.PBMissingMaterialSrc;\r
 import user.commons.remotestore.RemoteStoreProtocol;\r
 import user.jobengine.db.Media;\r
 \r
@@ -26,26 +25,40 @@ public class PeableBeachMissingMaterialCheckerStep extends JobStep {
                StoreUri escortStoreUri = null;\r
                try {\r
                        escortStoreUri = getManager().getStoreUri(escortStoreName, RemoteStoreProtocol.LOCAL);\r
+                       StoreUri sourceStoreUri = getManager().getStoreUri("TSM", RemoteStoreProtocol.TSM);\r
                        StoreUri targetStoreUri = getManager().getStoreUri(targetStoreName, Enum.valueOf(RemoteStoreProtocol.class, targetProtocol));\r
 \r
-                       PBMissingMaterialSrc source = new PBMissingMaterialSrc();\r
-                       source.init(primaryEndPoint, primaryUserName, primaryPassword, secondaryEndPoint, secondaryUserName, secondaryPassword, rangeForwardHours);\r
+                       List<String> poolContent = new ArrayList<>();\r
 \r
-                       List<RemoteFile> remoteFiles = targetStoreUri.getRemoteFiles();\r
+                       PBQuery query = new PBQuery();\r
+                       query.init(primaryEndPoint, primaryUserName, primaryPassword, secondaryEndPoint, secondaryUserName, secondaryPassword, rangeForwardHours);\r
+                       LinkedHashSet<String> titles = query.getPossibelMissingMaterialNames(poolContent);\r
+                       logger.info(getMarker(), "API returned {} items", titles == null ? 0 : titles.size());\r
+\r
+                       if (titles != null && titles.size() > 0) {\r
+\r
+                               List<RemoteFile> remoteFiles = targetStoreUri.getRemoteFiles();\r
+                               if (remoteFiles != null)\r
+                                       remoteFiles.forEach(i -> {\r
+                                               String name = i.getName();\r
+                                               poolContent.add(name.substring(0, name.lastIndexOf(".")));\r
+                                       });\r
+\r
+                               logger.info(getMarker(), "Pool contains {} items", poolContent == null ? 0 : poolContent.size());\r
+\r
+                               if (!getJobRuntime().isWaitingCancel()) {\r
+                                       int count = titles.size();\r
+                                       int processed = 0;\r
+                                       for (String title : titles) {\r
+                                               processRecord(title, sourceStoreUri, targetStoreName, targetStoreUri, escortStoreUri);\r
+                                               processed++;\r
+                                               int progress = processed * 100 / count;\r
+                                               setProgress(progress);\r
+                                       }\r
+                               }\r
 \r
-                       List<String> poolContent = new ArrayList<>();\r
-                       remoteFiles.forEach(i -> {\r
-                               String fileName = i.getName();\r
-                               String title = fileName.substring(0, fileName.lastIndexOf("."));\r
-                               poolContent.add(title);\r
-                       });\r
-                       logger.info("Pool contains {} items", poolContent.size());\r
-                       LinkedHashSet<String> fileNames = source.getPossibelMissingMaterialNames(poolContent);\r
-                       logger.info("API returns {} items", fileNames.size());\r
-\r
-                       for (String fileName : fileNames) {\r
-                               processRecord(fileName, targetStoreName, targetStoreUri, escortStoreUri);\r
                        }\r
+\r
                } catch (Exception e) {\r
                        logger.error(getSessionMarker(), e.getMessage());\r
                        throw e;\r
@@ -57,30 +70,39 @@ public class PeableBeachMissingMaterialCheckerStep extends JobStep {
                return null;\r
        }\r
 \r
-       private void processRecord(String fileName, String targetStoreName, StoreUri targetStoreUri, StoreUri escortStoreUri) {\r
-               String title = fileName.substring(0, fileName.lastIndexOf("."));\r
-\r
+       private void processRecord(String title, StoreUri sourceStoreUri, String targetStoreName, StoreUri targetStoreUri, StoreUri escortStoreUri) {\r
+               //TODO kisbetu/nagybetu problema kezelese\r
                Media media = getManager().getMedia(title);\r
 \r
-               if (StringUtils.isNotBlank(appendExtension))\r
-                       fileName += appendExtension;\r
+               String fileName = normalizeName(title);\r
 \r
                if (media == null) {\r
-                       logger.error(getSessionMarker(), "File {} not archived yet", fileName);\r
+                       logger.error(getMarker(), "File {} not archived yet", fileName);\r
                        return;\r
                }\r
 \r
                DownloadableMedia downloadable = DownloadableMedia.create(title, fileName, media.getModified(), media.getCreated(), media.getLength(), 0L,\r
-                               targetStoreUri.getId(), media.getId());\r
+                               sourceStoreUri.getId(), targetStoreUri.getId(), media.getId());\r
                String escortFileName = targetStoreName + "." + downloadable.getString("fileName");\r
                String outputPath = null;\r
                try {\r
                        outputPath = Paths.get(escortStoreUri.toString(true)).toString();\r
                        EscortFiles.createMetadataIfNotExists(outputPath, escortFileName, downloadable.toPrettyString(""));\r
                } catch (Exception e) {\r
-                       logger.error("Can't create escort file {}", Paths.get(outputPath.toString(), escortFileName));\r
+                       logger.error(getSessionMarker(), "Can't create escort file {}", Paths.get(outputPath.toString(), escortFileName));\r
                }\r
 \r
        }\r
 \r
+       //csak visszaterunk\r
+       private String normalizeName(String mediaName) {\r
+               String result = mediaName;\r
+               if (StringUtils.isNotBlank(appendExtension))\r
+                       result += appendExtension;\r
+               //              if (StringUtils.isNotBlank(mediaName)) {\r
+               //                      result = mediaName.trim().toLowerCase();\r
+               //              }\r
+               return result;\r
+       }\r
+\r
 }\r