git-tfs-id: [http://tfs.userrendszerhaz.hu:8080/tfs/DefaultCollection]$/MediaCube...
authorVásáry Dániel <daniel.vasary@userrendszerhaz.hu>
Thu, 10 Oct 2019 07:20:00 +0000 (07:20 +0000)
committerVásáry Dániel <daniel.vasary@userrendszerhaz.hu>
Thu, 10 Oct 2019 07:20:00 +0000 (07:20 +0000)
server/user.jobengine.executors/src/user/jobengine/server/steps/MetadataTransformStep.java
server/user.jobengine.osgi.db/src/user/jobengine/db/IItemManager.java
server/user.jobengine.osgi.db/src/user/jobengine/db/ItemManager.java
server/user.jobengine.osgi.db/test/user/jobengine/db/tfs4592418775602062522.java [new file with mode: 0644]

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