From 9ffede35d911868a3afecdb23ecffc378d76deb4 Mon Sep 17 00:00:00 2001 From: =?utf8?q?V=C3=A1s=C3=A1ry=20D=C3=A1niel?= Date: Mon, 27 Apr 2020 15:13:15 +0000 Subject: [PATCH] git-tfs-id: [http://tfs.userrendszerhaz.hu:8080/tfs/DefaultCollection]$/MediaCube;C31800 --- .../run-mediacube-server-hirtv.launch | 2 +- .../run-mediacube-server-mv.launch | 2 +- .../run-mediacube-server-user.launch | 2 +- server/-configuration/scheduledjobs.json | 3 + .../test-debug-mediacube-main-7777.launch | 18 +++ .../config/config.xml | 1 + .../jobtemplates/archive-recording.xml | 140 ------------------ .../jobtemplates/create-lowres-ondemand.xml | 6 +- .../jobtemplates/fake-concurrent.xml | 21 +-- .../jobtemplates/submit-child.xml | 6 + .../jobtemplates/sys-recreate-lowres.xml | 4 - .../steps/ArchiveMaterialSubmitStep.java | 9 +- .../server/steps/AttachLowresStep.java | 4 +- .../server/steps/CancelableStep.java | 14 +- ...veItem.java => CreateArchiveItemStep.java} | 4 +- .../server/steps/CreateMissingLowresStep.java | 17 +-- .../user/jobengine/server/steps/FakeStep.java | 13 +- .../server/steps/HSMMigrateStep.java | 12 +- .../jobengine/server/steps/MediaToolStep.java | 2 +- .../server/steps/SubmitChildStep.java | 14 ++ .../jobengine/server/steps/TSMBackupStep.java | 22 ++- .../jobengine/server/steps/TranscodeStep.java | 4 +- .../server/steps/UpdateGhostMediaData.java | 2 + .../src/user/commons/FFAStransAPI.java | 62 ++++---- .../scripts/007_add_alternate_store.sql | 2 +- .../src/user/jobengine/db/Media.java | 17 +++ .../WEB-INF/web.xml | 3 +- .../pages/joblist.zul | 6 +- .../pages/login.zul | 8 +- .../resources/i3-label_hu.properties | 4 +- .../src/user/jobengine/server/IJobEngine.java | 4 +- .../src/user/jobengine/server/JobEngine.java | 26 +++- .../src/user/jobengine/server/JobRuntime.java | 11 +- .../jobengine/server/JobStepExecutor.java | 2 +- .../user/jobengine/server/steps/JobStep.java | 30 +++- .../user/jobengine/zk/model/JobListModel.java | 15 +- .../user/jobengine/zk/model/LoginModel.java | 17 ++- .../zk/model/MediaCubeAuthentication.java | 18 +++ .../user/jobengine/zk/model/SearchModel.java | 14 +- .../WEB-INF/web.xml | 12 +- 40 files changed, 266 insertions(+), 307 deletions(-) create mode 100644 server/-configuration/test-debug-mediacube-main-7777.launch delete mode 100644 server/user.jobengine.executors/jobtemplates/archive-recording.xml create mode 100644 server/user.jobengine.executors/jobtemplates/submit-child.xml rename server/user.jobengine.executors/src/user/jobengine/server/steps/{CreateArchiveItem.java => CreateArchiveItemStep.java} (90%) create mode 100644 server/user.jobengine.executors/src/user/jobengine/server/steps/SubmitChildStep.java diff --git a/server/-configuration/run-mediacube-server-hirtv.launch b/server/-configuration/run-mediacube-server-hirtv.launch index acd8c019..2d0bc066 100644 --- a/server/-configuration/run-mediacube-server-hirtv.launch +++ b/server/-configuration/run-mediacube-server-hirtv.launch @@ -19,7 +19,7 @@ - + diff --git a/server/-configuration/run-mediacube-server-mv.launch b/server/-configuration/run-mediacube-server-mv.launch index 43a0b0c9..5de9b7fd 100644 --- a/server/-configuration/run-mediacube-server-mv.launch +++ b/server/-configuration/run-mediacube-server-mv.launch @@ -19,7 +19,7 @@ - + diff --git a/server/-configuration/run-mediacube-server-user.launch b/server/-configuration/run-mediacube-server-user.launch index 19a9c109..670a5937 100644 --- a/server/-configuration/run-mediacube-server-user.launch +++ b/server/-configuration/run-mediacube-server-user.launch @@ -19,7 +19,7 @@ - + diff --git a/server/-configuration/scheduledjobs.json b/server/-configuration/scheduledjobs.json index fa356491..62c016ff 100644 --- a/server/-configuration/scheduledjobs.json +++ b/server/-configuration/scheduledjobs.json @@ -1,6 +1,9 @@ {"joblist":[ { "template": "cancelable.xml" + }, + { + "template": "submit-child.xml" }, { "name" : "Proxy pótlása", diff --git a/server/-configuration/test-debug-mediacube-main-7777.launch b/server/-configuration/test-debug-mediacube-main-7777.launch new file mode 100644 index 00000000..df478a21 --- /dev/null +++ b/server/-configuration/test-debug-mediacube-main-7777.launch @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + + + + + diff --git a/server/user.jobengine.executors/config/config.xml b/server/user.jobengine.executors/config/config.xml index 892d9f3c..039626a1 100644 --- a/server/user.jobengine.executors/config/config.xml +++ b/server/user.jobengine.executors/config/config.xml @@ -28,6 +28,7 @@ + diff --git a/server/user.jobengine.executors/jobtemplates/archive-recording.xml b/server/user.jobengine.executors/jobtemplates/archive-recording.xml deleted file mode 100644 index 440285af..00000000 --- a/server/user.jobengine.executors/jobtemplates/archive-recording.xml +++ /dev/null @@ -1,140 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/server/user.jobengine.executors/jobtemplates/create-lowres-ondemand.xml b/server/user.jobengine.executors/jobtemplates/create-lowres-ondemand.xml index bf7ff233..c00193cc 100644 --- a/server/user.jobengine.executors/jobtemplates/create-lowres-ondemand.xml +++ b/server/user.jobengine.executors/jobtemplates/create-lowres-ondemand.xml @@ -11,7 +11,6 @@ - @@ -21,7 +20,7 @@ - + @@ -91,9 +90,6 @@ - - - diff --git a/server/user.jobengine.executors/jobtemplates/fake-concurrent.xml b/server/user.jobengine.executors/jobtemplates/fake-concurrent.xml index 5516c43f..6edbf839 100644 --- a/server/user.jobengine.executors/jobtemplates/fake-concurrent.xml +++ b/server/user.jobengine.executors/jobtemplates/fake-concurrent.xml @@ -4,34 +4,19 @@ - - - - - - - - - - - - - - - - + - + - + diff --git a/server/user.jobengine.executors/jobtemplates/submit-child.xml b/server/user.jobengine.executors/jobtemplates/submit-child.xml new file mode 100644 index 00000000..935df111 --- /dev/null +++ b/server/user.jobengine.executors/jobtemplates/submit-child.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/server/user.jobengine.executors/jobtemplates/sys-recreate-lowres.xml b/server/user.jobengine.executors/jobtemplates/sys-recreate-lowres.xml index 1b6d7322..3c1381db 100644 --- a/server/user.jobengine.executors/jobtemplates/sys-recreate-lowres.xml +++ b/server/user.jobengine.executors/jobtemplates/sys-recreate-lowres.xml @@ -7,7 +7,6 @@ - @@ -103,9 +102,6 @@ - - - diff --git a/server/user.jobengine.executors/src/user/jobengine/server/steps/ArchiveMaterialSubmitStep.java b/server/user.jobengine.executors/src/user/jobengine/server/steps/ArchiveMaterialSubmitStep.java index 5ded673e..4a8d30eb 100644 --- a/server/user.jobengine.executors/src/user/jobengine/server/steps/ArchiveMaterialSubmitStep.java +++ b/server/user.jobengine.executors/src/user/jobengine/server/steps/ArchiveMaterialSubmitStep.java @@ -15,16 +15,12 @@ public class ArchiveMaterialSubmitStep extends JobStep { private static final Logger logger = LogManager.getLogger(); private static final String JOBTEMPLATE = "archive-material.xml"; private static final String KILL_DATE_DAYS = "killDateDays"; - private static final String WEB_PATH = "webPath"; - private static final String TRANSCODER_TARGET_PATH = "transcoderTargetPath"; private static final String ARCHIVE = "Archiválás"; - private static final String GLOBAL_SOURCE_PATH = "globalSourcePath"; private static final String ARCHIVE_ITEM = "archiveItem"; private Marker marker; @StepEntry - public Object[] execute(String globalSourcePath, List archiveList, String transcoderTargetPath, String webPath, int killDateDays, - IJobEngine jobEngine, IJobRuntime jobRuntime) throws Exception { + public Object[] execute(List archiveList, int killDateDays, IJobEngine jobEngine, IJobRuntime jobRuntime) throws Exception { marker = jobRuntime.getMarker(); if (archiveList == null || archiveList.size() == 0) return null; @@ -34,8 +30,7 @@ public class ArchiveMaterialSubmitStep extends JobStep { ArchiveItem archiveItem = archiveList.get(i); try { IJobRuntime runtime = jobEngine.submit(jobRuntime, null, JOBTEMPLATE, ARCHIVE, - ListUtils.asMap(ARCHIVE_ITEM, archiveItem, GLOBAL_SOURCE_PATH, globalSourcePath, TRANSCODER_TARGET_PATH, transcoderTargetPath, - WEB_PATH, webPath, KILL_DATE_DAYS, killDateDays)); + ListUtils.asMap(ARCHIVE_ITEM, archiveItem, KILL_DATE_DAYS, killDateDays)); setProgress((i + 1) * 100 / archiveList.size()); //TODO kivezetni a submit hibaüzenetet if (runtime == null) diff --git a/server/user.jobengine.executors/src/user/jobengine/server/steps/AttachLowresStep.java b/server/user.jobengine.executors/src/user/jobengine/server/steps/AttachLowresStep.java index c6ca8c94..40c5c321 100644 --- a/server/user.jobengine.executors/src/user/jobengine/server/steps/AttachLowresStep.java +++ b/server/user.jobengine.executors/src/user/jobengine/server/steps/AttachLowresStep.java @@ -34,8 +34,8 @@ public class AttachLowresStep extends JobStep { @StepEntry public Object[] execute(Media mediaCubeMedia, String localLowresTargetPath, String webPath) throws Exception { - this.marker = jobRuntime.getMarker(); - this.manager = (IItemManager) jobRuntime.getPersister(); + this.marker = getSessionMarker(); + this.manager = getManager(); this.store = check(manager.getSystemStore(true), "lowres Store"); this.fileType = check(manager.getFileType(LOWRES_FILETYPE), "lowres FileType"); this.mediaCubeMedia = check(mediaCubeMedia, "mediaCubeMedia"); diff --git a/server/user.jobengine.executors/src/user/jobengine/server/steps/CancelableStep.java b/server/user.jobengine.executors/src/user/jobengine/server/steps/CancelableStep.java index 334efe75..6a6c8ff3 100644 --- a/server/user.jobengine.executors/src/user/jobengine/server/steps/CancelableStep.java +++ b/server/user.jobengine.executors/src/user/jobengine/server/steps/CancelableStep.java @@ -1,22 +1,26 @@ package user.jobengine.server.steps; -import user.jobengine.server.IJobRuntime; - public class CancelableStep extends JobStep { int count = 10; @StepEntry - public Object[] execute(IJobRuntime jobRuntime) { + public Object[] execute() throws Exception { try { for (int i = 0; i < count; i++) { - if (jobRuntime.isWaitingCancel() || jobRuntime.isWaitingSuspend()) + if (getJobRuntime().isWaitingCancel() || getJobRuntime().isWaitingSuspend()) break; Thread.sleep(1000); - jobRuntime.incrementProgress((i + 1) * count); + setProgress((i + 1) * count); } } catch (Exception e) { e.printStackTrace(); } + + // Path filePath = Paths.get("/mnt/ISILON/ARCHIVE_RESTORE/XXX/xxx-ARCH-209740793_2-207990326.MXF"); + // MediaInfo mi = new MediaInfo(filePath); + // mi.process(); + // if (true) + // throw new Exception("Frames. " + mi.getFrames()); return null; } diff --git a/server/user.jobengine.executors/src/user/jobengine/server/steps/CreateArchiveItem.java b/server/user.jobengine.executors/src/user/jobengine/server/steps/CreateArchiveItemStep.java similarity index 90% rename from server/user.jobengine.executors/src/user/jobengine/server/steps/CreateArchiveItem.java rename to server/user.jobengine.executors/src/user/jobengine/server/steps/CreateArchiveItemStep.java index e3740030..cec48f78 100644 --- a/server/user.jobengine.executors/src/user/jobengine/server/steps/CreateArchiveItem.java +++ b/server/user.jobengine.executors/src/user/jobengine/server/steps/CreateArchiveItemStep.java @@ -13,7 +13,7 @@ import user.commons.nosql.NoSQLUtils; import user.jobengine.db.Media; import user.jobengine.db.Store; -public class CreateArchiveItem extends JobStep { +public class CreateArchiveItemStep extends JobStep { private static final Logger logger = LogManager.getLogger(); @StepEntry @@ -29,7 +29,7 @@ public class CreateArchiveItem extends JobStep { if (mediaCubeMedia.getMediaFiles().get(0).getStoreId() != highResStore.getId()) throw new Exception("Expected media store is a high-res store"); - String name = mediaCubeMedia.getMediaFilesName(); + String name = mediaCubeMedia.getMediaFileRealName(); archiveItem = new ArchiveItem(); archiveItem.setMediaFile(Paths.get(localHiresPath, name).toString()); collection.save(new BasicDBObject("name", name)); diff --git a/server/user.jobengine.executors/src/user/jobengine/server/steps/CreateMissingLowresStep.java b/server/user.jobengine.executors/src/user/jobengine/server/steps/CreateMissingLowresStep.java index bc1ff78a..d8c18209 100644 --- a/server/user.jobengine.executors/src/user/jobengine/server/steps/CreateMissingLowresStep.java +++ b/server/user.jobengine.executors/src/user/jobengine/server/steps/CreateMissingLowresStep.java @@ -1,7 +1,6 @@ package user.jobengine.server.steps; import java.nio.file.Paths; -import java.util.List; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; @@ -15,7 +14,6 @@ import user.commons.MediaCubeUndoMarker; import user.commons.nosql.NoSQLUtils; import user.jobengine.db.IItemManager; import user.jobengine.db.Media; -import user.jobengine.db.MediaFile; import user.jobengine.db.Store; import user.jobengine.server.IJobEngine; import user.jobengine.server.IJobRuntime; @@ -44,7 +42,7 @@ public class CreateMissingLowresStep extends JobStep { return null; } - String name = media.getMediaFilesName(); + String name = media.getMediaFileRealName(); result[0] = media; ArchiveItem archiveItem = new ArchiveItem(); archiveItem.setMediaFile(Paths.get(localHiresPath, name).toString()); @@ -69,19 +67,8 @@ public class CreateMissingLowresStep extends JobStep { try { long mediaId = rs.getLong(1); Media media = manager.getMedia(mediaId); - //a nevgeneralas miatt az eredeti MediaFilesName nem jo, a pontos nev kell nekunk - List mediaFiles = media.getMediaFiles(); - if (mediaFiles != null) { - for (MediaFile mf : mediaFiles) { - if (mf.getStoreId() == highResStore.getId()) { - media.setMediaFilesName(mf.getRelativePath()); - break; - } - } - } - - String name = media.getMediaFilesName(); + String name = media.getMediaFileRealName(); long existing = collection.find(new BasicDBObject("name", name)).count(); if (existing > 0) return true; diff --git a/server/user.jobengine.executors/src/user/jobengine/server/steps/FakeStep.java b/server/user.jobengine.executors/src/user/jobengine/server/steps/FakeStep.java index 97ade7df..13ab5eae 100644 --- a/server/user.jobengine.executors/src/user/jobengine/server/steps/FakeStep.java +++ b/server/user.jobengine.executors/src/user/jobengine/server/steps/FakeStep.java @@ -6,8 +6,6 @@ import org.apache.logging.log4j.Logger; import user.jobengine.server.IJobEngine; import user.jobengine.server.IJobRuntime; import user.mediacube.metadata.interfaces.IMetadataProvider; -import user.mediacube.metadata.interfaces.IMetadataProviderFactory; -import user.mediacube.metadata.interfaces.MetadataProviderType; public class FakeStep extends JobStep { private static final Logger logger = LogManager.getLogger(); @@ -19,6 +17,9 @@ public class FakeStep extends JobStep { public Object[] execute(long itemID, IJobEngine jobEngine, IJobRuntime jobRuntime) throws Exception { Object[] result = { itemID + 1 }; + // if (result != null) + // throw new Exception( + // "Ez most egy nagyon hosszú hibaüzenet szeretne lenni, amit remélem hogy több sorban fogok látni. Mert ha nem! Akko lesz nemulass..."); // Files.copy(Paths.get("/etc/security/limits.conf"), Paths.get("/etc/security/limits.conf.bak")); // Files.write(Paths.get("/etc/security/limits.conf"), new byte[0], StandardOpenOption.TRUNCATE_EXISTING); @@ -37,7 +38,7 @@ public class FakeStep extends JobStep { break; jobRuntime.incrementProgress((i + 1) * count); for (int j = 0; j < 100; j++) { - Thread.sleep(1000); + Thread.sleep(10); } //jobEngine.sendMessage(new CancelRequest(jobRuntime.getId())); @@ -51,10 +52,4 @@ public class FakeStep extends JobStep { return result; } - public void test() { - IMetadataProviderFactory factory = getService(IMetadataProviderFactory.class); - metadataProvider = factory.getProvider(MetadataProviderType.HSM); - logger.info(jobRuntime.getMarker(), metadataProvider); - } - } diff --git a/server/user.jobengine.executors/src/user/jobengine/server/steps/HSMMigrateStep.java b/server/user.jobengine.executors/src/user/jobengine/server/steps/HSMMigrateStep.java index 6c8f3cf5..7bcd3176 100644 --- a/server/user.jobengine.executors/src/user/jobengine/server/steps/HSMMigrateStep.java +++ b/server/user.jobengine.executors/src/user/jobengine/server/steps/HSMMigrateStep.java @@ -95,8 +95,7 @@ public class HSMMigrateStep extends JobStep { @SuppressWarnings("serial") @StepEntry public Object[] execute(String sourceLocation, String targetLocation) throws Exception { - if (jobRuntime != null) - marker = jobRuntime.getMarker(); + marker = getJobRuntime().getMarker(); //remove from prod //cleanupHistory(); hsmProvider = getMetadataProvider(MetadataProviderType.HSM); @@ -141,6 +140,13 @@ public class HSMMigrateStep extends JobStep { } } setProgress(p++ * 100 / contents.size()); + + if (getJobRuntime().isWaitingCancel()) { + logger.info("Job canceled by user"); + //ne mentsuk a szalagot meg + return null; + } + } if (oneSuccess && !hasError) { @@ -210,7 +216,7 @@ public class HSMMigrateStep extends JobStep { return false; } - IItemManager manager = (IItemManager) jobRuntime.getPersister(); + IItemManager manager = getManager(); MediaFileDAO mfDAO = (MediaFileDAO) manager.getBaseDAO(MediaFile.class); List mediaFiles = mfDAO.getByHouseId(source.getFileName().toString()); if (mediaFiles != null && mediaFiles.size() > 0) { diff --git a/server/user.jobengine.executors/src/user/jobengine/server/steps/MediaToolStep.java b/server/user.jobengine.executors/src/user/jobengine/server/steps/MediaToolStep.java index 8dc0ba4f..031f81f9 100644 --- a/server/user.jobengine.executors/src/user/jobengine/server/steps/MediaToolStep.java +++ b/server/user.jobengine.executors/src/user/jobengine/server/steps/MediaToolStep.java @@ -16,7 +16,7 @@ public class MediaToolStep extends JobStep { @StepEntry public Object[] execute(ArchiveItem archiveItem, Media mediaCubeMedia) throws Exception { - marker = jobRuntime.getMarker(); + marker = getSessionMarker(); if (mediaCubeMedia.getLength() > 0) return null; diff --git a/server/user.jobengine.executors/src/user/jobengine/server/steps/SubmitChildStep.java b/server/user.jobengine.executors/src/user/jobengine/server/steps/SubmitChildStep.java new file mode 100644 index 00000000..c934f317 --- /dev/null +++ b/server/user.jobengine.executors/src/user/jobengine/server/steps/SubmitChildStep.java @@ -0,0 +1,14 @@ +package user.jobengine.server.steps; + +import user.commons.ListUtils; + +public class SubmitChildStep extends JobStep { + @StepEntry + public Object[] execute() throws Exception { + if (getJobRuntime().forkPrepare()) + getEngine().submit(getJobRuntime(), null, "fake.xml", "Submit test", ListUtils.asMap("itemID", 1L)); + getJobRuntime().forkWaitComplete(); + return null; + } + +} 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 562ad8f2..b7e82a36 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 @@ -42,17 +42,17 @@ public class TSMBackupStep extends JobStep { private Marker marker; @StepEntry - public Object[] execute(ArchiveItem archiveItem, Media mediaCubeMedia, int killDateDays, IJobEngine jobEngine, IJobRuntime jobRuntime) throws Exception { - marker = jobRuntime.getMarker(); + public Object[] execute(ArchiveItem archiveItem, Media mediaCubeMedia, int killDateDays) throws Exception { + marker = getSessionMarker(); File sourceMediaFile = new File(archiveItem.getMediaFile()); String sourceFileName = sourceMediaFile.getName(); String details = String.format("%s (%d bytes)", sourceFileName, sourceMediaFile.length()); try { - setAndCheck(archiveItem, mediaCubeMedia, jobEngine); + setAndCheck(archiveItem, mediaCubeMedia, getEngine()); - jobRuntime.setDescription(String.format("%s: %s", jobRuntime.getDescription(), details)); + getJobRuntime().setDescription(String.format("%s: %s", getJobRuntime().getDescription(), details)); //A dupla ellenorzes a napon beluli ismetlesek miatt kell long existingMediaId = archiveItem.getExistingMediaId(); @@ -65,14 +65,20 @@ public class TSMBackupStep extends JobStep { if (existingMediaId == 0) existingMediaId = ItemManagerExtensions.getExistingRundownMedia(manager, sourceFileName.replace(MXFEXT, "")); - // a-z, A-Z, 0-9. For example: WRMcpIk7, s57JwCVA - //veletlenszeru neveket adunk! - String targetFileName = String.format("%s-%s", RandomStringUtils.randomAlphanumeric(8), sourceFileName); + boolean randomizeName = Boolean.parseBoolean(System.getProperty("jobengine.randomize.archives", "false")); + + String targetFileName; + if (randomizeName) { + // a-z, A-Z, 0-9. For example: WRMcpIk7, s57JwCVA + //veletlenszeru neveket adunk! + targetFileName = String.format("%s-%s", RandomStringUtils.randomAlphanumeric(8), sourceFileName); + } else + targetFileName = sourceFileName; if (existingMediaId == 0) { StoreUri sourceUri = manager.createStoreUri(RemoteStoreProtocol.LOCAL, sourceMediaFile.getParent().toString()); - final IJobRuntime runtime = jobRuntime; + final IJobRuntime runtime = getJobRuntime(); sourceUri.addProgressListener(new IProgressEventListener() { @Override public void progressChanged(ProgressEvent evt) { diff --git a/server/user.jobengine.executors/src/user/jobengine/server/steps/TranscodeStep.java b/server/user.jobengine.executors/src/user/jobengine/server/steps/TranscodeStep.java index 5a68f813..1b1cda90 100644 --- a/server/user.jobengine.executors/src/user/jobengine/server/steps/TranscodeStep.java +++ b/server/user.jobengine.executors/src/user/jobengine/server/steps/TranscodeStep.java @@ -6,8 +6,8 @@ import user.jobengine.server.IJobRuntime; public class TranscodeStep extends JobStep { @StepEntry - public Object[] execute(String globalSourcePath, ArchiveItem archiveItem, Media mediaCubeMedia, String transcoderTargetPath, String webPath, - IJobEngine jobEngine, IJobRuntime jobRuntime) throws Exception { + public Object[] execute(String globalSourcePath, ArchiveItem archiveItem, Media mediaCubeMedia, String transcoderTargetPath, IJobEngine jobEngine, + IJobRuntime jobRuntime) throws Exception { int version = 0; try { version = Integer.parseInt(System.getProperty("jobengine.transcoder.version")); diff --git a/server/user.jobengine.executors/src/user/jobengine/server/steps/UpdateGhostMediaData.java b/server/user.jobengine.executors/src/user/jobengine/server/steps/UpdateGhostMediaData.java index 7b37d3cc..1507e4c1 100644 --- a/server/user.jobengine.executors/src/user/jobengine/server/steps/UpdateGhostMediaData.java +++ b/server/user.jobengine.executors/src/user/jobengine/server/steps/UpdateGhostMediaData.java @@ -27,6 +27,8 @@ public class UpdateGhostMediaData extends JobStep { List mediaFiles = manager.getMedia(mediaCubeMedia.getId()).getMediaFiles(); if (mediaFiles != null && mediaFiles.size() == 2) { Store highresStore = manager.getSystemStore(false); + + //TODO atvezetni a lowres store lekerdezest az alternate-re Store lowresStore = manager.getSystemStore(true); MediaFile lowres = get(lowresStore, mediaFiles); MediaFile highres = get(highresStore, mediaFiles); diff --git a/server/user.jobengine.osgi.commons/src/user/commons/FFAStransAPI.java b/server/user.jobengine.osgi.commons/src/user/commons/FFAStransAPI.java index e0cad9cd..5da3b357 100644 --- a/server/user.jobengine.osgi.commons/src/user/commons/FFAStransAPI.java +++ b/server/user.jobengine.osgi.commons/src/user/commons/FFAStransAPI.java @@ -237,20 +237,25 @@ public class FFAStransAPI implements IFFAStransAPI { long started = System.currentTimeMillis(); - BasicDBObject status = getStatus(jobId); - + // BasicDBObject status = getStatus(jobId); + // + // while (true) { + // status = getStatus(jobId); + // long current = System.currentTimeMillis(); + // if (status != null || current - started > 15 * 60 * 1000) + // break; + // + // Thread.sleep(pollIntervall); + // } + + BasicDBObject status = null; + boolean hasAnyResponse = false; while (true) { - status = getStatus(jobId); - long current = System.currentTimeMillis(); - if (status != null || current - started > 15 * 60 * 1000) - break; - - Thread.sleep(pollIntervall); - } + long queryTime = System.currentTimeMillis(); - while (true) { status = getStatus(jobId); if (status != null) { + hasAnyResponse = true; List splits = NoSQLUtils.asList(status, "splits"); int current = 0; @@ -260,7 +265,6 @@ public class FFAStransAPI implements IFFAStransAPI { current += (int) Float.parseFloat(prg); } current = current / splits.size(); - //System.out.println(String.format("%s %s %s", current, progress, current != progress)); } if (current != progress) { progress = current; @@ -271,27 +275,27 @@ public class FFAStransAPI implements IFFAStransAPI { } else { logger.info("{} status not exists, checking history", inputFileName); listener.onProgressChanged(100); - BasicDBObject history = null; - int loop = 10; - //ha tul gyorsan kerdezzuk le, meg nincs se history se status - while (history == null || loop == 0) { - history = getHistory(); - loop--; - Thread.sleep(pollIntervall); - } + BasicDBObject history = getHistory(); + if (history != null) { + hasAnyResponse = true; + long state = NoSQLUtils.asLong(history, "state"); + String jobEnd = history.getString("job_end"); + if (history == null || state != 1) { + String error = NoSQLUtils.asString(history, "outcome"); + if (error == null) + error = "Not specified error occured"; + throw new Exception("State: " + state + ", message: " + error); + } else { + logger.info("{} | completed", inputFileName); + break; + } - long state = NoSQLUtils.asLong(history, "state"); - if (history == null || (state != 1 && state != 0)) { - String error = NoSQLUtils.asString(history, "outcome"); - if (error == null) - error = "Not specifiedy error occured"; - throw new Exception("Transcode error. State: " + state + ", error: " + error); - } else { - logger.info("{} | completed", inputFileName); - break; } - } + + //5 percig nincs valasz + if (!hasAnyResponse && (queryTime - started > 10 * 60 * 1000)) + throw new Exception("Transcoder timeout"); Thread.sleep(pollIntervall); } } diff --git a/server/user.jobengine.osgi.db/migrations/scripts/007_add_alternate_store.sql b/server/user.jobengine.osgi.db/migrations/scripts/007_add_alternate_store.sql index ed0e1edd..772565c6 100644 --- a/server/user.jobengine.osgi.db/migrations/scripts/007_add_alternate_store.sql +++ b/server/user.jobengine.osgi.db/migrations/scripts/007_add_alternate_store.sql @@ -27,7 +27,7 @@ INSERT INTO STOREURI (STOREID, PROTOCOL, URI, ISSTREAM, ISSOURCE, ISTARGET) INSERT INTO STOREURI (STOREID, PROTOCOL, URI, ISSTREAM, ISSOURCE, ISTARGET) VALUES -((SELECT ID FROM STORE WHERE NAME='Alternate Low-res'), 'LOCAL', '/mediacube/data/lowres/www/video/ITF3', 'N', 'Y', 'Y') +((SELECT ID FROM STORE WHERE NAME='Alternate Low-res'), 'LOCAL', '/mediacube/data/lowres/www/video/IFT3', 'N', 'Y', 'Y') @ -- //@UNDO diff --git a/server/user.jobengine.osgi.db/src/user/jobengine/db/Media.java b/server/user.jobengine.osgi.db/src/user/jobengine/db/Media.java index c15074fd..69f473f3 100644 --- a/server/user.jobengine.osgi.db/src/user/jobengine/db/Media.java +++ b/server/user.jobengine.osgi.db/src/user/jobengine/db/Media.java @@ -29,6 +29,7 @@ public class Media extends DynamicAttributes { private boolean isPartialEnabled; private byte[] poster = null; private String mediaFilesName; + private String mediaFileRealName; private int mediaFilesCount = -1; public void appendMediaFile(MediaFile mediaFile) { @@ -68,6 +69,22 @@ public class Media extends DynamicAttributes { return this.length; } + @JsonIgnore + public String getMediaFileRealName() { + if (mediaFileRealName == null) { + List mediaFiles = getMediaFiles(); + if (mediaFiles != null) { + for (MediaFile mf : mediaFiles) { + if (mf.getStore().isSystem() && !mf.getStore().isLowres()) { + mediaFileRealName = mf.getRelativePath(); + break; + } + } + } + } + return mediaFileRealName; + } + @SuppressWarnings("unchecked") @JsonIgnore public List getMediaFiles() { diff --git a/server/user.jobengine.osgi.server/WEB-INF/web.xml b/server/user.jobengine.osgi.server/WEB-INF/web.xml index a5f81153..177b6de9 100644 --- a/server/user.jobengine.osgi.server/WEB-INF/web.xml +++ b/server/user.jobengine.osgi.server/WEB-INF/web.xml @@ -69,7 +69,8 @@ default.jsp index.zhtml - + Everything on the app diff --git a/server/user.jobengine.osgi.server/pages/joblist.zul b/server/user.jobengine.osgi.server/pages/joblist.zul index 1640677c..a078b635 100644 --- a/server/user.jobengine.osgi.server/pages/joblist.zul +++ b/server/user.jobengine.osgi.server/pages/joblist.zul @@ -37,9 +37,9 @@ - + emptyMessage="Nincs futó folyamat" > @@ -63,7 +63,7 @@ - + diff --git a/server/user.jobengine.osgi.server/pages/login.zul b/server/user.jobengine.osgi.server/pages/login.zul index fdec0cf9..01ded651 100644 --- a/server/user.jobengine.osgi.server/pages/login.zul +++ b/server/user.jobengine.osgi.server/pages/login.zul @@ -3,12 +3,12 @@ + border="normal" hflex="min" style="background-color: #212121"> - + - diff --git a/server/user.jobengine.osgi.server/resources/i3-label_hu.properties b/server/user.jobengine.osgi.server/resources/i3-label_hu.properties index f7d0886d..1365bff0 100644 --- a/server/user.jobengine.osgi.server/resources/i3-label_hu.properties +++ b/server/user.jobengine.osgi.server/resources/i3-label_hu.properties @@ -1,5 +1,5 @@ -version=2.5.0 -footer=2016-2019 © Copyright User Rendszerház Kft. +version=2.5.1 +footer=2016-2020 © Copyright User Rendszerház Kft. login_info=Információ login_dialogtitle=Bejelentkezés diff --git a/server/user.jobengine.osgi.server/src/user/jobengine/server/IJobEngine.java b/server/user.jobengine.osgi.server/src/user/jobengine/server/IJobEngine.java index ccf142dc..1fd6bea7 100644 --- a/server/user.jobengine.osgi.server/src/user/jobengine/server/IJobEngine.java +++ b/server/user.jobengine.osgi.server/src/user/jobengine/server/IJobEngine.java @@ -124,6 +124,8 @@ public interface IJobEngine { IJobRuntime submit(String template, String name, Map parameters, String owner) throws JobEngineException; - void suspendJob(Throwable t, IJobRuntime jobRuntime); + void suspendExecutingJob(Throwable t, IJobRuntime jobRuntime); + + void suspendWaitExecutorJob(Throwable t, IJobRuntime jobRuntime); } diff --git a/server/user.jobengine.osgi.server/src/user/jobengine/server/JobEngine.java b/server/user.jobengine.osgi.server/src/user/jobengine/server/JobEngine.java index f10f73c6..dafd1f8d 100644 --- a/server/user.jobengine.osgi.server/src/user/jobengine/server/JobEngine.java +++ b/server/user.jobengine.osgi.server/src/user/jobengine/server/JobEngine.java @@ -142,7 +142,9 @@ public class JobEngine implements IJobEngine { public static final String TEMPLATEROOT = "jobengine.jobtemplates.root"; public static final String STEPSROOT = "jobengine.jobsteps.root"; public static final String STEPSALTERNATEROOT = "jobengine.jobsteps.alternate.root"; + private static final String SCHEDULEDEXECUTION_DISABLED = "jobengine.scheduledexecution.disabled"; private static final String EXECUTORCONFIGFILE = "config.xml"; + static private IItemManager itemManager; private static IJobEngine instance; @@ -181,6 +183,11 @@ public class JobEngine implements IJobEngine { * A MAM motor példányosítása. Ennek során létrejönnek a várakozási sorok, az ütemező szál, az üzenet kezelő szál. */ public JobEngine() { + try { + isScheduledExecutionDisabled = Boolean.parseBoolean(System.getProperty(SCHEDULEDEXECUTION_DISABLED, "false")); + } finally { + } + runQueue = new PriorityBlockingQueue(); messageQueue = new LinkedBlockingQueue(); jobTemplates = Collections.synchronizedList(new ArrayList()); @@ -226,12 +233,13 @@ public class JobEngine implements IJobEngine { if (typeName == null) throw new Exception(jobRuntime.toString() + " illegal execution state detected: executor name is null."); String executorName = String.valueOf(typeName); - if (!executors.containsKey(executorName)) + if (!executors.containsKey(executorName)) { throw new Exception(jobRuntime.toString() + " executor is unavailable: " + executorName); + } executors.get(executorName).submit(jobRuntime); } catch (Exception e) { logger.catching(e); - suspendJob(e, jobRuntime); + suspendWaitExecutorJob(e, jobRuntime); } // logger.info("addToExecutorQueue: " + typeName); // if (typeName != null && String.class.equals(typeName.getClass())) { @@ -918,14 +926,24 @@ public class JobEngine implements IJobEngine { } @Override - public void suspendJob(Throwable t, IJobRuntime jobRuntime) { + public void suspendExecutingJob(Throwable t, IJobRuntime jobRuntime) { String description = t.getClass().getSimpleName() + ": " + t.getMessage(); - logger.error(description); jobRuntime.setDescription(description); + logger.error(description); + //TODO itt miert FINISH a kovetkezo allapot, miert nem SUSPEND statusMachine.processAction(JobAction.FINISH, jobRuntime); closeSessionLog(jobRuntime); } + @Override + public void suspendWaitExecutorJob(Throwable t, IJobRuntime jobRuntime) { + String description = t.getClass().getSimpleName() + ": " + t.getMessage(); + jobRuntime.setDescription(description); + logger.error(description); + statusMachine.processAction(JobAction.SUSPEND, jobRuntime); + closeSessionLog(jobRuntime); + } + public synchronized void unbindItemManagerService(IItemManager service) { try { shutdown(); diff --git a/server/user.jobengine.osgi.server/src/user/jobengine/server/JobRuntime.java b/server/user.jobengine.osgi.server/src/user/jobengine/server/JobRuntime.java index ad4ff47d..33a4b99b 100644 --- a/server/user.jobengine.osgi.server/src/user/jobengine/server/JobRuntime.java +++ b/server/user.jobengine.osgi.server/src/user/jobengine/server/JobRuntime.java @@ -299,6 +299,9 @@ public class JobRuntime extends Job implements IJobRuntime { return ip; } + /*** + * Log session marker. A teljes folyamat osszes naplobejegyzese osszegyujtheto a segitsegevel. MediaCubeMarker tipusu, folyamatonkent uj peldany jon letre. + */ @Override public Marker getMarker() { if (sessionMarker == null) { @@ -436,13 +439,13 @@ public class JobRuntime extends Job implements IJobRuntime { } @Override - public boolean isWaitingExecutor() { - return getStatus() == JobStatus.WAIT_EXECUTOR; + public boolean isWaitingCancel() { + return getStatus() == JobStatus.WAIT_CANCEL; } @Override - public boolean isWaitingCancel() { - return getStatus() == JobStatus.WAIT_CANCEL; + public boolean isWaitingExecutor() { + return getStatus() == JobStatus.WAIT_EXECUTOR; } @Override diff --git a/server/user.jobengine.osgi.server/src/user/jobengine/server/JobStepExecutor.java b/server/user.jobengine.osgi.server/src/user/jobengine/server/JobStepExecutor.java index 6a187ca7..2c21dcff 100644 --- a/server/user.jobengine.osgi.server/src/user/jobengine/server/JobStepExecutor.java +++ b/server/user.jobengine.osgi.server/src/user/jobengine/server/JobStepExecutor.java @@ -67,7 +67,7 @@ public class JobStepExecutor implements IJobStepExecutor { logger.error("Error in {}", jobRuntime); Throwable t = e.getCause() == null ? e : e.getCause(); logger.catching(t); - jobEngine.suspendJob(t, jobRuntime); + jobEngine.suspendExecutingJob(t, jobRuntime); } finally { if (step != null) { step.cleanup(); diff --git a/server/user.jobengine.osgi.server/src/user/jobengine/server/steps/JobStep.java b/server/user.jobengine.osgi.server/src/user/jobengine/server/steps/JobStep.java index e15a63bf..42f8953b 100644 --- a/server/user.jobengine.osgi.server/src/user/jobengine/server/steps/JobStep.java +++ b/server/user.jobengine.osgi.server/src/user/jobengine/server/steps/JobStep.java @@ -15,6 +15,8 @@ import org.osgi.framework.BundleContext; import org.osgi.framework.FrameworkUtil; import org.osgi.framework.ServiceReference; +import user.commons.IEntityPersister; +import user.commons.MediaCubeMarker; import user.jobengine.db.IItemManager; import user.jobengine.server.IJobEngine; import user.jobengine.server.IJobRuntime; @@ -24,7 +26,8 @@ import user.jobengine.server.IJobRuntime; */ public class JobStep implements IJobStep { private static final Logger logger = LogManager.getLogger(); - protected IJobRuntime jobRuntime = null; + private IJobRuntime jobRuntime = null; + private IJobEngine jobEngine; private Object[] addParameter(Method stepEntry, Object[] inputs, Class type, Object parameter) { Object[] result = inputs; @@ -81,6 +84,10 @@ public class JobStep implements IJobStep { return null; } + protected IJobEngine getEngine() { + return jobEngine; + } + public IJobRuntime getJobRuntime() { return jobRuntime; } @@ -89,6 +96,11 @@ public class JobStep implements IJobStep { return (IItemManager) jobRuntime.getPersister(); } + /*** + * A runtime nevevel egyezo rendszerszintu gyerek. A szulo rendszer szintu MEDIACUBE cimkes. + * + * @return + */ protected Marker getMarker() { Marker parentMarker = MarkerManager.getMarker("MEDIACUBE"); Marker result = MarkerManager.getMarker(getRuntimeName()); @@ -96,6 +108,10 @@ public class JobStep implements IJobStep { return result; } + public IEntityPersister getPersister() { + return jobRuntime.getPersister(); + } + protected String getRuntimeName() { return jobRuntime.getName(); } @@ -113,10 +129,20 @@ public class JobStep implements IJobStep { return service; } + /*** + * JobRuntime session marker + * + * @return + */ + protected MediaCubeMarker getSessionMarker() { + return (MediaCubeMarker) jobRuntime.getMarker(); + } + @Override public Object[] run(IJobEngine jobEngine, IJobRuntime jobRuntime, Object[] inputs) throws Throwable { - Object[] result = null; + this.jobEngine = jobEngine; this.jobRuntime = jobRuntime; + Object[] result = null; //jobRuntime.setDescription("Feldolgozás: " + getClass().getSimpleName()); if (jobRuntime != null) diff --git a/server/user.jobengine.osgi.server/src/user/jobengine/zk/model/JobListModel.java b/server/user.jobengine.osgi.server/src/user/jobengine/zk/model/JobListModel.java index 39e0b629..c3f0b647 100644 --- a/server/user.jobengine.osgi.server/src/user/jobengine/zk/model/JobListModel.java +++ b/server/user.jobengine.osgi.server/src/user/jobengine/zk/model/JobListModel.java @@ -1,6 +1,5 @@ package user.jobengine.zk.model; -import java.util.Collection; import java.util.Map; import org.apache.logging.log4j.LogManager; @@ -8,7 +7,6 @@ import org.apache.logging.log4j.Logger; import org.zkoss.bind.annotation.BindingParam; import org.zkoss.bind.annotation.Command; import org.zkoss.bind.annotation.Init; -import org.zkoss.bind.annotation.NotifyChange; import org.zkoss.zk.ui.Executions; import org.zkoss.zk.ui.event.Event; import org.zkoss.zk.ui.event.EventListener; @@ -16,8 +14,6 @@ import org.zkoss.zul.ListModelList; import org.zkoss.zul.Messagebox; import org.zkoss.zul.Window; -import com.ibm.nosql.json.api.BasicDBObject; - import user.commons.ListUtils; import user.commons.nexio.INexioAPI; import user.commons.nexio.NexioDispatcher; @@ -40,7 +36,6 @@ public class JobListModel extends AsyncBaseModel implements IJobChangedListener private boolean startupDisabled; private boolean allExecutionDisabled; private boolean scheduledExecutionDisabled; - private Collection selectedJobs; @Command public void cancelJobs() { @@ -91,10 +86,6 @@ public class JobListModel extends AsyncBaseModel implements IJobChangedListener return newPriority; } - public Collection getSelectedJobs() { - return selectedJobs; - } - @Init public void init() { try { @@ -176,6 +167,7 @@ public class JobListModel extends AsyncBaseModel implements IJobChangedListener private void onJobDeleted(IJobRuntime job) { // selectedJobs.remove(job); // NotifyChange("selectedJobs"); + jobList.removeFromSelection(job); jobList.remove(job); notifyChange("jobList"); } @@ -268,11 +260,6 @@ public class JobListModel extends AsyncBaseModel implements IJobChangedListener jobEngine.setScheduledExecutionDisabled(scheduledExecutionDisabled); } - @NotifyChange({ "updatePriorityDisabled" }) - public void setSelectedJobs(Collection selectedJobs) { - this.selectedJobs = selectedJobs; - } - public void setShutdownDisabled(boolean shutdownDisabled) { this.shutdownDisabled = shutdownDisabled; notifyChange("shutdownDisabled"); diff --git a/server/user.jobengine.osgi.server/src/user/jobengine/zk/model/LoginModel.java b/server/user.jobengine.osgi.server/src/user/jobengine/zk/model/LoginModel.java index ef48a143..ad8139bd 100644 --- a/server/user.jobengine.osgi.server/src/user/jobengine/zk/model/LoginModel.java +++ b/server/user.jobengine.osgi.server/src/user/jobengine/zk/model/LoginModel.java @@ -1,7 +1,6 @@ package user.jobengine.zk.model; -import java.io.IOException; - +import org.apache.commons.lang.StringUtils; import org.zkoss.bind.annotation.AfterCompose; import org.zkoss.bind.annotation.Command; import org.zkoss.bind.annotation.ContextParam; @@ -22,16 +21,24 @@ public class LoginModel extends BaseModel { @AfterCompose public void afterCompose(@ContextParam(ContextType.VIEW) Component view) { query = SessionUtil.getQueryString(); + + MediaCubeConfig mediaCubeConfig = SessionUtil.getMediaCubeConfig(); + MediaCubeAuthentication authentication = mediaCubeConfig.getAuthentication(); + if (StringUtils.isNotEmpty(authentication.getDefaultUser()) && StringUtils.isNotBlank(authentication.getDefaultPassword())) + authenticate(authentication.getDefaultUser(), authentication.getDefaultPassword()); } @Command @NotifyChange({ "message" }) - public void authenticate() throws IOException { - if (!SessionUtil.authenticate(account, password)) { + public void authenticate() { + authenticate(account, password); + } + + private void authenticate(String user, String pwd) { + if (!SessionUtil.authenticate(user, pwd)) { setMessage("Hibás fiókadatok!"); return; } - Executions.sendRedirect("/" + query); } diff --git a/server/user.jobengine.osgi.server/src/user/jobengine/zk/model/MediaCubeAuthentication.java b/server/user.jobengine.osgi.server/src/user/jobengine/zk/model/MediaCubeAuthentication.java index 0829b3cb..204ecce5 100644 --- a/server/user.jobengine.osgi.server/src/user/jobengine/zk/model/MediaCubeAuthentication.java +++ b/server/user.jobengine.osgi.server/src/user/jobengine/zk/model/MediaCubeAuthentication.java @@ -7,6 +7,8 @@ public class MediaCubeAuthentication { private String adHost; private int adNonSecurePort; private String adBaseDn; + private String defaultUser; + private String defaultPassword; private List adAdminMap; private List adSubmitterMap; private List adEditorMap; @@ -39,6 +41,14 @@ public class MediaCubeAuthentication { return adSubmitterMap; } + public String getDefaultPassword() { + return defaultPassword; + } + + public String getDefaultUser() { + return defaultUser; + } + public List getLocalAccounts() { return localAccounts; } @@ -87,6 +97,14 @@ public class MediaCubeAuthentication { this.authEnabled = authEnabled; } + public void setDefaultPassword(String defaultPassword) { + this.defaultPassword = defaultPassword; + } + + public void setDefaultUser(String defaultUser) { + this.defaultUser = defaultUser; + } + public void setLocalAccounts(List localAccounts) { this.localAccounts = localAccounts; } 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 3da77565..2dd76466 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 @@ -51,6 +51,7 @@ import org.zkoss.zul.Hlayout; import org.zkoss.zul.ListModelList; import org.zkoss.zul.Menuitem; import org.zkoss.zul.Menupopup; +import org.zkoss.zul.Messagebox; import org.zkoss.zul.Paging; import org.zkoss.zul.Row; import org.zkoss.zul.Timer; @@ -249,8 +250,11 @@ public class SearchModel extends AsyncBaseModel { try { jobEngine.submit(CREATE_LOWRES_TEMPLATE, scheduledJob.getJobName(), parameters, SessionUtil.getUserPrincipal().getDisplayName()); + Messagebox.show("A proxy pótlása elindult, emailben értesíti a rendszer a folyamat végeztével.", "Információ", Messagebox.OK, + Messagebox.INFORMATION); } catch (JobEngineException e) { - logger.info("Hiba a job indításakor", e); + logger.info("Hiba a feladat indításakor", e); + Messagebox.show("Hiba a feladat indításakor. A rendszer üzenete: " + e.getMessage(), "Hiba", Messagebox.OK, Messagebox.ERROR); } } @@ -394,7 +398,13 @@ public class SearchModel extends AsyncBaseModel { StoreUri sourceStoreUri = store.getSourceStoreUri(RemoteStoreProtocol.HTTP); if (sourceStoreUri != null && sourceStoreUri.isStream()) { - ret = sourceStoreUri.toString(true); + + String base = store.isSystem() ? sourceStoreUri.toString(false) : sourceStoreUri.toString(true); + if (!base.endsWith("/")) + base += "/"; + String relative = mf.getRelativePath().replace("\\", "/"); + ret = base + relative; + logger.info("Found lowres on store {}, url is {}", store.getName(), ret); break; } } diff --git a/server/user.jobengine.osgi.services/WEB-INF/web.xml b/server/user.jobengine.osgi.services/WEB-INF/web.xml index 4e13f8e7..629b2ac1 100644 --- a/server/user.jobengine.osgi.services/WEB-INF/web.xml +++ b/server/user.jobengine.osgi.services/WEB-INF/web.xml @@ -61,6 +61,8 @@ /proxy/* + Everything on the app @@ -71,14 +73,4 @@ - - - - - - - - - - -- 2.54.0