diff --git a/.idea/codeStyles/Project.xml b/.idea/codeStyles/Project.xml
index 645f4a0..04c00d5 100644
--- a/.idea/codeStyles/Project.xml
+++ b/.idea/codeStyles/Project.xml
@@ -18,5 +18,29 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/compiler.xml b/.idea/compiler.xml
index b1402fb..7dd71a0 100644
--- a/.idea/compiler.xml
+++ b/.idea/compiler.xml
@@ -9,5 +9,8 @@
+
+
+
\ No newline at end of file
diff --git a/.idea/jarRepositories.xml b/.idea/jarRepositories.xml
index efd2003..bee6a6f 100644
--- a/.idea/jarRepositories.xml
+++ b/.idea/jarRepositories.xml
@@ -26,11 +26,6 @@
-
-
-
-
-
diff --git a/.idea/misc.xml b/.idea/misc.xml
index bcc0acd..00f2b5b 100644
--- a/.idea/misc.xml
+++ b/.idea/misc.xml
@@ -1,8 +1,10 @@
-
-
+
+
+
+
-
-
-
+
\ No newline at end of file
diff --git a/.idea/modules.xml b/.idea/modules.xml
new file mode 100644
index 0000000..1f5129b
--- /dev/null
+++ b/.idea/modules.xml
@@ -0,0 +1,8 @@
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/multimedia.iml b/multimedia.iml
new file mode 100644
index 0000000..d2c26e1
--- /dev/null
+++ b/multimedia.iml
@@ -0,0 +1,45 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/main/java/at/windesign/application/serie/serieData.java b/src/main/java/at/windesign/application/serie/serieData.java
index 9f4b17e..475670e 100644
--- a/src/main/java/at/windesign/application/serie/serieData.java
+++ b/src/main/java/at/windesign/application/serie/serieData.java
@@ -497,6 +497,16 @@ class serieData
m_model = model;
}
+ public boolean isActive()
+ {
+ if(m_seriesStatus == "Ended")
+ return false;
+ if(m_seriesStatus == "Canceled")
+ return false;
+
+ return true;
+ }
+
public void recalcState()
{
m_stateInit = 0;
@@ -792,6 +802,8 @@ class serieData
{
if(strDate == null)
return new Date(1900, 1, 1);
+ else if(strDate.isEmpty())
+ return new Date(1900, 1, 1);
else
return Date.valueOf(strDate);
}
@@ -881,6 +893,7 @@ class serieData
eData.setEpisodeVoteAverage(episode.getVoteAverage());
eData.setEpisodeVoteCount(episode.getVoteCount());
eData.setEpisodeCrew(crewListToString(episode.getCrew()));
+ eData.setEpisodeState(1);
sData.setEpisode(eData.getEpisodeNumber(), eData);
}
}
@@ -889,4 +902,36 @@ class serieData
return true;
}
+
+ void copyFrom(serieData serie)
+ {
+ setSeriesDownload(serie.getSeriesDownload());
+ setSeriesLocalPath(serie.getSeriesLocalPath());
+ setSeriesResolution(serie.getSeriesResolution());
+ setSeriesCliffhanger(serie.getSeriesCliffhanger());
+
+ for(int season : getSeasons().keySet())
+ {
+ seasonData sDataOriginal = serie.getSeasons().get(season);
+
+ if(sDataOriginal != null)
+ {
+ seasonData sData = getSeasons().get(season);
+
+ for(int episode : sData.getEpisodes().keySet())
+ {
+ episodeData eDataOriginal = sDataOriginal.getEpisodes().get(episode);
+
+ if(eDataOriginal != null)
+ {
+ episodeData eData = sData.getEpisodes().get(episode);
+
+ eData.setEpisodeState(eDataOriginal.getEpisodeState());
+ }
+ }
+ }
+ }
+
+ recalcState();
+ }
}
diff --git a/src/main/java/at/windesign/application/serie/serieDetailsSelectorComposer.java b/src/main/java/at/windesign/application/serie/serieDetailsSelectorComposer.java
index 1b3e107..83adb66 100644
--- a/src/main/java/at/windesign/application/serie/serieDetailsSelectorComposer.java
+++ b/src/main/java/at/windesign/application/serie/serieDetailsSelectorComposer.java
@@ -67,34 +67,8 @@ public class serieDetailsSelectorComposer extends SelectorComposer
{
serieNew = new serieData();
serieNew.fromTMDB(serie.getSeriesID());
- serieNew.setSeriesDownload(serie.getSeriesDownload());
- serieNew.setSeriesLocalPath(serie.getSeriesLocalPath());
- serieNew.setSeriesResolution(serie.getSeriesResolution());
- serieNew.setSeriesCliffhanger(serie.getSeriesCliffhanger());
+ serieNew.copyFrom(serie);
- for(int season : serieNew.getSeasons().keySet())
- {
- seasonData sDataOriginal = serie.getSeasons().get(season);
-
- if(sDataOriginal != null)
- {
- seasonData sData = serieNew.getSeasons().get(season);
-
- for(int episode : sData.getEpisodes().keySet())
- {
- episodeData eDataOriginal = sDataOriginal.getEpisodes().get(episode);
-
- if(eDataOriginal != null)
- {
- episodeData eData = sData.getEpisodes().get(episode);
-
- eData.setEpisodeState(eDataOriginal.getEpisodeState());
- }
- }
- }
- }
-
- serieNew.recalcState();
serieNew.save();
Listitem item = (Listitem) detailsSerie.getAttribute("item");
diff --git a/src/main/java/at/windesign/application/serie/serieListForwardComposer.java b/src/main/java/at/windesign/application/serie/serieListForwardComposer.java
index c2cbd53..52e248b 100644
--- a/src/main/java/at/windesign/application/serie/serieListForwardComposer.java
+++ b/src/main/java/at/windesign/application/serie/serieListForwardComposer.java
@@ -13,336 +13,13 @@ import java.util.*;
public class serieListForwardComposer extends GenericForwardComposer
{
protected Listbox seriesList; // autowired
- private ListModelList seriesListModel; // the model of the listbox
- private serieRenderer renderer;
-
- private Integer stateWidth = 4;
- private Integer stateHeight = 20;
-
- private final serieDataSource ds = serieDataSource.INSTANCE;
@Override
public void doAfterCompose(Component comp) throws Exception
{
super.doAfterCompose(comp);
- List serieList = new ArrayList<>();
- int minSeason = 0;
- int maxSeason = 0;
- SortedMap maxEpisode = new TreeMap<>();
- SortedMap listHeader = new TreeMap<>();
-
- try
- {
- Statement stmt = ds.getStatement();
- ResultSet rs = stmt.executeQuery(
- "SELECT MIN(seasonNumber) minSeason," +
- " MAX(seasonNumber) maxSeason" +
- " FROM season;"
- );
-
- while(rs.next())
- {
- minSeason = rs.getInt("minSeason");
- maxSeason = rs.getInt("maxSeason");
- }
- }
- catch(SQLException e)
- {
- e.printStackTrace();
- }
-
- seriesListModel = new ListModelList();
- seriesList.setModel(seriesListModel);
- seriesList.setAttribute("listModelList", seriesListModel);
-
- Listhead head = seriesList.getListhead();
- Listheader seriesName = new Listheader("Series Name");
- Listheader firstAired = new Listheader("First Aired");
- Listheader resolution = new Listheader("Resolution");
-
- seriesName.setHflex("min");
- firstAired.setHflex("min");
- resolution.setHflex("min");
-
- head.appendChild(seriesName);
- head.appendChild(firstAired);
- head.appendChild(resolution);
-
- if(minSeason < 1)
- minSeason = 1;
-
- for(int i = minSeason; i <= maxSeason; i++)
- {
- Listheader seasonHeader = new Listheader("Season " + i);
- head.appendChild(seasonHeader);
- maxEpisode.put(i, 0);
- listHeader.put(i, seasonHeader);
- }
-
- renderer = new serieRenderer();
- seriesList.setItemRenderer(renderer);
-
- try
- {
- Statement stmt = ds.getStatement();
- ResultSet rs = stmt.executeQuery(
- "SELECT serie.seriesID seriesID," +
- " serie.seriesName seriesName," +
- " serie.originalName seriesOriginalName," +
- " serie.backdropPath seriesBackdrop," +
- " serie.createdBy seriesCreatedBy," +
- " serie.homepage seriesHomepage," +
- " serie.lastAired seriesLastAired," +
- " serie.languages seriesLanguages," +
- " serie.networks seriesNetworks," +
- " serie.nrEpisodes seriesNrEpisodes," +
- " serie.nrSeasons seriesNrSeasons," +
- " serie.originCountries seriesOriginCountries," +
- " serie.originalLanguage seriesOriginalLanguage," +
- " serie.popularity seriesPopularity," +
- " serie.posterPath seriesPoster," +
- " serie.productionCompanies seriesProductionCompanies," +
- " serie.type seriesType," +
- " serie.voteAverage seriesVoteAverage," +
- " serie.voteCount seriesVoteCount," +
- " serie.overview seriesOverview," +
- " serie.firstAired seriesFirstAired," +
- " serie.cast seriesCast," +
- " serie.crew seriesCrew," +
- " serie.genre seriesGenre," +
- " serie.imdbid seriesIMDBID," +
- " serie.freebasemid seriesFreebaseMID," +
- " serie.freebaseid seriesFreebaseID," +
- " serie.tvdbid seriesTVDBID," +
- " serie.tvrageid seriesTVRageID," +
- " serie.status seriesStatus," +
- " serie.download seriesDownload," +
- " serie.localPath seriesLocalPath," +
- " serie.resolution seriesResolution," +
- " serie.cliffhanger seriesCliffhanger," +
- " season._id season_ID," +
- " IF(IFNULL(season.airDate, '1900-01-01') = '','1900-01-01', IFNULL(season.airDate, '1900-01-01')) seasonAirDate," +
- " season.name seasonName," +
- " season.overview seasonOverview," +
- " season.id seasonID," +
- " season.posterPath seasonPosterPath," +
- " season.seasonNumber seasonNumber," +
- " episode.id episodeID," +
- " episode.name episodeName," +
- " episode.episodeNumber episodeNumber," +
- " IF(IFNULL(episode.airDate, '1900-01-01') = '','1900-01-01', IFNULL(episode.airDate, '1900-01-01')) episodeAirDate," +
- " episode.guestStars episodeGuestStars," +
- " episode.overview episodeOverview," +
- " episode.productioncode episodeProductionCode," +
- " episode.stillPath episodeStillPath," +
- " episode.voteAverage episodeVoteAverage," +
- " episode.voteCount episodeVoteCount," +
- " episode.crew episodeCrew," +
- " episode.state episodeState" +
- " FROM serie" +
- " LEFT JOIN season ON serie.seriesID = season.seriesID" +
- " LEFT JOIN episode ON serie.seriesID = episode.seriesID AND season.seasonNumber = episode.seasonNumber" +
- " WHERE season.seasonNumber != 0 OR" +
- " serie.seriesID >= 1000000" +
- " ORDER BY serie.seriesName," +
- " serie.firstAired," +
- " season.seasonNumber," +
- " episode.episodeNumber;"
- );
-
- // fetch all events from database
- serieData serie = new serieData();
- seasonData season = new seasonData();
- episodeData episode = new episodeData();
- int oldSerieID = -1;
- int oldSeasonID = -1;
- int oldEpisodeID = -1;
-
- serie.setSeriesID(-1);
-
- while(rs.next())
- {
- int serieID = rs.getInt("seriesID");
- int seasonID = rs.getInt("seasonID");
- int episodeID = rs.getInt("episodeID");
-
- if(serieID != oldSerieID)
- {
- oldSerieID = serieID;
- serie = newSerie(rs);
- serieList.add(serie);
-
- oldSeasonID = seasonID;
- season = newSeason(rs);
-
- oldEpisodeID = episodeID;
- episode = newEpisode(rs);
-
- switch(rs.getInt("episodeState"))
- {
- case 1:
- serie.addStateInit();
- break;
- case 2:
- serie.addStateProd();
- break;
- case 3:
- serie.addStateDone();
- break;
- }
- }
- else if(seasonID != oldSeasonID)
- {
- oldSeasonID = seasonID;
- season = newSeason(rs);
-
- oldEpisodeID = episodeID;
- episode = newEpisode(rs);
-
- switch(rs.getInt("episodeState"))
- {
- case 1:
- serie.addStateInit();
- break;
- case 2:
- serie.addStateProd();
- break;
- case 3:
- serie.addStateDone();
- break;
- }
- }
- else if(episodeID != oldEpisodeID)
- {
- oldEpisodeID = episodeID;
- episode = newEpisode(rs);
-
- switch(rs.getInt("episodeState"))
- {
- case 1:
- serie.addStateInit();
- break;
- case 2:
- serie.addStateProd();
- break;
- case 3:
- serie.addStateDone();
- break;
- }
-
- if(season.getSeasonNumber() != 0)
- {
- if(maxEpisode.get(season.getSeasonNumber()) < episode.getEpisodeNumber())
- maxEpisode.put(season.getSeasonNumber(), episode.getEpisodeNumber());
- }
- }
-
- season.setSerie(serie);
- episode.setSerie(serie);
- episode.setSeason(season);
-
- serie.setSeason(season.getSeasonNumber(), season);
- season.setEpisode(episode.getEpisodeNumber(), episode);
- }
- }
- catch(SQLException e)
- {
- e.printStackTrace();
- }
- finally
- {
- ds.close();
- }
-
- for(serieData serie : serieList)
- {
- seriesListModel.add(serie);
- serie.setModel(seriesListModel);
- }
-
- for(int i = minSeason; i <= maxSeason; i++)
- {
- int size = maxEpisode.get(i) * stateWidth;
- Listheader header = listHeader.get(i);
- header.setWidth(size + 40 + "px");
- }
- }
-
- protected episodeData newEpisode(ResultSet rs) throws SQLException
- {
- episodeData episode = new episodeData();
-
- episode.setEpisodeID(rs.getInt("episodeID"));
- episode.setEpisodeName(rs.getString("episodeName"));
- episode.setEpisodeNumber(rs.getInt("episodeNumber"));
- episode.setEpisodeAirDate(rs.getDate("episodeAirDate"));
- episode.setEpisodeGuestStars(rs.getString("episodeGuestStars"));
- episode.setEpisodeOverview(rs.getString("episodeOverview"));
- episode.setEpisodeProductionCode(rs.getString("episodeProductionCode"));
- episode.setEpisodeStillPath(rs.getString("episodeStillPath"));
- episode.setEpisodeVoteAverage(rs.getDouble("episodeVoteAverage"));
- episode.setEpisodeVoteCount(rs.getInt("episodeVoteCount"));
- episode.setEpisodeCrew(rs.getString("episodeCrew"));
- episode.setEpisodeState(rs.getInt("episodeState"));
-
- return episode;
- }
-
- protected seasonData newSeason(ResultSet rs) throws SQLException
- {
- seasonData season = new seasonData();
-
- season.setSeason_ID(rs.getString("season_ID"));
- season.setSeasonAirDate(rs.getDate("seasonAirDate"));
- season.setSeasonName(rs.getString("seasonName"));
- season.setSeasonOverview(rs.getString("seasonOverview"));
- season.setSeasonID(rs.getInt("seasonID"));
- season.setSeasonPosterPath(rs.getString("seasonPosterPath"));
- season.setSeasonNumber(rs.getInt("seasonNumber"));
-
- return season;
- }
-
- protected serieData newSerie(ResultSet rs) throws SQLException
- {
- serieData serie = new serieData();
-
- serie.setSeriesID(rs.getInt("seriesID"));
- serie.setSeriesName(rs.getString("seriesName"));
- serie.setSeriesOriginalName(rs.getString("seriesOriginalName"));
- serie.setSeriesBackdrop(rs.getString("seriesBackdrop"));
- serie.setSeriesCreatedBy(rs.getString("seriesCreatedBy"));
- serie.setSeriesHomepage(rs.getString("seriesHomepage"));
- serie.setSeriesLastAired(rs.getDate("seriesLastAired"));
- serie.setSeriesLanguages(rs.getString("seriesLanguages"));
- serie.setSeriesNetworks(rs.getString("seriesNetworks"));
- serie.setSeriesNrEpisodes(rs.getInt("seriesNrEpisodes"));
- serie.setSeriesNrSeasons(rs.getInt("seriesNrSeasons"));
- serie.setSeriesOriginCountries(rs.getString("seriesOriginCountries"));
- serie.setSeriesOriginalLanguage(rs.getString("seriesOriginalLanguage"));
- serie.setSeriesPopularity(rs.getDouble("seriesPopularity"));
- serie.setSeriesPoster(rs.getString("seriesPoster"));
- serie.setSeriesProductionCompanies(rs.getString("seriesProductionCompanies"));
- serie.setSeriesType(rs.getString("seriesType"));
- serie.setSeriesVoteAverage(rs.getDouble("seriesVoteAverage"));
- serie.setSeriesVoteCount(rs.getInt("seriesVoteCount"));
- serie.setSeriesOverview(rs.getString("seriesOverview"));
- serie.setSeriesFirstAired(rs.getDate("seriesFirstAired"));
- serie.setSeriesCast(rs.getString("seriesCast"));
- serie.setSeriesCrew(rs.getString("seriesCrew"));
- serie.setSeriesGenre(rs.getString("seriesGenre"));
- serie.setSeriesIMDBID(rs.getString("seriesIMDBID"));
- serie.setSeriesFreebaseMID(rs.getString("seriesFreebaseMID"));
- serie.setSeriesFreebaseID(rs.getString("seriesFreebaseID"));
- serie.setSeriesTVDBID(rs.getString("seriesTVDBID"));
- serie.setSeriesTVRageID(rs.getString("seriesTVRageID"));
- serie.setSeriesStatus(rs.getString("seriesStatus"));
- serie.setSeriesDownload(rs.getString("seriesDownload"));
- serie.setSeriesLocalPath(rs.getString("seriesLocalPath"));
- serie.setSeriesResolution(rs.getString("seriesResolution"));
- serie.setSeriesCliffhanger(rs.getBoolean("seriesCliffhanger"));
-
- return serie;
+ serieDataSource ds = serieDataSource.INSTANCE;
+ serieUtils.loadSeries(ds, seriesList);
}
}
diff --git a/src/main/java/at/windesign/application/serie/serieListSelectorComposer.java b/src/main/java/at/windesign/application/serie/serieListSelectorComposer.java
index a1993b5..8d376b3 100644
--- a/src/main/java/at/windesign/application/serie/serieListSelectorComposer.java
+++ b/src/main/java/at/windesign/application/serie/serieListSelectorComposer.java
@@ -17,7 +17,7 @@ public class serieListSelectorComposer extends SelectorComposer
private Listbox seriesList;
@Listen("onDoubleClick = #seriesList")
- public void onClick()
+ public void onClickSeriesList()
{
Listitem item = seriesList.getSelectedItem();
@@ -36,4 +36,29 @@ public class serieListSelectorComposer extends SelectorComposer
window.doModal();
}
+
+ @Listen("onClick = #updateAll")
+ public void onClickUpdateAll()
+ {
+ update(true);
+ }
+
+ @Listen("onClick = #updateOpen")
+ public void onClickUpdateOpen()
+ {
+ update(false);
+ }
+
+ private void update(boolean all)
+ {
+ Map arguments = new HashMap();
+
+ arguments.put("seriesList", seriesList);
+ arguments.put("all", all);
+
+ String template = "/serie/updateSerie.zul";
+ Window window = (Window) Executions.createComponents(template, null, arguments);
+
+ window.doModal();
+ }
}
diff --git a/src/main/java/at/windesign/application/serie/serieRenderer.java b/src/main/java/at/windesign/application/serie/serieRenderer.java
index 7866519..04d7d8b 100644
--- a/src/main/java/at/windesign/application/serie/serieRenderer.java
+++ b/src/main/java/at/windesign/application/serie/serieRenderer.java
@@ -61,9 +61,10 @@ public class serieRenderer implements ListitemRenderer
Color colBlue = new Color(0, 0, 192);
Color colGreen = new Color(0, 192, 0);
Color colBlack = new Color(0, 0, 0);
+ Color colWhite = new Color(255, 255, 255);
Color col = colBlack;
- g2d.setColor(colBlack);
+ g2d.setColor(colWhite);
g2d.fillRect(0, 0, stateWidth * episodes.lastKey(), stateHeight);
for(Integer key : episodes.keySet())
@@ -84,6 +85,8 @@ public class serieRenderer implements ListitemRenderer
break;
}
+ g2d.setColor(colBlack);
+ g2d.fillRect((key - 1) * stateWidth, 0, stateWidth, stateHeight);
g2d.setColor(col);
g2d.fillRect((key - 1) * stateWidth, 0, stateWidth - 1, stateHeight);
}
diff --git a/src/main/java/at/windesign/application/serie/serieUpdateForwardComposer.java b/src/main/java/at/windesign/application/serie/serieUpdateForwardComposer.java
new file mode 100644
index 0000000..1c24e12
--- /dev/null
+++ b/src/main/java/at/windesign/application/serie/serieUpdateForwardComposer.java
@@ -0,0 +1,32 @@
+package at.windesign.application.serie;
+
+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.*;
+
+public class serieUpdateForwardComposer extends GenericForwardComposer
+{
+ private static final long serialVersionUID = 1L;
+ private int opacity = 80;
+ private Listbox m_seriesList;
+ private boolean m_all;
+
+ @Wire
+ private Window updateSerie;
+
+ @Wire
+ protected Label serieLabel;
+
+ @Wire
+ protected Progressmeter serieProgress;
+
+ @Wire
+ protected Label serieProgressLabel;
+
+ @Override
+ public void doAfterCompose(Component comp) throws Exception
+ {
+ super.doAfterCompose(comp);
+ }
+}
diff --git a/src/main/java/at/windesign/application/serie/serieUpdateSelectorComposer.java b/src/main/java/at/windesign/application/serie/serieUpdateSelectorComposer.java
new file mode 100644
index 0000000..f65cd84
--- /dev/null
+++ b/src/main/java/at/windesign/application/serie/serieUpdateSelectorComposer.java
@@ -0,0 +1,271 @@
+package at.windesign.application.serie;
+
+import com.omertron.themoviedbapi.MovieDbException;
+import org.zkoss.zk.ui.Component;
+import org.zkoss.zk.ui.Execution;
+import org.zkoss.zk.ui.Executions;
+import org.zkoss.zk.ui.event.Event;
+import org.zkoss.zk.ui.event.EventQueue;
+import org.zkoss.zk.ui.event.EventQueues;
+import org.zkoss.zk.ui.event.Events;
+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.IOException;
+import java.util.List;
+import java.util.concurrent.TimeUnit;
+
+//a33271b9e54cdcb9a80680eaf5522f1b
+
+public class serieUpdateSelectorComposer extends SelectorComposer
+{
+ private static final long serialVersionUID = 1L;
+ private int opacity = 80;
+ private Listbox m_seriesList;
+ private boolean m_all;
+
+ @Wire
+ private Window updateSerie;
+
+ @Wire
+ protected Label serieLabel;
+
+ @Wire
+ protected Progressmeter serieProgress;
+
+ @Wire
+ protected Label serieProgressLabel;
+
+ @Wire
+ private Timer timer;
+
+ private static final String QUEUE = "queue";
+ private static final String START = "start";
+ private static final int ONE_HUNDRED = 100;
+
+ private boolean isFinish;
+
+ private int progress;
+ private String serieName;
+
+ @Override
+ public void doAfterCompose(Component comp) throws Exception
+ {
+ super.doAfterCompose(comp);
+
+ final Execution execution = Executions.getCurrent();
+
+ if(execution.getArg().containsKey("seriesList"))
+ m_seriesList = (Listbox) execution.getArg().get("seriesList");
+ else
+ updateSerie.detach();
+
+ if(execution.getArg().containsKey("all"))
+ m_all = (boolean) execution.getArg().get("all");
+ else
+ updateSerie.detach();
+
+ try
+ {
+ Events.echoEvent("onAddNameEvent", timer, null);
+ }
+ catch(Exception e)
+ {
+ e.printStackTrace();
+ }
+ }
+
+ @Listen("onAddNameEvent = #timer")
+ public void processingSeries()
+ {
+ try
+ {
+ timer.start();
+
+ if(itsNotProcessing())
+ {
+ EventQueue queue = lookupQueue();
+ setUp(queue);
+ start(queue);
+ }
+ }
+ catch(Exception e)
+ {
+ e.printStackTrace();
+ }
+ }
+
+ private boolean itsNotProcessing()
+ {
+ return !EventQueues.exists(QUEUE);
+ }
+
+ private EventQueue lookupQueue()
+ {
+ return EventQueues.lookup(QUEUE);
+ }
+
+ private void setUp(final EventQueue queue)
+ {
+ progress = 0;
+
+ queue.subscribe((Event event) ->
+ {
+ doLongOperation();
+ }
+ ,
+ (Event event) ->
+ {
+ removeQueue();
+ });
+ }
+
+ private void removeQueue()
+ {
+ EventQueues.remove(QUEUE);
+ }
+
+ private void start(EventQueue queue)
+ {
+ queue.publish(new Event(START));
+ timer.start();
+ }
+
+ private void doLongOperation() throws IOException
+ {
+ doProcess();
+ }
+
+ public void doProcess() throws IOException, IllegalStateException
+ {
+ int total = 0;
+ int current = 0;
+
+ ListModelList list = (ListModelList) m_seriesList.getModel();
+ List dataList = list.getInnerList();
+
+ for(serieData data : dataList)
+ {
+ if(m_all == true)
+ total++;
+ else
+ {
+ if(data.isActive())
+ total++;
+ }
+ }
+
+ try
+ {
+ for(serieData data : dataList)
+ {
+ if(m_all == true || data.isActive() == true)
+ {
+ progress = current * 100 / total;
+ serieName = data.getSeriesName();
+
+ updateSerie(data);
+
+ current++;
+ }
+ }
+ isFinish = true;
+ }
+ catch(Exception e)
+ {
+ e.printStackTrace();
+ }
+ finally
+ {
+ }
+ }
+
+ @Listen("onTimer = #timer")
+ public void fetchingSimulatorTimer() throws FileNotFoundException, IllegalStateException
+ {
+ try
+ {
+ updateProgressmeter();
+ updateLabel();
+ }
+ catch(Exception e)
+ {
+ }
+
+ }
+
+ private void updateProgressmeter()
+ {
+ try
+ {
+ serieProgress.setValue(progress);
+ serieProgressLabel.setValue(progress + "%");
+ serieLabel.setValue(serieName);
+ }
+ catch(Exception e)
+ {
+ }
+ }
+
+ private void updateLabel() throws FileNotFoundException, IllegalStateException
+ {
+ try
+ {
+ if(isFinish)
+ {
+ serieProgressLabel.setValue("Finish!");
+ updateSerie.detach();
+
+ Executions.sendRedirect("");
+ }
+ }
+ catch(Exception e)
+ {
+ }
+ }
+
+ private boolean isTheProgressmeterFull()
+ {
+ return serieProgress.getValue() == ONE_HUNDRED;
+ }
+
+ private void stop()
+ {
+ timer.stop();
+ }
+
+ @Listen("onClick = #btnCancel")
+ public void doCancel()
+ {
+ try
+ {
+// isBreak = true;
+ removeQueue();
+ timer.stop();
+ }
+ catch(Exception e)
+ {
+ }
+ }
+
+ private void updateSerie(serieData serie)
+ {
+ serieData serieNew;
+
+ try
+ {
+ serieNew = new serieData();
+ serieNew.fromTMDB(serie.getSeriesID());
+ serieNew.copyFrom(serie);
+
+ serieNew.save();
+ }
+ catch(MovieDbException e)
+ {
+ e.printStackTrace();
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/main/java/at/windesign/application/serie/serieUtils.java b/src/main/java/at/windesign/application/serie/serieUtils.java
new file mode 100644
index 0000000..27cc366
--- /dev/null
+++ b/src/main/java/at/windesign/application/serie/serieUtils.java
@@ -0,0 +1,343 @@
+package at.windesign.application.serie;
+
+import org.zkoss.zul.*;
+
+import java.sql.ResultSet;
+import java.sql.SQLException;
+import java.sql.Statement;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.SortedMap;
+import java.util.TreeMap;
+
+public class serieUtils
+{
+ static private Integer stateWidth = 4;
+ static private Integer stateHeight = 20;
+
+ static public void loadSeries(serieDataSource ds, Listbox seriesList)
+ {
+ List serieList = new ArrayList<>();
+ int minSeason = 0;
+ int maxSeason = 0;
+ SortedMap maxEpisode = new TreeMap<>();
+ SortedMap listHeader = new TreeMap<>();
+
+ try
+ {
+ Statement stmt = ds.getStatement();
+ ResultSet rs = stmt.executeQuery(
+ "SELECT MIN(seasonNumber) minSeason," +
+ " MAX(seasonNumber) maxSeason" +
+ " FROM season;"
+ );
+
+ while(rs.next())
+ {
+ minSeason = rs.getInt("minSeason");
+ maxSeason = rs.getInt("maxSeason");
+ }
+ }
+ catch(SQLException e)
+ {
+ Messagebox.show(e.getMessage());
+ Messagebox.show(e.getSQLState());
+ e.printStackTrace();
+ }
+
+ ListModelList seriesListModel = new ListModelList();
+ seriesList.setModel(seriesListModel);
+ seriesList.setAttribute("listModelList", seriesListModel);
+
+ seriesList.getListhead().getChildren().clear();
+ Listhead head = seriesList.getListhead();
+ Listheader seriesName = new Listheader("Series Name");
+ Listheader firstAired = new Listheader("First Aired");
+ Listheader resolution = new Listheader("Resolution");
+
+ seriesName.setHflex("min");
+ firstAired.setHflex("min");
+ resolution.setHflex("min");
+
+ head.appendChild(seriesName);
+ head.appendChild(firstAired);
+ head.appendChild(resolution);
+
+ if(minSeason < 1)
+ minSeason = 1;
+
+ for(int i = minSeason; i <= maxSeason; i++)
+ {
+ Listheader seasonHeader = new Listheader("Season " + i);
+ head.appendChild(seasonHeader);
+ maxEpisode.put(i, 0);
+ listHeader.put(i, seasonHeader);
+ }
+
+ serieRenderer renderer = new serieRenderer();
+ seriesList.setItemRenderer(renderer);
+
+ try
+ {
+ Statement stmt = ds.getStatement();
+ ResultSet rs = stmt.executeQuery(
+ "SELECT serie.seriesID seriesID," +
+ " serie.seriesName seriesName," +
+ " serie.originalName seriesOriginalName," +
+ " serie.backdropPath seriesBackdrop," +
+ " serie.createdBy seriesCreatedBy," +
+ " serie.homepage seriesHomepage," +
+ " serie.lastAired seriesLastAired," +
+ " serie.languages seriesLanguages," +
+ " serie.networks seriesNetworks," +
+ " serie.nrEpisodes seriesNrEpisodes," +
+ " serie.nrSeasons seriesNrSeasons," +
+ " serie.originCountries seriesOriginCountries," +
+ " serie.originalLanguage seriesOriginalLanguage," +
+ " serie.popularity seriesPopularity," +
+ " serie.posterPath seriesPoster," +
+ " serie.productionCompanies seriesProductionCompanies," +
+ " serie.type seriesType," +
+ " serie.voteAverage seriesVoteAverage," +
+ " serie.voteCount seriesVoteCount," +
+ " serie.overview seriesOverview," +
+ " serie.firstAired seriesFirstAired," +
+ " serie.cast seriesCast," +
+ " serie.crew seriesCrew," +
+ " serie.genre seriesGenre," +
+ " serie.imdbid seriesIMDBID," +
+ " serie.freebasemid seriesFreebaseMID," +
+ " serie.freebaseid seriesFreebaseID," +
+ " serie.tvdbid seriesTVDBID," +
+ " serie.tvrageid seriesTVRageID," +
+ " serie.status seriesStatus," +
+ " serie.download seriesDownload," +
+ " serie.localPath seriesLocalPath," +
+ " serie.resolution seriesResolution," +
+ " serie.cliffhanger seriesCliffhanger," +
+ " season._id season_ID," +
+ " IF(IFNULL(season.airDate, '1900-01-01') = '','1900-01-01', IFNULL(season.airDate, '1900-01-01')) seasonAirDate," +
+ " season.name seasonName," +
+ " season.overview seasonOverview," +
+ " season.id seasonID," +
+ " season.posterPath seasonPosterPath," +
+ " season.seasonNumber seasonNumber," +
+ " episode.id episodeID," +
+ " episode.name episodeName," +
+ " episode.episodeNumber episodeNumber," +
+ " IF(IFNULL(episode.airDate, '1900-01-01') = '','1900-01-01', IFNULL(episode.airDate, '1900-01-01')) episodeAirDate," +
+ " episode.guestStars episodeGuestStars," +
+ " episode.overview episodeOverview," +
+ " episode.productioncode episodeProductionCode," +
+ " episode.stillPath episodeStillPath," +
+ " episode.voteAverage episodeVoteAverage," +
+ " episode.voteCount episodeVoteCount," +
+ " episode.crew episodeCrew," +
+ " episode.state episodeState" +
+ " FROM serie" +
+ " LEFT JOIN season ON serie.seriesID = season.seriesID" +
+ " LEFT JOIN episode ON serie.seriesID = episode.seriesID AND season.seasonNumber = episode.seasonNumber" +
+ " WHERE (season.seasonNumber != 0 AND episode.episodeNumber IS NOT NULL) OR" +
+ " serie.seriesID >= 1000000" +
+ " ORDER BY serie.seriesName," +
+ " serie.firstAired," +
+ " season.seasonNumber," +
+ " episode.episodeNumber;"
+ );
+
+ // fetch all events from database
+ serieData serie = new serieData();
+ seasonData season = new seasonData();
+ episodeData episode = new episodeData();
+ int oldSerieID = -1;
+ int oldSeasonID = -1;
+ int oldEpisodeID = -1;
+
+ serie.setSeriesID(-1);
+
+ while(rs.next())
+ {
+ int serieID = rs.getInt("seriesID");
+ int seasonID = rs.getInt("seasonID");
+ int episodeID = rs.getInt("episodeID");
+
+ if(serieID != oldSerieID)
+ {
+ oldSerieID = serieID;
+ serie = newSerie(rs);
+ serieList.add(serie);
+
+ oldSeasonID = seasonID;
+ season = newSeason(rs);
+
+ oldEpisodeID = episodeID;
+ episode = newEpisode(rs);
+
+ switch(rs.getInt("episodeState"))
+ {
+ case 1:
+ serie.addStateInit();
+ break;
+ case 2:
+ serie.addStateProd();
+ break;
+ case 3:
+ serie.addStateDone();
+ break;
+ }
+ }
+ else if(seasonID != oldSeasonID)
+ {
+ oldSeasonID = seasonID;
+ season = newSeason(rs);
+
+ oldEpisodeID = episodeID;
+ episode = newEpisode(rs);
+
+ switch(rs.getInt("episodeState"))
+ {
+ case 1:
+ serie.addStateInit();
+ break;
+ case 2:
+ serie.addStateProd();
+ break;
+ case 3:
+ serie.addStateDone();
+ break;
+ }
+ }
+ else if(episodeID != oldEpisodeID)
+ {
+ oldEpisodeID = episodeID;
+ episode = newEpisode(rs);
+
+ switch(rs.getInt("episodeState"))
+ {
+ case 1:
+ serie.addStateInit();
+ break;
+ case 2:
+ serie.addStateProd();
+ break;
+ case 3:
+ serie.addStateDone();
+ break;
+ }
+
+ if(season.getSeasonNumber() != 0)
+ {
+ if(maxEpisode.get(season.getSeasonNumber()) < episode.getEpisodeNumber())
+ maxEpisode.put(season.getSeasonNumber(), episode.getEpisodeNumber());
+ }
+ }
+
+ season.setSerie(serie);
+ episode.setSerie(serie);
+ episode.setSeason(season);
+
+ serie.setSeason(season.getSeasonNumber(), season);
+ season.setEpisode(episode.getEpisodeNumber(), episode);
+ }
+ }
+ catch(SQLException e)
+ {
+ e.printStackTrace();
+ }
+ finally
+ {
+ ds.close();
+ }
+
+ for(serieData serie : serieList)
+ {
+ seriesListModel.add(serie);
+ serie.setModel(seriesListModel);
+ }
+
+ for(int i = minSeason; i <= maxSeason; i++)
+ {
+ int size = maxEpisode.get(i) * stateWidth;
+ Listheader header = listHeader.get(i);
+ header.setWidth(size + 40 + "px");
+ }
+ }
+
+
+ static protected episodeData newEpisode(ResultSet rs) throws SQLException
+ {
+ episodeData episode = new episodeData();
+
+ episode.setEpisodeID(rs.getInt("episodeID"));
+ episode.setEpisodeName(rs.getString("episodeName"));
+ episode.setEpisodeNumber(rs.getInt("episodeNumber"));
+ episode.setEpisodeAirDate(rs.getDate("episodeAirDate"));
+ episode.setEpisodeGuestStars(rs.getString("episodeGuestStars"));
+ episode.setEpisodeOverview(rs.getString("episodeOverview"));
+ episode.setEpisodeProductionCode(rs.getString("episodeProductionCode"));
+ episode.setEpisodeStillPath(rs.getString("episodeStillPath"));
+ episode.setEpisodeVoteAverage(rs.getDouble("episodeVoteAverage"));
+ episode.setEpisodeVoteCount(rs.getInt("episodeVoteCount"));
+ episode.setEpisodeCrew(rs.getString("episodeCrew"));
+ episode.setEpisodeState(rs.getInt("episodeState"));
+
+ return episode;
+ }
+
+ static protected seasonData newSeason(ResultSet rs) throws SQLException
+ {
+ seasonData season = new seasonData();
+
+ season.setSeason_ID(rs.getString("season_ID"));
+ season.setSeasonAirDate(rs.getDate("seasonAirDate"));
+ season.setSeasonName(rs.getString("seasonName"));
+ season.setSeasonOverview(rs.getString("seasonOverview"));
+ season.setSeasonID(rs.getInt("seasonID"));
+ season.setSeasonPosterPath(rs.getString("seasonPosterPath"));
+ season.setSeasonNumber(rs.getInt("seasonNumber"));
+
+ return season;
+ }
+
+ static protected serieData newSerie(ResultSet rs) throws SQLException
+ {
+ serieData serie = new serieData();
+
+ serie.setSeriesID(rs.getInt("seriesID"));
+ serie.setSeriesName(rs.getString("seriesName"));
+ serie.setSeriesOriginalName(rs.getString("seriesOriginalName"));
+ serie.setSeriesBackdrop(rs.getString("seriesBackdrop"));
+ serie.setSeriesCreatedBy(rs.getString("seriesCreatedBy"));
+ serie.setSeriesHomepage(rs.getString("seriesHomepage"));
+ serie.setSeriesLastAired(rs.getDate("seriesLastAired"));
+ serie.setSeriesLanguages(rs.getString("seriesLanguages"));
+ serie.setSeriesNetworks(rs.getString("seriesNetworks"));
+ serie.setSeriesNrEpisodes(rs.getInt("seriesNrEpisodes"));
+ serie.setSeriesNrSeasons(rs.getInt("seriesNrSeasons"));
+ serie.setSeriesOriginCountries(rs.getString("seriesOriginCountries"));
+ serie.setSeriesOriginalLanguage(rs.getString("seriesOriginalLanguage"));
+ serie.setSeriesPopularity(rs.getDouble("seriesPopularity"));
+ serie.setSeriesPoster(rs.getString("seriesPoster"));
+ serie.setSeriesProductionCompanies(rs.getString("seriesProductionCompanies"));
+ serie.setSeriesType(rs.getString("seriesType"));
+ serie.setSeriesVoteAverage(rs.getDouble("seriesVoteAverage"));
+ serie.setSeriesVoteCount(rs.getInt("seriesVoteCount"));
+ serie.setSeriesOverview(rs.getString("seriesOverview"));
+ serie.setSeriesFirstAired(rs.getDate("seriesFirstAired"));
+ serie.setSeriesCast(rs.getString("seriesCast"));
+ serie.setSeriesCrew(rs.getString("seriesCrew"));
+ serie.setSeriesGenre(rs.getString("seriesGenre"));
+ serie.setSeriesIMDBID(rs.getString("seriesIMDBID"));
+ serie.setSeriesFreebaseMID(rs.getString("seriesFreebaseMID"));
+ serie.setSeriesFreebaseID(rs.getString("seriesFreebaseID"));
+ serie.setSeriesTVDBID(rs.getString("seriesTVDBID"));
+ serie.setSeriesTVRageID(rs.getString("seriesTVRageID"));
+ serie.setSeriesStatus(rs.getString("seriesStatus"));
+ serie.setSeriesDownload(rs.getString("seriesDownload"));
+ serie.setSeriesLocalPath(rs.getString("seriesLocalPath"));
+ serie.setSeriesResolution(rs.getString("seriesResolution"));
+ serie.setSeriesCliffhanger(rs.getBoolean("seriesCliffhanger"));
+
+ return serie;
+ }
+}
diff --git a/src/main/webapp/serie/centerSerie.zul b/src/main/webapp/serie/centerSerie.zul
index 8acd650..045e653 100644
--- a/src/main/webapp/serie/centerSerie.zul
+++ b/src/main/webapp/serie/centerSerie.zul
@@ -2,6 +2,18 @@
vflex="true"
apply="at.windesign.application.serie.serieListForwardComposer, at.windesign.application.serie.serieListSelectorComposer"
>
+
+
+
+
+
+
\ No newline at end of file
diff --git a/target/classes/at/windesign/application/serie/serieData.class b/target/classes/at/windesign/application/serie/serieData.class
index 82ef494..eb3a6ce 100644
Binary files a/target/classes/at/windesign/application/serie/serieData.class and b/target/classes/at/windesign/application/serie/serieData.class differ
diff --git a/target/classes/at/windesign/application/serie/serieDetailsSelectorComposer$1.class b/target/classes/at/windesign/application/serie/serieDetailsSelectorComposer$1.class
index fffea2b..3803881 100644
Binary files a/target/classes/at/windesign/application/serie/serieDetailsSelectorComposer$1.class and b/target/classes/at/windesign/application/serie/serieDetailsSelectorComposer$1.class differ
diff --git a/target/classes/at/windesign/application/serie/serieDetailsSelectorComposer.class b/target/classes/at/windesign/application/serie/serieDetailsSelectorComposer.class
index f58a9c6..8898132 100644
Binary files a/target/classes/at/windesign/application/serie/serieDetailsSelectorComposer.class and b/target/classes/at/windesign/application/serie/serieDetailsSelectorComposer.class differ
diff --git a/target/classes/at/windesign/application/serie/serieListForwardComposer.class b/target/classes/at/windesign/application/serie/serieListForwardComposer.class
index c2ac269..55161d8 100644
Binary files a/target/classes/at/windesign/application/serie/serieListForwardComposer.class and b/target/classes/at/windesign/application/serie/serieListForwardComposer.class differ
diff --git a/target/classes/at/windesign/application/serie/serieListSelectorComposer.class b/target/classes/at/windesign/application/serie/serieListSelectorComposer.class
index 6dcc128..78fe511 100644
Binary files a/target/classes/at/windesign/application/serie/serieListSelectorComposer.class and b/target/classes/at/windesign/application/serie/serieListSelectorComposer.class differ
diff --git a/target/classes/at/windesign/application/serie/serieRenderer.class b/target/classes/at/windesign/application/serie/serieRenderer.class
index 1cc43a9..df774e2 100644
Binary files a/target/classes/at/windesign/application/serie/serieRenderer.class and b/target/classes/at/windesign/application/serie/serieRenderer.class differ
diff --git a/target/classes/at/windesign/application/serie/serieUpdateForwardComposer.class b/target/classes/at/windesign/application/serie/serieUpdateForwardComposer.class
new file mode 100644
index 0000000..c2b5439
Binary files /dev/null and b/target/classes/at/windesign/application/serie/serieUpdateForwardComposer.class differ
diff --git a/target/classes/at/windesign/application/serie/serieUpdateSelectorComposer.class b/target/classes/at/windesign/application/serie/serieUpdateSelectorComposer.class
new file mode 100644
index 0000000..0f44127
Binary files /dev/null and b/target/classes/at/windesign/application/serie/serieUpdateSelectorComposer.class differ
diff --git a/target/classes/at/windesign/application/serie/serieUtils.class b/target/classes/at/windesign/application/serie/serieUtils.class
new file mode 100644
index 0000000..9dabe01
Binary files /dev/null and b/target/classes/at/windesign/application/serie/serieUtils.class differ
diff --git a/target/maven-archiver/pom.properties b/target/maven-archiver/pom.properties
index a35f82d..6780918 100644
--- a/target/maven-archiver/pom.properties
+++ b/target/maven-archiver/pom.properties
@@ -1,5 +1,5 @@
#Generated by Maven
-#Wed Nov 25 09:49:24 CET 2020
+#Sat Feb 20 21:57:16 CET 2021
groupId=at.windesign.application
artifactId=multimedia
version=1.0-SNAPSHOT
diff --git a/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst b/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst
index b88a0db..5db9db1 100644
--- a/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst
+++ b/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst
@@ -1,10 +1,13 @@
-at\windesign\application\serie\serieDataSource.class
-at\windesign\application\serie\serieListForwardComposer.class
-at\windesign\application\testing\testForwardComposer.class
at\windesign\application\serie\seasonData.class
at\windesign\application\serie\serieRenderer.class
at\windesign\application\serie\serieData.class
+at\windesign\application\serie\serieUtils.class
at\windesign\application\serie\serieDetailsForwardComposer$1.class
at\windesign\application\serie\serieDetailsForwardComposer.class
-at\windesign\application\serie\serieListSelectorComposer.class
+at\windesign\application\serie\serieDetailsSelectorComposer$1.class
+at\windesign\application\serie\serieDataSource.class
+at\windesign\application\serie\serieListForwardComposer.class
+at\windesign\application\serie\serieDetailsSelectorComposer.class
+at\windesign\application\testing\testForwardComposer.class
at\windesign\application\serie\episodeData.class
+at\windesign\application\main\indexForwardComposer.class
diff --git a/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst b/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst
index 09d2190..b362534 100644
--- a/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst
+++ b/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst
@@ -1,11 +1,14 @@
-C:\Users\birkeh\ownCloud\dev\IntelliJ\zk\multimedia\src\main\java\at\windesign\application\serie\serieDataSource.java
C:\Users\birkeh\ownCloud\dev\IntelliJ\zk\multimedia\src\main\java\at\windesign\application\serie\serieData.java
-C:\Users\birkeh\ownCloud\dev\IntelliJ\zk\multimedia\src\main\java\at\windesign\application\testing\testForwardComposer.java
C:\Users\birkeh\ownCloud\dev\IntelliJ\zk\multimedia\src\main\java\at\windesign\application\serie\serieDetailsSelectorComposer.java
+C:\Users\birkeh\ownCloud\dev\IntelliJ\zk\multimedia\src\main\java\at\windesign\application\serie\serieUpdateSelectorComposer.java
+C:\Users\birkeh\ownCloud\dev\IntelliJ\zk\multimedia\src\main\java\at\windesign\application\serie\serieUpdateForwardComposer.java
+C:\Users\birkeh\ownCloud\dev\IntelliJ\zk\multimedia\src\main\java\at\windesign\application\serie\episodeData.java
+C:\Users\birkeh\ownCloud\dev\IntelliJ\zk\multimedia\src\main\java\at\windesign\application\serie\serieRenderer.java
+C:\Users\birkeh\ownCloud\dev\IntelliJ\zk\multimedia\src\main\java\at\windesign\application\serie\serieDataSource.java
+C:\Users\birkeh\ownCloud\dev\IntelliJ\zk\multimedia\src\main\java\at\windesign\application\testing\testForwardComposer.java
C:\Users\birkeh\ownCloud\dev\IntelliJ\zk\multimedia\src\main\java\at\windesign\application\serie\serieListSelectorComposer.java
C:\Users\birkeh\ownCloud\dev\IntelliJ\zk\multimedia\src\main\java\at\windesign\application\serie\serieListForwardComposer.java
C:\Users\birkeh\ownCloud\dev\IntelliJ\zk\multimedia\src\main\java\at\windesign\application\serie\serieDetailsForwardComposer.java
C:\Users\birkeh\ownCloud\dev\IntelliJ\zk\multimedia\src\main\java\at\windesign\application\serie\seasonData.java
-C:\Users\birkeh\ownCloud\dev\IntelliJ\zk\multimedia\src\main\java\at\windesign\application\serie\episodeData.java
+C:\Users\birkeh\ownCloud\dev\IntelliJ\zk\multimedia\src\main\java\at\windesign\application\serie\serieUtils.java
C:\Users\birkeh\ownCloud\dev\IntelliJ\zk\multimedia\src\main\java\at\windesign\application\main\indexForwardComposer.java
-C:\Users\birkeh\ownCloud\dev\IntelliJ\zk\multimedia\src\main\java\at\windesign\application\serie\serieRenderer.java
diff --git a/target/multimedia-1.0-SNAPSHOT-FL-2020-11-24.zip b/target/multimedia-1.0-SNAPSHOT-FL-2020-11-24.zip
deleted file mode 100644
index e0e1ea0..0000000
Binary files a/target/multimedia-1.0-SNAPSHOT-FL-2020-11-24.zip and /dev/null differ
diff --git a/target/multimedia-1.0-SNAPSHOT-FL-2020-11-25.zip b/target/multimedia-1.0-SNAPSHOT-FL-2020-11-25.zip
deleted file mode 100644
index 3e680ab..0000000
Binary files a/target/multimedia-1.0-SNAPSHOT-FL-2020-11-25.zip and /dev/null differ
diff --git a/target/multimedia.war b/target/multimedia.war
index b297456..e05200d 100644
Binary files a/target/multimedia.war and b/target/multimedia.war differ
diff --git a/target/multimedia/WEB-INF/classes/at/windesign/application/serie/serieData.class b/target/multimedia/WEB-INF/classes/at/windesign/application/serie/serieData.class
index 43a6373..22afa79 100644
Binary files a/target/multimedia/WEB-INF/classes/at/windesign/application/serie/serieData.class and b/target/multimedia/WEB-INF/classes/at/windesign/application/serie/serieData.class differ
diff --git a/target/multimedia/WEB-INF/classes/at/windesign/application/serie/serieDetailsSelectorComposer$1.class b/target/multimedia/WEB-INF/classes/at/windesign/application/serie/serieDetailsSelectorComposer$1.class
index b258aa1..3803881 100644
Binary files a/target/multimedia/WEB-INF/classes/at/windesign/application/serie/serieDetailsSelectorComposer$1.class and b/target/multimedia/WEB-INF/classes/at/windesign/application/serie/serieDetailsSelectorComposer$1.class differ
diff --git a/target/multimedia/WEB-INF/classes/at/windesign/application/serie/serieDetailsSelectorComposer.class b/target/multimedia/WEB-INF/classes/at/windesign/application/serie/serieDetailsSelectorComposer.class
index 8fb19da..8898132 100644
Binary files a/target/multimedia/WEB-INF/classes/at/windesign/application/serie/serieDetailsSelectorComposer.class and b/target/multimedia/WEB-INF/classes/at/windesign/application/serie/serieDetailsSelectorComposer.class differ
diff --git a/target/multimedia/WEB-INF/classes/at/windesign/application/serie/serieListForwardComposer.class b/target/multimedia/WEB-INF/classes/at/windesign/application/serie/serieListForwardComposer.class
index c2ac269..55161d8 100644
Binary files a/target/multimedia/WEB-INF/classes/at/windesign/application/serie/serieListForwardComposer.class and b/target/multimedia/WEB-INF/classes/at/windesign/application/serie/serieListForwardComposer.class differ
diff --git a/target/multimedia/WEB-INF/classes/at/windesign/application/serie/serieListSelectorComposer.class b/target/multimedia/WEB-INF/classes/at/windesign/application/serie/serieListSelectorComposer.class
index 6dcc128..ee36e2b 100644
Binary files a/target/multimedia/WEB-INF/classes/at/windesign/application/serie/serieListSelectorComposer.class and b/target/multimedia/WEB-INF/classes/at/windesign/application/serie/serieListSelectorComposer.class differ
diff --git a/target/multimedia/WEB-INF/classes/at/windesign/application/serie/serieUpdateForwardComposer.class b/target/multimedia/WEB-INF/classes/at/windesign/application/serie/serieUpdateForwardComposer.class
new file mode 100644
index 0000000..d587971
Binary files /dev/null and b/target/multimedia/WEB-INF/classes/at/windesign/application/serie/serieUpdateForwardComposer.class differ
diff --git a/target/multimedia/WEB-INF/classes/at/windesign/application/serie/serieUpdateSelectorComposer.class b/target/multimedia/WEB-INF/classes/at/windesign/application/serie/serieUpdateSelectorComposer.class
new file mode 100644
index 0000000..285215c
Binary files /dev/null and b/target/multimedia/WEB-INF/classes/at/windesign/application/serie/serieUpdateSelectorComposer.class differ
diff --git a/target/multimedia/WEB-INF/classes/at/windesign/application/serie/serieUtils.class b/target/multimedia/WEB-INF/classes/at/windesign/application/serie/serieUtils.class
new file mode 100644
index 0000000..c5848d4
Binary files /dev/null and b/target/multimedia/WEB-INF/classes/at/windesign/application/serie/serieUtils.class differ
diff --git a/target/multimedia/WEB-INF/lib/animal-sniffer-annotations-1.17.jar b/target/multimedia/WEB-INF/lib/animal-sniffer-annotations-1.17.jar
deleted file mode 100644
index 6ec7a60..0000000
Binary files a/target/multimedia/WEB-INF/lib/animal-sniffer-annotations-1.17.jar and /dev/null differ
diff --git a/target/multimedia/WEB-INF/lib/checker-qual-2.8.1.jar b/target/multimedia/WEB-INF/lib/checker-qual-2.8.1.jar
deleted file mode 100644
index 09269be..0000000
Binary files a/target/multimedia/WEB-INF/lib/checker-qual-2.8.1.jar and /dev/null differ
diff --git a/target/multimedia/WEB-INF/lib/commons-codec-1.10.jar b/target/multimedia/WEB-INF/lib/commons-codec-1.10.jar
deleted file mode 100644
index 1d7417c..0000000
Binary files a/target/multimedia/WEB-INF/lib/commons-codec-1.10.jar and /dev/null differ
diff --git a/target/multimedia/WEB-INF/lib/commons-codec-1.7.jar b/target/multimedia/WEB-INF/lib/commons-codec-1.7.jar
deleted file mode 100644
index efa7f72..0000000
Binary files a/target/multimedia/WEB-INF/lib/commons-codec-1.7.jar and /dev/null differ
diff --git a/target/multimedia/WEB-INF/lib/commons-lang3-3.1.jar b/target/multimedia/WEB-INF/lib/commons-lang3-3.1.jar
deleted file mode 100644
index a85e539..0000000
Binary files a/target/multimedia/WEB-INF/lib/commons-lang3-3.1.jar and /dev/null differ
diff --git a/target/multimedia/WEB-INF/lib/commons-lang3-3.3.2.jar b/target/multimedia/WEB-INF/lib/commons-lang3-3.3.2.jar
deleted file mode 100644
index 2ce08ae..0000000
Binary files a/target/multimedia/WEB-INF/lib/commons-lang3-3.3.2.jar and /dev/null differ
diff --git a/target/multimedia/WEB-INF/lib/error_prone_annotations-2.3.2.jar b/target/multimedia/WEB-INF/lib/error_prone_annotations-2.3.2.jar
deleted file mode 100644
index bc2584d..0000000
Binary files a/target/multimedia/WEB-INF/lib/error_prone_annotations-2.3.2.jar and /dev/null differ
diff --git a/target/multimedia/WEB-INF/lib/failureaccess-1.0.1.jar b/target/multimedia/WEB-INF/lib/failureaccess-1.0.1.jar
deleted file mode 100644
index 9b56dc7..0000000
Binary files a/target/multimedia/WEB-INF/lib/failureaccess-1.0.1.jar and /dev/null differ
diff --git a/target/multimedia/WEB-INF/lib/guava-28.0-jre.jar b/target/multimedia/WEB-INF/lib/guava-28.0-jre.jar
deleted file mode 100644
index f254aae..0000000
Binary files a/target/multimedia/WEB-INF/lib/guava-28.0-jre.jar and /dev/null differ
diff --git a/target/multimedia/WEB-INF/lib/j2objc-annotations-1.3.jar b/target/multimedia/WEB-INF/lib/j2objc-annotations-1.3.jar
deleted file mode 100644
index a429c72..0000000
Binary files a/target/multimedia/WEB-INF/lib/j2objc-annotations-1.3.jar and /dev/null differ
diff --git a/target/multimedia/WEB-INF/lib/jackson-annotations-2.1.4.jar b/target/multimedia/WEB-INF/lib/jackson-annotations-2.1.4.jar
deleted file mode 100644
index 143edf4..0000000
Binary files a/target/multimedia/WEB-INF/lib/jackson-annotations-2.1.4.jar and /dev/null differ
diff --git a/target/multimedia/WEB-INF/lib/jackson-annotations-2.10.0.jar b/target/multimedia/WEB-INF/lib/jackson-annotations-2.10.0.jar
deleted file mode 100644
index f9b10d1..0000000
Binary files a/target/multimedia/WEB-INF/lib/jackson-annotations-2.10.0.jar and /dev/null differ
diff --git a/target/multimedia/WEB-INF/lib/jackson-core-2.1.4.jar b/target/multimedia/WEB-INF/lib/jackson-core-2.1.4.jar
deleted file mode 100644
index 0f14468..0000000
Binary files a/target/multimedia/WEB-INF/lib/jackson-core-2.1.4.jar and /dev/null differ
diff --git a/target/multimedia/WEB-INF/lib/jackson-core-2.10.0.jar b/target/multimedia/WEB-INF/lib/jackson-core-2.10.0.jar
deleted file mode 100644
index 7e33c11..0000000
Binary files a/target/multimedia/WEB-INF/lib/jackson-core-2.10.0.jar and /dev/null differ
diff --git a/target/multimedia/WEB-INF/lib/jackson-databind-2.1.4.jar b/target/multimedia/WEB-INF/lib/jackson-databind-2.1.4.jar
deleted file mode 100644
index ce125d1..0000000
Binary files a/target/multimedia/WEB-INF/lib/jackson-databind-2.1.4.jar and /dev/null differ
diff --git a/target/multimedia/WEB-INF/lib/jackson-databind-2.10.0.jar b/target/multimedia/WEB-INF/lib/jackson-databind-2.10.0.jar
deleted file mode 100644
index ed18f83..0000000
Binary files a/target/multimedia/WEB-INF/lib/jackson-databind-2.10.0.jar and /dev/null differ
diff --git a/target/multimedia/WEB-INF/lib/jcl-over-slf4j-1.7.7.jar b/target/multimedia/WEB-INF/lib/jcl-over-slf4j-1.7.7.jar
deleted file mode 100644
index ed8d4dd..0000000
Binary files a/target/multimedia/WEB-INF/lib/jcl-over-slf4j-1.7.7.jar and /dev/null differ
diff --git a/target/multimedia/WEB-INF/lib/jsr305-3.0.2.jar b/target/multimedia/WEB-INF/lib/jsr305-3.0.2.jar
deleted file mode 100644
index 59222d9..0000000
Binary files a/target/multimedia/WEB-INF/lib/jsr305-3.0.2.jar and /dev/null differ
diff --git a/target/multimedia/WEB-INF/lib/listenablefuture-9999.0-empty-to-avoid-conflict-with-guava.jar b/target/multimedia/WEB-INF/lib/listenablefuture-9999.0-empty-to-avoid-conflict-with-guava.jar
deleted file mode 100644
index 45832c0..0000000
Binary files a/target/multimedia/WEB-INF/lib/listenablefuture-9999.0-empty-to-avoid-conflict-with-guava.jar and /dev/null differ
diff --git a/target/multimedia/WEB-INF/lib/slf4j-api-1.7.3.jar b/target/multimedia/WEB-INF/lib/slf4j-api-1.7.3.jar
deleted file mode 100644
index 6bb83be..0000000
Binary files a/target/multimedia/WEB-INF/lib/slf4j-api-1.7.3.jar and /dev/null differ
diff --git a/target/multimedia/WEB-INF/lib/slf4j-api-1.7.7.jar b/target/multimedia/WEB-INF/lib/slf4j-api-1.7.7.jar
deleted file mode 100644
index bebabd9..0000000
Binary files a/target/multimedia/WEB-INF/lib/slf4j-api-1.7.7.jar and /dev/null differ
diff --git a/target/multimedia/WEB-INF/lib/themoviedbapi-1.10.jar b/target/multimedia/WEB-INF/lib/themoviedbapi-1.10.jar
deleted file mode 100644
index b013c52..0000000
Binary files a/target/multimedia/WEB-INF/lib/themoviedbapi-1.10.jar and /dev/null differ
diff --git a/target/multimedia/WEB-INF/lib/themoviedbapi-3.4.jar b/target/multimedia/WEB-INF/lib/themoviedbapi-3.4.jar
deleted file mode 100644
index c921b3d..0000000
Binary files a/target/multimedia/WEB-INF/lib/themoviedbapi-3.4.jar and /dev/null differ
diff --git a/target/multimedia/serie/centerSerie.zul b/target/multimedia/serie/centerSerie.zul
index 8acd650..045e653 100644
--- a/target/multimedia/serie/centerSerie.zul
+++ b/target/multimedia/serie/centerSerie.zul
@@ -2,6 +2,18 @@
vflex="true"
apply="at.windesign.application.serie.serieListForwardComposer, at.windesign.application.serie.serieListSelectorComposer"
>
+
+
+
+
-
+
\ No newline at end of file
diff --git a/target/multimedia/serie/updateSerie.zul b/target/multimedia/serie/updateSerie.zul
new file mode 100644
index 0000000..5f9b234
--- /dev/null
+++ b/target/multimedia/serie/updateSerie.zul
@@ -0,0 +1,14 @@
+
+
+
+
+
+
\ No newline at end of file