git-tfs-id: [http://tfs.userrendszerhaz.hu:8080/tfs/DefaultCollection]$/MediaCube...
authorVásáry Dániel <daniel.vasary@userrendszerhaz.hu>
Mon, 9 Oct 2017 12:46:18 +0000 (12:46 +0000)
committerVásáry Dániel <daniel.vasary@userrendszerhaz.hu>
Mon, 9 Oct 2017 12:46:18 +0000 (12:46 +0000)
server/user.jobengine.executors/src/user/jobengine/server/steps/CheckMORPHEUSMissingMaterialsStep.java
server/user.jobengine.executors/src/user/jobengine/server/steps/TSMBackupStep.java
server/user.jobengine.executors/src/user/jobengine/server/steps/TSMRestoreStep.java
server/user.jobengine.executors/src/user/jobengine/server/steps/TranscodeSELENIOStep.java
server/user.jobengine.osgi.server/pages/index.zul
server/user.jobengine.osgi.server/src/user/jobengine/zk/model/SearchModel.java

index 01e071a694c09eb77541bf763e753a9cdedf354c..9bb0b89ebdf17a7e8be1b9fe3aa4a654a2e47db2 100644 (file)
@@ -28,21 +28,17 @@ public class CheckMORPHEUSMissingMaterialsStep extends JobStep {
        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
@@ -115,4 +111,30 @@ public class CheckMORPHEUSMissingMaterialsStep extends JobStep {
                        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
index 1e1b33b26fe23d9b98b693730ea9711c092bd040..0525d7b42b4723328fca334e98647849d69587cc 100644 (file)
@@ -27,17 +27,17 @@ import user.jobengine.server.JobEngineException;
 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
@@ -52,8 +52,8 @@ public class TSMBackupStep extends JobStep {
                                        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
@@ -61,6 +61,8 @@ public class TSMBackupStep extends JobStep {
 \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
@@ -78,7 +80,7 @@ public class TSMBackupStep extends JobStep {
        }\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
@@ -86,26 +88,48 @@ public class TSMBackupStep extends JobStep {
                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
index cbe2fd76c83a02cb3acac7aa4b260d5134100bd3..0db98376431f5b905ebad425948450bd7c6d12fd 100644 (file)
@@ -1,5 +1,8 @@
 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
@@ -19,61 +22,83 @@ import user.jobengine.server.IJobRuntime;
 \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
index 33082441ed663523d82bf6d29eab2d8dc1d713be..6b9ff175bbaa633210a8950036671fc0ab0c98c2 100644 (file)
@@ -93,7 +93,8 @@ public class TranscodeSELENIOStep extends JobStep {
 \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
index 5ba067b0116b8714f6fa6516657e7d490e7dca3f..2eaeca44b2462be3d88a033ff4427c4244c7e058 100644 (file)
@@ -54,7 +54,7 @@
                                        <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
index 724616076f3939b8ab5f0e4757c81c8500425425..f1330555502c27ad0232518a6d556be23b8ed33b 100644 (file)
@@ -1,7 +1,6 @@
 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
@@ -13,6 +12,7 @@ import org.zkoss.bind.annotation.NotifyChange;
 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
@@ -22,6 +22,14 @@ import user.jobengine.server.IJobRuntime;
 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
@@ -46,10 +54,9 @@ public class SearchModel extends BaseModel {
        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