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",
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
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
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