From 147c256ff077bed5fd9fa081b2f542a929c04ee4 Mon Sep 17 00:00:00 2001 From: =?utf8?q?V=C3=A1s=C3=A1ry=20D=C3=A1niel?= Date: Wed, 14 Aug 2019 11:24:12 +0000 Subject: [PATCH] git-tfs-id: [http://tfs.userrendszerhaz.hu:8080/tfs/DefaultCollection]$/MediaCube;C31476 --- .../src/user/commons/StoreUri.java | 16 +- .../interfaces/IMetadataProvider.java | 2 + .../interfaces/IMetadataProviderFactory.java | 7 + .../metadata/interfaces}/MetadataType.java | 2 +- .../PlanAirMetadataListOptions.java | 5 +- .../pages/maestro.zul | 2 +- .../user.jobengine.osgi.server/pages/menu.zul | 2 +- .../pages/planair.zul | 146 +++++++++++++++++ .../pages/planner.zul | 55 ------- .../user/jobengine/zk/model/IndexModel.java | 2 +- .../user/jobengine/zk/model/MenuModel.java | 11 +- .../jobengine/zk/model/PlannerListModel.java | 148 +++++++++++++++--- .../user/jobengine/zk/model/TypeFilter.java | 10 +- .../planair/IPlanAirMaterialMapper.java | 2 +- 14 files changed, 311 insertions(+), 99 deletions(-) create mode 100644 server/user.jobengine.osgi.commons/src/user/mediacube/metadata/interfaces/IMetadataProviderFactory.java rename server/{user.mediacube.metadata/src/user/mediabube/metadata/planair => user.jobengine.osgi.commons/src/user/mediacube/metadata/interfaces}/MetadataType.java (51%) rename server/{user.mediacube.metadata/src/user/mediabube/metadata/planair => user.jobengine.osgi.commons/src/user/mediacube/metadata/interfaces}/PlanAirMetadataListOptions.java (78%) create mode 100644 server/user.jobengine.osgi.server/pages/planair.zul delete mode 100644 server/user.jobengine.osgi.server/pages/planner.zul diff --git a/server/user.jobengine.osgi.commons/src/user/commons/StoreUri.java b/server/user.jobengine.osgi.commons/src/user/commons/StoreUri.java index 3ef48037..c6a725ce 100644 --- a/server/user.jobengine.osgi.commons/src/user/commons/StoreUri.java +++ b/server/user.jobengine.osgi.commons/src/user/commons/StoreUri.java @@ -2,7 +2,6 @@ package user.commons; import java.io.BufferedInputStream; import java.io.BufferedOutputStream; -import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.io.Serializable; @@ -137,11 +136,16 @@ public class StoreUri extends EntityBase implements Serializable { out.flush(); } finally { try { - out.close(); - in.close(); - inputLister.cleanUp(); - outputLister.cleanUp(); - } catch (IOException e) { + if (out != null) + out.close(); + if (in != null) + in.close(); + if (inputLister != null) + inputLister.cleanUp(); + if (outputLister != null) + outputLister.cleanUp(); + } catch (Exception e) { + logger.error("Additional error!", e); } } result.setSize(uploadedBytes); diff --git a/server/user.jobengine.osgi.commons/src/user/mediacube/metadata/interfaces/IMetadataProvider.java b/server/user.jobengine.osgi.commons/src/user/mediacube/metadata/interfaces/IMetadataProvider.java index 00dee5e9..cd20c8ce 100644 --- a/server/user.jobengine.osgi.commons/src/user/mediacube/metadata/interfaces/IMetadataProvider.java +++ b/server/user.jobengine.osgi.commons/src/user/mediacube/metadata/interfaces/IMetadataProvider.java @@ -4,5 +4,7 @@ import java.util.List; public interface IMetadataProvider { + List getColumnNames(MetadataType type); + List list(IMetadataListOptions options) throws Exception; } diff --git a/server/user.jobengine.osgi.commons/src/user/mediacube/metadata/interfaces/IMetadataProviderFactory.java b/server/user.jobengine.osgi.commons/src/user/mediacube/metadata/interfaces/IMetadataProviderFactory.java new file mode 100644 index 00000000..058716ce --- /dev/null +++ b/server/user.jobengine.osgi.commons/src/user/mediacube/metadata/interfaces/IMetadataProviderFactory.java @@ -0,0 +1,7 @@ +package user.mediacube.metadata.interfaces; + +public interface IMetadataProviderFactory { + + IMetadataProvider getProvider(MetadataProviderType type); + +} \ No newline at end of file diff --git a/server/user.mediacube.metadata/src/user/mediabube/metadata/planair/MetadataType.java b/server/user.jobengine.osgi.commons/src/user/mediacube/metadata/interfaces/MetadataType.java similarity index 51% rename from server/user.mediacube.metadata/src/user/mediabube/metadata/planair/MetadataType.java rename to server/user.jobengine.osgi.commons/src/user/mediacube/metadata/interfaces/MetadataType.java index 3f0d530b..3e12a552 100644 --- a/server/user.mediacube.metadata/src/user/mediabube/metadata/planair/MetadataType.java +++ b/server/user.jobengine.osgi.commons/src/user/mediacube/metadata/interfaces/MetadataType.java @@ -1,4 +1,4 @@ -package user.mediabube.metadata.planair; +package user.mediacube.metadata.interfaces; public enum MetadataType { Material, Promo, AD diff --git a/server/user.mediacube.metadata/src/user/mediabube/metadata/planair/PlanAirMetadataListOptions.java b/server/user.jobengine.osgi.commons/src/user/mediacube/metadata/interfaces/PlanAirMetadataListOptions.java similarity index 78% rename from server/user.mediacube.metadata/src/user/mediabube/metadata/planair/PlanAirMetadataListOptions.java rename to server/user.jobengine.osgi.commons/src/user/mediacube/metadata/interfaces/PlanAirMetadataListOptions.java index 6198a40f..8ff51499 100644 --- a/server/user.mediacube.metadata/src/user/mediabube/metadata/planair/PlanAirMetadataListOptions.java +++ b/server/user.jobengine.osgi.commons/src/user/mediacube/metadata/interfaces/PlanAirMetadataListOptions.java @@ -1,10 +1,7 @@ -package user.mediabube.metadata.planair; +package user.mediacube.metadata.interfaces; import java.util.Date; -import user.mediacube.metadata.interfaces.IMetadataListOptions; -import user.mediacube.metadata.interfaces.MetadataType; - public class PlanAirMetadataListOptions implements IMetadataListOptions { private Date broadcastDay; private boolean problematic; diff --git a/server/user.jobengine.osgi.server/pages/maestro.zul b/server/user.jobengine.osgi.server/pages/maestro.zul index ccb9d801..b5143120 100644 --- a/server/user.jobengine.osgi.server/pages/maestro.zul +++ b/server/user.jobengine.osgi.server/pages/maestro.zul @@ -14,7 +14,7 @@
- +
diff --git a/server/user.jobengine.osgi.server/pages/menu.zul b/server/user.jobengine.osgi.server/pages/menu.zul index e568daca..0a15efd1 100644 --- a/server/user.jobengine.osgi.server/pages/menu.zul +++ b/server/user.jobengine.osgi.server/pages/menu.zul @@ -55,7 +55,7 @@ - + diff --git a/server/user.jobengine.osgi.server/pages/planair.zul b/server/user.jobengine.osgi.server/pages/planair.zul new file mode 100644 index 00000000..77922a47 --- /dev/null +++ b/server/user.jobengine.osgi.server/pages/planair.zul @@ -0,0 +1,146 @@ + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/server/user.jobengine.osgi.server/src/user/jobengine/zk/model/IndexModel.java b/server/user.jobengine.osgi.server/src/user/jobengine/zk/model/IndexModel.java index a6b52dd6..61e0583b 100644 --- a/server/user.jobengine.osgi.server/src/user/jobengine/zk/model/IndexModel.java +++ b/server/user.jobengine.osgi.server/src/user/jobengine/zk/model/IndexModel.java @@ -25,7 +25,7 @@ public class IndexModel extends BaseModel { private static final Logger logger = LogManager.getLogger(); private String page; private Map pathMap = ListUtils.asMap("/", "searchitems", "jobs", "joblist", "missingmaterials", "missingmaterials", "newshistory", - "newshistory", "statistics", "statistics"); + "newshistory", "statistics", "statistics", "maestro", "maestro"); @AfterCompose public void afterCompose(@ContextParam(ContextType.VIEW) Component view) { diff --git a/server/user.jobengine.osgi.server/src/user/jobengine/zk/model/MenuModel.java b/server/user.jobengine.osgi.server/src/user/jobengine/zk/model/MenuModel.java index 6804b3c0..5f3f2457 100644 --- a/server/user.jobengine.osgi.server/src/user/jobengine/zk/model/MenuModel.java +++ b/server/user.jobengine.osgi.server/src/user/jobengine/zk/model/MenuModel.java @@ -22,14 +22,15 @@ import org.zkoss.zul.Menuitem; import org.zkoss.zul.Window; import user.jobengine.db.ArchivedMedia; +import user.jobengine.osgi.server.ComponentBinder; import user.jobengine.zk.util.SessionUtil; +import user.mediacube.metadata.interfaces.MetadataProviderType; public class MenuModel extends BaseModel { private static final Logger logger = LogManager.getLogger(); private static final String PAGES_RETRIEVEBATCHSELECTOR_ZUL = "/pages/retrievebatchselector.zul"; private String basketMenuLabel = "(0)"; private List basketItems = new ArrayList<>(); - @Wire Menuitem basketIMenuItem; @@ -63,6 +64,12 @@ public class MenuModel extends BaseModel { return basketMenuLabel; } + public boolean isMaestroAvailable() { + return ComponentBinder.getMetadataProviderFactory() != null + && ComponentBinder.getMetadataProviderFactory().getProvider(MetadataProviderType.PLANAIR) != null; + + } + @Command public void navigate(@BindingParam("action") String action) { IndexModel indexModel = (IndexModel) SessionUtil.getAttribute(IndexModel.class.getCanonicalName()); @@ -81,7 +88,7 @@ public class MenuModel extends BaseModel { logger.warn("Item to select is null"); return; } - + if (select) { if (!basketItems.contains(item)) { basketItems.add(item); diff --git a/server/user.jobengine.osgi.server/src/user/jobengine/zk/model/PlannerListModel.java b/server/user.jobengine.osgi.server/src/user/jobengine/zk/model/PlannerListModel.java index 50dfabb0..358a3967 100644 --- a/server/user.jobengine.osgi.server/src/user/jobengine/zk/model/PlannerListModel.java +++ b/server/user.jobengine.osgi.server/src/user/jobengine/zk/model/PlannerListModel.java @@ -1,53 +1,149 @@ package user.jobengine.zk.model; -import java.util.LinkedHashMap; -import java.util.Map; +import java.util.Date; +import java.util.List; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; +import org.zkoss.bind.BindUtils; +import org.zkoss.bind.Validator; +import org.zkoss.bind.annotation.Command; import org.zkoss.bind.annotation.Init; +import org.zkoss.zul.Column; +import org.zkoss.zul.ListModelList; import user.commons.config.JSONConfig; +import user.jobengine.osgi.server.ComponentBinder; +import user.mediacube.metadata.interfaces.IMetadata; +import user.mediacube.metadata.interfaces.IMetadataProvider; +import user.mediacube.metadata.interfaces.IMetadataProviderFactory; +import user.mediacube.metadata.interfaces.MetadataProviderType; +import user.mediacube.metadata.interfaces.MetadataType; +import user.mediacube.metadata.interfaces.PlanAirMetadataListOptions; public class PlannerListModel { - private MaestroConfig config = null; private static final Logger logger = LogManager.getLogger(); - private static final String PROGRAM = "Műsor"; - private static final String PROMO = "Promó"; - private static final String AD = "Reklám"; - private String[] topTypeFilterNames; - private Map typeFilters; - + private MaestroConfig config = null; + private Validator filterCheckedValidator; + private List columns; + private ListModelList materialList; + private ListModelList promoList; + private ListModelList adList; + private int selectedTabIndex; + private IMetadataProvider provider; + private boolean searchDateEnabled = true; + private boolean problematic; + private String searchText; + private Date searchDate = new Date(); + + public ListModelList getAdList() { + return adList; + } + + public List getColumns() { + return columns; + } + + public Validator getFilterCheckedValidator() { + return filterCheckedValidator; + } + + public ListModelList getMaterialList() { + return materialList; + } + + public ListModelList getPromoList() { + return promoList; + } + + public Date getSearchDate() { + return searchDate; + } + + public String getSearchText() { + return searchText; + } + + public int getSelectedTabIndex() { + return selectedTabIndex; + } + @Init public void init() { - typeFilters = new LinkedHashMap<>(); - addTypeFilter(TypeFilter.as(PROGRAM, "RED200", "ic_language_black_18dp.png")); - addTypeFilter(TypeFilter.as(PROMO, "RED100", "ic_perm_camera_mic_black_18dp.png")); - addTypeFilter(TypeFilter.as(AD, "TEAL200", "ic_theaters_black_18dp.png")); - setTopTypeFilterNames(new String[] { PROGRAM, PROMO, AD }); - String key = "jobengine.maestro.config"; try { config = JSONConfig.read(key, MaestroConfig.class); } catch (Exception e) { logger.error("Hiba a config file beállításánál {}", e.getMessage()); } + + IMetadataProviderFactory factory = ComponentBinder.getMetadataProviderFactory(); + provider = factory.getProvider(MetadataProviderType.PLANAIR); } - - private void addTypeFilter(TypeFilter typeFilter) { - typeFilters.put(typeFilter.getName(), typeFilter); + + public boolean isProblematic() { + return problematic; } - - public String[] getTopTypeFilterNames() { - return topTypeFilterNames; + + public boolean isSearchDateEnabled() { + return searchDateEnabled; } - public void setTopTypeFilterNames(String[] topTypeFilterNames) { - this.topTypeFilterNames = topTypeFilterNames; + @Command + public void refresh() { + PlanAirMetadataListOptions opt = new PlanAirMetadataListOptions(); + if (searchDateEnabled) + opt.setBroadcastDay(searchDate); + opt.setProblematic(problematic); + if (searchText != null && searchText.trim().length() > 3) + opt.setSearch(searchText); + try { + switch (selectedTabIndex) { + case 0: + opt.setType(MetadataType.Material); + materialList = new ListModelList<>(provider.list(opt)); + BindUtils.postNotifyChange(null, null, this, "materialList"); + break; + case 1: + opt.setType(MetadataType.Promo); + promoList = new ListModelList<>(provider.list(opt)); + BindUtils.postNotifyChange(null, null, this, "promoList"); + break; + case 2: + opt.setType(MetadataType.AD); + adList = new ListModelList<>(provider.list(opt)); + BindUtils.postNotifyChange(null, null, this, "adList"); + break; + } + } catch (Exception e) { + logger.error(e); + } } - - public Map getTypeFilters() { - return typeFilters; + + public void setProblematic(boolean problematic) { + this.problematic = problematic; + } + + public void setSearchDate(Date searchDate) { + this.searchDate = searchDate; + } + + public void setSearchDateEnabled(boolean searchDateEnabled) { + this.searchDateEnabled = searchDateEnabled; + } + + public void setSearchText(String searchText) { + this.searchText = searchText; + } + + public void setSelectedTabIndex(int selectedTabIndex) { + this.selectedTabIndex = selectedTabIndex; + materialList = null; + promoList = null; + adList = null; + BindUtils.postNotifyChange(null, null, this, "materialList"); + BindUtils.postNotifyChange(null, null, this, "promoList"); + BindUtils.postNotifyChange(null, null, this, "adList"); } } diff --git a/server/user.jobengine.osgi.server/src/user/jobengine/zk/model/TypeFilter.java b/server/user.jobengine.osgi.server/src/user/jobengine/zk/model/TypeFilter.java index 3d0777b2..3f8dfdc0 100644 --- a/server/user.jobengine.osgi.server/src/user/jobengine/zk/model/TypeFilter.java +++ b/server/user.jobengine.osgi.server/src/user/jobengine/zk/model/TypeFilter.java @@ -5,6 +5,10 @@ public class TypeFilter { return new TypeFilter(name, color, icon); } + static public TypeFilter as(String name, String color, String icon, boolean chacked) { + return new TypeFilter(name, color, icon, chacked); + } + private String name; private String color; private String icon; @@ -12,10 +16,14 @@ public class TypeFilter { private boolean checked; TypeFilter(String name, String color, String icon) { + this(name, color, icon, true); + } + + TypeFilter(String name, String color, String icon, boolean checked) { this.name = name; this.color = color; this.icon = icon; - this.checked = true; + this.checked = checked; } public String getColor() { diff --git a/server/user.mediacube.metadata/src/user/mediabube/metadata/planair/IPlanAirMaterialMapper.java b/server/user.mediacube.metadata/src/user/mediabube/metadata/planair/IPlanAirMaterialMapper.java index 0f0981ee..8fd52356 100644 --- a/server/user.mediacube.metadata/src/user/mediabube/metadata/planair/IPlanAirMaterialMapper.java +++ b/server/user.mediacube.metadata/src/user/mediabube/metadata/planair/IPlanAirMaterialMapper.java @@ -31,7 +31,7 @@ public interface IPlanAirMaterialMapper { @Select(value = MATERIAL_SQL) @Options(statementType = StatementType.CALLABLE) @Results(value = { @Result(property = "episodeID", column = "v_EpisodeID"), @Result(property = "variantID", column = "v_VariantID"), - @Result(property = "mediaID", column = "v_MediaID"), @Result(property = "progTitle", column = "v_ProgTitle"), + @Result(property = "mediaID", column = "v_VariantMediaID"), @Result(property = "progTitle", column = "v_ProgTitle"), @Result(property = "epTitle", column = "v_EpTitle"), @Result(property = "episode", column = "v_Episode"), @Result(property = "variantNrSegments", column = "v_VariantNrSegments"), @Result(property = "firstBroadcastDate", column = "v_FirstBroadcastDate"), @Result(property = "nextBroadcastDate", column = "v_NextBroadcastDate"), @Result(property = "okForAir", column = "v_OkForAir"), -- 2.54.0