From: Vásáry Dániel Date: Mon, 9 Oct 2017 12:46:18 +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=5119458f6deace81c8a9ca8fc905865dda6c5162;p=mediacube.git git-tfs-id: [tfs.userrendszerhaz.hu:8080/tfs/DefaultCollection]$/MediaCube;C30559 --- diff --git a/server/user.jobengine.executors/src/user/jobengine/server/steps/CheckMORPHEUSMissingMaterialsStep.java b/server/user.jobengine.executors/src/user/jobengine/server/steps/CheckMORPHEUSMissingMaterialsStep.java index 01e071a6..9bb0b89e 100644 --- a/server/user.jobengine.executors/src/user/jobengine/server/steps/CheckMORPHEUSMissingMaterialsStep.java +++ b/server/user.jobengine.executors/src/user/jobengine/server/steps/CheckMORPHEUSMissingMaterialsStep.java @@ -28,21 +28,17 @@ public class CheckMORPHEUSMissingMaterialsStep extends JobStep { private static final String OUTPUT_PATH = "outputPath"; private static final String MEDIA_CUBE_MEDIA = "mediaCubeMedia"; private static final String JOBTEMPLATE = "retrieve-material.xml"; - private static final String CSV_EXT = ".mxf"; + private static final String CSV_EXT = ".csv"; private String outputPath; private MediaFileDAO dao; private IJobEngine jobEngine; @StepEntry - public Object[] execute(String inputFolder, String outputPath, IJobEngine jobEngine, IJobRuntime jobRuntime) throws Exception { - - this.outputPath = outputPath; - this.jobEngine = jobEngine; - IItemManager manager = jobEngine.getItemManager(); - dao = (MediaFileDAO) manager.getBaseDAO(MediaFile.class); + public Object[] execute(String inputPath, String outputPath, IJobEngine jobEngine, IJobRuntime jobRuntime) throws Exception { + setAndCheck(inputPath, outputPath, jobEngine); DirectoryStream directoryStream = null; try { - Files.newDirectoryStream(Paths.get(inputFolder)).forEach(p -> processPathItem(p)); + Files.newDirectoryStream(Paths.get(inputPath)).forEach(p -> processPathItem(p)); } catch (Exception e) { logger.error("", e); } finally { @@ -115,4 +111,30 @@ public class CheckMORPHEUSMissingMaterialsStep extends JobStep { logger.error(getMarker(), "A {} MORPHEUS állomány nem törölhető.", csvFile.getName()); } + private void setAndCheck(String inputPath, String outputPath, IJobEngine jobEngine) { + if (jobEngine == null) { + logger.error(getMarker(), "Az folyamatkezelő réteg nem elérhető."); + throw new NullPointerException("Internal error, missing JobEngine reference."); + } + IItemManager manager = jobEngine.getItemManager(); + if (manager == null) { + logger.error(getMarker(), "Az adatbáziskezelő réteg nem elérhető."); + throw new NullPointerException("Internal error, missing ItemManager reference."); + } + dao = (MediaFileDAO) manager.getBaseDAO(MediaFile.class); + if (dao == null) { + logger.error(getMarker(), "Az adatbáziskezelő réteg MediaFile kezelöje nem elérhető."); + throw new NullPointerException("Internal error, missing MediaFile DAO reference."); + } + if (inputPath == null) { + logger.error(getMarker(), "A folyamat 'inputPath' bemeneti paramétere üres."); + throw new NullPointerException("System is not configured properly, 'inputPath' input parameter missing."); + } + if (outputPath == null) { + logger.error(getMarker(), "A folyamat 'outputPath' bemeneti paramétere üres."); + throw new NullPointerException("System is not configured properly, 'outputPath' input parameter missing."); + } + this.outputPath = outputPath; + } + } diff --git a/server/user.jobengine.executors/src/user/jobengine/server/steps/TSMBackupStep.java b/server/user.jobengine.executors/src/user/jobengine/server/steps/TSMBackupStep.java index 1e1b33b2..0525d7b4 100644 --- a/server/user.jobengine.executors/src/user/jobengine/server/steps/TSMBackupStep.java +++ b/server/user.jobengine.executors/src/user/jobengine/server/steps/TSMBackupStep.java @@ -27,17 +27,17 @@ import user.jobengine.server.JobEngineException; public class TSMBackupStep extends JobStep { private static final Logger logger = LogManager.getLogger(); private IItemManager manager; - private Path inputFilePath; - private Store targetStore; - private StoreUri targetStoreUri; + private Path inputMediaFile; + private Store tsmStore; + private StoreUri targetUri; private FileType fileType; @StepEntry public Object[] execute(ArchiveItem archiveItem, Media mediaCubeMedia, IJobEngine jobEngine, IJobRuntime jobRuntime) throws Exception { try { - setAndCheck(jobEngine, archiveItem, mediaCubeMedia); + setAndCheck(archiveItem, mediaCubeMedia, jobEngine); - StoreUri sourceUri = manager.createStoreUri(RemoteStoreProtocol.LOCAL, inputFilePath.getParent().toString()); + StoreUri sourceUri = manager.createStoreUri(RemoteStoreProtocol.LOCAL, inputMediaFile.getParent().toString()); final IJobRuntime runtime = jobRuntime; sourceUri.addProgressListener(new IProgressEventListener() { @@ -52,8 +52,8 @@ public class TSMBackupStep extends JobStep { evt.setCancel(!canContinue()); } }); - String sourceFileName = inputFilePath.toFile().getName(); - RemoteFile remoteFile = sourceUri.transferFrom(targetStoreUri, sourceFileName, sourceFileName); + String sourceFileName = inputMediaFile.toFile().getName(); + RemoteFile remoteFile = sourceUri.transferFrom(targetUri, sourceFileName, sourceFileName); String name = getHouseId(archiveItem); saveMetadata(mediaCubeMedia, sourceFileName, name); @@ -61,6 +61,8 @@ public class TSMBackupStep extends JobStep { } catch (Exception e) { logger.catching(e); + logger.error(getMarker(), "A {} állomány archiválása sikertelen. A rendszer hibaüzenete: {}", archiveItem.getMediaFile().toFile().getName(), + e.getMessage()); if (!archiveItem.removeCatchedFile()) logger.error(getMarker(), "A {} állomány .catched jelző állománya nem törölhető.", archiveItem.getMediaFile().toFile().getName()); throw e; @@ -78,7 +80,7 @@ public class TSMBackupStep extends JobStep { } private void saveMetadata(Media mediaCubeMedia, String sourceFileName, String houseId) { - MediaFile mediaFile = manager.createMediaFile(sourceFileName, fileType, targetStore, mediaCubeMedia); + MediaFile mediaFile = manager.createMediaFile(sourceFileName, fileType, tsmStore, mediaCubeMedia); mediaFile.add(); mediaCubeMedia.setPersister(manager); mediaCubeMedia.setArchived(new Timestamp(new Date().getTime())); @@ -86,26 +88,48 @@ public class TSMBackupStep extends JobStep { mediaCubeMedia.modify(); } - private void setAndCheck(IJobEngine jobEngine, ArchiveItem archiveItem, Media mediaCubeMedia) throws JobEngineException, IOException { + private void setAndCheck(ArchiveItem archiveItem, Media mediaCubeMedia, IJobEngine jobEngine) throws JobEngineException, IOException { + if (jobEngine == null) { + logger.error(getMarker(), "Az folyamatkezelő réteg nem elérhető."); + throw new NullPointerException("Internal error, missing JobEngine reference."); + } manager = jobEngine.getItemManager(); - if (manager == null) - throw new NullPointerException("Missing ItemManager."); - inputFilePath = archiveItem.getMediaFile(); - if (inputFilePath == null) - throw new NullPointerException("Missing File in MediaFileWrapper parameter."); - if (!inputFilePath.toFile().exists()) - throw new IOException("File not exists: " + inputFilePath.toString()); - targetStore = manager.getSystemStore(false); - if (targetStore == null) - throw new NullPointerException("Missing High-res system store."); - targetStoreUri = targetStore.getSourceStoreUri(RemoteStoreProtocol.TSM); - if (targetStoreUri == null) - throw new NullPointerException("Missing TSM store uri from High-res system store."); + if (manager == null) { + logger.error(getMarker(), "Az adatbáziskezelő réteg nem elérhető."); + throw new NullPointerException("Internal error, missing ItemManager reference."); + } + if (archiveItem == null) { + logger.error(getMarker(), "A folyamat 'archiveItem' bemeneti paramétere üres."); + throw new NullPointerException("System is not configured properly, missing 'archiveItem' input parameter."); + } + inputMediaFile = archiveItem.getMediaFile(); + if (inputMediaFile == null) { + logger.error(getMarker(), "A folyamat 'archiveItem' bemeneti paraméter 'mediaFile' értéke üres."); + throw new NullPointerException("System is not configured properly, missing 'mediaFile' value in 'archiveItem' input parameter."); + } + if (!inputMediaFile.toFile().exists()) { + logger.error(getMarker(), "Az {} állomány nem létezik vagy nem érhető el.", inputMediaFile.toFile().getName()); + throw new IOException(String.format("Input file {} not exists or unreachable.", inputMediaFile.toFile().getName())); + } + tsmStore = manager.getSystemStore(false); + if (tsmStore == null) { + logger.error(getMarker(), "A TSM rendszer beállítás nem elérhető."); + throw new NullPointerException("System is not configured properly, missing TSM Store."); + } + targetUri = tsmStore.getSourceStoreUri(RemoteStoreProtocol.TSM); + if (targetUri == null) { + logger.error(getMarker(), "A TSM rendszer beállítás paraméterei nem elérhetőek."); + throw new NullPointerException("System is not configured properly, missing TSM StoreUri."); + } fileType = manager.getFileType("High-res"); - if (fileType == null) - throw new NullPointerException("Missing High-res file type."); - if (mediaCubeMedia == null) - throw new NullPointerException("Input parameter 'mediaCubeMedia' is null."); + if (fileType == null) { + logger.error(getMarker(), "Adatbázis bejegyzés hiba, a 'High-res' FileType nem található."); + throw new NullPointerException("System is not configured properly, missing 'High-res' FileType."); + } + if (mediaCubeMedia == null) { + logger.error(getMarker(), "A folyamat 'mediaCubeMedia' bemeneti paramétere üres."); + throw new NullPointerException("System is not configured properly, 'mediaCubeMedia' input parameter missing."); + } } } diff --git a/server/user.jobengine.executors/src/user/jobengine/server/steps/TSMRestoreStep.java b/server/user.jobengine.executors/src/user/jobengine/server/steps/TSMRestoreStep.java index cbe2fd76..0db98376 100644 --- a/server/user.jobengine.executors/src/user/jobengine/server/steps/TSMRestoreStep.java +++ b/server/user.jobengine.executors/src/user/jobengine/server/steps/TSMRestoreStep.java @@ -1,5 +1,8 @@ package user.jobengine.server.steps; +import java.util.List; + +import org.apache.commons.lang.StringUtils; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; @@ -19,61 +22,83 @@ import user.jobengine.server.IJobRuntime; public class TSMRestoreStep extends JobStep { private static final Logger logger = LogManager.getLogger(); + private IItemManager manager; + private StoreUri targetUri; + private StoreUri sourceUri; + private String sourceFileName; - @Override - public void cleanup() { - // if (sourceUri != null) - // sourceUri.clearListeners(); + @StepEntry + public Object[] execute(Media mediaCubeMedia, String outputPath, IJobEngine jobEngine, IJobRuntime jobRuntime) throws Exception { + setAndCheck(mediaCubeMedia, outputPath, jobEngine); + try { + //TODO check file existance? + final IJobRuntime runtime = jobRuntime; + sourceUri.addProgressListener(new IProgressEventListener() { + @Override + public void progressChanged(ProgressEvent evt) { + runtime.incrementProgress(evt.getProgress()); + } + }); + sourceUri.addStatusListener(new IStatusEventListener() { + @Override + public void statusChanged(StatusEvent evt) { + evt.setCancel(!canContinue()); + } + }); + RemoteFile result = sourceUri.transferFrom(targetUri, sourceFileName, sourceFileName); + } catch (Exception e) { + logger.error(getMarker(), "A {} állomány visszatöltése sikertelen. A rendszer hibaüzenete: {}", sourceFileName, e.getMessage()); + logger.catching(e); + throw e; + } + return null; } - @StepEntry - public Object[] execute(Media media, String outputPath, IJobEngine jobEngine, IJobRuntime jobRuntime) throws Exception { - RemoteFile result = null; - final IJobRuntime runtime = jobRuntime; - IItemManager manager = jobEngine.getItemManager(); - Store systemStore = manager.getSystemStore(false); - MediaFile mediaFile = null; - for (MediaFile mf : media.getMediaFiles()) { - if (mf.getStore().getId() == systemStore.getId()) { - mediaFile = mf; - break; + private String getSourceFileName(Media mediaCubeMedia, Store targetStore) { + List mediaFiles = mediaCubeMedia.getMediaFiles(); + if (mediaFiles == null) + return null; + for (MediaFile mediaFile : mediaFiles) { + if (mediaFile.getStore().getId() == targetStore.getId()) { + return mediaFile.getRelativePath(); } } + return null; + } - if (mediaFile == null) - throw new Exception("Can not find HIRES media file"); - - String path = mediaFile.getRelativePath(); - logger.info("Relative path is: " + path); - if (path == null) - throw new Exception("Path is null!"); - int pos = path.lastIndexOf("/"); - // String sourceFileName = pos > -1 ? path.substring(pos, - // path.length() - pos) : path; - String sourceFileName = pos > -1 ? path.substring(pos + 1, path.length()) : path; - logger.info("SourceFileName is: " + sourceFileName); - if (sourceFileName == null) - throw new NullPointerException("Source FileName is null"); - - StoreUri sourceUri = new StoreUri(); - sourceUri.setProtocol(RemoteStoreProtocol.TSM); - - //TODO outputPath alapon! - StoreUri target = systemStore.getTargetStoreUri(RemoteStoreProtocol.LOCAL); - logger.info("Target is: " + target.getUri()); - sourceUri.addProgressListener(new IProgressEventListener() { - @Override - public void progressChanged(ProgressEvent evt) { - runtime.incrementProgress(evt.getProgress()); - } - }); - sourceUri.addStatusListener(new IStatusEventListener() { - @Override - public void statusChanged(StatusEvent evt) { - evt.setCancel(!canContinue()); - } - }); - result = sourceUri.transferFrom(target, sourceFileName, "restored_" + sourceFileName); - return new Object[] { result }; + private void setAndCheck(Media mediaCubeMedia, String outputPath, IJobEngine jobEngine) { + if (jobEngine == null) { + logger.error(getMarker(), "Az folyamatkezelő réteg nem elérhető."); + throw new NullPointerException("Internal error, missing JobEngine reference."); + } + manager = jobEngine.getItemManager(); + if (manager == null) { + logger.error(getMarker(), "Az adatbáziskezelő réteg nem elérhető."); + throw new NullPointerException("Internal error, missing ItemManager reference."); + } + if (mediaCubeMedia == null) { + logger.error(getMarker(), "A folyamat 'mediaCubeMedia' bemeneti paramétere üres."); + throw new NullPointerException("System is not configured properly, 'mediaCubeMedia' input parameter missing."); + } + if (StringUtils.isBlank(outputPath)) { + logger.error(getMarker(), "A folyamat 'inputFolder' bemeneti paramétere üres."); + throw new NullPointerException("System is not configured properly, 'inputFolder' input parameter missing."); + } + Store tsmStore = manager.getSystemStore(false); + if (tsmStore == null) { + logger.error(getMarker(), "A TSM rendszer beállítás nem elérhető."); + throw new NullPointerException("System is not configured properly, missing TSM Store."); + } + sourceUri = tsmStore.getSourceStoreUri(RemoteStoreProtocol.TSM); + if (sourceUri == null) { + logger.error(getMarker(), "A TSM rendszer beállítás paraméterei nem elérhetőek."); + throw new NullPointerException("System is not configured properly, missing TSM StoreUri."); + } + targetUri = manager.createStoreUri(RemoteStoreProtocol.LOCAL, outputPath); + sourceFileName = getSourceFileName(mediaCubeMedia, tsmStore); + if (sourceFileName == null) { + logger.error(getMarker(), "Adatbázis bejegyzés hiba, a visszatöltendő fájl neve nem található."); + throw new NullPointerException("Database error, missing MediaFile 'relativePath'."); + } } } diff --git a/server/user.jobengine.executors/src/user/jobengine/server/steps/TranscodeSELENIOStep.java b/server/user.jobengine.executors/src/user/jobengine/server/steps/TranscodeSELENIOStep.java index 33082441..6b9ff175 100644 --- a/server/user.jobengine.executors/src/user/jobengine/server/steps/TranscodeSELENIOStep.java +++ b/server/user.jobengine.executors/src/user/jobengine/server/steps/TranscodeSELENIOStep.java @@ -93,7 +93,8 @@ public class TranscodeSELENIOStep extends JobStep { TranscodeDestination transcodeDestination = new TranscodeDestination(); - transcodeDestination.setOutputWriteDirectory(outputPath); + //transcodeDestination.setOutputWriteDirectory(outputPath); + transcodeDestination.setOutputPostMoveDirectory(outputPath); transcodeRequest.setTranscodeDestination(transcodeDestination); return transcodeRequest; } diff --git a/server/user.jobengine.osgi.server/pages/index.zul b/server/user.jobengine.osgi.server/pages/index.zul index 5ba067b0..2eaeca44 100644 --- a/server/user.jobengine.osgi.server/pages/index.zul +++ b/server/user.jobengine.osgi.server/pages/index.zul @@ -54,7 +54,7 @@
- + MediaCube Server v2.0.1
diff --git a/server/user.jobengine.osgi.server/src/user/jobengine/zk/model/SearchModel.java b/server/user.jobengine.osgi.server/src/user/jobengine/zk/model/SearchModel.java index 72461607..f1330555 100644 --- a/server/user.jobengine.osgi.server/src/user/jobengine/zk/model/SearchModel.java +++ b/server/user.jobengine.osgi.server/src/user/jobengine/zk/model/SearchModel.java @@ -1,7 +1,6 @@ package user.jobengine.zk.model; import java.nio.file.Paths; -import java.util.HashMap; import java.util.List; import java.util.Map; @@ -13,6 +12,7 @@ import org.zkoss.bind.annotation.NotifyChange; import org.zkoss.util.resource.Labels; import org.zkoss.zul.Messagebox; +import user.commons.ListUtils; import user.jobengine.db.Item; import user.jobengine.db.Media; import user.jobengine.db.MediaFile; @@ -22,6 +22,14 @@ import user.jobengine.server.IJobRuntime; import user.jobengine.server.JobEngine; public class SearchModel extends BaseModel { + private static final String RESTORE = "Visszatöltés"; + + private static final String JOBTEMPLATE = "retrieve-material.xml"; + + private static final String MEDIA_CUBE_MEDIA = "mediaCubeMedia"; + + private static final String OUTPUT_PATH = "outputPath"; + private static final Logger logger = LogManager.getLogger(); private String searchValue = null; @@ -46,10 +54,9 @@ public class SearchModel extends BaseModel { public void downloadMedia() { if (getHasTSMMediaFile()) { try { - Map parameters = new HashMap<>(); - parameters.put("mediaCubeMedia", this.selectedMedia); + Map parameters = ListUtils.asMap(MEDIA_CUBE_MEDIA, this.selectedMedia, OUTPUT_PATH, "/mnt/ISILON/RESTORE"); IJobEngine jobEngine = JobEngine.getInstance(); - IJobRuntime runtime1 = jobEngine.submit("retrieve-material.xml", "TSMRestoreMedia", parameters); + IJobRuntime runtime1 = jobEngine.submit(JOBTEMPLATE, RESTORE, parameters); } catch (Exception exc) { logger.error("", exc); }