From: Vásáry Dániel Date: Mon, 12 Mar 2018 13:42:44 +0000 (+0000) Subject: git-tfs-id: [http://tfs.userrendszerhaz.hu:8080/tfs/DefaultCollection]$/MediaCube... X-Git-Url: http://git.useribm.hu/?a=commitdiff_plain;h=c82507b5a8eca775510229588a38bcf46fd78d8a;p=mediacube.git git-tfs-id: [tfs.userrendszerhaz.hu:8080/tfs/DefaultCollection]$/MediaCube;C30969 --- diff --git a/server/-configuration/log4j2.xml b/server/-configuration/log4j2.xml index d24e9d3b..1be0d20a 100644 --- a/server/-configuration/log4j2.xml +++ b/server/-configuration/log4j2.xml @@ -19,7 +19,7 @@ - diff --git a/server/-configuration/scheduledjobs.json b/server/-configuration/scheduledjobs.json index beb98cbb..c29446f8 100644 --- a/server/-configuration/scheduledjobs.json +++ b/server/-configuration/scheduledjobs.json @@ -31,7 +31,7 @@ "template": "import-statistics.xml", "cronexpression": "0 0 0/1 1/1 * ? *", "parameters": [ - {"name": "daysBeforeNow", "value": 3, "type": "java.lang.Integer"} + {"name": "daysBeforeNow", "value": 6, "type": "java.lang.Integer"} ] }, { diff --git a/server/user.jobengine.executors/config/config.xml b/server/user.jobengine.executors/config/config.xml index 4366af6f..7331063b 100644 --- a/server/user.jobengine.executors/config/config.xml +++ b/server/user.jobengine.executors/config/config.xml @@ -13,7 +13,7 @@ - + diff --git a/server/user.jobengine.executors/src/user/jobengine/server/steps/CopyForArchiveNEXIORecordingsStep.java b/server/user.jobengine.executors/src/user/jobengine/server/steps/CopyForArchiveNEXIORecordingsStep.java index 03380a5d..3c71a2a4 100644 --- a/server/user.jobengine.executors/src/user/jobengine/server/steps/CopyForArchiveNEXIORecordingsStep.java +++ b/server/user.jobengine.executors/src/user/jobengine/server/steps/CopyForArchiveNEXIORecordingsStep.java @@ -207,6 +207,33 @@ public class CopyForArchiveNEXIORecordingsStep extends JobStep { e.getMessage()); return null; } + + if (clipName.startsWith("1900")) { + Calendar cal = CalendarUtils.createCalendar(scheduledStart); + cal.add(Calendar.MINUTE, 5); + rundown = octopusAPI.getRundown(cal.getTime()); + if (rundown == null) { + logger.error(systemMarker, "A '{}' anyaghoz nem található tükör '{}' kezdéssel, ezért nem archiválható.", clipName, scheduledStart); + return null; + } + + RundownArchive item2 = null; + + try { + item2 = processRundow(rundown, clipName, duration); + } catch (Exception e) { + logger.catching(e); + logger.error(systemMarker, "A '{}' anyag metaadatainak transzformálása sikertelen, ezért az nem archiválható. A rendszer hibaüzenete: {}", + e.getMessage()); + return null; + } + + result.setItemTitle(result.getItemTitle() + " + NAPIAKT"); + StoryArchive storyArchive = result.getStoryArchives().get(0); + StoryArchive storyArchive2 = item2.getStoryArchives().get(0); + storyArchive.setMediaDesc(storyArchive.getMediaDesc() + "\r\n\r\n****** NAPIAKT ******\r\n\r\n" + storyArchive2.getMediaDesc()); + } + return result; } diff --git a/server/user.jobengine.executors/src/user/jobengine/server/steps/FakeStep.java b/server/user.jobengine.executors/src/user/jobengine/server/steps/FakeStep.java index 5e49068c..b14dcade 100644 --- a/server/user.jobengine.executors/src/user/jobengine/server/steps/FakeStep.java +++ b/server/user.jobengine.executors/src/user/jobengine/server/steps/FakeStep.java @@ -26,8 +26,8 @@ public class FakeStep extends JobStep { jobRuntime.incrementProgress((i + 1) * count); Thread.sleep(100); - if (i == 2) - throw new Exception("TESZT"); + // if (i == 2) + // throw new Exception("TESZT"); //logger.info("Progress {}", jobRuntime.getProgress()); } } catch (Exception e) { diff --git a/server/user.jobengine.executors/src/user/jobengine/server/steps/ImportStatisticsStep.java b/server/user.jobengine.executors/src/user/jobengine/server/steps/ImportStatisticsStep.java index 547929ff..e5e88c40 100644 --- a/server/user.jobengine.executors/src/user/jobengine/server/steps/ImportStatisticsStep.java +++ b/server/user.jobengine.executors/src/user/jobengine/server/steps/ImportStatisticsStep.java @@ -97,7 +97,7 @@ public class ImportStatisticsStep extends JobStep { BasicDBObject typeStat = new BasicDBObject(); BasicDBObject typeStatRawData = new BasicDBObject(); typeStat.put("rawData", typeStatRawData); - long sumduration = 0; + long sumDuration = 0; long sumIngestDuration = 0; long sumIngestCount = 0; long sumArchiveDuration = 0; @@ -140,8 +140,8 @@ public class ImportStatisticsStep extends JobStep { long archiveDuration = 0; BasicDBObject archiveInfo = manager.getArchiveInfo(scheduledDate, String.valueOf(parentStoryId)); if (archiveInfo != null) { - archiveCount = ingestInfo.getLong("count"); - archiveDuration = ingestInfo.getLong("duration"); + archiveCount = archiveInfo.getLong("count"); + archiveDuration = archiveInfo.getLong("duration"); raw.put("archive_count", archiveCount); raw.put("archive_duration", archiveDuration); sumArchiveCount += archiveCount; @@ -152,21 +152,15 @@ public class ImportStatisticsStep extends JobStep { //planStat if (sfCount > 0 && rdCount == 0) { - long planned = NoSQLUtils.asLong(planStat, "unreleased_count"); - planned++; - planStat.put("unreleased_count", planned); - long plannedDuration = NoSQLUtils.asLong(planStat, "unreleased_duration"); - planStat.put("unreleased_duration", plannedDuration + duration); + NoSQLUtils.addLong(planStat, "skip_count", 1); + NoSQLUtils.addLong(planStat, "skip_duration", duration); } if (rdCount > 0) { - long released = NoSQLUtils.asLong(planStat, "released_count"); - released++; - planStat.put("released_count", released); - long releasedDuration = NoSQLUtils.asLong(planStat, "released_duration"); - planStat.put("released_duration", releasedDuration + duration); + NoSQLUtils.addLong(planStat, "onair_count", 1); + NoSQLUtils.addLong(planStat, "onair_duration", duration); //typeStat - sumduration += duration; + sumDuration += duration; if (typeStatRawData.containsKey(label)) { BasicDBObject dbo = NoSQLUtils.asDBObject(typeStatRawData, label); dbo.put("count", dbo.getInt("count") + 1); @@ -178,7 +172,7 @@ public class ImportStatisticsStep extends JobStep { } planStat.put("all_count", rawData.size()); - planStat.put("all_duration", sumduration); + planStat.put("all_duration", sumDuration); planStat.put("archive_count", sumArchiveCount); planStat.put("archive_duration", sumArchiveDuration); planStat.put("ingest_count", sumIngestCount); diff --git a/server/user.jobengine.osgi.commons/src/user/commons/nosql/NoSQLUtils.java b/server/user.jobengine.osgi.commons/src/user/commons/nosql/NoSQLUtils.java index f33996ee..20d0ec55 100644 --- a/server/user.jobengine.osgi.commons/src/user/commons/nosql/NoSQLUtils.java +++ b/server/user.jobengine.osgi.commons/src/user/commons/nosql/NoSQLUtils.java @@ -22,6 +22,11 @@ public class NoSQLUtils { Pass = System.getProperty("jobengine.nosql.db.password"); } + public static void addLong(BasicDBObject obj, String name, long value) { + long current = asLong(obj, name); + obj.put(name, current + value); + } + public static BasicDBList asDBList(BasicDBObject obj, String name) { BasicDBList result = null; if (obj.containsKey(name) && (obj.get(name) instanceof BasicDBList)) 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 index 00000000..75db953f --- /dev/null +++ b/server/user.jobengine.osgi.db/src/user/jobengine/db/ArchivedMedia.java @@ -0,0 +1,23 @@ +package user.jobengine.db; + +public class ArchivedMedia { + private Item item; + private Media media; + + public Item getItem() { + return item; + } + + public Media getMedia() { + return media; + } + + public void setItem(Item item) { + this.item = item; + } + + public void setMedia(Media media) { + this.media = media; + } + +} diff --git a/server/user.jobengine.osgi.db/src/user/jobengine/db/IItemManager.java b/server/user.jobengine.osgi.db/src/user/jobengine/db/IItemManager.java index 10110dbb..7ac032f9 100644 --- a/server/user.jobengine.osgi.db/src/user/jobengine/db/IItemManager.java +++ b/server/user.jobengine.osgi.db/src/user/jobengine/db/IItemManager.java @@ -186,6 +186,8 @@ public interface IItemManager extends IEntityPersister { BasicDBObject getIngestInfo(Calendar scheduleDate, String houseId); + Item getItem(long id); + Item getItemByHouseID(String houseID); ItemType getItemType(String itemTypeName); @@ -345,6 +347,8 @@ public interface IItemManager extends IEntityPersister { */ IEntityBase retrieveCached(Class baseClass, Object key); + SearchResult search(String criteria, int fromResult, int toResult); + /** * A bemeneti paraméterként kapott keresési feltételeknek megfelelő Anyagokat lekéri az adatbázisból és SearchResult objektumba csomagolva visszatér. * @@ -353,7 +357,7 @@ public interface IItemManager extends IEntityPersister { */ List searchItem(QueryObject parameter); - SearchResult searchItem(String criteria, int fromResult, int toResult); + SearchResult searchItem(String criteria, int fromResult, int toResult); /** * A bemeneti paraméterként kapott keresési feltételeknek megfelelő Munkafolyamatokat lekéri az adaatbázisból. diff --git a/server/user.jobengine.osgi.db/src/user/jobengine/db/ItemDAOEx.java b/server/user.jobengine.osgi.db/src/user/jobengine/db/ItemDAOEx.java index f10c22e6..8357e775 100644 --- a/server/user.jobengine.osgi.db/src/user/jobengine/db/ItemDAOEx.java +++ b/server/user.jobengine.osgi.db/src/user/jobengine/db/ItemDAOEx.java @@ -232,8 +232,8 @@ public class ItemDAOEx { return results; } - public SearchResult search(String criteria, int fromResult, int toResult) { - SearchResult result = new SearchResult(); + public SearchResult search(String criteria, int fromResult, int toResult) { + SearchResult result = new SearchResult(); ResultSet rs = null; PreparedStatement st = null; @@ -321,4 +321,95 @@ public class ItemDAOEx { return result; } + + public SearchResult searchArchivedMedia(String criteria, int fromResult, int toResult) { + SearchResult result = new SearchResult<>(); + + ResultSet rs = null; + PreparedStatement st = null; + DefaultContext context = manager.getDbContext(); + Connection connection = context.getConnection(); + + try { + StringBuffer sql = new StringBuffer(); + + sql.append("SELECT * FROM (("); + sql.append("SELECT DISTINCT m.id,m.title FROM ITEM i, MEDIA m, MEDIAFILE mf"); + sql.append(" WHERE ((CONTAINS(i.title, ?) >= 1) OR (CONTAINS(i.description, ?) >= 1)) AND m.itemid = i.id AND mf.mediaid = m.id"); + sql.append(")UNION("); + sql.append("SELECT DISTINCT m2.id,m2.title FROM ITEM i2, MEDIA m2, MEDIAFILE mf2"); + sql.append(" WHERE ((CONTAINS(m2.title, ?) >= 1) OR (CONTAINS(m2.description, ?) >= 1)) AND m2.itemid = i2.id AND mf2.MEDIAID = m2.id"); + sql.append(")UNION("); + sql.append("SELECT DISTINCT m3.id,m3.title FROM ITEM i3, MEDIA m3, MEDIAFILE mf3"); + sql.append(" WHERE (CONTAINS(mf3.houseId, ?) >= 1) AND m3.itemid = i3.id AND mf3.mediaid = m3.id"); + sql.append(")) ORDER BY title"); + + String query = sql.toString(); + st = connection.prepareStatement(query, ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_UPDATABLE); + for (int s = 1; s <= 5; s++) { + st.setString(s, criteria); + } + rs = st.executeQuery(); + rs.last(); + result.setItemCount(rs.getRow()); + + // set begining position + if (fromResult > -1) { + if (fromResult <= result.getItemCount()) { + if (fromResult > 1) { + rs.absolute(fromResult - 1); + } else { + rs.beforeFirst(); + } + } else { + if (result.getItemCount() > 0) { + throw new Exception("Invalid searchResult 'from' position: " + fromResult + " total records: " + result.getItemCount() + " " + query); + } + } + } else { + rs.beforeFirst(); + } + + int maxRecords = toResult - fromResult; + + List resultList = null; + logger.info("Processing query result, maxRecords {}", maxRecords); + while (rs.next() && maxRecords > 0) { + ArchivedMedia am = new ArchivedMedia(); + Media media = manager.getMedia(rs.getLong("id")); + am.setMedia(media); + Item item = manager.getItem(media.getItemId()); + am.setItem(item); + if (resultList == null) + resultList = new ArrayList<>(); + resultList.add(am); + maxRecords--; + } + logger.info("Query result processed"); + result.setItems(resultList); + connection.commit(); + } catch (Exception e) { + try { + connection.rollback(); + } catch (Exception e1) { + e1.printStackTrace(); + } + manager.throwError(e); + } finally { + try { + if (rs != null) + rs.close(); + } catch (Exception e1) { + } + try { + if (st != null) + st.close(); + } catch (Exception e1) { + } + manager.putDbContext(context); + } + manager.traceOut(); + + return result; + } } diff --git a/server/user.jobengine.osgi.db/src/user/jobengine/db/ItemManager.java b/server/user.jobengine.osgi.db/src/user/jobengine/db/ItemManager.java index 7eb74c9f..831a1f13 100644 --- a/server/user.jobengine.osgi.db/src/user/jobengine/db/ItemManager.java +++ b/server/user.jobengine.osgi.db/src/user/jobengine/db/ItemManager.java @@ -448,8 +448,8 @@ public class ItemManager extends MemoryCache implements IItemManager { try { String date = df.format(scheduleDate.getTime()); String query = String.format( - "SELECT COUNT(*) as count, SUM(length) as duration FROM VW_ITEMS WHERE houseid='%s' AND archived LIKE '%s%%' GROUP BY houseid", houseId, - date); + "SELECT COUNT(*) as count, SUM(length) as duration FROM VW_ITEMS WHERE mediahouseid='%s' AND archived LIKE '%s%%' GROUP BY mediahouseid", + houseId, date); st = connection.prepareStatement(query); rs = st.executeQuery(); if (rs.next()) { @@ -605,6 +605,11 @@ public class ItemManager extends MemoryCache implements IItemManager { return result; } + @Override + public Item getItem(long id) { + return (Item) get(Item.class, id); + } + @Override public Item getItemByHouseID(String houseID) { traceIn(); @@ -619,8 +624,10 @@ public class ItemManager extends MemoryCache implements IItemManager { // Exercise List searchResult = searchItem(qo); - if (searchResult != null && searchResult.size() > 0 && searchResult.get(0).getItemCount() == 1) - result = searchResult.get(0).getItems().get(0); + if (searchResult != null && searchResult.size() > 0 && searchResult.get(0).getItemCount() == 1) { + SearchResult sr = searchResult.get(0); + result = sr.getItems().get(0); + } traceOut(); return result; } @@ -939,6 +946,16 @@ public class ItemManager extends MemoryCache implements IItemManager { traceOut(); } + @Override + public SearchResult search(String criteria, int fromResult, int toResult) { + traceIn(); + SearchResult result = null; + ItemDAOEx itemDb = new ItemDAOEx(this); + result = itemDb.searchArchivedMedia(criteria, fromResult, toResult); + traceOut(); + return result; + } + @Override public List searchItem(QueryObject parameter) { traceIn(); @@ -950,9 +967,9 @@ public class ItemManager extends MemoryCache implements IItemManager { } @Override - public SearchResult searchItem(String criteria, int fromResult, int toResult) { + public SearchResult searchItem(String criteria, int fromResult, int toResult) { traceIn(); - SearchResult result = null; + SearchResult result = null; ItemDAOEx itemDb = new ItemDAOEx(this); result = itemDb.search(criteria, fromResult, toResult); traceOut(); diff --git a/server/user.jobengine.osgi.db/src/user/jobengine/db/SearchResult.java b/server/user.jobengine.osgi.db/src/user/jobengine/db/SearchResult.java index 2d0ccb2d..b684c1ce 100644 --- a/server/user.jobengine.osgi.db/src/user/jobengine/db/SearchResult.java +++ b/server/user.jobengine.osgi.db/src/user/jobengine/db/SearchResult.java @@ -2,26 +2,26 @@ package user.jobengine.db; import java.util.List; -public class SearchResult { - +public class SearchResult { + private long itemCount; - private ItemType itemType; - private List items; - private List folders; - private RenderParameter parameters; - - public List getFolders() { + private ItemType itemType; + private List items; + private List folders; + private RenderParameter parameters; + + public List getFolders() { return this.folders; } - + public long getItemCount() { return this.itemCount; } - - public List getItems() { + + public List getItems() { return this.items; } - + public ItemType getItemType() { return this.itemType; } @@ -30,7 +30,7 @@ public class SearchResult { return this.parameters; } - public void setFolders(List folders) { + public void setFolders(List folders) { this.folders = folders; } @@ -38,7 +38,7 @@ public class SearchResult { this.itemCount = itemCount; } - public void setItems(List items) { + public void setItems(List items) { this.items = items; } diff --git a/server/user.jobengine.osgi.db/test/user/jobengine/db/TestItem.java b/server/user.jobengine.osgi.db/test/user/jobengine/db/TestItem.java index ef3ccc69..67119aef 100644 --- a/server/user.jobengine.osgi.db/test/user/jobengine/db/TestItem.java +++ b/server/user.jobengine.osgi.db/test/user/jobengine/db/TestItem.java @@ -126,7 +126,7 @@ public class TestItem extends TestBase { System.out.println("Item created: " + i); } - SearchResult search = manager.searchItem("elem", 0, 9); + SearchResult search = manager.searchItem("elem", 0, 9); assertEquals(10, search.getItemCount()); for (Item item : search.getItems()) { @@ -353,7 +353,7 @@ public class TestItem extends TestBase { @Test public void testSearch() { - SearchResult search = manager.searchItem("elem", 10, 20); + SearchResult search = manager.searchItem("elem", 10, 20); assertEquals(1000, search.getItemCount()); assertEquals(10, search.getItems().size()); diff --git a/server/user.jobengine.osgi.server/pages/index.zul b/server/user.jobengine.osgi.server/pages/index.zul index 3859e8bd..d44cbbef 100644 --- a/server/user.jobengine.osgi.server/pages/index.zul +++ b/server/user.jobengine.osgi.server/pages/index.zul @@ -82,7 +82,7 @@
- +
diff --git a/server/user.jobengine.osgi.server/pages/menu.zul b/server/user.jobengine.osgi.server/pages/menu.zul index 63147ce2..c4d094bf 100644 --- a/server/user.jobengine.osgi.server/pages/menu.zul +++ b/server/user.jobengine.osgi.server/pages/menu.zul @@ -54,7 +54,7 @@ - + diff --git a/server/user.jobengine.osgi.server/pages/newshistory.zul b/server/user.jobengine.osgi.server/pages/newshistory.zul index 85cde7db..a0933139 100644 --- a/server/user.jobengine.osgi.server/pages/newshistory.zul +++ b/server/user.jobengine.osgi.server/pages/newshistory.zul @@ -1,62 +1,91 @@ - - - - - - - - - - - - - - - - -
- -
-
- -
-
- -
-
-
-
-
- - - - - - - - - - - - - - - - - - - - - -
-
- -
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
\ 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 index 2528fa12..00000000 --- a/server/user.jobengine.osgi.server/pages/search_items.zul +++ /dev/null @@ -1,144 +0,0 @@ - - - - - - - - - - - -
- - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
- -
- - - - -
- - - - - - - - - - -
-
-
- - - -
-
- -
-
- - -
-
\ 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 index 00000000..ff929273 --- /dev/null +++ b/server/user.jobengine.osgi.server/pages/searchitems.zul @@ -0,0 +1,174 @@ + + + + + + + + + + + +
+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ +
+ + + + +
+ + + + + + + + + + +
+
+
+ + + +
+
+ +
+
+ + +
+
\ No newline at end of file diff --git a/server/user.jobengine.osgi.server/resources/i3-label_hu.properties b/server/user.jobengine.osgi.server/resources/i3-label_hu.properties index 10e78b79..493571b5 100644 --- a/server/user.jobengine.osgi.server/resources/i3-label_hu.properties +++ b/server/user.jobengine.osgi.server/resources/i3-label_hu.properties @@ -1,4 +1,4 @@ -version=2.2.3 +version=2.3.1 footer=2016 © Copyright User Rendszerház Kft. login_info=Információ diff --git a/server/user.jobengine.osgi.server/src/user/jobengine/zk/model/CachedListModel.java b/server/user.jobengine.osgi.server/src/user/jobengine/zk/model/CachedListModel.java index b1688e52..7fa9b1b4 100644 --- a/server/user.jobengine.osgi.server/src/user/jobengine/zk/model/CachedListModel.java +++ b/server/user.jobengine.osgi.server/src/user/jobengine/zk/model/CachedListModel.java @@ -1,6 +1,5 @@ package user.jobengine.zk.model; -import java.sql.Timestamp; import java.util.ArrayList; import java.util.HashMap; import java.util.List; @@ -14,20 +13,19 @@ import org.zkoss.zk.ui.event.Events; import org.zkoss.zul.ListModelList; import org.zkoss.zul.event.ListDataEvent; +import user.jobengine.db.ArchivedMedia; import user.jobengine.db.IItemManager; import user.jobengine.db.Item; -import user.jobengine.db.Media; -import user.jobengine.db.MediaFile; +import user.jobengine.db.ItemManager; import user.jobengine.db.SearchResult; -import user.jobengine.server.JobEngine; /** * Cachelt modell nagy listakhoz. Cacheli a dokumentumokat a megadott meretben. Az utoljara elkert index +- cacheSize/2 */ -public class CachedListModel extends ListModelList { +public class CachedListModel extends ListModelList { private static final Logger logger = LogManager.getLogger(); - private int cacheSize = 500; - private HashMap cache = new HashMap(); + private int cacheSize = 100; + private HashMap cache = new HashMap(); private String searchValue = null; private int resultSetSize = -1; @@ -39,11 +37,9 @@ public class CachedListModel extends ListModelList { private ArrayList eventListenerList = new ArrayList(); private IItemManager itemManager = null; - //KONSTRUKTOR public CachedListModel(String _searchValue) { this.searchValue = _searchValue; - this.itemManager = JobEngine.getStaticItemManager(); - //sajat selection modellt hasznalunk + this.itemManager = ItemManager.getInstance(); //this.setMultiple(true); reinit(); } @@ -63,7 +59,6 @@ public class CachedListModel extends ListModelList { } public void clearCache() { - cache.clear(); cache.clear(); docSelection.clear(); } @@ -98,9 +93,9 @@ public class CachedListModel extends ListModelList { } @Override - public Item getElementAt(int index) { + public ArchivedMedia getElementAt(int index) { //logger.debug("CachedListMode.getElementAt(): " + index); - Item ret = cache.get(index); + ArchivedMedia ret = cache.get(index); if (ret == null) { loadCache(index); ret = cache.get(index); @@ -111,6 +106,10 @@ public class CachedListModel extends ListModelList { return ret; } + public IItemManager getItemManager() { + return itemManager; + } + //ListModelList method felulirva //after 1. search ++++++++++ @Override @@ -138,16 +137,14 @@ public class CachedListModel extends ListModelList { int endPos = (startPos + rowLimit); endPos = ((this.resultSetSize < 0) || (endPos <= this.resultSetSize)) ? endPos : this.resultSetSize; - //DO SEARCH for startPos, endPos - //SearchResult sr = loadFakeItems(startPos, endPos); - SearchResult sr = this.itemManager.searchItem(searchValue + "*", startPos, endPos); + SearchResult sr = this.itemManager.search(searchValue + "*", startPos, endPos); if (sr != null) { if (this.resultSetSize < 0) { this.resultSetSize = (int) sr.getItemCount(); } - List resList = sr.getItems(); + List resList = sr.getItems(); if (resList != null) { for (int c = 0; c < resList.size(); c++) { cache.put(startPos + c, resList.get(c)); @@ -168,48 +165,6 @@ public class CachedListModel extends ListModelList { } } - //TEST CODE - private SearchResult loadFakeItems(int start, int end) { - SearchResult sr = new SearchResult(); - sr.setItemCount(15000); - List itemList = new ArrayList(); - - for (int c = start; c < end; c++) { - Item i = new Item(); - i.setId(c); - i.setDescription("ItemDesc " + c); - i.setTitle("ItemTitle " + c); - i.setCreated(new Timestamp(System.currentTimeMillis())); - i.setModified(new Timestamp(System.currentTimeMillis())); - - //mediaList - List mediaList = new ArrayList(); - for (int m = 0; m < 3; m++) { - Media med = new Media(); - med.setId(Integer.parseInt(c + 1 + "" + m + 1)); - med.setTitle("MediaTitle " + m); - med.setDescription("MediaDesc " + m); - mediaList.add(med); - //video test - MediaFile mediaFile = new MediaFile(); - if (m % 2 == 0) { - mediaFile.setRelativePath("/zk/media_oceans.mp4"); - } else { - mediaFile.setRelativePath("/zk/media_ed_hd.mp4"); - } - List mediaFiles = new ArrayList(); - mediaFiles.add(mediaFile); - med.setMediaFiles(mediaFiles); - - } - i.setMedias(mediaList); - itemList.add(i); - } - - sr.setItems(itemList); - return sr; - } - //kintrol is hivhatjak public void reinit() { this.resultSetSize = -1; diff --git a/server/user.jobengine.osgi.server/src/user/jobengine/zk/model/MissingMaterialsModel.java b/server/user.jobengine.osgi.server/src/user/jobengine/zk/model/MissingMaterialsModel.java index ab7c30ce..6970d0ed 100644 --- a/server/user.jobengine.osgi.server/src/user/jobengine/zk/model/MissingMaterialsModel.java +++ b/server/user.jobengine.osgi.server/src/user/jobengine/zk/model/MissingMaterialsModel.java @@ -36,7 +36,6 @@ public class MissingMaterialsModel extends AsyncBaseModel implements IJobChanged private static final Logger logger = LogManager.getLogger(); private static final String TARGETPATH = "targetPath"; private static final String IMPORT_DISABLED = "importDisabled"; - private static final String TEMPLATE = "template"; private static final String IMPORT_TEMPLATE = "import-morpheus-missing-materials.xml"; private static final String RETRIEVE_TEMPLATE = "retrieve-missing-material.xml"; private ListModelList jobList = new ListModelList(); @@ -106,7 +105,7 @@ public class MissingMaterialsModel extends AsyncBaseModel implements IJobChanged List jobs = NoSQLUtils.asList(scheduler.getScheduleJobs()); BasicDBObject importJob = null; for (BasicDBObject job : jobs) { - if (isImportJob(job.getString(TEMPLATE))) { + if (isImportJob(job.getString(IMPORT_TEMPLATE))) { importJob = job; //logger.info(job.toString()); break; diff --git a/server/user.jobengine.osgi.server/src/user/jobengine/zk/model/NewsHistoryCharts.java b/server/user.jobengine.osgi.server/src/user/jobengine/zk/model/NewsHistoryCharts.java index 84d0acda..bb77a23b 100644 --- a/server/user.jobengine.osgi.server/src/user/jobengine/zk/model/NewsHistoryCharts.java +++ b/server/user.jobengine.osgi.server/src/user/jobengine/zk/model/NewsHistoryCharts.java @@ -5,7 +5,9 @@ import org.apache.logging.log4j.Logger; import org.zkoss.chart.Charts; import org.zkoss.chart.Point; import org.zkoss.chart.Series; +import org.zkoss.chart.Tooltip; import org.zkoss.chart.YAxis; +import org.zkoss.json.JavaScriptValue; import com.ibm.nosql.json.api.BasicDBObject; @@ -34,7 +36,7 @@ public class NewsHistoryCharts { private static void init(Charts charts) { charts.getChart().setPlotBorderWidth(0); - charts.getChart().setPlotShadow(false); + charts.getChart().setPlotShadow(true); charts.getPlotOptions().getSeries().setAnimation(false); charts.getPlotOptions().getSeries().setAllowPointSelect(false); charts.getPlotOptions().getSeries().setEnableMouseTracking(false); @@ -43,33 +45,47 @@ public class NewsHistoryCharts { public static void initMultiAxis(Charts charts, BasicDBObject planStat) { init(charts); + charts.getPlotOptions().getSeries().setEnableMouseTracking(true); + + charts.setTitle("Bejátszók felhasználtsága"); + Tooltip tooltip = charts.getTooltip(); + tooltip.setShared(true); + tooltip.setUseHTML(true); + tooltip.setEnabled(true); + tooltip.addExtraAttr("formatter", new JavaScriptValue("function () { return this.points[0].point.y + 'db / ' + frameToTC(this.points[1].point.y); }")); + charts.getXAxis().setCategories("Összes", "Betöltve", "Adásban", "Kihagyva", "Archivált"); - YAxis yAxis1 = charts.getYAxis(); - yAxis1.getLabels().setFormat("{value} db"); - yAxis1.getLabels().setStyle("color: " + charts.getColors().get(1).stringValue()); + + YAxis yAxis1 = charts.getYAxis(0); yAxis1.setTitle("Darab"); - yAxis1.getTitle().setStyle("color: " + charts.getColors().get(1).stringValue()); + yAxis1.getLabels().setFormat("{value}"); + yAxis1.getLabels().setStyle("color: " + charts.getColors().get(0).stringValue()); + yAxis1.getTitle().setStyle("color: " + charts.getColors().get(0).stringValue()); - // Secondary y axis YAxis yAxis2 = charts.getYAxis(1); yAxis2.setTitle("Hossz"); - yAxis2.getTitle().setStyle("color: " + charts.getColors().get(0).stringValue()); - yAxis2.getLabels().setFormat("{value} kocka"); - yAxis2.getLabels().setStyle("color: " + charts.getColors().get(0).stringValue()); + yAxis2.getTitle().setStyle("color: " + charts.getColors().get(1).stringValue()); + yAxis2.getLabels().setFormat("{value}"); + yAxis2.getLabels().setStyle("color: " + charts.getColors().get(1).stringValue()); yAxis2.setOpposite(true); + yAxis2.getLabels().addExtraAttr("formatter", new JavaScriptValue("function () { return frameToTC(this.value); }")); Series s1 = charts.getSeries(0); s1.setName("Darab"); - s1.setType("column"); - s1.setYAxis(1); - s1.setData(new Double[] { 49.9, 71.5, 106.4, 129.2, 144.0 }); - charts.getPlotOptions().getColumn().getTooltip().setValueSuffix(" db"); + s1.setYAxis(0); + s1.setData(new Long[] { NoSQLUtils.asLong(planStat, "all_count"), NoSQLUtils.asLong(planStat, "ingest_count"), + NoSQLUtils.asLong(planStat, "onair_count"), NoSQLUtils.asLong(planStat, "skip_count"), NoSQLUtils.asLong(planStat, "archive_count") }); + // TooltipPlotOptions tooltipOptions = charts.getPlotOptions().getColumn().getTooltip(); + // tooltipOptions.setValueSuffix(" db"); + // tooltip.addExtraAttr("formatter", new JavaScriptValue("function () { return statistics(this.point); }")); Series s2 = charts.getSeries(1); s2.setName("Hossz"); - s2.setType("column"); - s2.setData(new Double[] { 7.0, 6.9, 9.5, 14.5, 18.2 }); - charts.getPlotOptions().getSpline().getTooltip().setValueSuffix(" képkocka"); + s2.setYAxis(1); + s2.setData(new Long[] { NoSQLUtils.asLong(planStat, "all_duration"), NoSQLUtils.asLong(planStat, "ingest_duration"), + NoSQLUtils.asLong(planStat, "onair_duration"), NoSQLUtils.asLong(planStat, "skip_duration"), NoSQLUtils.asLong(planStat, "archive_duration") }); + s2.getDataLabels().addExtraAttr("formatter", new JavaScriptValue("function () { return frameToTC(this.y); }")); + } static public void initTypeCount(Charts charts, BasicDBObject datas) { @@ -82,7 +98,7 @@ public class NewsHistoryCharts { static public void initTypeDuration(Charts charts, BasicDBObject datas) { init(charts); charts.setTitle("Adásbejátszók hossza típus szerint"); - charts.getSeries().getDataLabels().setFormat("{point.name} {point.y} képkocka"); + charts.getSeries().getDataLabels().addExtraAttr("formatter", new JavaScriptValue("function () { return this.point.name + ' ' + frameToTC(this.y); }")); fill(charts, datas, "duration"); } diff --git a/server/user.jobengine.osgi.server/src/user/jobengine/zk/model/NewsHistoryModel.java b/server/user.jobengine.osgi.server/src/user/jobengine/zk/model/NewsHistoryModel.java index bc5abd2f..8b1372eb 100644 --- a/server/user.jobengine.osgi.server/src/user/jobengine/zk/model/NewsHistoryModel.java +++ b/server/user.jobengine.osgi.server/src/user/jobengine/zk/model/NewsHistoryModel.java @@ -39,7 +39,8 @@ public class NewsHistoryModel { private static final Logger logger = LogManager.getLogger(); private List dataList; private List columnList = Arrays.asList(IOctopusAPI.ID, IOctopusAPI.NAME, IOctopusAPI.PARENT_STORY_ID, IOctopusAPI.REPORTERS, IOctopusAPI.OBJ_ID, - IOctopusAPI.LABEL, "duration", IOctopusAPI.REF_RUNDOWN, IOctopusAPI.REF_STORYFOLDER, "ingest_count", "ingest_duration"); + IOctopusAPI.LABEL, "duration", IOctopusAPI.REF_RUNDOWN, IOctopusAPI.REF_STORYFOLDER, "ingest_count", "ingest_duration", "archive_count", + "archive_duration"); private DB db = null; private DBCollection collection; private Date selectedDate; @@ -66,7 +67,7 @@ public class NewsHistoryModel { int axisSize = charts.getyAxisSize(); for (int i = 0; i < axisSize; i++) { - charts.getYAxis(i).remove(); + charts.getYAxis(0).remove(); } charts.setTitle(""); diff --git a/server/user.jobengine.osgi.server/src/user/jobengine/zk/model/SearchModel.java b/server/user.jobengine.osgi.server/src/user/jobengine/zk/model/SearchModel.java index 673fef19..c7351870 100644 --- a/server/user.jobengine.osgi.server/src/user/jobengine/zk/model/SearchModel.java +++ b/server/user.jobengine.osgi.server/src/user/jobengine/zk/model/SearchModel.java @@ -9,8 +9,6 @@ import java.util.Map; import org.apache.commons.lang.StringUtils; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; -import org.zkoss.bind.Converter; -import org.zkoss.bind.annotation.BindingParam; import org.zkoss.bind.annotation.Command; import org.zkoss.bind.annotation.NotifyChange; import org.zkoss.zk.ui.Executions; @@ -19,7 +17,8 @@ import org.zkoss.zul.Window; import user.commons.StoreUri; import user.commons.remotestore.RemoteStoreProtocol; -import user.jobengine.db.Item; +import user.jobengine.db.ArchivedMedia; +import user.jobengine.db.IItemManager; import user.jobengine.db.Media; import user.jobengine.db.MediaFile; import user.jobengine.db.Store; @@ -31,22 +30,26 @@ public class SearchModel extends BaseModel { private static final String PAGES_MEDIAPLAYER = "/pages/mediaplayer.jsp?mediaurl="; private String searchValue = null; - protected CachedListModel searchResult = null; - private Item selectedItem = null; - private Media selectedMedia = null; - private Converter lfConverter = new LineFeedConverter(); + private CachedListModel searchResult = null; + private ArchivedMedia selectedItem = null; + private boolean newsFeedChecked; + private boolean allFeedChecked; + private boolean newsRawChecked; + private boolean materialChecked; + private boolean promoChecked; + private boolean adChecked; + private boolean recordingChecked; + private boolean otherChecked; + private int activePage; @Command - @NotifyChange({ "mold", "paging", "searchResult", "selectedItem", "selectedMedia", "hasLowresMediaFile" }) + @NotifyChange({ "activePage", "searchResult", "selectedItem", "hasLowresMediaFile" }) public void doSearch() { try { - //do search ++++++++ this.selectedItem = null; - this.selectedMedia = null; if (StringUtils.isBlank(searchValue) || searchValue.length() < 3) throw new Exception("Legalább 3 karakter megadása kötelező!"); searchResult = new CachedListModel(searchValue); - } catch (Exception e) { Messagebox.show(e.getMessage()); logger.catching(e); @@ -58,15 +61,20 @@ public class SearchModel extends BaseModel { if (!getHasTSMMediaFile()) return; Map arguments = new HashMap(); - arguments.put(MEDIACUBEMEDIA, this.selectedMedia); + arguments.put(MEDIACUBEMEDIA, this.selectedItem.getMedia()); Window window = (Window) Executions.createComponents(PAGES_RETRIEVESELECTOR_ZUL, null, arguments); window.doModal(); } + public int getActivePage() { + return activePage; + } + public boolean getHasLowresMediaFile() { boolean ret = false; - if (this.selectedMedia != null) { - List mediaFiles = this.selectedMedia.getMediaFiles(); + Media media = getMedia(); + if (media != null) { + List mediaFiles = media.getMediaFiles(); if (mediaFiles != null) { for (MediaFile mf : mediaFiles) { if (mf.getStore().isLowres()) { @@ -79,28 +87,14 @@ public class SearchModel extends BaseModel { } public boolean getHasTSMMediaFile() { - boolean ret = false; - if (this.selectedMedia != null) { - List mediaFiles = this.selectedMedia.getMediaFiles(); - if (mediaFiles != null) { - for (MediaFile mf : mediaFiles) { - if (mf.getStore().isSystem()) { - return true; - } - } - } - } - return ret; - } - - public Converter getLfConverter() { - return lfConverter; + return selectedItem != null; } public String getLowresMediaFilePath() throws Exception { String ret = PAGES_MEDIAPLAYER; - if (this.selectedMedia != null) { - List mediaFiles = this.selectedMedia.getMediaFiles(); + Media media = getMedia(); + if (media != null) { + List mediaFiles = media.getMediaFiles(); if (mediaFiles != null) { for (MediaFile mf : mediaFiles) { Store store = mf.getStore(); @@ -109,8 +103,6 @@ public class SearchModel extends BaseModel { URL base = new URL(sourceStoreUri.toString()); String relative = mf.getRelativePath().replace("\\", "/"); ret += new URL(base, relative).toString(); - // File f = new File("file://" + mf.getRelativePath().replace("\\", "/")); - // ret = String.format("%s%s%s", "/pages/mediaplayer.jsp?mediaurl=", sourceStoreUri.toString(), f.getName()).toString(); break; } } @@ -121,6 +113,15 @@ public class SearchModel extends BaseModel { return ret; } + private Media getMedia() { + Media result = null; + if (searchResult != null && selectedItem != null) { + IItemManager manager = searchResult.getItemManager(); + result = manager.getMedia(selectedItem.getMedia().getId()); + } + return result; + } + public CachedListModel getSearchResult() { return searchResult; } @@ -129,68 +130,99 @@ public class SearchModel extends BaseModel { return searchValue; } - public Item getSelectedItem() { + public ArchivedMedia getSelectedItem() { return selectedItem; } - public Media getSelectedMedia() { - return selectedMedia; - } - - //islowres player protocol + address + relativepath - //issystem TSM - - /* - public String getMediaFilePath(){ - String ret = ""; - if(this.selectedMedia != null){ - List mediaFiles = this.selectedMedia.getMediaFiles(); - for(MediaFile mf : mediaFiles){ - //if(!mf.isArchived() ???){ ++++++++++++++++++++ - ret = "/pages/mediaplayer.jsp?mediaurl=" + mf.getRelativePath(); - //ret = mf.getRelativePath(); - //} - } - } - return ret; - } - - public boolean getHasSelectedMediaFile(){ - String mediaFilePath =getMediaFilePath(); - return (mediaFilePath != null && !"".equals(mediaFilePath)); - } - */ - public String getTSMMediaFilePath() throws Exception { String ret = ""; - if (this.selectedMedia != null) { - List mediaFiles = this.selectedMedia.getMediaFiles(); + Media media = getMedia(); + if (media != null) { + List mediaFiles = media.getMediaFiles(); for (MediaFile mf : mediaFiles) { Store store = mf.getStore(); - if (mf.getStore().isSystem()) { + if (mf.getStore().isSystem()) ret = Paths.get(store.getStoreUris().get(0).toString(false), mf.getRelativePath()).toString(); - } } } return ret; } - @Command - @NotifyChange({ "mediaFilePath", "hasSelectedMediaFile", "hasLowresMediaFile", "lowresMediaFilePath", "hasTSMMediaFile" }) - public void onSelectMedia(@BindingParam("media") Media m) { - this.selectedMedia = m; + public boolean isAdChecked() { + return adChecked; } - public void setSearchValue(String searchValue) { - this.searchValue = searchValue; + public boolean isAllFeedChecked() { + return allFeedChecked; + } + + public boolean isMaterialChecked() { + return materialChecked; } - public void setSelectedItem(Item _selectedItem) { - this.selectedItem = _selectedItem; + public boolean isNewsFeedChecked() { + return newsFeedChecked; + } + + public boolean isNewsRawChecked() { + return newsRawChecked; + } + + public boolean isOtherChecked() { + return otherChecked; + } + + public boolean isPromoChecked() { + return promoChecked; + } + + public boolean isRecordingChecked() { + return recordingChecked; + } + + public void setActivePage(int activePage) { + this.activePage = activePage; + } + + public void setAdChecked(boolean adChecked) { + this.adChecked = adChecked; + } + + public void setAllFeedChecked(boolean allFeedChecked) { + this.allFeedChecked = allFeedChecked; + } + + public void setMaterialChecked(boolean materialChecked) { + this.materialChecked = materialChecked; + } + + public void setNewsFeedChecked(boolean newsFeedChecked) { + this.newsFeedChecked = newsFeedChecked; + } + + public void setNewsRawChecked(boolean newsRawChecked) { + this.newsRawChecked = newsRawChecked; + } + + public void setOtherChecked(boolean otherChecked) { + this.otherChecked = otherChecked; + } + + public void setPromoChecked(boolean promoChecked) { + this.promoChecked = promoChecked; + } + + public void setRecordingChecked(boolean recordingChecked) { + this.recordingChecked = recordingChecked; + } + + public void setSearchValue(String searchValue) { + this.searchValue = searchValue; } - public void setSelectedMedia(Media _selectedMedia) { - this.selectedMedia = _selectedMedia; + @NotifyChange({ "hasLowresMediaFile", "hasTSMMediaFile", "lowresMediaFilePath", "selectedItem.item" }) + public void setSelectedItem(ArchivedMedia selectedItem) { + this.selectedItem = selectedItem; } }