git-tfs-id: [http://tfs.userrendszerhaz.hu:8080/tfs/DefaultCollection]$/MediaCube...
authorVásáry Dániel <daniel.vasary@userrendszerhaz.hu>
Mon, 12 Mar 2018 13:42:44 +0000 (13:42 +0000)
committerVásáry Dániel <daniel.vasary@userrendszerhaz.hu>
Mon, 12 Mar 2018 13:42:44 +0000 (13:42 +0000)
24 files changed:
server/-configuration/log4j2.xml
server/-configuration/scheduledjobs.json
server/user.jobengine.executors/config/config.xml
server/user.jobengine.executors/src/user/jobengine/server/steps/CopyForArchiveNEXIORecordingsStep.java
server/user.jobengine.executors/src/user/jobengine/server/steps/FakeStep.java
server/user.jobengine.executors/src/user/jobengine/server/steps/ImportStatisticsStep.java
server/user.jobengine.osgi.commons/src/user/commons/nosql/NoSQLUtils.java
server/user.jobengine.osgi.db/src/user/jobengine/db/ArchivedMedia.java [new file with mode: 0644]
server/user.jobengine.osgi.db/src/user/jobengine/db/IItemManager.java
server/user.jobengine.osgi.db/src/user/jobengine/db/ItemDAOEx.java
server/user.jobengine.osgi.db/src/user/jobengine/db/ItemManager.java
server/user.jobengine.osgi.db/src/user/jobengine/db/SearchResult.java
server/user.jobengine.osgi.db/test/user/jobengine/db/TestItem.java
server/user.jobengine.osgi.server/pages/index.zul
server/user.jobengine.osgi.server/pages/menu.zul
server/user.jobengine.osgi.server/pages/newshistory.zul
server/user.jobengine.osgi.server/pages/search_items.zul [deleted file]
server/user.jobengine.osgi.server/pages/searchitems.zul [new file with mode: 0644]
server/user.jobengine.osgi.server/resources/i3-label_hu.properties
server/user.jobengine.osgi.server/src/user/jobengine/zk/model/CachedListModel.java
server/user.jobengine.osgi.server/src/user/jobengine/zk/model/MissingMaterialsModel.java
server/user.jobengine.osgi.server/src/user/jobengine/zk/model/NewsHistoryCharts.java
server/user.jobengine.osgi.server/src/user/jobengine/zk/model/NewsHistoryModel.java
server/user.jobengine.osgi.server/src/user/jobengine/zk/model/SearchModel.java

index d24e9d3bfd4f55f0c2300edc909e5d3d7e4bc821..1be0d20ae4db151234852e25609bba356556c7fa 100644 (file)
@@ -19,7 +19,7 @@
                        </Filters>\r
                        <PatternLayout pattern="%d{HH:mm:ss.SSS} %-5level %logger{1}.%M - %marker - %msg (%F:%L) %n" />\r
                </Console>\r
-               <HTMLMailAppender name="MarkeredMail" subject="TEST MediaCube rendszerüzenet" to="vasary@elgekko.net" from="mediacubeserver@gmail.com" smtpHost="smtp.gmail.com"\r
+               <HTMLMailAppender name="MarkeredMail" subject="[localhost] MediaCube rendszerüzenet" to="shray.tarum@gmail.com" from="mediacubeserver@gmail.com" smtpHost="smtp.gmail.com"\r
                        smtpPort="465" smtpProtocol="smtps" smtpUsername="mediacubeserver@gmail.com" smtpPassword="salabakter" ignoreExceptions="false" bufferSize="1">\r
                        <Filters>\r
                                <MarkerFilter marker="MEDIACUBE" onMatch="ACCEPT" onMismatch="DENY" />\r
index beb98cbbce67646e021bdf8971f495f1cbea38c1..c29446f80f10ac84d68d009b6394bd59c670fe51 100644 (file)
@@ -31,7 +31,7 @@
       "template": "import-statistics.xml",\r
       "cronexpression": "0 0 0/1 1/1 * ? *",\r
       "parameters": [ \r
-       {"name": "daysBeforeNow", "value": 3, "type": "java.lang.Integer"}\r
+       {"name": "daysBeforeNow", "value": 6, "type": "java.lang.Integer"}\r
       ]\r
        },\r
        {\r
index 4366af6f06842770feb480a1c9363961683c3a32..7331063beadd8cc7c8b540c896afe4e080bf8c87 100644 (file)
@@ -13,7 +13,7 @@
        <executor className="user.jobengine.server.steps.FakeNoParamsStep" maxConcurrent="20"/>\r
        <executor className="user.jobengine.server.steps.FakeStep" maxConcurrent="20"/>\r
        <executor className="user.jobengine.server.steps.ImportMORPHEUSMissingMaterialsStep" maxConcurrent="1"/>\r
-       <executor className="user.jobengine.server.steps.ImportStatisticsStep" maxConcurrent="1"/>\r
+       <executor className="user.jobengine.server.steps.ImportStatisticsStep" maxConcurrent="7"/>\r
        <executor className="user.jobengine.server.steps.MetadataTransformStep" maxConcurrent="1"/>\r
        <executor className="user.jobengine.server.steps.OutputPathAndNameSelectorStep" maxConcurrent="1"/>\r
        <executor className="user.jobengine.server.steps.RecordingsArchiveItemBuilderStep" maxConcurrent="1"/>\r
index 03380a5db932c05fdc6b24fa33768e1176d8bc65..3c71a2a416cb4538f6b7327f0eac0946d50b24c6 100644 (file)
@@ -207,6 +207,33 @@ public class CopyForArchiveNEXIORecordingsStep extends JobStep {
                                        e.getMessage());\r
                        return null;\r
                }\r
+\r
+               if (clipName.startsWith("1900")) {\r
+                       Calendar cal = CalendarUtils.createCalendar(scheduledStart);\r
+                       cal.add(Calendar.MINUTE, 5);\r
+                       rundown = octopusAPI.getRundown(cal.getTime());\r
+                       if (rundown == null) {\r
+                               logger.error(systemMarker, "A '{}' anyaghoz nem található tükör '{}' kezdéssel, ezért nem archiválható.", clipName, scheduledStart);\r
+                               return null;\r
+                       }\r
+\r
+                       RundownArchive item2 = null;\r
+\r
+                       try {\r
+                               item2 = processRundow(rundown, clipName, duration);\r
+                       } catch (Exception e) {\r
+                               logger.catching(e);\r
+                               logger.error(systemMarker, "A '{}' anyag metaadatainak transzformálása sikertelen, ezért az nem archiválható. A rendszer hibaüzenete: {}",\r
+                                               e.getMessage());\r
+                               return null;\r
+                       }\r
+\r
+                       result.setItemTitle(result.getItemTitle() + " + NAPIAKT");\r
+                       StoryArchive storyArchive = result.getStoryArchives().get(0);\r
+                       StoryArchive storyArchive2 = item2.getStoryArchives().get(0);\r
+                       storyArchive.setMediaDesc(storyArchive.getMediaDesc() + "\r\n\r\n****** NAPIAKT ******\r\n\r\n" + storyArchive2.getMediaDesc());\r
+               }\r
+\r
                return result;\r
        }\r
 \r
index 5e49068cb3059fe31d198dc826476c1cc427cc11..b14dcade2fea615fa6dd21277d604217ef75a892 100644 (file)
@@ -26,8 +26,8 @@ public class FakeStep extends JobStep {
                                jobRuntime.incrementProgress((i + 1) * count);\r
                                Thread.sleep(100);\r
 \r
-                               if (i == 2)\r
-                                       throw new Exception("TESZT");\r
+                               //                              if (i == 2)\r
+                               //                                      throw new Exception("TESZT");\r
                                //logger.info("Progress {}", jobRuntime.getProgress());\r
                        }\r
                } catch (Exception e) {\r
index 547929fff6addd50307e84b3c84867b93cca3a13..e5e88c40c40bb0ada1ce8660715dd7de017cfaa8 100644 (file)
@@ -97,7 +97,7 @@ public class ImportStatisticsStep extends JobStep {
                BasicDBObject typeStat = new BasicDBObject();\r
                BasicDBObject typeStatRawData = new BasicDBObject();\r
                typeStat.put("rawData", typeStatRawData);\r
-               long sumduration = 0;\r
+               long sumDuration = 0;\r
                long sumIngestDuration = 0;\r
                long sumIngestCount = 0;\r
                long sumArchiveDuration = 0;\r
@@ -140,8 +140,8 @@ public class ImportStatisticsStep extends JobStep {
                                long archiveDuration = 0;\r
                                BasicDBObject archiveInfo = manager.getArchiveInfo(scheduledDate, String.valueOf(parentStoryId));\r
                                if (archiveInfo != null) {\r
-                                       archiveCount = ingestInfo.getLong("count");\r
-                                       archiveDuration = ingestInfo.getLong("duration");\r
+                                       archiveCount = archiveInfo.getLong("count");\r
+                                       archiveDuration = archiveInfo.getLong("duration");\r
                                        raw.put("archive_count", archiveCount);\r
                                        raw.put("archive_duration", archiveDuration);\r
                                        sumArchiveCount += archiveCount;\r
@@ -152,21 +152,15 @@ public class ImportStatisticsStep extends JobStep {
 \r
                                //planStat\r
                                if (sfCount > 0 && rdCount == 0) {\r
-                                       long planned = NoSQLUtils.asLong(planStat, "unreleased_count");\r
-                                       planned++;\r
-                                       planStat.put("unreleased_count", planned);\r
-                                       long plannedDuration = NoSQLUtils.asLong(planStat, "unreleased_duration");\r
-                                       planStat.put("unreleased_duration", plannedDuration + duration);\r
+                                       NoSQLUtils.addLong(planStat, "skip_count", 1);\r
+                                       NoSQLUtils.addLong(planStat, "skip_duration", duration);\r
                                }\r
                                if (rdCount > 0) {\r
-                                       long released = NoSQLUtils.asLong(planStat, "released_count");\r
-                                       released++;\r
-                                       planStat.put("released_count", released);\r
-                                       long releasedDuration = NoSQLUtils.asLong(planStat, "released_duration");\r
-                                       planStat.put("released_duration", releasedDuration + duration);\r
+                                       NoSQLUtils.addLong(planStat, "onair_count", 1);\r
+                                       NoSQLUtils.addLong(planStat, "onair_duration", duration);\r
 \r
                                        //typeStat\r
-                                       sumduration += duration;\r
+                                       sumDuration += duration;\r
                                        if (typeStatRawData.containsKey(label)) {\r
                                                BasicDBObject dbo = NoSQLUtils.asDBObject(typeStatRawData, label);\r
                                                dbo.put("count", dbo.getInt("count") + 1);\r
@@ -178,7 +172,7 @@ public class ImportStatisticsStep extends JobStep {
                }\r
 \r
                planStat.put("all_count", rawData.size());\r
-               planStat.put("all_duration", sumduration);\r
+               planStat.put("all_duration", sumDuration);\r
                planStat.put("archive_count", sumArchiveCount);\r
                planStat.put("archive_duration", sumArchiveDuration);\r
                planStat.put("ingest_count", sumIngestCount);\r
index f33996eefd4358c22fff80cb31a307b12560f586..20d0ec55ea824507b3c76f8866c04cbf40707baf 100644 (file)
@@ -22,6 +22,11 @@ public class NoSQLUtils {
                Pass = System.getProperty("jobengine.nosql.db.password");\r
        }\r
 \r
+       public static void addLong(BasicDBObject obj, String name, long value) {\r
+               long current = asLong(obj, name);\r
+               obj.put(name, current + value);\r
+       }\r
+\r
        public static BasicDBList asDBList(BasicDBObject obj, String name) {\r
                BasicDBList result = null;\r
                if (obj.containsKey(name) && (obj.get(name) instanceof BasicDBList))\r
diff --git a/server/user.jobengine.osgi.db/src/user/jobengine/db/ArchivedMedia.java b/server/user.jobengine.osgi.db/src/user/jobengine/db/ArchivedMedia.java
new file mode 100644 (file)
index 0000000..75db953
--- /dev/null
@@ -0,0 +1,23 @@
+package user.jobengine.db;\r
+\r
+public class ArchivedMedia {\r
+       private Item item;\r
+       private Media media;\r
+\r
+       public Item getItem() {\r
+               return item;\r
+       }\r
+\r
+       public Media getMedia() {\r
+               return media;\r
+       }\r
+\r
+       public void setItem(Item item) {\r
+               this.item = item;\r
+       }\r
+\r
+       public void setMedia(Media media) {\r
+               this.media = media;\r
+       }\r
+\r
+}\r
index 10110dbb4b34dc8dc0f4088ac0e90f90481249a9..7ac032f9363ff4f722cacf9f64be041cdd208432 100644 (file)
@@ -186,6 +186,8 @@ public interface IItemManager extends IEntityPersister {
 \r
        BasicDBObject getIngestInfo(Calendar scheduleDate, String houseId);\r
 \r
+       Item getItem(long id);\r
+\r
        Item getItemByHouseID(String houseID);\r
 \r
        ItemType getItemType(String itemTypeName);\r
@@ -345,6 +347,8 @@ public interface IItemManager extends IEntityPersister {
         */\r
        IEntityBase retrieveCached(Class<? extends IEntityBase> baseClass, Object key);\r
 \r
+       SearchResult<ArchivedMedia> search(String criteria, int fromResult, int toResult);\r
+\r
        /**\r
         * A bemeneti paraméterként kapott keresési feltételeknek megfelelő Anyagokat lekéri az adatbázisból és SearchResult objektumba csomagolva visszatér.\r
         *\r
@@ -353,7 +357,7 @@ public interface IItemManager extends IEntityPersister {
         */\r
        List<SearchResult> searchItem(QueryObject parameter);\r
 \r
-       SearchResult searchItem(String criteria, int fromResult, int toResult);\r
+       SearchResult<Item> searchItem(String criteria, int fromResult, int toResult);\r
 \r
        /**\r
         * A bemeneti paraméterként kapott keresési feltételeknek megfelelő Munkafolyamatokat lekéri az adaatbázisból.\r
index f10c22e6665ea318e6b8913116a5a190a640169e..8357e77514fcb61e19de680df7f097fd34f586ff 100644 (file)
@@ -232,8 +232,8 @@ public class ItemDAOEx {
                return results;\r
        }\r
 \r
-       public SearchResult search(String criteria, int fromResult, int toResult) {\r
-               SearchResult result = new SearchResult();\r
+       public SearchResult<Item> search(String criteria, int fromResult, int toResult) {\r
+               SearchResult<Item> result = new SearchResult<Item>();\r
 \r
                ResultSet rs = null;\r
                PreparedStatement st = null;\r
@@ -321,4 +321,95 @@ public class ItemDAOEx {
 \r
                return result;\r
        }\r
+\r
+       public SearchResult<ArchivedMedia> searchArchivedMedia(String criteria, int fromResult, int toResult) {\r
+               SearchResult<ArchivedMedia> result = new SearchResult<>();\r
+\r
+               ResultSet rs = null;\r
+               PreparedStatement st = null;\r
+               DefaultContext context = manager.getDbContext();\r
+               Connection connection = context.getConnection();\r
+\r
+               try {\r
+                       StringBuffer sql = new StringBuffer();\r
+\r
+                       sql.append("SELECT * FROM ((");\r
+                       sql.append("SELECT DISTINCT m.id,m.title FROM ITEM i, MEDIA m, MEDIAFILE mf");\r
+                       sql.append(" WHERE ((CONTAINS(i.title, ?) >= 1) OR (CONTAINS(i.description, ?) >= 1)) AND m.itemid = i.id AND mf.mediaid = m.id");\r
+                       sql.append(")UNION(");\r
+                       sql.append("SELECT DISTINCT m2.id,m2.title FROM ITEM i2, MEDIA m2, MEDIAFILE mf2");\r
+                       sql.append(" WHERE ((CONTAINS(m2.title, ?) >= 1) OR (CONTAINS(m2.description, ?) >= 1)) AND m2.itemid = i2.id AND mf2.MEDIAID = m2.id");\r
+                       sql.append(")UNION(");\r
+                       sql.append("SELECT DISTINCT m3.id,m3.title FROM ITEM i3, MEDIA m3, MEDIAFILE mf3");\r
+                       sql.append(" WHERE (CONTAINS(mf3.houseId, ?) >= 1) AND m3.itemid = i3.id AND mf3.mediaid = m3.id");\r
+                       sql.append(")) ORDER BY title");\r
+\r
+                       String query = sql.toString();\r
+                       st = connection.prepareStatement(query, ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_UPDATABLE);\r
+                       for (int s = 1; s <= 5; s++) {\r
+                               st.setString(s, criteria);\r
+                       }\r
+                       rs = st.executeQuery();\r
+                       rs.last();\r
+                       result.setItemCount(rs.getRow());\r
+\r
+                       // set begining position\r
+                       if (fromResult > -1) {\r
+                               if (fromResult <= result.getItemCount()) {\r
+                                       if (fromResult > 1) {\r
+                                               rs.absolute(fromResult - 1);\r
+                                       } else {\r
+                                               rs.beforeFirst();\r
+                                       }\r
+                               } else {\r
+                                       if (result.getItemCount() > 0) {\r
+                                               throw new Exception("Invalid searchResult 'from' position: " + fromResult + " total records: " + result.getItemCount() + " " + query);\r
+                                       }\r
+                               }\r
+                       } else {\r
+                               rs.beforeFirst();\r
+                       }\r
+\r
+                       int maxRecords = toResult - fromResult;\r
+\r
+                       List<ArchivedMedia> resultList = null;\r
+                       logger.info("Processing query result, maxRecords {}", maxRecords);\r
+                       while (rs.next() && maxRecords > 0) {\r
+                               ArchivedMedia am = new ArchivedMedia();\r
+                               Media media = manager.getMedia(rs.getLong("id"));\r
+                               am.setMedia(media);\r
+                               Item item = manager.getItem(media.getItemId());\r
+                               am.setItem(item);\r
+                               if (resultList == null)\r
+                                       resultList = new ArrayList<>();\r
+                               resultList.add(am);\r
+                               maxRecords--;\r
+                       }\r
+                       logger.info("Query result processed");\r
+                       result.setItems(resultList);\r
+                       connection.commit();\r
+               } catch (Exception e) {\r
+                       try {\r
+                               connection.rollback();\r
+                       } catch (Exception e1) {\r
+                               e1.printStackTrace();\r
+                       }\r
+                       manager.throwError(e);\r
+               } finally {\r
+                       try {\r
+                               if (rs != null)\r
+                                       rs.close();\r
+                       } catch (Exception e1) {\r
+                       }\r
+                       try {\r
+                               if (st != null)\r
+                                       st.close();\r
+                       } catch (Exception e1) {\r
+                       }\r
+                       manager.putDbContext(context);\r
+               }\r
+               manager.traceOut();\r
+\r
+               return result;\r
+       }\r
 }\r
index 7eb74c9fe86b2127da7138b0ae52c06b26dd66fe..831a1f13da760e7fbf488af34b4615d63610bf3a 100644 (file)
@@ -448,8 +448,8 @@ public class ItemManager extends MemoryCache implements IItemManager {
                try {\r
                        String date = df.format(scheduleDate.getTime());\r
                        String query = String.format(\r
-                                       "SELECT COUNT(*) as count, SUM(length) as duration FROM VW_ITEMS WHERE houseid='%s' AND archived LIKE '%s%%' GROUP BY houseid", houseId,\r
-                                       date);\r
+                                       "SELECT COUNT(*) as count, SUM(length) as duration FROM VW_ITEMS WHERE mediahouseid='%s' AND archived LIKE '%s%%' GROUP BY mediahouseid",\r
+                                       houseId, date);\r
                        st = connection.prepareStatement(query);\r
                        rs = st.executeQuery();\r
                        if (rs.next()) {\r
@@ -605,6 +605,11 @@ public class ItemManager extends MemoryCache implements IItemManager {
                return result;\r
        }\r
 \r
+       @Override\r
+       public Item getItem(long id) {\r
+               return (Item) get(Item.class, id);\r
+       }\r
+\r
        @Override\r
        public Item getItemByHouseID(String houseID) {\r
                traceIn();\r
@@ -619,8 +624,10 @@ public class ItemManager extends MemoryCache implements IItemManager {
                // Exercise\r
                List<SearchResult> searchResult = searchItem(qo);\r
 \r
-               if (searchResult != null && searchResult.size() > 0 && searchResult.get(0).getItemCount() == 1)\r
-                       result = searchResult.get(0).getItems().get(0);\r
+               if (searchResult != null && searchResult.size() > 0 && searchResult.get(0).getItemCount() == 1) {\r
+                       SearchResult<Item> sr = searchResult.get(0);\r
+                       result = sr.getItems().get(0);\r
+               }\r
                traceOut();\r
                return result;\r
        }\r
@@ -939,6 +946,16 @@ public class ItemManager extends MemoryCache implements IItemManager {
                traceOut();\r
        }\r
 \r
+       @Override\r
+       public SearchResult<ArchivedMedia> search(String criteria, int fromResult, int toResult) {\r
+               traceIn();\r
+               SearchResult<ArchivedMedia> result = null;\r
+               ItemDAOEx itemDb = new ItemDAOEx(this);\r
+               result = itemDb.searchArchivedMedia(criteria, fromResult, toResult);\r
+               traceOut();\r
+               return result;\r
+       }\r
+\r
        @Override\r
        public List<SearchResult> searchItem(QueryObject parameter) {\r
                traceIn();\r
@@ -950,9 +967,9 @@ public class ItemManager extends MemoryCache implements IItemManager {
        }\r
 \r
        @Override\r
-       public SearchResult searchItem(String criteria, int fromResult, int toResult) {\r
+       public SearchResult<Item> searchItem(String criteria, int fromResult, int toResult) {\r
                traceIn();\r
-               SearchResult result = null;\r
+               SearchResult<Item> result = null;\r
                ItemDAOEx itemDb = new ItemDAOEx(this);\r
                result = itemDb.search(criteria, fromResult, toResult);\r
                traceOut();\r
index 2d0ccb2d25ab891653087a7f62af6b4ebbf30b45..b684c1ceab8d647fe2b2fe8c1779f70e5b925d20 100644 (file)
@@ -2,26 +2,26 @@ package user.jobengine.db;
 \r
 import java.util.List;\r
 \r
-public class SearchResult {\r
-       \r
+public class SearchResult<T> {\r
+\r
        private long itemCount;\r
-    private ItemType itemType;\r
-    private List<Item> items;\r
-    private List<Item> folders;\r
-    private RenderParameter parameters;\r
-    \r
-       public List<Item> getFolders() {\r
+       private ItemType itemType;\r
+       private List<T> items;\r
+       private List<T> folders;\r
+       private RenderParameter parameters;\r
+\r
+       public List<T> getFolders() {\r
                return this.folders;\r
        }\r
-       \r
+\r
        public long getItemCount() {\r
                return this.itemCount;\r
        }\r
-               \r
-       public List<Item> getItems() {\r
+\r
+       public List<T> getItems() {\r
                return this.items;\r
        }\r
-               \r
+\r
        public ItemType getItemType() {\r
                return this.itemType;\r
        }\r
@@ -30,7 +30,7 @@ public class SearchResult {
                return this.parameters;\r
        }\r
 \r
-       public void setFolders(List<Item> folders) {\r
+       public void setFolders(List<T> folders) {\r
                this.folders = folders;\r
        }\r
 \r
@@ -38,7 +38,7 @@ public class SearchResult {
                this.itemCount = itemCount;\r
        }\r
 \r
-       public void setItems(List<Item> items) {\r
+       public void setItems(List<T> items) {\r
                this.items = items;\r
        }\r
 \r
index ef3ccc6900d0a93f9dd046f19fd10b4c855b7925..67119aefeff3e455bc24e48ffe1c5ab76c75e8af 100644 (file)
@@ -126,7 +126,7 @@ public class TestItem extends TestBase {
                        System.out.println("Item created: " + i);\r
                }\r
 \r
-               SearchResult search = manager.searchItem("elem", 0, 9);\r
+               SearchResult<Item> search = manager.searchItem("elem", 0, 9);\r
                assertEquals(10, search.getItemCount());\r
 \r
                for (Item item : search.getItems()) {\r
@@ -353,7 +353,7 @@ public class TestItem extends TestBase {
 \r
        @Test\r
        public void testSearch() {\r
-               SearchResult search = manager.searchItem("elem", 10, 20);\r
+               SearchResult<Item> search = manager.searchItem("elem", 10, 20);\r
                assertEquals(1000, search.getItemCount());\r
                assertEquals(10, search.getItems().size());\r
 \r
index 3859e8bdaa81a2fd845248b5db1e1061371ee113..d44cbbefc8d5bfcfdf5935019242f2abcb2a9f9c 100644 (file)
@@ -82,7 +82,7 @@
                                </div>\r
                        </north>\r
                        <center border="0">\r
-                               <include style="background: #e3e3e3;" id="includeContent" src="/pages/search_items.zul" />\r
+                               <include style="background: #e3e3e3;" id="includeContent" src="/pages/searchitems.zul" />\r
                        </center>\r
                </borderlayout>\r
        </window>\r
index 63147ce2403199ea0e01e37ed46eecce1cfbcb61..c4d094bf566cb2222235dcd05d71f3b00757bfb2 100644 (file)
@@ -54,7 +54,7 @@
        <menubar id="menubar" hflex="max" sclass="redmenubar">\r
                <menu sclass="whitemenu" label="Archívum" >\r
                        <menupopup>\r
-                               <menuitem sclass="rozsda" label="Keresés" onClick='includeContent.src="/pages/search_items.zul"' disabled="false" />\r
+                               <menuitem sclass="rozsda" label="Keresés" onClick='includeContent.src="/pages/searchitems.zul"' disabled="false" />\r
                                <menuitem sclass="rozsda" label="Folyamatok" onClick='includeContent.src="/pages/joblist.zul"' disabled="${not sessionScope.userPrincipal.admin or sessionScope.userPrincipal.anonymous}" />\r
                                <menuitem sclass="rozsda" label="Hiányzó anyagok" onClick='includeContent.src="/pages/missingmaterials.zul"' disabled="${not sessionScope.userPrincipal.jobSubmitter or sessionScope.userPrincipal.anonymous}" />\r
 <!--                           <menuitem sclass="rozsda" label="Test" onClick='includeContent.src="/pages/database.zul"' disabled="${not sessionScope.userPrincipal.jobSubmitter or sessionScope.userPrincipal.anonymous}" /> -->\r
index 85cde7dbbe65b5090fdfea3056300b0ac3c34efa..a09331392ea62035ee797e06660d0ebcdaccf64c 100644 (file)
@@ -1,62 +1,91 @@
 <?xml version="1.0" encoding="UTF-8"?>\r
 <zk xmlns="http://www.zkoss.org/2005/zul">\r
-       <vlayout hflex="1" vflex="1" apply="org.zkoss.bind.BindComposer" viewModel="@id('vm') @init('user.jobengine.zk.model.NewsHistoryModel')">\r
-               <hbox height="40px" align="center">\r
-                       <space bar="false" />\r
-                       <datebox value="@bind(vm.selectedDate)" width="150px" format="yyyy.MM.dd" mold="rounded" weekOfYear="true" showTodayLink="true" lenient="false" compact="false" buttonVisible="true"\r
-                               constraint="no empty, no future: now or never" />\r
-               </hbox>\r
-<!--           <hlayout hflex="1" vflex="1"> -->\r
-                       <tabbox hflex="1" vflex="1">\r
-                               <tabs>\r
-                                       <tab label="Grafikonok" closable="false" />\r
-                                       <tab label="Adatok" closable="false" />\r
-                               </tabs>\r
-                               <tabpanels>\r
-                                       <tabpanel>\r
-                                               <grid>\r
-                                                       <rows sclass="narrow">\r
-                                                               <row>\r
-                                                                       <div width="100%" onAfterSize='typeChartCount.setWidth(new Integer(event.getWidth()))'>\r
-                                                                               <charts id="typeChartCount" type="pie" />\r
-                                                                       </div>\r
-                                                                       <div width="100%" onAfterSize='typeChartSumDuration.setWidth(new Integer(event.getWidth()))'>\r
-                                                                               <charts id="typeChartSumDuration" type="pie" />\r
-                                                                       </div>\r
-                                                                       <div width="100%" onAfterSize='planChart.setWidth(new Integer(event.getWidth()))'>\r
-                                                                               <charts id="planChart" type="column" />\r
-                                                                       </div>\r
-                                                               </row>\r
-                                                       </rows>\r
-                                               </grid>\r
-                                       </tabpanel>\r
-                                       <tabpanel>\r
-                                               <grid model="@load(vm.dataList)" mold="paging" autopaging="true" sizedByContent="false" vflex="true" hflex="true" emptyMessage="Nincs adat!">\r
-                                                       <auxhead>\r
-                                               <auxheader colspan="11" align="right">\r
-                                                                       <a href="javascript:void(0);" label="letöltés" onClick="@command('downloadRawData')" disabled="@load(vm.downloadDisabled)" />\r
-                                                        \r
-                                               </auxheader>\r
-                                               </auxhead>                                                      \r
-                                               <!--                                                    <auxhead sclass="category-center"> -->\r
-                                                       <!--                                                            <auxheader colspan="1"> -->\r
-                                                       <!--                                                                    <textbox instant="true" width="100px" value="@bind(vm.filter.category)" onChange="@command('changeFilter')" /> -->\r
-                                                       <!--                                                            </auxheader> -->\r
-                                                       <!--                                                    </auxhead> -->\r
-                                                       <columns sizable="true">\r
-                                                               <column forEach="${vm.columnList}" label="${each}" sort="auto"></column>\r
-                                                       </columns>\r
-                                                       <rows>\r
-                                                               <template name="model" var="r">\r
+       <script>\r
+\r
+               function frameToTC(value) {\r
+                       console.log('frameToTC '  + value)\r
+                       var reminder = value;\r
+                       var hour = Math.floor(reminder / (60 * 60 * 25));\r
+            reminder = reminder % (60 * 60 * 25);\r
+                       var minute = Math.floor(reminder / (60 * 25));\r
+            reminder = reminder % (60 * 25);\r
+            var sec = Math.floor(reminder / 25);\r
+            reminder = reminder % 25;\r
+            var frame = Math.floor(reminder);\r
+                       hour = ("" + hour).length == 1 ? '0' + hour : hour;\r
+                       minute = ("" + minute).length == 1 ? '0' + minute : minute;\r
+                       sec = ("" + sec).length == 1 ? '0' + sec : sec;\r
+                       frame = ("" + frame).length == 1 ? '0' + frame : frame;\r
+            return hour + ':' + minute + ':' + sec + ':' + frame;\r
+               }\r
+       </script>\r
+<!--   <borderlayout hflex="1" vflex="1"> -->\r
+<!--           <center border="none" flex="true"> -->\r
+\r
+                       <vlayout hflex="1" vflex="1" apply="org.zkoss.bind.BindComposer" viewModel="@id('vm') @init('user.jobengine.zk.model.NewsHistoryModel')">\r
+                               <hbox height="40px" align="center">\r
+                                       <space bar="false" />\r
+                                       <datebox value="@bind(vm.selectedDate)" width="150px" format="yyyy.MM.dd" mold="rounded" weekOfYear="true" showTodayLink="true"\r
+                                               lenient="false" compact="false" buttonVisible="true" constraint="no empty, no future: now or never" />\r
+                               </hbox>\r
+                               <tabbox hflex="1" vflex="1">\r
+                                       <tabs>\r
+                                               <tab label="Grafikonok" closable="false" />\r
+                                               <tab label="Adatok" closable="false" />\r
+                                       </tabs>\r
+                                       <tabpanels>\r
+                                               <tabpanel>\r
+                                                       <grid>\r
+                                                               <rows sclass="narrow">\r
                                                                        <row>\r
-                                                                               <label forEach="${vm.columnList}" value="${r.get(each)}"></label>\r
+                                                                               <div width="100%" onAfterSize='typeChartCount.setWidth(new Integer(event.getWidth()))'>\r
+                                                                                       <charts id="typeChartCount" type="pie" />\r
+                                                                               </div>\r
+                                                                               <div width="100%" onAfterSize='typeChartSumDuration.setWidth(new Integer(event.getWidth()))'>\r
+                                                                                       <charts id="typeChartSumDuration" type="pie" />\r
+                                                                               </div>\r
+                                                                               <div width="100%" onAfterSize='planChart.setWidth(new Integer(event.getWidth()))'>\r
+                                                                                       <charts id="planChart" type="column" />\r
+                                                                               </div>\r
                                                                        </row>\r
-                                                               </template>\r
-                                                       </rows>\r
-                                               </grid>\r
-                                       </tabpanel>\r
-                               </tabpanels>\r
-                       </tabbox>\r
-<!--           </hlayout> -->\r
-       </vlayout>\r
+                                                               </rows>\r
+                                                       </grid>\r
+                                               </tabpanel>\r
+                                               <tabpanel>\r
+                                                       <grid model="@load(vm.dataList)" mold="paging" autopaging="true" sizedByContent="true" vflex="true" hflex="true"\r
+                                                               emptyMessage="Nincs adat!">\r
+                                                               <auxhead>\r
+                                                                       <auxheader colspan="13" align="right">\r
+                                                                               <a href="javascript:void(0);" label="letöltés" onClick="@command('downloadRawData')"\r
+                                                                                       disabled="@load(vm.downloadDisabled)" />\r
+\r
+                                                                       </auxheader>\r
+                                                               </auxhead>\r
+                                                               <!--                                                    <auxhead sclass="category-center"> -->\r
+                                                               <!--                                                            <auxheader colspan="1"> -->\r
+                                                               <!--                                                                    <textbox instant="true" width="100px" value="@bind(vm.filter.category)" onChange="@command('changeFilter')" /> -->\r
+                                                               <!--                                                            </auxheader> -->\r
+                                                               <!--                                                    </auxhead> -->\r
+                                                               <columns sizable="true">\r
+                                                                       <column forEach="${vm.columnList}" label="${each}" sort="auto"></column>\r
+                                                               </columns>\r
+                                                               <rows>\r
+                                                                       <template name="model" var="r">\r
+                                                                               <row>\r
+                                                                                       <label forEach="${vm.columnList}" value="${r.get(each)}"></label>\r
+                                                                               </row>\r
+                                                                       </template>\r
+                                                               </rows>\r
+                                                       </grid>\r
+                                               </tabpanel>\r
+                                       </tabpanels>\r
+                               </tabbox>\r
+                       </vlayout>\r
+\r
+<!--           </center> -->\r
+<!--           <east title="Folyamatok" size="30%" flex="true" splittable="true" collapsible="true" open="false"> -->\r
+<!--                   <include src="/pages/joblist.zul" /> -->\r
+<!--           </east> -->\r
+<!--   </borderlayout> -->\r
+\r
 </zk>
\ No newline at end of file
diff --git a/server/user.jobengine.osgi.server/pages/search_items.zul b/server/user.jobengine.osgi.server/pages/search_items.zul
deleted file mode 100644 (file)
index 2528fa1..0000000
+++ /dev/null
@@ -1,144 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>\r
-<?taglib uri="http://www.zkoss.org/dsp/web/core" prefix="c" ?>\r
-<?script type="text/javascript" src="/js/videojs-ie8.min.js"?>\r
-<?script type="text/javascript" src="/js/video.js"?>\r
-<?init class="user.jobengine.zk.util.AuthInitiator"?>\r
-<zk xmlns:w="http://www.zkoss.org/2005/zk/client">\r
-       <!-- csak igy jo a list sebessege -->\r
-       <custom-attributes org.zkoss.zul.listbox.rod="true" />\r
-       <custom-attributes org.zkoss.zul.listbox.initRodSize="50" />\r
-       <custom-attributes org.zkoss.zul.listbox.preloadSize="50" />\r
-\r
-       <div id="scdiv" width="100%" height="100%" apply="org.zkoss.bind.BindComposer" viewModel="@id('svm') @init('user.jobengine.zk.model.SearchModel')">\r
-\r
-\r
-               <borderlayout>\r
-                       <west border="none" size="50%" splittable="true" minsize="250">\r
-                               <div height="100%" width="100%">\r
-                                       <groupbox vflex="min" closable="false">\r
-                                               <textbox style="border:none" instant="true" value="@bind(svm.searchValue)" width="100%"\r
-                                                       tooltiptext="Gépelje be a keresendő kifejezést és nyomja meg az Enter-t." onOK="@command('doSearch')" />\r
-                                       </groupbox>\r
-\r
-                                       <groupbox vflex="true" closable="false">\r
-                                               <caption sclass="boldfont" label="Gyűjtők" />\r
-                                               <listbox id="itemResults" sizedByContent="false" span="true" model="@load(svm.searchResult)" multiple="false" autopaging="true"\r
-                                                       mold="paging" vflex="true" selectedItem="@bind(svm.selectedItem)" style="border: none; background: #e3e3e3 !important;" oddRowSclass="listbox-odd-style"\r
-                                                       sclass="listbox-normal-style">\r
-                                                       <listhead sizable="true">\r
-                                                               <listheader label="ID" hflex="1" align="left" />\r
-                                                               <listheader label="Cím" hflex="6" align="left" />\r
-                                                       </listhead>\r
-                                                       <template name="model">\r
-                                                               <listitem>\r
-                                                                       <listcell label="@load(each.houseId)" />\r
-                                                                       <listcell label="@load(each.title)" />\r
-                                                               </listitem>\r
-                                                       </template>\r
-                                               </listbox>\r
-                                       </groupbox>\r
-\r
-                                       <groupbox vflex="true" closable="false">\r
-                                               <caption sclass="boldfont" label="Anyagok" />\r
-\r
-                                               <listbox id="mediaList" sizedByContent="false" span="true" onSelect="@command('onSelectMedia', media=event.reference.value)"\r
-                                                       model="@load(svm.selectedItem.medias)" multiple="false" vflex="true" selectedItem="@bind(svm.selectedMedia)"\r
-                                                       style="border: none; background: #e3e3e3 !important;" oddRowSclass="listbox-odd-style" sclass="listbox-normal-style">\r
-                                                       <listhead sizable="true">\r
-                                                               <listheader label="ID" hflex="1" align="left" />\r
-                                                               <listheader label="Cím" hflex="6" align="left" />\r
-                                                               <listheader label="Fájlnév" hflex="6" align="left" />\r
-                                                               <listheader label="Kópiák" hflex="1" align="left" />\r
-                                                       </listhead>\r
-                                                       <template name="model">\r
-                                                               <listitem>\r
-                                                                       <listcell label="@load(each.houseId)" />\r
-                                                                       <listcell label="@load(each.title)" />\r
-                                                                       <listcell label="@load(each.mediaFilesName)" />\r
-                                                                       <listcell label="@load(each.mediaFilesCount)" />\r
-                                                               </listitem>\r
-                                                       </template>\r
-                                               </listbox>\r
-                                       </groupbox>\r
-\r
-                               </div>\r
-                       </west>\r
-                       <!-- media player -->\r
-                       <center border="none">\r
-\r
-                               <borderlayout height="100%" width="100%">\r
-\r
-                                       <north border="none" size="60%" splittable="true" minsize="250" collapsible="true">\r
-                                               <div align="center" height="100%" width="100%">\r
-<!--                                                   <html> -->\r
-<!--                                                           <![CDATA[  -->\r
-<!--                                                           <link href="/css/video-js.css" rel="stylesheet"> -->\r
-<!--                                                           <video id="myVideoDiv" width="100%" height="100%" class="video-js" controls preload="auto" data-setup="{}">  -->\r
-<!--                                                                   <source src="@load(svm.lowresMediaFilePath)" type='video/mp4'> -->\r
-<!--                                                           </video>  -->\r
-<!--                                                           <script> var player = videojs('myVideoDiv'); </script>  -->\r
-<!--                                                           ]]> -->\r
-<!--                                                   </html> -->\r
-                                                       <iframe id="mediaPlayer" height="100%" width="100%" autohide="false" src="@load(svm.lowresMediaFilePath)"></iframe>\r
-                                               </div>\r
-                                       </north>\r
-                                       <center border="none">\r
-\r
-                                               <groupbox closable="false" mold="3d" width="100%" height="100%" >\r
-                                                       <caption>\r
-                                                               <button label="Visszatöltés" onClick="@command('downloadMedia')" autodisable="self" disabled="@load(not svm.hasTSMMediaFile)"\r
-                                                                       sclass="buttonboldfont" />\r
-                                                       </caption>\r
-                                                       <div width="100%" height="100%" style="padding: 4px; overflow:auto; background-color: white">\r
-                                                               <div>\r
-                                                                       <label style="font-size:8pt; color: gray" value="Anyag azonosító" />\r
-                                                                       <div style="margin: 4px">\r
-                                                                               <label value="@load(svm.selectedItem.houseId)" />\r
-                                                                       </div>\r
-                                                                       <space bar="false" />\r
-                                                               </div>\r
-                                                               <div>\r
-                                                                       <label style="font-size:8pt; color: gray" value="Anyag címe" />\r
-                                                                       <div style="margin: 4px">\r
-                                                                               <label value="@load(svm.selectedItem.title)" />\r
-                                                                       </div>\r
-                                                                       <space bar="false" />\r
-                                                               </div>\r
-                                                               <div>\r
-                                                                       <label style="font-size:8pt; color: gray" value="Anyag leírása" />\r
-                                                                       <div style="margin: 4px">\r
-                                                                               <label value="@load(svm.selectedItem.description)" />\r
-                                                                       </div>\r
-                                                                       <space bar="false" />\r
-                                                               </div>\r
-                                                               <div>\r
-                                                                       <label style="font-size:8pt; color: gray" value="Média azonosító" />\r
-                                                                       <div style="margin: 4px">\r
-                                                                               <label value="@load(svm.selectedMedia.houseId)" />\r
-                                                                       </div>\r
-                                                                       <space bar="false" />\r
-                                                               </div>\r
-                                                               <div>\r
-                                                                       <label style="font-size:8pt; color: gray" value="Média címe" />\r
-                                                                       <div style="margin: 4px">\r
-                                                                               <label value="@load(svm.selectedMedia.title)" />\r
-                                                                       </div>\r
-                                                                       <space bar="false" />\r
-                                                               </div>\r
-                                                               <div>\r
-                                                                       <label style="font-size:8pt; color: gray" value="Média leírása" />\r
-                                                                       <div style="margin: 4px">\r
-                                                                               <label multiline="true" value="@load(svm.selectedMedia.description)" />\r
-                                                                       </div>\r
-                                                               </div>\r
-                                                       </div>\r
-                                               </groupbox>\r
-                                       </center>\r
-                               </borderlayout>\r
-\r
-                       </center>\r
-               </borderlayout>\r
-\r
-\r
-       </div>\r
-</zk>
\ No newline at end of file
diff --git a/server/user.jobengine.osgi.server/pages/searchitems.zul b/server/user.jobengine.osgi.server/pages/searchitems.zul
new file mode 100644 (file)
index 0000000..ff92927
--- /dev/null
@@ -0,0 +1,174 @@
+<?xml version="1.0" encoding="UTF-8"?>\r
+<?taglib uri="http://www.zkoss.org/dsp/web/core" prefix="c" ?>\r
+<?script type="text/javascript" src="/js/videojs-ie8.min.js"?>\r
+<?script type="text/javascript" src="/js/video.js"?>\r
+<?init class="user.jobengine.zk.util.AuthInitiator"?>\r
+<zk xmlns:w="http://www.zkoss.org/2005/zk/client">\r
+       <!-- csak igy jo a list sebessege -->\r
+       <custom-attributes org.zkoss.zul.listbox.rod="true" />\r
+       <custom-attributes org.zkoss.zul.listbox.initRodSize="50" />\r
+       <custom-attributes org.zkoss.zul.listbox.preloadSize="50" />\r
+\r
+       <div id="scdiv" width="100%" height="100%" apply="org.zkoss.bind.BindComposer" viewModel="@id('vm') @init('user.jobengine.zk.model.SearchModel')">\r
+\r
+\r
+               <borderlayout>\r
+                       <west border="none" size="50%" splittable="true" minsize="250">\r
+                               <div height="100%" width="100%">\r
+                                       <groupbox vflex="min" closable="false">\r
+\r
+                                               <textbox style="border:none" instant="true" value="@bind(vm.searchValue)" width="100%"\r
+                                                       tooltiptext="Gépelje be a keresendő kifejezést és nyomja meg az Enter-t." onOK="@command('doSearch')" />\r
+                                               <toolbar>\r
+                                                       <checkbox checked="@bind(vm.allFeedChecked)" />\r
+                                                       <toolbarbutton label="Hír bejátszó" mode="toggle" checked="@bind(vm.newsFeedChecked)" />\r
+                                                       <toolbarbutton label="Hír nyersanyag" mode="toggle" checked="@bind(vm.newsRawChecked)" />\r
+                                                       <toolbarbutton label="Műsor" mode="toggle" checked="@bind(vm.materialChecked)" />\r
+                                                       <toolbarbutton label="Promo" mode="toggle" checked="@bind(vm.promoChecked)" />\r
+                                                       <toolbarbutton label="Reklám" mode="toggle" checked="@bind(vm.adChecked)" />\r
+                                                       <toolbarbutton label="Visszarögzített" mode="toggle" checked="@bind(vm.recordingChecked) "/>\r
+                                                       <toolbarbutton label="Egyéb" mode="toggle" checked="@bind(vm.otherChecked)" />\r
+                                               </toolbar>\r
+                                       </groupbox>\r
+                                       <!--                                    <grid> -->\r
+                                       <!--                                            <columns> -->\r
+                                       <!--                                                    <column width="40px" /> -->\r
+                                       <!--                                                    <column hflex="1" label="Name" sort="auto" /> -->\r
+                                       <!--                                                    <column width="150px" label="Price" sort="auto" align="center" /> -->\r
+                                       <!--                                                    <column width="150px" label="Rating" sort="auto" align="center" /> -->\r
+                                       <!--                                            </columns> -->\r
+                                       <!--                                            <rows> -->\r
+                                       <!--                                                    <template name="model"> -->\r
+                                       <!--                                                            <row> -->\r
+                                       <!--                                                                    <detail open="true"> -->\r
+                                       <!--                                                                            <hlayout> -->\r
+                                       <!--                                                                                    <image sclass="myimg" width="140px" height="90px" src="/widgets/grid/master_detail/img/${img}" /> -->\r
+                                       <!--                                                                                    <div sclass="details"> -->\r
+                                       <!--                                                                                            <div> -->\r
+                                       <!--                                                                                                    <label value="Facilities:" /> -->\r
+                                       <!--                                                                                                    <label value="${facilities}" sclass="heavy" /> -->\r
+                                       <!--                                                                                            </div> -->\r
+                                       <!--                                                                                            <div> -->\r
+                                       <!--                                                                                                    <label value="Room Type:" /> -->\r
+                                       <!--                                                                                                    <label value="${roomType}" sclass="heavy" /> -->\r
+                                       <!--                                                                                            </div> -->\r
+                                       <!--                                                                                            <div> -->\r
+                                       <!--                                                                                                    <label value="Included:" /> -->\r
+                                       <!--                                                                                                    <label value="${included}" sclass="heavy" /> -->\r
+                                       <!--                                                                                            </div> -->\r
+                                       <!--                                                                                            <div> -->\r
+                                       <!--                                                                                                    <label value="Nearby:" /> -->\r
+                                       <!--                                                                                                    <label value="${nearby}" sclass="heavy" /> -->\r
+                                       <!--                                                                                            </div> -->\r
+                                       <!--                                                                                            <div> -->\r
+                                       <!--                                                                                                    <label value="PaymentOptions:" /> -->\r
+                                       <!--                                                                                                    <label value="${paymentOptions}" sclass="heavy" /> -->\r
+                                       <!--                                                                                            </div> -->\r
+                                       <!--                                                                                    </div> -->\r
+                                       <!--                                                                            </hlayout> -->\r
+                                       <!--                                                                    </detail> -->\r
+                                       <!--                                                                    <label value="${name}" /> -->\r
+                                       <!--                                                                    <label value="${price}" sclass="price" /> -->\r
+                                       <!--                                                                    <label value="${rating}" sclass="rating" /> -->\r
+                                       <!--                                                            </row> -->\r
+                                       <!--                                                    </template> -->\r
+                                       <!--                                            </rows> -->\r
+                                       <!--                                    </grid> -->\r
+\r
+                                       <groupbox vflex="true" closable="false">\r
+                                               <listbox id="itemResults" sizedByContent="false" span="true" model="@load(vm.searchResult)" activePage="@bind(vm.activePage)" mold="paging" multiple="false" autopaging="true"\r
+                                                       vflex="true" selectedItem="@bind(vm.selectedItem)" style="border: none; background: #e3e3e3 !important;" oddRowSclass="listbox-odd-style"\r
+                                                       sclass="listbox-normal-style">\r
+                                                       <listhead sizable="true">\r
+                                                               <listheader label="ID" hflex="1" align="left" />\r
+                                                               <listheader label="Cím" hflex="6" align="left" />\r
+                                                       </listhead>\r
+                                                       <template name="model">\r
+                                                               <listitem>\r
+                                                                       <listcell label="@load(each.media.houseId)" />\r
+                                                                       <listcell label="@load(each.media.title)" />\r
+                                                               </listitem>\r
+                                                       </template>\r
+                                               </listbox>\r
+                                       </groupbox>\r
+                               </div>\r
+                       </west>\r
+                       <!-- media player -->\r
+                       <center border="none">\r
+\r
+                               <borderlayout height="100%" width="100%">\r
+\r
+                                       <north border="none" size="60%" splittable="true" minsize="250" collapsible="true">\r
+                                               <div align="center" height="100%" width="100%">\r
+                                                       <!--                                                    <html> -->\r
+                                                       <!--                                                            <![CDATA[  -->\r
+                                                       <!--                                                            <link href="/css/video-js.css" rel="stylesheet"> -->\r
+                                                       <!--                                                            <video id="myVideoDiv" width="100%" height="100%" class="video-js" controls preload="auto" data-setup="{}">  -->\r
+                                                       <!--                                                                    <source src="@load(vm.lowresMediaFilePath)" type='video/mp4'> -->\r
+                                                       <!--                                                            </video>  -->\r
+                                                       <!--                                                            <script> var player = videojs('myVideoDiv'); </script>  -->\r
+                                                       <!--                                                            ]]> -->\r
+                                                       <!--                                                    </html> -->\r
+                                                       <iframe id="mediaPlayer" height="100%" width="100%" autohide="false" src="@load(vm.lowresMediaFilePath)"></iframe>\r
+                                               </div>\r
+                                       </north>\r
+                                       <center border="none">\r
+\r
+                                               <groupbox closable="false" mold="3d" width="100%" height="100%">\r
+                                                       <caption>\r
+                                                               <button label="Visszatöltés" onClick="@command('downloadMedia')" autodisable="self" disabled="@load(not vm.hasTSMMediaFile)"\r
+                                                                       sclass="buttonboldfont" />\r
+                                                       </caption>\r
+                                                       <div width="100%" height="100%" style="padding: 4px; overflow:auto; background-color: white">\r
+                                                               <div>\r
+                                                                       <label style="font-size:8pt; color: gray" value="Anyag azonosító" />\r
+                                                                       <div style="margin: 4px">\r
+                                                                               <label value="@load(vm.selectedItem.item)" />\r
+                                                                       </div>\r
+                                                                       <space bar="false" />\r
+                                                               </div>\r
+                                                               <div>\r
+                                                                       <label style="font-size:8pt; color: gray" value="Anyag címe" />\r
+                                                                       <div style="margin: 4px">\r
+                                                                               <label value="@load(vm.selectedItem.item.title)" />\r
+                                                                       </div>\r
+                                                                       <space bar="false" />\r
+                                                               </div>\r
+                                                               <div>\r
+                                                                       <label style="font-size:8pt; color: gray" value="Anyag leírása" />\r
+                                                                       <div style="margin: 4px">\r
+                                                                               <label value="@load(vm.selectedItem.item.description)" />\r
+                                                                       </div>\r
+                                                                       <space bar="false" />\r
+                                                               </div>\r
+                                                               <div>\r
+                                                                       <label style="font-size:8pt; color: gray" value="Média azonosító" />\r
+                                                                       <div style="margin: 4px">\r
+                                                                               <label value="@load(vm.selectedItem.media.houseId)" />\r
+                                                                       </div>\r
+                                                                       <space bar="false" />\r
+                                                               </div>\r
+                                                               <div>\r
+                                                                       <label style="font-size:8pt; color: gray" value="Média címe" />\r
+                                                                       <div style="margin: 4px">\r
+                                                                               <label value="@load(vm.selectedItem.media.title)" />\r
+                                                                       </div>\r
+                                                                       <space bar="false" />\r
+                                                               </div>\r
+                                                               <div>\r
+                                                                       <label style="font-size:8pt; color: gray" value="Média leírása" />\r
+                                                                       <div style="margin: 4px">\r
+                                                                               <label multiline="true" value="@load(vm.selectedItem.getMedia().description)" />\r
+                                                                       </div>\r
+                                                               </div>\r
+                                                       </div>\r
+                                               </groupbox>\r
+                                       </center>\r
+                               </borderlayout>\r
+\r
+                       </center>\r
+               </borderlayout>\r
+\r
+\r
+       </div>\r
+</zk>
\ No newline at end of file
index 10e78b7948958bd9b3370a971687ee0eef1a7aeb..493571b581955691b56607cc2856dd8f9ca264d2 100644 (file)
@@ -1,4 +1,4 @@
-version=2.2.3\r
+version=2.3.1\r
 footer=2016 © Copyright User Rendszerház Kft.\r
 \r
 login_info=Információ\r
index b1688e5293f8258e6df13f21a5715e4fa4009ac9..7fa9b1b45ce49493f075860a666e7c00aab9311d 100644 (file)
@@ -1,6 +1,5 @@
 package user.jobengine.zk.model;\r
 \r
-import java.sql.Timestamp;\r
 import java.util.ArrayList;\r
 import java.util.HashMap;\r
 import java.util.List;\r
@@ -14,20 +13,19 @@ import org.zkoss.zk.ui.event.Events;
 import org.zkoss.zul.ListModelList;\r
 import org.zkoss.zul.event.ListDataEvent;\r
 \r
+import user.jobengine.db.ArchivedMedia;\r
 import user.jobengine.db.IItemManager;\r
 import user.jobengine.db.Item;\r
-import user.jobengine.db.Media;\r
-import user.jobengine.db.MediaFile;\r
+import user.jobengine.db.ItemManager;\r
 import user.jobengine.db.SearchResult;\r
-import user.jobengine.server.JobEngine;\r
 \r
 /**\r
  * Cachelt modell nagy listakhoz. Cacheli a dokumentumokat a megadott meretben. Az utoljara elkert index +- cacheSize/2\r
  */\r
-public class CachedListModel extends ListModelList<Item> {\r
+public class CachedListModel extends ListModelList<ArchivedMedia> {\r
        private static final Logger logger = LogManager.getLogger();\r
-       private int cacheSize = 500;\r
-       private HashMap<Integer, Item> cache = new HashMap<Integer, Item>();\r
+       private int cacheSize = 100;\r
+       private HashMap<Integer, ArchivedMedia> cache = new HashMap<Integer, ArchivedMedia>();\r
 \r
        private String searchValue = null;\r
        private int resultSetSize = -1;\r
@@ -39,11 +37,9 @@ public class CachedListModel extends ListModelList<Item> {
        private ArrayList<EventListener> eventListenerList = new ArrayList<EventListener>();\r
        private IItemManager itemManager = null;\r
 \r
-       //KONSTRUKTOR\r
        public CachedListModel(String _searchValue) {\r
                this.searchValue = _searchValue;\r
-               this.itemManager = JobEngine.getStaticItemManager();\r
-               //sajat selection modellt hasznalunk\r
+               this.itemManager = ItemManager.getInstance();\r
                //this.setMultiple(true);\r
                reinit();\r
        }\r
@@ -63,7 +59,6 @@ public class CachedListModel extends ListModelList<Item> {
        }\r
 \r
        public void clearCache() {\r
-               cache.clear();\r
                cache.clear();\r
                docSelection.clear();\r
        }\r
@@ -98,9 +93,9 @@ public class CachedListModel extends ListModelList<Item> {
        }\r
 \r
        @Override\r
-       public Item getElementAt(int index) {\r
+       public ArchivedMedia getElementAt(int index) {\r
                //logger.debug("CachedListMode.getElementAt(): " + index);\r
-               Item ret = cache.get(index);\r
+               ArchivedMedia ret = cache.get(index);\r
                if (ret == null) {\r
                        loadCache(index);\r
                        ret = cache.get(index);\r
@@ -111,6 +106,10 @@ public class CachedListModel extends ListModelList<Item> {
                return ret;\r
        }\r
 \r
+       public IItemManager getItemManager() {\r
+               return itemManager;\r
+       }\r
+\r
        //ListModelList method felulirva\r
        //after 1. search ++++++++++\r
        @Override\r
@@ -138,16 +137,14 @@ public class CachedListModel extends ListModelList<Item> {
                        int endPos = (startPos + rowLimit);\r
                        endPos = ((this.resultSetSize < 0) || (endPos <= this.resultSetSize)) ? endPos : this.resultSetSize;\r
 \r
-                       //DO SEARCH for startPos, endPos\r
-                       //SearchResult sr = loadFakeItems(startPos, endPos);\r
-                       SearchResult sr = this.itemManager.searchItem(searchValue + "*", startPos, endPos);\r
+                       SearchResult<ArchivedMedia> sr = this.itemManager.search(searchValue + "*", startPos, endPos);\r
 \r
                        if (sr != null) {\r
                                if (this.resultSetSize < 0) {\r
                                        this.resultSetSize = (int) sr.getItemCount();\r
                                }\r
 \r
-                               List<Item> resList = sr.getItems();\r
+                               List<ArchivedMedia> resList = sr.getItems();\r
                                if (resList != null) {\r
                                        for (int c = 0; c < resList.size(); c++) {\r
                                                cache.put(startPos + c, resList.get(c));\r
@@ -168,48 +165,6 @@ public class CachedListModel extends ListModelList<Item> {
                }\r
        }\r
 \r
-       //TEST CODE\r
-       private SearchResult loadFakeItems(int start, int end) {\r
-               SearchResult sr = new SearchResult();\r
-               sr.setItemCount(15000);\r
-               List<Item> itemList = new ArrayList<Item>();\r
-\r
-               for (int c = start; c < end; c++) {\r
-                       Item i = new Item();\r
-                       i.setId(c);\r
-                       i.setDescription("ItemDesc " + c);\r
-                       i.setTitle("ItemTitle " + c);\r
-                       i.setCreated(new Timestamp(System.currentTimeMillis()));\r
-                       i.setModified(new Timestamp(System.currentTimeMillis()));\r
-\r
-                       //mediaList\r
-                       List<Media> mediaList = new ArrayList<Media>();\r
-                       for (int m = 0; m < 3; m++) {\r
-                               Media med = new Media();\r
-                               med.setId(Integer.parseInt(c + 1 + "" + m + 1));\r
-                               med.setTitle("MediaTitle " + m);\r
-                               med.setDescription("MediaDesc " + m);\r
-                               mediaList.add(med);\r
-                               //video test\r
-                               MediaFile mediaFile = new MediaFile();\r
-                               if (m % 2 == 0) {\r
-                                       mediaFile.setRelativePath("/zk/media_oceans.mp4");\r
-                               } else {\r
-                                       mediaFile.setRelativePath("/zk/media_ed_hd.mp4");\r
-                               }\r
-                               List<MediaFile> mediaFiles = new ArrayList<MediaFile>();\r
-                               mediaFiles.add(mediaFile);\r
-                               med.setMediaFiles(mediaFiles);\r
-\r
-                       }\r
-                       i.setMedias(mediaList);\r
-                       itemList.add(i);\r
-               }\r
-\r
-               sr.setItems(itemList);\r
-               return sr;\r
-       }\r
-\r
        //kintrol is hivhatjak\r
        public void reinit() {\r
                this.resultSetSize = -1;\r
index ab7c30ceb3d742f05d6f18a502e8394e08246de3..6970d0ed6bf7bc63bcf8af7a2a3b00ca4cb6cd3d 100644 (file)
@@ -36,7 +36,6 @@ public class MissingMaterialsModel extends AsyncBaseModel implements IJobChanged
        private static final Logger logger = LogManager.getLogger();\r
        private static final String TARGETPATH = "targetPath";\r
        private static final String IMPORT_DISABLED = "importDisabled";\r
-       private static final String TEMPLATE = "template";\r
        private static final String IMPORT_TEMPLATE = "import-morpheus-missing-materials.xml";\r
        private static final String RETRIEVE_TEMPLATE = "retrieve-missing-material.xml";\r
        private ListModelList<BasicDBObject> jobList = new ListModelList<BasicDBObject>();\r
@@ -106,7 +105,7 @@ public class MissingMaterialsModel extends AsyncBaseModel implements IJobChanged
                List<BasicDBObject> jobs = NoSQLUtils.asList(scheduler.getScheduleJobs());\r
                BasicDBObject importJob = null;\r
                for (BasicDBObject job : jobs) {\r
-                       if (isImportJob(job.getString(TEMPLATE))) {\r
+                       if (isImportJob(job.getString(IMPORT_TEMPLATE))) {\r
                                importJob = job;\r
                                //logger.info(job.toString());\r
                                break;\r
index 84d0acda3d2c18a26b154b2e1c881d32d3af70ab..bb77a23baf514e83bd19ab805d3393975df175ac 100644 (file)
@@ -5,7 +5,9 @@ import org.apache.logging.log4j.Logger;
 import org.zkoss.chart.Charts;\r
 import org.zkoss.chart.Point;\r
 import org.zkoss.chart.Series;\r
+import org.zkoss.chart.Tooltip;\r
 import org.zkoss.chart.YAxis;\r
+import org.zkoss.json.JavaScriptValue;\r
 \r
 import com.ibm.nosql.json.api.BasicDBObject;\r
 \r
@@ -34,7 +36,7 @@ public class NewsHistoryCharts {
 \r
        private static void init(Charts charts) {\r
                charts.getChart().setPlotBorderWidth(0);\r
-               charts.getChart().setPlotShadow(false);\r
+               charts.getChart().setPlotShadow(true);\r
                charts.getPlotOptions().getSeries().setAnimation(false);\r
                charts.getPlotOptions().getSeries().setAllowPointSelect(false);\r
                charts.getPlotOptions().getSeries().setEnableMouseTracking(false);\r
@@ -43,33 +45,47 @@ public class NewsHistoryCharts {
 \r
        public static void initMultiAxis(Charts charts, BasicDBObject planStat) {\r
                init(charts);\r
+               charts.getPlotOptions().getSeries().setEnableMouseTracking(true);\r
+\r
+               charts.setTitle("Bejátszók felhasználtsága");\r
+               Tooltip tooltip = charts.getTooltip();\r
+               tooltip.setShared(true);\r
+               tooltip.setUseHTML(true);\r
+               tooltip.setEnabled(true);\r
+               tooltip.addExtraAttr("formatter", new JavaScriptValue("function () { return this.points[0].point.y + 'db / ' + frameToTC(this.points[1].point.y); }"));\r
+\r
                charts.getXAxis().setCategories("Összes", "Betöltve", "Adásban", "Kihagyva", "Archivált");\r
-               YAxis yAxis1 = charts.getYAxis();\r
-               yAxis1.getLabels().setFormat("{value} db");\r
-               yAxis1.getLabels().setStyle("color: " + charts.getColors().get(1).stringValue());\r
+\r
+               YAxis yAxis1 = charts.getYAxis(0);\r
                yAxis1.setTitle("Darab");\r
-               yAxis1.getTitle().setStyle("color: " + charts.getColors().get(1).stringValue());\r
+               yAxis1.getLabels().setFormat("{value}");\r
+               yAxis1.getLabels().setStyle("color: " + charts.getColors().get(0).stringValue());\r
+               yAxis1.getTitle().setStyle("color: " + charts.getColors().get(0).stringValue());\r
 \r
-               // Secondary y axis\r
                YAxis yAxis2 = charts.getYAxis(1);\r
                yAxis2.setTitle("Hossz");\r
-               yAxis2.getTitle().setStyle("color: " + charts.getColors().get(0).stringValue());\r
-               yAxis2.getLabels().setFormat("{value} kocka");\r
-               yAxis2.getLabels().setStyle("color: " + charts.getColors().get(0).stringValue());\r
+               yAxis2.getTitle().setStyle("color: " + charts.getColors().get(1).stringValue());\r
+               yAxis2.getLabels().setFormat("{value}");\r
+               yAxis2.getLabels().setStyle("color: " + charts.getColors().get(1).stringValue());\r
                yAxis2.setOpposite(true);\r
+               yAxis2.getLabels().addExtraAttr("formatter", new JavaScriptValue("function () { return frameToTC(this.value); }"));\r
 \r
                Series s1 = charts.getSeries(0);\r
                s1.setName("Darab");\r
-               s1.setType("column");\r
-               s1.setYAxis(1);\r
-               s1.setData(new Double[] { 49.9, 71.5, 106.4, 129.2, 144.0 });\r
-               charts.getPlotOptions().getColumn().getTooltip().setValueSuffix(" db");\r
+               s1.setYAxis(0);\r
+               s1.setData(new Long[] { NoSQLUtils.asLong(planStat, "all_count"), NoSQLUtils.asLong(planStat, "ingest_count"),\r
+                               NoSQLUtils.asLong(planStat, "onair_count"), NoSQLUtils.asLong(planStat, "skip_count"), NoSQLUtils.asLong(planStat, "archive_count") });\r
+               //              TooltipPlotOptions tooltipOptions = charts.getPlotOptions().getColumn().getTooltip();\r
+               //              tooltipOptions.setValueSuffix(" db");\r
+               //              tooltip.addExtraAttr("formatter", new JavaScriptValue("function () { return statistics(this.point); }"));\r
 \r
                Series s2 = charts.getSeries(1);\r
                s2.setName("Hossz");\r
-               s2.setType("column");\r
-               s2.setData(new Double[] { 7.0, 6.9, 9.5, 14.5, 18.2 });\r
-               charts.getPlotOptions().getSpline().getTooltip().setValueSuffix(" képkocka");\r
+               s2.setYAxis(1);\r
+               s2.setData(new Long[] { NoSQLUtils.asLong(planStat, "all_duration"), NoSQLUtils.asLong(planStat, "ingest_duration"),\r
+                               NoSQLUtils.asLong(planStat, "onair_duration"), NoSQLUtils.asLong(planStat, "skip_duration"), NoSQLUtils.asLong(planStat, "archive_duration") });\r
+               s2.getDataLabels().addExtraAttr("formatter", new JavaScriptValue("function () { return frameToTC(this.y); }"));\r
+\r
        }\r
 \r
        static public void initTypeCount(Charts charts, BasicDBObject datas) {\r
@@ -82,7 +98,7 @@ public class NewsHistoryCharts {
        static public void initTypeDuration(Charts charts, BasicDBObject datas) {\r
                init(charts);\r
                charts.setTitle("Adásbejátszók hossza típus szerint");\r
-               charts.getSeries().getDataLabels().setFormat("{point.name} {point.y} képkocka");\r
+               charts.getSeries().getDataLabels().addExtraAttr("formatter", new JavaScriptValue("function () { return this.point.name + ' ' + frameToTC(this.y); }"));\r
                fill(charts, datas, "duration");\r
        }\r
 \r
index bc5abd2fc47e2c17b9a682bf42db40eb14d9a43e..8b1372ebb1d8cdf52a21abf422ed972f1f48ebe9 100644 (file)
@@ -39,7 +39,8 @@ public class NewsHistoryModel {
        private static final Logger logger = LogManager.getLogger();\r
        private List<BasicDBObject> dataList;\r
        private List<String> columnList = Arrays.asList(IOctopusAPI.ID, IOctopusAPI.NAME, IOctopusAPI.PARENT_STORY_ID, IOctopusAPI.REPORTERS, IOctopusAPI.OBJ_ID,\r
-                       IOctopusAPI.LABEL, "duration", IOctopusAPI.REF_RUNDOWN, IOctopusAPI.REF_STORYFOLDER, "ingest_count", "ingest_duration");\r
+                       IOctopusAPI.LABEL, "duration", IOctopusAPI.REF_RUNDOWN, IOctopusAPI.REF_STORYFOLDER, "ingest_count", "ingest_duration", "archive_count",\r
+                       "archive_duration");\r
        private DB db = null;\r
        private DBCollection collection;\r
        private Date selectedDate;\r
@@ -66,7 +67,7 @@ public class NewsHistoryModel {
 \r
                int axisSize = charts.getyAxisSize();\r
                for (int i = 0; i < axisSize; i++) {\r
-                       charts.getYAxis(i).remove();\r
+                       charts.getYAxis(0).remove();\r
                }\r
 \r
                charts.setTitle("");\r
index 673fef196a1ab61ba9c964877257b64e652bc0ef..c73518703fba46679466559b942ef8c5c2c4f41e 100644 (file)
@@ -9,8 +9,6 @@ import java.util.Map;
 import org.apache.commons.lang.StringUtils;\r
 import org.apache.logging.log4j.LogManager;\r
 import org.apache.logging.log4j.Logger;\r
-import org.zkoss.bind.Converter;\r
-import org.zkoss.bind.annotation.BindingParam;\r
 import org.zkoss.bind.annotation.Command;\r
 import org.zkoss.bind.annotation.NotifyChange;\r
 import org.zkoss.zk.ui.Executions;\r
@@ -19,7 +17,8 @@ import org.zkoss.zul.Window;
 \r
 import user.commons.StoreUri;\r
 import user.commons.remotestore.RemoteStoreProtocol;\r
-import user.jobengine.db.Item;\r
+import user.jobengine.db.ArchivedMedia;\r
+import user.jobengine.db.IItemManager;\r
 import user.jobengine.db.Media;\r
 import user.jobengine.db.MediaFile;\r
 import user.jobengine.db.Store;\r
@@ -31,22 +30,26 @@ public class SearchModel extends BaseModel {
        private static final String PAGES_MEDIAPLAYER = "/pages/mediaplayer.jsp?mediaurl=";\r
 \r
        private String searchValue = null;\r
-       protected CachedListModel searchResult = null;\r
-       private Item selectedItem = null;\r
-       private Media selectedMedia = null;\r
-       private Converter lfConverter = new LineFeedConverter();\r
+       private CachedListModel searchResult = null;\r
+       private ArchivedMedia selectedItem = null;\r
+       private boolean newsFeedChecked;\r
+       private boolean allFeedChecked;\r
+       private boolean newsRawChecked;\r
+       private boolean materialChecked;\r
+       private boolean promoChecked;\r
+       private boolean adChecked;\r
+       private boolean recordingChecked;\r
+       private boolean otherChecked;\r
+       private int activePage;\r
 \r
        @Command\r
-       @NotifyChange({ "mold", "paging", "searchResult", "selectedItem", "selectedMedia", "hasLowresMediaFile" })\r
+       @NotifyChange({ "activePage", "searchResult", "selectedItem", "hasLowresMediaFile" })\r
        public void doSearch() {\r
                try {\r
-                       //do search ++++++++\r
                        this.selectedItem = null;\r
-                       this.selectedMedia = null;\r
                        if (StringUtils.isBlank(searchValue) || searchValue.length() < 3)\r
                                throw new Exception("Legalább 3 karakter megadása kötelező!");\r
                        searchResult = new CachedListModel(searchValue);\r
-\r
                } catch (Exception e) {\r
                        Messagebox.show(e.getMessage());\r
                        logger.catching(e);\r
@@ -58,15 +61,20 @@ public class SearchModel extends BaseModel {
                if (!getHasTSMMediaFile())\r
                        return;\r
                Map<String, Object> arguments = new HashMap<String, Object>();\r
-               arguments.put(MEDIACUBEMEDIA, this.selectedMedia);\r
+               arguments.put(MEDIACUBEMEDIA, this.selectedItem.getMedia());\r
                Window window = (Window) Executions.createComponents(PAGES_RETRIEVESELECTOR_ZUL, null, arguments);\r
                window.doModal();\r
        }\r
 \r
+       public int getActivePage() {\r
+               return activePage;\r
+       }\r
+\r
        public boolean getHasLowresMediaFile() {\r
                boolean ret = false;\r
-               if (this.selectedMedia != null) {\r
-                       List<MediaFile> mediaFiles = this.selectedMedia.getMediaFiles();\r
+               Media media = getMedia();\r
+               if (media != null) {\r
+                       List<MediaFile> mediaFiles = media.getMediaFiles();\r
                        if (mediaFiles != null) {\r
                                for (MediaFile mf : mediaFiles) {\r
                                        if (mf.getStore().isLowres()) {\r
@@ -79,28 +87,14 @@ public class SearchModel extends BaseModel {
        }\r
 \r
        public boolean getHasTSMMediaFile() {\r
-               boolean ret = false;\r
-               if (this.selectedMedia != null) {\r
-                       List<MediaFile> mediaFiles = this.selectedMedia.getMediaFiles();\r
-                       if (mediaFiles != null) {\r
-                               for (MediaFile mf : mediaFiles) {\r
-                                       if (mf.getStore().isSystem()) {\r
-                                               return true;\r
-                                       }\r
-                               }\r
-                       }\r
-               }\r
-               return ret;\r
-       }\r
-\r
-       public Converter getLfConverter() {\r
-               return lfConverter;\r
+               return selectedItem != null;\r
        }\r
 \r
        public String getLowresMediaFilePath() throws Exception {\r
                String ret = PAGES_MEDIAPLAYER;\r
-               if (this.selectedMedia != null) {\r
-                       List<MediaFile> mediaFiles = this.selectedMedia.getMediaFiles();\r
+               Media media = getMedia();\r
+               if (media != null) {\r
+                       List<MediaFile> mediaFiles = media.getMediaFiles();\r
                        if (mediaFiles != null) {\r
                                for (MediaFile mf : mediaFiles) {\r
                                        Store store = mf.getStore();\r
@@ -109,8 +103,6 @@ public class SearchModel extends BaseModel {
                                                URL base = new URL(sourceStoreUri.toString());\r
                                                String relative = mf.getRelativePath().replace("\\", "/");\r
                                                ret += new URL(base, relative).toString();\r
-                                               // File f = new File("file://" + mf.getRelativePath().replace("\\", "/"));\r
-                                               // ret = String.format("%s%s%s", "/pages/mediaplayer.jsp?mediaurl=", sourceStoreUri.toString(), f.getName()).toString();\r
                                                break;\r
                                        }\r
                                }\r
@@ -121,6 +113,15 @@ public class SearchModel extends BaseModel {
                return ret;\r
        }\r
 \r
+       private Media getMedia() {\r
+               Media result = null;\r
+               if (searchResult != null && selectedItem != null) {\r
+                       IItemManager manager = searchResult.getItemManager();\r
+                       result = manager.getMedia(selectedItem.getMedia().getId());\r
+               }\r
+               return result;\r
+       }\r
+\r
        public CachedListModel getSearchResult() {\r
                return searchResult;\r
        }\r
@@ -129,68 +130,99 @@ public class SearchModel extends BaseModel {
                return searchValue;\r
        }\r
 \r
-       public Item getSelectedItem() {\r
+       public ArchivedMedia getSelectedItem() {\r
                return selectedItem;\r
        }\r
 \r
-       public Media getSelectedMedia() {\r
-               return selectedMedia;\r
-       }\r
-\r
-       //islowres   player  protocol + address + relativepath\r
-       //issystem TSM\r
-\r
-       /*\r
-               public String getMediaFilePath(){\r
-                       String ret = "";\r
-                       if(this.selectedMedia != null){\r
-                               List<MediaFile> mediaFiles = this.selectedMedia.getMediaFiles();\r
-                               for(MediaFile mf : mediaFiles){\r
-                                       //if(!mf.isArchived() ???){                     ++++++++++++++++++++\r
-                                               ret = "/pages/mediaplayer.jsp?mediaurl=" + mf.getRelativePath();\r
-                                               //ret = mf.getRelativePath();\r
-                                       //}\r
-                               }\r
-                       }\r
-                       return ret;\r
-               }\r
-       \r
-               public boolean getHasSelectedMediaFile(){\r
-                       String mediaFilePath =getMediaFilePath();\r
-                       return (mediaFilePath != null && !"".equals(mediaFilePath));\r
-               }\r
-       */\r
-\r
        public String getTSMMediaFilePath() throws Exception {\r
                String ret = "";\r
-               if (this.selectedMedia != null) {\r
-                       List<MediaFile> mediaFiles = this.selectedMedia.getMediaFiles();\r
+               Media media = getMedia();\r
+               if (media != null) {\r
+                       List<MediaFile> mediaFiles = media.getMediaFiles();\r
                        for (MediaFile mf : mediaFiles) {\r
                                Store store = mf.getStore();\r
-                               if (mf.getStore().isSystem()) {\r
+                               if (mf.getStore().isSystem())\r
                                        ret = Paths.get(store.getStoreUris().get(0).toString(false), mf.getRelativePath()).toString();\r
-                               }\r
                        }\r
                }\r
                return ret;\r
        }\r
 \r
-       @Command\r
-       @NotifyChange({ "mediaFilePath", "hasSelectedMediaFile", "hasLowresMediaFile", "lowresMediaFilePath", "hasTSMMediaFile" })\r
-       public void onSelectMedia(@BindingParam("media") Media m) {\r
-               this.selectedMedia = m;\r
+       public boolean isAdChecked() {\r
+               return adChecked;\r
        }\r
 \r
-       public void setSearchValue(String searchValue) {\r
-               this.searchValue = searchValue;\r
+       public boolean isAllFeedChecked() {\r
+               return allFeedChecked;\r
+       }\r
+\r
+       public boolean isMaterialChecked() {\r
+               return materialChecked;\r
        }\r
 \r
-       public void setSelectedItem(Item _selectedItem) {\r
-               this.selectedItem = _selectedItem;\r
+       public boolean isNewsFeedChecked() {\r
+               return newsFeedChecked;\r
+       }\r
+\r
+       public boolean isNewsRawChecked() {\r
+               return newsRawChecked;\r
+       }\r
+\r
+       public boolean isOtherChecked() {\r
+               return otherChecked;\r
+       }\r
+\r
+       public boolean isPromoChecked() {\r
+               return promoChecked;\r
+       }\r
+\r
+       public boolean isRecordingChecked() {\r
+               return recordingChecked;\r
+       }\r
+\r
+       public void setActivePage(int activePage) {\r
+               this.activePage = activePage;\r
+       }\r
+\r
+       public void setAdChecked(boolean adChecked) {\r
+               this.adChecked = adChecked;\r
+       }\r
+\r
+       public void setAllFeedChecked(boolean allFeedChecked) {\r
+               this.allFeedChecked = allFeedChecked;\r
+       }\r
+\r
+       public void setMaterialChecked(boolean materialChecked) {\r
+               this.materialChecked = materialChecked;\r
+       }\r
+\r
+       public void setNewsFeedChecked(boolean newsFeedChecked) {\r
+               this.newsFeedChecked = newsFeedChecked;\r
+       }\r
+\r
+       public void setNewsRawChecked(boolean newsRawChecked) {\r
+               this.newsRawChecked = newsRawChecked;\r
+       }\r
+\r
+       public void setOtherChecked(boolean otherChecked) {\r
+               this.otherChecked = otherChecked;\r
+       }\r
+\r
+       public void setPromoChecked(boolean promoChecked) {\r
+               this.promoChecked = promoChecked;\r
+       }\r
+\r
+       public void setRecordingChecked(boolean recordingChecked) {\r
+               this.recordingChecked = recordingChecked;\r
+       }\r
+\r
+       public void setSearchValue(String searchValue) {\r
+               this.searchValue = searchValue;\r
        }\r
 \r
-       public void setSelectedMedia(Media _selectedMedia) {\r
-               this.selectedMedia = _selectedMedia;\r
+       @NotifyChange({ "hasLowresMediaFile", "hasTSMMediaFile", "lowresMediaFilePath", "selectedItem.item" })\r
+       public void setSelectedItem(ArchivedMedia selectedItem) {\r
+               this.selectedItem = selectedItem;\r
        }\r
 \r
 }\r