From 78b67e652d66946d0d93b950b53b3ee05bc44e04 Mon Sep 17 00:00:00 2001 From: =?utf8?q?V=C3=A1s=C3=A1ry=20D=C3=A1niel?= Date: Thu, 10 Oct 2019 07:20:00 +0000 Subject: [PATCH] git-tfs-id: [http://tfs.userrendszerhaz.hu:8080/tfs/DefaultCollection]$/MediaCube;C31565 --- .../server/steps/MetadataTransformStep.java | 18 +- .../src/user/jobengine/db/IItemManager.java | 2 +- .../src/user/jobengine/db/ItemManager.java | 12 +- .../jobengine/db/tfs4592418775602062522.java | 243 ++++++++++++++++++ 4 files changed, 263 insertions(+), 12 deletions(-) create mode 100644 server/user.jobengine.osgi.db/test/user/jobengine/db/tfs4592418775602062522.java diff --git a/server/user.jobengine.executors/src/user/jobengine/server/steps/MetadataTransformStep.java b/server/user.jobengine.executors/src/user/jobengine/server/steps/MetadataTransformStep.java index 46a42743..9d33d622 100644 --- a/server/user.jobengine.executors/src/user/jobengine/server/steps/MetadataTransformStep.java +++ b/server/user.jobengine.executors/src/user/jobengine/server/steps/MetadataTransformStep.java @@ -65,6 +65,14 @@ public class MetadataTransformStep extends JobStep { } } + private Item createItem(ArchiveItem archiveItem) { + Item mediaCubeItem = itemManager.getItemByHouseID(archiveItem.getItemHouseId(), archiveItem.getItemTitle()); + if (mediaCubeItem == null) + mediaCubeItem = itemManager.createItem(DEFAULT_MEDIATYPE, archiveItem.getItemTitle(), archiveItem.getItemDescription(), + archiveItem.getItemHouseId()); + return mediaCubeItem; + } + private Media createMedia(ArchiveItem archiveItem, Item mediaCubeItem, String mediaType) { Media mediaCubeMedia; mediaCubeMedia = itemManager.createMedia(mediaType, archiveItem.getMediaTitle(), archiveItem.getMediaDescription(), archiveItem.getMediaHouseId()); @@ -84,7 +92,7 @@ public class MetadataTransformStep extends JobStep { File sourceMediaFile = new File(archiveItem.getMediaFile()); String sourceFileName = sourceMediaFile.getName(); checkDuplicates(archiveItem, sourceFileName); - Item mediaCubeItem = getCreateItem(archiveItem); + Item mediaCubeItem = createItem(archiveItem); jobRuntime.incrementProgress(50); String mediaType = getCreateType(archiveItem); mediaCubeMedia = createMedia(archiveItem, mediaCubeItem, mediaType); @@ -103,14 +111,6 @@ public class MetadataTransformStep extends JobStep { return new Object[] { mediaCubeMedia }; } - private Item getCreateItem(ArchiveItem archiveItem) { - Item mediaCubeItem = itemManager.getItemByHouseID(archiveItem.getItemHouseId()); - if (mediaCubeItem == null) - mediaCubeItem = itemManager.createItem(DEFAULT_MEDIATYPE, archiveItem.getItemTitle(), archiveItem.getItemDescription(), - archiveItem.getItemHouseId()); - return mediaCubeItem; - } - private String getCreateType(ArchiveItem archiveItem) { String mediaType = archiveItem.getMediaType(); if (mediaType == null || mediaType.length() == 0) diff --git a/server/user.jobengine.osgi.db/src/user/jobengine/db/IItemManager.java b/server/user.jobengine.osgi.db/src/user/jobengine/db/IItemManager.java index ac44ee1c..fd61c327 100644 --- a/server/user.jobengine.osgi.db/src/user/jobengine/db/IItemManager.java +++ b/server/user.jobengine.osgi.db/src/user/jobengine/db/IItemManager.java @@ -201,7 +201,7 @@ public interface IItemManager extends IEntityPersister { Item getItem(long id); - Item getItemByHouseID(String houseID); + Item getItemByHouseID(String houseID, String title); ItemType getItemType(String itemTypeName); diff --git a/server/user.jobengine.osgi.db/src/user/jobengine/db/ItemManager.java b/server/user.jobengine.osgi.db/src/user/jobengine/db/ItemManager.java index c2a5c198..e7f4c552 100644 --- a/server/user.jobengine.osgi.db/src/user/jobengine/db/ItemManager.java +++ b/server/user.jobengine.osgi.db/src/user/jobengine/db/ItemManager.java @@ -35,6 +35,7 @@ import user.commons.remotestore.RemoteStoreProtocol; import user.commons.server.tcp.SignalServer; import user.jobengine.changehandler.IChangeHandler; import user.jobengine.changehandler.ItemTypeChangeHandlerFactory; +import user.jobengine.db.ItemManagerData.FilterLogic; import user.jobengine.db.ItemManagerData.FilterValueLogic; import user.jobengine.db.ItemManagerData.GuiType; import user.jobengine.db.ItemManagerData.ListType; @@ -664,15 +665,22 @@ public class ItemManager extends MemoryCache implements IItemManager { } @Override - public Item getItemByHouseID(String houseID) { + public Item getItemByHouseID(String houseID, String title) { traceIn(); Item result = null; SearchFilter filter = new SearchFilter(); filter.setMetadata(getStaticItemType().getMetadata("Anyag house ID")); filter.setValueLogic(FilterValueLogic.EQUALS); filter.setValues(Arrays.asList((Object) houseID)); + + SearchFilter filter1 = new SearchFilter(); + filter1.setLogic(FilterLogic.AND); + filter1.setMetadata(getStaticItemType().getMetadata("Anyag cím")); + filter1.setValueLogic(FilterValueLogic.EQUALS); + filter1.setValues(Arrays.asList((Object) title)); + QueryObject qo = new QueryObject(); - qo.setFilters(Arrays.asList(filter)); + qo.setFilters(Arrays.asList(filter, filter1)); // Exercise List searchResult = searchItem(qo); diff --git a/server/user.jobengine.osgi.db/test/user/jobengine/db/tfs4592418775602062522.java b/server/user.jobengine.osgi.db/test/user/jobengine/db/tfs4592418775602062522.java new file mode 100644 index 00000000..1880ac84 --- /dev/null +++ b/server/user.jobengine.osgi.db/test/user/jobengine/db/tfs4592418775602062522.java @@ -0,0 +1,243 @@ +package user.jobengine.db; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNotNull; +import static org.junit.Assert.assertNull; +import static org.junit.Assert.assertTrue; + +import java.sql.Timestamp; +import java.util.Arrays; +import java.util.Calendar; +import java.util.List; + +import org.junit.Test; + +import sqlj.runtime.ref.DefaultContext; +import user.commons.CalendarUtils; +import user.commons.IEntityBase; +import user.commons.StoreUri; +import user.commons.remotestore.RemoteStoreProtocol; +import user.jobengine.db.data.TestDB; + +public class TestItem extends TestBase { + + //@BeforeClass + public static void initialize() { + if (manager.getItemType("Visszarögzített") == null) + manager.createItemType("Visszarögzített", "Visszarögzített").add(); + + // TestDB.createStructure(); + // TestDB.createItemTypes(); + if (manager.getStaticItemType() == null) + TestDB.createStaticItemTypes(); + if (manager.getItemType("Generic") == null) + manager.createItemType("Generic", "Generic").add(); + + if (manager.getStore("TSM") == null) { + Store store = manager.createStore("TSM", true, false); + StoreUri storeUri = manager.createStoreUri(RemoteStoreProtocol.TSM, "MEDIACUBE"); + storeUri.setSource(true); + storeUri.setTarget(true); + storeUri.setUserName("mediacube"); + storeUri.setPassword("password"); + store.appendStoreUri(storeUri); + store.add(); + } + if (manager.getStore("Low-res") == null) { + Store store = manager.createStore("Low-res", true, true); + StoreUri storeUri = manager.createStoreUri(RemoteStoreProtocol.LOCAL, "/mediacube/data/lowres/www/video/"); + storeUri.setSource(true); + storeUri.setTarget(true); + store.appendStoreUri(storeUri); + storeUri = manager.createStoreUri(RemoteStoreProtocol.SMB, "\\\\10.10.1.26\\mclowres\\www\\video"); + storeUri.setSource(true); + storeUri.setTarget(false); + store.appendStoreUri(storeUri); + store.add(); + } + StoreUri storeUri = manager.createStoreUri(RemoteStoreProtocol.HTTP, "10.10.1.28/video"); + storeUri.setPortNumber(90); + storeUri.setSource(true); + storeUri.setTarget(false); + manager.getStore("Low-res").appendStoreUri(storeUri); + manager.getStore("Low-res").setPersister(manager); + manager.getStore("Low-res").add(); + + if (manager.getFileType("High-res") == null) { + FileType fileType = manager.createFileType("High-res", "High resolution material", "MPEG Video", "PCM", 1, 8, 25); + fileType.add(); + } + if (manager.getFileType("Low-res") == null) { + FileType fileType = manager.createFileType("Low-res", "Low resolution material", "MPEG-4", "AAC", 1, 4, 25); + fileType.add(); + } + + // if (manager.getStore("Local video") == null) { + // Store store = manager.createStore("Local video", false, false); + // StoreUri storeUri = manager.createStoreUri(RemoteStoreProtocol.HTTP, "localhost/lowres/"); + // store.appendStoreUri(storeUri); + // store.add(); + // } + // if (manager.getFileType("Lowres") == null) { + // FileType fileType = manager.createFileType("Lowres", "Streamable low-res video, 512Kbps", "WMVA", "WMA", 1, + // 1, 25); + // fileType.add(); + // } + + } + + @Test + public void testCreate() { + // Fixture + Item sut = manager.createItem("Adásanyag light", "Ötödik elem", "Scifi", null); + + // Exercise + sut.add(); + + // Verify + assertTrue(sut.getId() > 0); + } + + @Test + public void testCreateFull() { + // manager.truncate(); + Item item = manager.createItem("Generic", "Ötödik elem", "Scifi", ""); + item.add(); + + Media media = manager.createMedia("Generic", "Média1", "Nagyon frankó kis mozi.", null); + item.appendMedia(media); + item.add(); + + MediaFile mf = manager.createMediaFile("low.wmv", manager.getFileType("Lowres"), manager.getStore("Local video"), media); + mf.add(); + } + + @Test + public void testCreateManyAndSearch() { + + if (manager.getStaticItemType() == null) + TestDB.createStaticItemTypes(); + + for (int i = 0; i < 1000; i++) { + Item sut = manager.createItem("Default", "Hatodik elem" + i, "Scifi", i + ""); + sut.add(); + assertTrue(sut.getId() > 0); + System.out.println("Item created: " + i); + } + + SearchResult search = manager.searchItem("elem", 0, 9); + assertEquals(10, search.getItemCount()); + + for (Item item : search.getItems()) { + System.out.println(item.getTitle()); + } + } + + @Test + public void testCreateManyFull() { + // manager.truncate(); + + for (int i = 0; i < 1000; i++) { + Item item = manager.createItem("Generic", "Ötödik elem " + i, "Scifi", i + ""); + item.add(); + + Media media = manager.createMedia("Generic", "Média1", "Nagyon frankó kis mozi.", null); + item.appendMedia(media); + item.add(); + + MediaFile mf = manager.createMediaFile("low.wmv", manager.getFileType("Lowres"), manager.getStore("Local video"), media); + mf.add(); + + System.out.println("Item created: " + i); + } + } + + @Test + public void testCreateWithAttribute() { + // L�trehoz�s, dinamikus attrib�tummal. + // Fixture + Item sut = manager.createItem("Film", "Hatodik érzék", "Scifi", null); + String value1 = "Kalapács Miklós"; + String value2 = "Hagyó Zsuzsanna"; + int value3 = 2000; + + sut.setAttribute("Főszereplő", value1); + sut.setAttribute("Szinkron", value2); + sut.setAttribute("Gyártás éve", value3); + + // Exercise + sut.add(); + + // Verify + assertTrue(sut.getId() > 0); + + Item actual = (Item) manager.get(Item.class, sut.getId()); + assertEquals(value1, actual.getAttribute("Főpszereplő")); + assertEquals(value2, actual.getAttribute("Szinkron")); + assertEquals(value3, actual.getAttribute("Gyártás éve")); + } + + @Test + @SuppressWarnings("unchecked") + public void testCreateWithDomainAttribute() { + // Fixture + Item sut = null; + sut = manager.createItem("Domain", "Domain teszt record", "Scifi", null); + sut.setAttribute("Szereplők", Arrays.asList(new Domain("Kovács Gizi"), new Domain("Szekér Ivett"), new Domain("Hanka Barbara"))); + + // Exercise + sut.add(); + + // Verify + List domains = (List) sut.getAttribute("Szereplők"); + + assertNotNull(domains); + assertEquals(3, domains.size()); + for (Domain d : domains) { + assertTrue(d.getId() > 0); + assertTrue(d.getDomainCategoryId() > 0); + } + } + + @Test(expected = ItemManagerException.class) + public void testCreateWithUniqueAttribute() { + // L�trehoz�s, unique dinamikus attrib�tummal. + // Az els� besz�r�s sikeres, a m�sodik nem, mert a mez� UNIQUE + // Fixture + Item sut = null; + sut = manager.createItem("Adásanyag", "Nyolcadik kör", "Scifi", null); + sut.setAttribute("Kameraállás", "bal"); + sut.setAttribute("Csatorna", 3); + sut.add(); + + sut = manager.createItem("Adásanyag", "Kilencedik ház", "Scifi", null); + sut.setAttribute("Kameraállás", "bal"); + sut.setAttribute("Csatorna", 3); + + // Exercise, Verify + sut.add(); + } + + @Test + public void testCreateWorkflowActions_and_search() { + // manager.truncate(WorkflowAction.class); + // String[] tags = { "INGEST", "ARCHIVE", "TRANSCODE" }; + // for (int i = 0; i < 1000; i++) { + // Calendar touched = Calendar.getInstance(); + // Calendar started = Calendar.getInstance(); + // Calendar finished = Calendar.getInstance(); + // finished.add(Calendar.HOUR_OF_DAY, 1); + // String houseId = "house" + i % 10; + // WorkflowAction item = manager.createWorkflowAction(new Timestamp(touched.getTimeInMillis()), + // new Timestamp(started.getTimeInMillis()), new Timestamp(finished.getTimeInMillis()), true, houseId, + // houseId, houseId, houseId, tags[i % 3], 1000); + // item.add(); + // System.out.println("Created " + i + " id: " + item.getId()); + // } + // + WorkflowActionDAO dao = (WorkflowActionDAO) manager.getBaseDAO(WorkflowAction.class); + + Calendar begin = CalendarUtils.createZeroCalendar(); + Calendar end = CalendarUtils.createZeroCalendar(); + end.add(Calendar.DAY_OF_YEAR, 1); + List workflowActions = dao.getWorkflowActions(new Timestamp(begin.getTimeInMill \ No newline at end of file -- 2.54.0