private static final String OUTPUT_PATH = "outputPath";\r
private static final String MEDIA_CUBE_MEDIA = "mediaCubeMedia";\r
private static final String JOBTEMPLATE = "retrieve-material.xml";\r
- private static final String CSV_EXT = ".mxf";\r
+ private static final String CSV_EXT = ".csv";\r
private String outputPath;\r
private MediaFileDAO dao;\r
private IJobEngine jobEngine;\r
\r
@StepEntry\r
- public Object[] execute(String inputFolder, String outputPath, IJobEngine jobEngine, IJobRuntime jobRuntime) throws Exception {\r
-\r
- this.outputPath = outputPath;\r
- this.jobEngine = jobEngine;\r
- IItemManager manager = jobEngine.getItemManager();\r
- dao = (MediaFileDAO) manager.getBaseDAO(MediaFile.class);\r
+ public Object[] execute(String inputPath, String outputPath, IJobEngine jobEngine, IJobRuntime jobRuntime) throws Exception {\r
+ setAndCheck(inputPath, outputPath, jobEngine);\r
DirectoryStream<Path> directoryStream = null;\r
try {\r
- Files.newDirectoryStream(Paths.get(inputFolder)).forEach(p -> processPathItem(p));\r
+ Files.newDirectoryStream(Paths.get(inputPath)).forEach(p -> processPathItem(p));\r
} catch (Exception e) {\r
logger.error("", e);\r
} finally {\r
logger.error(getMarker(), "A {} MORPHEUS állomány nem törölhető.", csvFile.getName());\r
}\r
\r
+ private void setAndCheck(String inputPath, String outputPath, IJobEngine jobEngine) {\r
+ if (jobEngine == null) {\r
+ logger.error(getMarker(), "Az folyamatkezelő réteg nem elérhető.");\r
+ throw new NullPointerException("Internal error, missing JobEngine reference.");\r
+ }\r
+ IItemManager manager = jobEngine.getItemManager();\r
+ if (manager == null) {\r
+ logger.error(getMarker(), "Az adatbáziskezelő réteg nem elérhető.");\r
+ throw new NullPointerException("Internal error, missing ItemManager reference.");\r
+ }\r
+ dao = (MediaFileDAO) manager.getBaseDAO(MediaFile.class);\r
+ if (dao == null) {\r
+ logger.error(getMarker(), "Az adatbáziskezelő réteg MediaFile kezelöje nem elérhető.");\r
+ throw new NullPointerException("Internal error, missing MediaFile DAO reference.");\r
+ }\r
+ if (inputPath == null) {\r
+ logger.error(getMarker(), "A folyamat 'inputPath' bemeneti paramétere üres.");\r
+ throw new NullPointerException("System is not configured properly, 'inputPath' input parameter missing.");\r
+ }\r
+ if (outputPath == null) {\r
+ logger.error(getMarker(), "A folyamat 'outputPath' bemeneti paramétere üres.");\r
+ throw new NullPointerException("System is not configured properly, 'outputPath' input parameter missing.");\r
+ }\r
+ this.outputPath = outputPath;\r
+ }\r
+\r
}\r
public class TSMBackupStep extends JobStep {\r
private static final Logger logger = LogManager.getLogger();\r
private IItemManager manager;\r
- private Path inputFilePath;\r
- private Store targetStore;\r
- private StoreUri targetStoreUri;\r
+ private Path inputMediaFile;\r
+ private Store tsmStore;\r
+ private StoreUri targetUri;\r
private FileType fileType;\r
\r
@StepEntry\r
public Object[] execute(ArchiveItem archiveItem, Media mediaCubeMedia, IJobEngine jobEngine, IJobRuntime jobRuntime) throws Exception {\r
try {\r
- setAndCheck(jobEngine, archiveItem, mediaCubeMedia);\r
+ setAndCheck(archiveItem, mediaCubeMedia, jobEngine);\r
\r
- StoreUri sourceUri = manager.createStoreUri(RemoteStoreProtocol.LOCAL, inputFilePath.getParent().toString());\r
+ StoreUri sourceUri = manager.createStoreUri(RemoteStoreProtocol.LOCAL, inputMediaFile.getParent().toString());\r
\r
final IJobRuntime runtime = jobRuntime;\r
sourceUri.addProgressListener(new IProgressEventListener() {\r
evt.setCancel(!canContinue());\r
}\r
});\r
- String sourceFileName = inputFilePath.toFile().getName();\r
- RemoteFile remoteFile = sourceUri.transferFrom(targetStoreUri, sourceFileName, sourceFileName);\r
+ String sourceFileName = inputMediaFile.toFile().getName();\r
+ RemoteFile remoteFile = sourceUri.transferFrom(targetUri, sourceFileName, sourceFileName);\r
\r
String name = getHouseId(archiveItem);\r
saveMetadata(mediaCubeMedia, sourceFileName, name);\r
\r
} catch (Exception e) {\r
logger.catching(e);\r
+ logger.error(getMarker(), "A {} állomány archiválása sikertelen. A rendszer hibaüzenete: {}", archiveItem.getMediaFile().toFile().getName(),\r
+ e.getMessage());\r
if (!archiveItem.removeCatchedFile())\r
logger.error(getMarker(), "A {} állomány .catched jelző állománya nem törölhető.", archiveItem.getMediaFile().toFile().getName());\r
throw e;\r
}\r
\r
private void saveMetadata(Media mediaCubeMedia, String sourceFileName, String houseId) {\r
- MediaFile mediaFile = manager.createMediaFile(sourceFileName, fileType, targetStore, mediaCubeMedia);\r
+ MediaFile mediaFile = manager.createMediaFile(sourceFileName, fileType, tsmStore, mediaCubeMedia);\r
mediaFile.add();\r
mediaCubeMedia.setPersister(manager);\r
mediaCubeMedia.setArchived(new Timestamp(new Date().getTime()));\r
mediaCubeMedia.modify();\r
}\r
\r
- private void setAndCheck(IJobEngine jobEngine, ArchiveItem archiveItem, Media mediaCubeMedia) throws JobEngineException, IOException {\r
+ private void setAndCheck(ArchiveItem archiveItem, Media mediaCubeMedia, IJobEngine jobEngine) throws JobEngineException, IOException {\r
+ if (jobEngine == null) {\r
+ logger.error(getMarker(), "Az folyamatkezelő réteg nem elérhető.");\r
+ throw new NullPointerException("Internal error, missing JobEngine reference.");\r
+ }\r
manager = jobEngine.getItemManager();\r
- if (manager == null)\r
- throw new NullPointerException("Missing ItemManager.");\r
- inputFilePath = archiveItem.getMediaFile();\r
- if (inputFilePath == null)\r
- throw new NullPointerException("Missing File in MediaFileWrapper parameter.");\r
- if (!inputFilePath.toFile().exists())\r
- throw new IOException("File not exists: " + inputFilePath.toString());\r
- targetStore = manager.getSystemStore(false);\r
- if (targetStore == null)\r
- throw new NullPointerException("Missing High-res system store.");\r
- targetStoreUri = targetStore.getSourceStoreUri(RemoteStoreProtocol.TSM);\r
- if (targetStoreUri == null)\r
- throw new NullPointerException("Missing TSM store uri from High-res system store.");\r
+ if (manager == null) {\r
+ logger.error(getMarker(), "Az adatbáziskezelő réteg nem elérhető.");\r
+ throw new NullPointerException("Internal error, missing ItemManager reference.");\r
+ }\r
+ if (archiveItem == null) {\r
+ logger.error(getMarker(), "A folyamat 'archiveItem' bemeneti paramétere üres.");\r
+ throw new NullPointerException("System is not configured properly, missing 'archiveItem' input parameter.");\r
+ }\r
+ inputMediaFile = archiveItem.getMediaFile();\r
+ if (inputMediaFile == null) {\r
+ logger.error(getMarker(), "A folyamat 'archiveItem' bemeneti paraméter 'mediaFile' értéke üres.");\r
+ throw new NullPointerException("System is not configured properly, missing 'mediaFile' value in 'archiveItem' input parameter.");\r
+ }\r
+ if (!inputMediaFile.toFile().exists()) {\r
+ logger.error(getMarker(), "Az {} állomány nem létezik vagy nem érhető el.", inputMediaFile.toFile().getName());\r
+ throw new IOException(String.format("Input file {} not exists or unreachable.", inputMediaFile.toFile().getName()));\r
+ }\r
+ tsmStore = manager.getSystemStore(false);\r
+ if (tsmStore == null) {\r
+ logger.error(getMarker(), "A TSM rendszer beállítás nem elérhető.");\r
+ throw new NullPointerException("System is not configured properly, missing TSM Store.");\r
+ }\r
+ targetUri = tsmStore.getSourceStoreUri(RemoteStoreProtocol.TSM);\r
+ if (targetUri == null) {\r
+ logger.error(getMarker(), "A TSM rendszer beállítás paraméterei nem elérhetőek.");\r
+ throw new NullPointerException("System is not configured properly, missing TSM StoreUri.");\r
+ }\r
fileType = manager.getFileType("High-res");\r
- if (fileType == null)\r
- throw new NullPointerException("Missing High-res file type.");\r
- if (mediaCubeMedia == null)\r
- throw new NullPointerException("Input parameter 'mediaCubeMedia' is null.");\r
+ if (fileType == null) {\r
+ logger.error(getMarker(), "Adatbázis bejegyzés hiba, a 'High-res' FileType nem található.");\r
+ throw new NullPointerException("System is not configured properly, missing 'High-res' FileType.");\r
+ }\r
+ if (mediaCubeMedia == null) {\r
+ logger.error(getMarker(), "A folyamat 'mediaCubeMedia' bemeneti paramétere üres.");\r
+ throw new NullPointerException("System is not configured properly, 'mediaCubeMedia' input parameter missing.");\r
+ }\r
\r
}\r
}\r
package user.jobengine.server.steps;\r
\r
+import java.util.List;\r
+\r
+import org.apache.commons.lang.StringUtils;\r
import org.apache.logging.log4j.LogManager;\r
import org.apache.logging.log4j.Logger;\r
\r
\r
public class TSMRestoreStep extends JobStep {\r
private static final Logger logger = LogManager.getLogger();\r
+ private IItemManager manager;\r
+ private StoreUri targetUri;\r
+ private StoreUri sourceUri;\r
+ private String sourceFileName;\r
\r
- @Override\r
- public void cleanup() {\r
- // if (sourceUri != null)\r
- // sourceUri.clearListeners();\r
+ @StepEntry\r
+ public Object[] execute(Media mediaCubeMedia, String outputPath, IJobEngine jobEngine, IJobRuntime jobRuntime) throws Exception {\r
+ setAndCheck(mediaCubeMedia, outputPath, jobEngine);\r
+ try {\r
+ //TODO check file existance?\r
+ final IJobRuntime runtime = jobRuntime;\r
+ sourceUri.addProgressListener(new IProgressEventListener() {\r
+ @Override\r
+ public void progressChanged(ProgressEvent evt) {\r
+ runtime.incrementProgress(evt.getProgress());\r
+ }\r
+ });\r
+ sourceUri.addStatusListener(new IStatusEventListener() {\r
+ @Override\r
+ public void statusChanged(StatusEvent evt) {\r
+ evt.setCancel(!canContinue());\r
+ }\r
+ });\r
+ RemoteFile result = sourceUri.transferFrom(targetUri, sourceFileName, sourceFileName);\r
+ } catch (Exception e) {\r
+ logger.error(getMarker(), "A {} állomány visszatöltése sikertelen. A rendszer hibaüzenete: {}", sourceFileName, e.getMessage());\r
+ logger.catching(e);\r
+ throw e;\r
+ }\r
+ return null;\r
}\r
\r
- @StepEntry\r
- public Object[] execute(Media media, String outputPath, IJobEngine jobEngine, IJobRuntime jobRuntime) throws Exception {\r
- RemoteFile result = null;\r
- final IJobRuntime runtime = jobRuntime;\r
- IItemManager manager = jobEngine.getItemManager();\r
- Store systemStore = manager.getSystemStore(false);\r
- MediaFile mediaFile = null;\r
- for (MediaFile mf : media.getMediaFiles()) {\r
- if (mf.getStore().getId() == systemStore.getId()) {\r
- mediaFile = mf;\r
- break;\r
+ private String getSourceFileName(Media mediaCubeMedia, Store targetStore) {\r
+ List<MediaFile> mediaFiles = mediaCubeMedia.getMediaFiles();\r
+ if (mediaFiles == null)\r
+ return null;\r
+ for (MediaFile mediaFile : mediaFiles) {\r
+ if (mediaFile.getStore().getId() == targetStore.getId()) {\r
+ return mediaFile.getRelativePath();\r
}\r
}\r
+ return null;\r
+ }\r
\r
- if (mediaFile == null)\r
- throw new Exception("Can not find HIRES media file");\r
-\r
- String path = mediaFile.getRelativePath();\r
- logger.info("Relative path is: " + path);\r
- if (path == null)\r
- throw new Exception("Path is null!");\r
- int pos = path.lastIndexOf("/");\r
- // String sourceFileName = pos > -1 ? path.substring(pos,\r
- // path.length() - pos) : path;\r
- String sourceFileName = pos > -1 ? path.substring(pos + 1, path.length()) : path;\r
- logger.info("SourceFileName is: " + sourceFileName);\r
- if (sourceFileName == null)\r
- throw new NullPointerException("Source FileName is null");\r
-\r
- StoreUri sourceUri = new StoreUri();\r
- sourceUri.setProtocol(RemoteStoreProtocol.TSM);\r
-\r
- //TODO outputPath alapon!\r
- StoreUri target = systemStore.getTargetStoreUri(RemoteStoreProtocol.LOCAL);\r
- logger.info("Target is: " + target.getUri());\r
- sourceUri.addProgressListener(new IProgressEventListener() {\r
- @Override\r
- public void progressChanged(ProgressEvent evt) {\r
- runtime.incrementProgress(evt.getProgress());\r
- }\r
- });\r
- sourceUri.addStatusListener(new IStatusEventListener() {\r
- @Override\r
- public void statusChanged(StatusEvent evt) {\r
- evt.setCancel(!canContinue());\r
- }\r
- });\r
- result = sourceUri.transferFrom(target, sourceFileName, "restored_" + sourceFileName);\r
- return new Object[] { result };\r
+ private void setAndCheck(Media mediaCubeMedia, String outputPath, IJobEngine jobEngine) {\r
+ if (jobEngine == null) {\r
+ logger.error(getMarker(), "Az folyamatkezelő réteg nem elérhető.");\r
+ throw new NullPointerException("Internal error, missing JobEngine reference.");\r
+ }\r
+ manager = jobEngine.getItemManager();\r
+ if (manager == null) {\r
+ logger.error(getMarker(), "Az adatbáziskezelő réteg nem elérhető.");\r
+ throw new NullPointerException("Internal error, missing ItemManager reference.");\r
+ }\r
+ if (mediaCubeMedia == null) {\r
+ logger.error(getMarker(), "A folyamat 'mediaCubeMedia' bemeneti paramétere üres.");\r
+ throw new NullPointerException("System is not configured properly, 'mediaCubeMedia' input parameter missing.");\r
+ }\r
+ if (StringUtils.isBlank(outputPath)) {\r
+ logger.error(getMarker(), "A folyamat 'inputFolder' bemeneti paramétere üres.");\r
+ throw new NullPointerException("System is not configured properly, 'inputFolder' input parameter missing.");\r
+ }\r
+ Store tsmStore = manager.getSystemStore(false);\r
+ if (tsmStore == null) {\r
+ logger.error(getMarker(), "A TSM rendszer beállítás nem elérhető.");\r
+ throw new NullPointerException("System is not configured properly, missing TSM Store.");\r
+ }\r
+ sourceUri = tsmStore.getSourceStoreUri(RemoteStoreProtocol.TSM);\r
+ if (sourceUri == null) {\r
+ logger.error(getMarker(), "A TSM rendszer beállítás paraméterei nem elérhetőek.");\r
+ throw new NullPointerException("System is not configured properly, missing TSM StoreUri.");\r
+ }\r
+ targetUri = manager.createStoreUri(RemoteStoreProtocol.LOCAL, outputPath);\r
+ sourceFileName = getSourceFileName(mediaCubeMedia, tsmStore);\r
+ if (sourceFileName == null) {\r
+ logger.error(getMarker(), "Adatbázis bejegyzés hiba, a visszatöltendő fájl neve nem található.");\r
+ throw new NullPointerException("Database error, missing MediaFile 'relativePath'.");\r
+ }\r
}\r
}\r
\r
TranscodeDestination transcodeDestination = new TranscodeDestination();\r
\r
- transcodeDestination.setOutputWriteDirectory(outputPath);\r
+ //transcodeDestination.setOutputWriteDirectory(outputPath);\r
+ transcodeDestination.setOutputPostMoveDirectory(outputPath);\r
transcodeRequest.setTranscodeDestination(transcodeDestination);\r
return transcodeRequest;\r
}\r
<borderlayout height="50px">\r
<west width="250px" border="0">\r
<div width="100%" height="100%" style="background: #008AC8;" >\r
- <image src="/img/mediacube_logo_v2_50x50.png">\r
+ <image src="/img/mediacube_logo_v2_50x50.png" alt="MediaCube Server v2.0.1">\r
<!-- <custom-attributes org.zkoss.zul.image.preload="true" /> -->\r
</image>\r
</div>\r
package user.jobengine.zk.model;\r
\r
import java.nio.file.Paths;\r
-import java.util.HashMap;\r
import java.util.List;\r
import java.util.Map;\r
\r
import org.zkoss.util.resource.Labels;\r
import org.zkoss.zul.Messagebox;\r
\r
+import user.commons.ListUtils;\r
import user.jobengine.db.Item;\r
import user.jobengine.db.Media;\r
import user.jobengine.db.MediaFile;\r
import user.jobengine.server.JobEngine;\r
\r
public class SearchModel extends BaseModel {\r
+ private static final String RESTORE = "Visszatöltés";\r
+\r
+ private static final String JOBTEMPLATE = "retrieve-material.xml";\r
+\r
+ private static final String MEDIA_CUBE_MEDIA = "mediaCubeMedia";\r
+\r
+ private static final String OUTPUT_PATH = "outputPath";\r
+\r
private static final Logger logger = LogManager.getLogger();\r
\r
private String searchValue = null;\r
public void downloadMedia() {\r
if (getHasTSMMediaFile()) {\r
try {\r
- Map<String, Object> parameters = new HashMap<>();\r
- parameters.put("mediaCubeMedia", this.selectedMedia);\r
+ Map<String, Object> parameters = ListUtils.asMap(MEDIA_CUBE_MEDIA, this.selectedMedia, OUTPUT_PATH, "/mnt/ISILON/RESTORE");\r
IJobEngine jobEngine = JobEngine.getInstance();\r
- IJobRuntime runtime1 = jobEngine.submit("retrieve-material.xml", "TSMRestoreMedia", parameters);\r
+ IJobRuntime runtime1 = jobEngine.submit(JOBTEMPLATE, RESTORE, parameters);\r
} catch (Exception exc) {\r
logger.error("", exc);\r
}\r