add tv show, add movie

This commit is contained in:
2021-02-28 22:03:01 +01:00
parent cc5d6d6fdc
commit 423c030a6d
12 changed files with 376 additions and 14 deletions
@@ -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;
}
@@ -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;
@@ -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<Component
head.appendChild(firstAired);
head.appendChild(overview);
resultRenderer renderer = new resultRenderer();
movieResultRenderer renderer = new movieResultRenderer();
resultList.setItemRenderer(renderer);
}
}
@@ -18,6 +18,10 @@ 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.sql.ResultSet;
import java.sql.SQLException;
@@ -68,7 +72,7 @@ public class movieSearchSelectorComposer extends SelectorComposer<Component>
}
@Listen("onClick = #saveButton")
public void save()
public void save() throws FileNotFoundException
{
ListModelList resultListModel = (ListModelList) resultList.getModel();
List<movieData> dataList = resultListModel.getInnerList();
@@ -95,7 +99,7 @@ public class movieSearchSelectorComposer extends SelectorComposer<Component>
try
{
newMovie.fromTMDB(data.getMovieID());
Messagebox.show(newMovie.getMovieTitle());
newMovie.save();
}
catch(Exception e)
{
@@ -104,6 +108,12 @@ public class movieSearchSelectorComposer extends SelectorComposer<Component>
}
}
}
OutputStream tempFile = new FileOutputStream("redir");
PrintStream printStream = new PrintStream(tempFile);
printStream.print("movie");
printStream.close();
Executions.sendRedirect("");
}
searchMovie.onClose();
}
@@ -61,4 +61,17 @@ public class serieListSelectorComposer extends SelectorComposer<Component>
window.doModal();
}
@Listen("onClick = #searchSerie")
public void onSearchSerie()
{
Map<String, Object> arguments = new HashMap<String, Object>();
arguments.put("serieList", seriesList);
String template = "/serie/searchSerie.zul";
Window window = (Window) Executions.createComponents(template, null, arguments);
window.doModal();
}
}
@@ -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);
}
}
@@ -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<Component>
{
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<Integer, Listheader> 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);
}
}
@@ -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<Component>
{
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<serieData> 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<TVBasic> 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<serieData> dataList = list.getInnerList();
for(serieData data : dataList)
{
if(id == data.getSeriesID())
return true;
}
return false;
}
}
+3 -3
View File
@@ -15,12 +15,12 @@
>
</button>
<button width="100%"
id="addTVShow"
label="add TV Show"
id="searchSerie"
label="search TV Show"
>
</button>
<button width="100%"
id="discoverTVShow"
id="discoverSerie"
label="discover TV Show"
>
</button>
+50
View File
@@ -0,0 +1,50 @@
<window id="searchSerie"
title="search TV Shows"
contentStyle="overflow:auto"
border="normal"
apply="at.windesign.application.serie.serieSearchForwardComposer,at.windesign.application.serie.serieSearchSelectorComposer"
width="500px"
height="500px">
<groupbox id="search"
>
<style>
.grid {
display: grid;
grid-template-columns: 10fr 2fr 1fr;
grid-gap: 10px;
justify-items: center;
}
</style>
<nodom>
<div sclass="grid"
width="100%">
<label value="*Search"/>
<label value="Year"/>
<label value=""/>
<textbox id="searchText"
width="100%"
tabindex="2"/>
<textbox id="searchYear"
width="100%"
tabindex="3"/>
<button id="searchButton"
label="search"/>
</div>
</nodom>
</groupbox>
<listbox id="resultList"
multiple="true"
autopaging="true"
vflex="true">
<listhead sizable="true"
>
</listhead>
</listbox>
<hlayout>
<button id="saveButton"
label="save"/>
<button id="cancelButton"
label="cancel"/>
</hlayout>
</window>