diff --git a/src/main/java/at/windesign/application/movie/movieData.java b/src/main/java/at/windesign/application/movie/movieData.java index 2f4b846..a28cf82 100644 --- a/src/main/java/at/windesign/application/movie/movieData.java +++ b/src/main/java/at/windesign/application/movie/movieData.java @@ -685,7 +685,7 @@ public class movieData m_video = videoListToString(movie.getVideos()); m_cast = castListToString(movie.getCast()); m_crew = crewListToString(movie.getCrew()); - m_state = 0; + m_state = 1; return true; } diff --git a/src/main/java/at/windesign/application/movie/resultRenderer.java b/src/main/java/at/windesign/application/movie/movieResultRenderer.java similarity index 92% rename from src/main/java/at/windesign/application/movie/resultRenderer.java rename to src/main/java/at/windesign/application/movie/movieResultRenderer.java index 1d943bb..a9e5347 100644 --- a/src/main/java/at/windesign/application/movie/resultRenderer.java +++ b/src/main/java/at/windesign/application/movie/movieResultRenderer.java @@ -2,7 +2,7 @@ package at.windesign.application.movie; import org.zkoss.zul.*; -public class resultRenderer implements ListitemRenderer +public class movieResultRenderer implements ListitemRenderer { private Listbox movieList; diff --git a/src/main/java/at/windesign/application/movie/movieSearchForwardComposer.java b/src/main/java/at/windesign/application/movie/movieSearchForwardComposer.java index 196c758..ea8888f 100644 --- a/src/main/java/at/windesign/application/movie/movieSearchForwardComposer.java +++ b/src/main/java/at/windesign/application/movie/movieSearchForwardComposer.java @@ -1,16 +1,10 @@ package at.windesign.application.movie; -import org.zkoss.image.AImage; import org.zkoss.zk.ui.Component; import org.zkoss.zk.ui.select.annotation.Wire; import org.zkoss.zk.ui.util.GenericForwardComposer; import org.zkoss.zul.*; -import java.net.URL; -import java.sql.ResultSet; -import java.sql.Statement; -import java.util.ArrayList; -import java.util.List; import java.util.SortedMap; import java.util.TreeMap; @@ -72,7 +66,7 @@ public class movieSearchForwardComposer extends GenericForwardComposer } @Listen("onClick = #saveButton") - public void save() + public void save() throws FileNotFoundException { ListModelList resultListModel = (ListModelList) resultList.getModel(); List dataList = resultListModel.getInnerList(); @@ -95,7 +99,7 @@ public class movieSearchSelectorComposer extends SelectorComposer try { newMovie.fromTMDB(data.getMovieID()); - Messagebox.show(newMovie.getMovieTitle()); + newMovie.save(); } catch(Exception e) { @@ -104,6 +108,12 @@ public class movieSearchSelectorComposer extends SelectorComposer } } } + OutputStream tempFile = new FileOutputStream("redir"); + PrintStream printStream = new PrintStream(tempFile); + printStream.print("movie"); + printStream.close(); + + Executions.sendRedirect(""); } searchMovie.onClose(); } diff --git a/src/main/java/at/windesign/application/serie/serieListSelectorComposer.java b/src/main/java/at/windesign/application/serie/serieListSelectorComposer.java index 8d376b3..07e5397 100644 --- a/src/main/java/at/windesign/application/serie/serieListSelectorComposer.java +++ b/src/main/java/at/windesign/application/serie/serieListSelectorComposer.java @@ -61,4 +61,17 @@ public class serieListSelectorComposer extends SelectorComposer window.doModal(); } + + @Listen("onClick = #searchSerie") + public void onSearchSerie() + { + Map arguments = new HashMap(); + + arguments.put("serieList", seriesList); + + String template = "/serie/searchSerie.zul"; + Window window = (Window) Executions.createComponents(template, null, arguments); + + window.doModal(); + } } diff --git a/src/main/java/at/windesign/application/serie/serieResultRenderer.java b/src/main/java/at/windesign/application/serie/serieResultRenderer.java new file mode 100644 index 0000000..18fddf6 --- /dev/null +++ b/src/main/java/at/windesign/application/serie/serieResultRenderer.java @@ -0,0 +1,28 @@ +package at.windesign.application.serie; + +import org.zkoss.zul.*; + +public class serieResultRenderer implements ListitemRenderer +{ + private Listbox serieList; + + @Override + public void render(Listitem item, Object o, int i) throws Exception + { + final serieData data = (serieData) o; + + Listcell selectedCell = new Listcell(); + Listcell serieNameCell = new Listcell(data.getSeriesName()); + Listcell serieFirstAiredCell = new Listcell(String.valueOf(data.getSeriesFirstAired())); + Listcell serieOverviewCell = new Listcell(data.getSeriesOverview()); + + Checkbox checkbox = new Checkbox(); + checkbox.setParent(selectedCell); + selectedCell.setParent(item); + serieNameCell.setParent(item); + serieFirstAiredCell.setParent(item); + serieOverviewCell.setParent(item); + + item.setValue(data); + } +} \ No newline at end of file diff --git a/src/main/java/at/windesign/application/serie/serieSearchForwardComposer.java b/src/main/java/at/windesign/application/serie/serieSearchForwardComposer.java new file mode 100644 index 0000000..00fb713 --- /dev/null +++ b/src/main/java/at/windesign/application/serie/serieSearchForwardComposer.java @@ -0,0 +1,73 @@ +package at.windesign.application.serie; + +import at.windesign.application.movie.movieResultRenderer; +import org.zkoss.zk.ui.Component; +import org.zkoss.zk.ui.select.annotation.Wire; +import org.zkoss.zk.ui.util.GenericForwardComposer; +import org.zkoss.zul.*; + +import java.util.SortedMap; +import java.util.TreeMap; + +public class serieSearchForwardComposer extends GenericForwardComposer +{ + private static final long serialVersionUID = 1L; + private final serieDataSource ds = serieDataSource.INSTANCE; + private int opacity = 80; + + @Wire + private Window searchSerie; + + @Wire + protected Textbox searchText; + + @Wire + protected Textbox searchYear; + + @Wire + protected Listbox resultList; + + @Wire + protected Button searchButton; + + @Wire + protected Button cancelButton; + + @Override + public void doAfterCompose(Component comp) throws Exception + { + super.doAfterCompose(comp); + + int hD = (int) self.getDesktop().getAttribute("desktopHeight"); + int wD = (int) self.getDesktop().getAttribute("desktopWidth"); + + searchSerie.setWidth(wD - 10 + "px"); + searchSerie.setHeight(hD - 10 + "px"); + + SortedMap listHeader = new TreeMap<>(); + + ListModelList resultListModel = new ListModelList(); + resultList.setModel(resultListModel); + resultList.setAttribute("listModelList", resultListModel); + + resultList.getListhead().getChildren().clear(); + Listhead head = resultList.getListhead(); + Listheader selected = new Listheader(""); + Listheader serieName = new Listheader("TV Show Name"); + Listheader firstAired = new Listheader("First Aired"); + Listheader overview = new Listheader("Overview"); + + selected.setHflex("min"); + serieName.setHflex("min"); + firstAired.setHflex("min"); + overview.setHflex("min"); + + head.appendChild(selected); + head.appendChild(serieName); + head.appendChild(firstAired); + head.appendChild(overview); + + serieResultRenderer renderer = new serieResultRenderer(); + resultList.setItemRenderer(renderer); + } +} diff --git a/src/main/java/at/windesign/application/serie/serieSearchSelectorComposer.java b/src/main/java/at/windesign/application/serie/serieSearchSelectorComposer.java new file mode 100644 index 0000000..26c6012 --- /dev/null +++ b/src/main/java/at/windesign/application/serie/serieSearchSelectorComposer.java @@ -0,0 +1,194 @@ +package at.windesign.application.serie; + +import at.windesign.application.movie.movieData; +import com.omertron.themoviedbapi.MovieDbException; +import com.omertron.themoviedbapi.TheMovieDbApi; +import com.omertron.themoviedbapi.enumeration.SearchType; +import com.omertron.themoviedbapi.model.movie.MovieInfo; +import com.omertron.themoviedbapi.model.tv.TVBasic; +import com.omertron.themoviedbapi.results.ResultList; +import org.apache.http.client.HttpClient; +import org.yamj.api.common.http.SimpleHttpClientBuilder; +import org.zkoss.zk.ui.Component; +import org.zkoss.zk.ui.Execution; +import org.zkoss.zk.ui.Executions; +import org.zkoss.zk.ui.select.SelectorComposer; +import org.zkoss.zk.ui.select.annotation.Listen; +import org.zkoss.zk.ui.select.annotation.Wire; +import org.zkoss.zul.*; + +import java.io.FileNotFoundException; +import java.io.FileOutputStream; +import java.io.OutputStream; +import java.io.PrintStream; +import java.sql.Date; +import java.util.List; + +public class serieSearchSelectorComposer extends SelectorComposer +{ + private static final long serialVersionUID = 1L; + private Listbox m_serieList; + + @Wire + private Window searchSerie; + + @Wire + protected Textbox searchText; + + @Wire + protected Textbox searchYear; + + @Wire + protected Listbox resultList; + + @Override + public void doAfterCompose(Component comp) throws Exception + { + super.doAfterCompose(comp); + + final Execution execution = Executions.getCurrent(); + + if(execution.getArg().containsKey("serieList")) + m_serieList = (Listbox) execution.getArg().get("serieList"); + } + + @Listen("onClick = #searchButton") + public void doSearch() + { + try + { + search(); + } + catch(Exception e) + { + } + } + + @Listen("onClick = #saveButton") + public void save() throws FileNotFoundException + { + ListModelList resultListModel = (ListModelList) resultList.getModel(); + List dataList = resultListModel.getInnerList(); + + for(int index = 0; index < resultListModel.size(); index++) + { + Listitem item = resultList.getItemAtIndex(index); + + if(item != null) + { + Listcell cell = (Listcell) item.getChildren().get(0); + + if(cell != null) + { + Checkbox box = (Checkbox) cell.getChildren().get(0); + + if(box != null) + { + if(box.isChecked()) + { + serieData data = dataList.get(index); + serieData newSerie = new serieData(); + + try + { + newSerie.fromTMDB(data.getSeriesID()); + newSerie.save(); + } + catch(Exception e) + { + } + } + } + } + } + OutputStream tempFile = new FileOutputStream("redir"); + PrintStream printStream = new PrintStream(tempFile); + printStream.print("serie"); + printStream.close(); + + Executions.sendRedirect(""); + } + searchSerie.onClose(); + } + + @Listen("onClick = #cancelButton") + public void cancel() + { + searchSerie.onClose(); + } + + public void search() throws MovieDbException + { + int maxPage = 2; + int page; + + HttpClient httpClient; + + httpClient = new SimpleHttpClientBuilder().build(); + + TheMovieDbApi api = new TheMovieDbApi("a33271b9e54cdcb9a80680eaf5522f1b", httpClient); + + String sText = searchText.getText(); + String sYearT = searchYear.getText(); + int sYear; + + if(sYearT.isEmpty()) + sYear = 0; + else + sYear = Integer.parseInt(sYearT); + + if(sText.isEmpty()) + return; + + serieData serie; + ListModelList resultListModel = (ListModelList) resultList.getModel(); + + resultListModel.clear(); + + for(page = 1; page <= maxPage; page++) + { + ResultList series = api.searchTV(sText, page, "de-DE", sYear, SearchType.PHRASE); + if(series.getResults().size() == 0) + break; + + for(TVBasic resultSerie : series.getResults()) + { + if(!exist(resultSerie.getId())) + { + serie = new serieData(); + + serie.setSeriesID(resultSerie.getId()); + serie.setSeriesName(resultSerie.getName()); + serie.setSeriesFirstAired(string2Date(resultSerie.getFirstAirDate())); + serie.setSeriesOverview(resultSerie.getOverview()); + + resultListModel.add(serie); + serie.setModel(resultListModel); + } + } + } + } + + Date string2Date(String strDate) + { + if(strDate == null) + return new Date(1900, 1, 1); + else if(strDate.isEmpty()) + return new Date(1900, 1, 1); + else + return Date.valueOf(strDate); + } + + boolean exist(int id) + { + ListModelList list = (ListModelList) m_serieList.getModel(); + List dataList = list.getInnerList(); + + for(serieData data : dataList) + { + if(id == data.getSeriesID()) + return true; + } + return false; + } +} diff --git a/src/main/webapp/serie/centerSerie.zul b/src/main/webapp/serie/centerSerie.zul index 75b2b36..81419c7 100644 --- a/src/main/webapp/serie/centerSerie.zul +++ b/src/main/webapp/serie/centerSerie.zul @@ -15,12 +15,12 @@ > diff --git a/src/main/webapp/serie/searchSerie.zul b/src/main/webapp/serie/searchSerie.zul new file mode 100644 index 0000000..6b5d1a3 --- /dev/null +++ b/src/main/webapp/serie/searchSerie.zul @@ -0,0 +1,50 @@ + + + + + +
+
+
+
+ + + + + +