initial commit

This commit is contained in:
2020-11-06 14:01:53 +01:00
parent 52b86ef5c2
commit 0e2d2532c9
10 changed files with 272 additions and 217 deletions
@@ -2,18 +2,19 @@ package at.windesign.application.serie;
import java.sql.Date;
import java.util.SortedMap;
import java.util.TreeMap;
public class seasonData
{
private int m_seasonID;
private int m_season_ID;
private String m_season_ID;
private Date m_seasonAirDate;
private String m_seasonName;
private String m_seasonOverview;
private String m_seasonPosterPath;
private int m_seasonNumber;
private serieData m_serie;
private SortedMap<Integer, episodeData> m_episodes;
private SortedMap<Integer, episodeData> m_episodes = new TreeMap<>();
public seasonData()
{
@@ -29,12 +30,12 @@ public class seasonData
m_seasonID = seasonID;
}
public int getSeason_ID()
public String getSeason_ID()
{
return m_season_ID;
}
public void setSeason_ID(int season_ID)
public void setSeason_ID(String season_ID)
{
m_season_ID = season_ID;
}
@@ -3,6 +3,7 @@ package at.windesign.application.serie;
import java.sql.*;
import java.util.Objects;
import java.util.SortedMap;
import java.util.TreeMap;
class serieData
{
@@ -19,7 +20,7 @@ class serieData
private int m_seriesNrSeasons;
private String m_seriesOriginCountries;
private String m_seriesOriginalLanguage;
private int m_seriesPopularity;
private double m_seriesPopularity;
private String m_seriesPoster;
private String m_seriesProductionCompanies;
private String m_seriesType;
@@ -40,12 +41,8 @@ class serieData
private String m_seriesLocalPath;
private String m_seriesResolution;
private boolean m_seriesCliffhanger;
private SortedMap<Integer, seasonData> m_seasons;
private SortedMap<Integer, seasonData> m_seasons = new TreeMap<>();
private SortedMap<Integer, Integer> m_episodeState;
private int m_minSeason;
private int m_maxSeason;
private int m_stateInit;
private int m_stateProg;
private int m_stateDone;
@@ -54,6 +51,9 @@ class serieData
public serieData()
{
m_stateInit = 0;
m_stateProg = 0;
m_stateDone = 0;
}
public int getSeriesID()
@@ -186,12 +186,12 @@ class serieData
m_seriesOriginalLanguage = seriesOriginalLanguage;
}
public int getSeriesPopularity()
public double getSeriesPopularity()
{
return m_seriesPopularity;
}
public void setSeriesPopularity(int seriesPopularity)
public void setSeriesPopularity(double seriesPopularity)
{
m_seriesPopularity = seriesPopularity;
}
@@ -411,39 +411,14 @@ class serieData
m_seasons.put(season, data);
}
public SortedMap<Integer, Integer> getEpisodeState()
{
return m_episodeState;
}
public void setEpisodeState(SortedMap<Integer, Integer> episodeState)
{
m_episodeState = episodeState;
}
public void setEpisodeState(int season, int episode, int state)
{
m_episodeState.put(season << 8 + episode, state);
}
public int getMinSeason()
{
return m_minSeason;
}
public void setMinSeason(int minSeason)
{
m_minSeason = minSeason;
return m_seasons.get(m_seasons.firstKey()).getSeasonNumber();
}
public int getMaxSeason()
{
return m_maxSeason;
}
public void setMaxSeason(int maxSeason)
{
m_maxSeason = maxSeason;
return m_seasons.get(m_seasons.lastKey()).getSeasonNumber();
}
public int getStateInit()
@@ -456,6 +431,11 @@ class serieData
m_stateInit = stateInit;
}
public void addStateInit()
{
m_stateInit++;
}
public int getStateProg()
{
return m_stateProg;
@@ -466,6 +446,11 @@ class serieData
m_stateProg = stateProg;
}
public void addStateProd()
{
m_stateProg++;
}
public int getStateDone()
{
return m_stateDone;
@@ -476,6 +461,11 @@ class serieData
m_stateDone = stateDone;
}
public void addStateDone()
{
m_stateDone++;
}
public String getSeriesStyle()
{
String style = "";
@@ -521,42 +511,42 @@ class serieData
{
Connection conn = ds.getConnection();
PreparedStatement ps = conn.prepareStatement("INSERT INTO serie (" +
"seriesID, " +
"seriesName, " +
"originalName, " +
"backdropPath, " +
"createdBy, " +
"homepage, " +
"lastAired, " +
"languages, " +
"networks, " +
"nrEpisodes, " +
"nrSeasons, " +
"originCountries, " +
"originalLanguage, " +
"popularity, " +
"posterPath, " +
"productionCompanies, " +
"type, " +
"voteAverage, " +
"voteCount, " +
"overview, " +
"firstAired, " +
"cast, " +
"crew, " +
"genre, " +
"imdbid, " +
"freebasemid, " +
"freebaseid, " +
"tvdbid, " +
"tvrageid, " +
"status, " +
"download, " +
"localPath, " +
"resolution, " +
"cliffhanger" +
") VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?);"
);
"seriesID, " +
"seriesName, " +
"originalName, " +
"backdropPath, " +
"createdBy, " +
"homepage, " +
"lastAired, " +
"languages, " +
"networks, " +
"nrEpisodes, " +
"nrSeasons, " +
"originCountries, " +
"originalLanguage, " +
"popularity, " +
"posterPath, " +
"productionCompanies, " +
"type, " +
"voteAverage, " +
"voteCount, " +
"overview, " +
"firstAired, " +
"cast, " +
"crew, " +
"genre, " +
"imdbid, " +
"freebasemid, " +
"freebaseid, " +
"tvdbid, " +
"tvrageid, " +
"status, " +
"download, " +
"localPath, " +
"resolution, " +
"cliffhanger" +
") VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?);"
);
ps.setInt(1, m_seriesID);
ps.setString(2, m_seriesName);
ps.setString(3, m_seriesOriginalName);
@@ -570,7 +560,7 @@ class serieData
ps.setInt(11, m_seriesNrSeasons);
ps.setString(12, m_seriesOriginCountries);
ps.setString(13, m_seriesOriginalLanguage);
ps.setInt(14, m_seriesPopularity);
ps.setDouble(14, m_seriesPopularity);
ps.setString(15, m_seriesPoster);
ps.setString(16, m_seriesProductionCompanies);
ps.setString(17, m_seriesType);
@@ -130,7 +130,7 @@ public class serieDetailsForwardComposer extends GenericForwardComposer<Componen
if(i < 1)
continue;
addSeasonPanel(i, m_serie.getEpisodeState());
//addSeasonPanel(i, m_serie.getEpisodeState());
}
}
@@ -107,7 +107,7 @@ public class serieDetailsSelectorComposer extends SelectorComposer<Component>
int episode = Integer.parseInt(id.substring(id.indexOf("_") + 1));
int state = group.getSelectedIndex()+1;
serie.setEpisodeState(season, episode, state);
//serie.setEpisodeState(season, episode, state);
}
}
}
@@ -8,9 +8,7 @@ import org.zkoss.zul.*;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.SortedMap;
import java.util.TimeZone;
import java.util.TreeMap;
import java.util.*;
public class serieListForwardComposer extends GenericForwardComposer
{
@@ -28,6 +26,7 @@ public class serieListForwardComposer extends GenericForwardComposer
{
super.doAfterCompose(comp);
List<serieData> serieList = new ArrayList<>();
int minSeason = 0;
int maxSeason = 0;
SortedMap<Integer, Integer> maxEpisode = new TreeMap<>();
@@ -121,11 +120,25 @@ public class serieListForwardComposer extends GenericForwardComposer
" 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," +
" episode.state episodeState," +
" ( SELECT MIN(s.seasonNumber) FROM season s WHERE s.seriesID = serie.seriesID ) minSeason," +
" ( SELECT MAX(s.seasonNumber) FROM season s WHERE s.seriesID = serie.seriesID ) maxSeason" +
" 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" +
@@ -138,110 +151,98 @@ public class serieListForwardComposer extends GenericForwardComposer
);
// fetch all events from database
serieData serie = new serieData();
int oldID = -1;
int stateInit = 0;
int stateProg = 0;
int stateDone = 0;
SortedMap<Integer, Integer> episodeState = new TreeMap<>();
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())
{
if(rs.getInt("seriesID") != oldID)
{
if(oldID != -1)
{
serie.setEpisodeState(episodeState);
serie.setStateInit(stateInit);
serie.setStateProg(stateProg);
serie.setStateDone(stateDone);
int serieID = rs.getInt("seriesID");
int seasonID = rs.getInt("seasonID");
int episodeID = rs.getInt("episodeID");
seriesListModel.add(serie);
episodeState = new TreeMap<>();
stateInit = 0;
stateProg = 0;
stateDone = 0;
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;
}
oldID = rs.getInt("seriesID");
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.getInt("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"));
serie.setMinSeason(rs.getInt("minSeason"));
serie.setMaxSeason(rs.getInt("maxSeason"));
if(season.getSeasonNumber() != 0)
{
if(maxEpisode.get(season.getSeasonNumber()) < episode.getEpisodeNumber())
maxEpisode.put(season.getSeasonNumber(), episode.getEpisodeNumber());
}
}
episodeState.put((rs.getInt("seasonNumber") << 8) + rs.getInt("episodeNumber"), rs.getInt("episodeState"));
switch(rs.getInt("episodeState"))
{
case 1:
stateInit++;
break;
case 2:
stateProg++;
break;
case 3:
stateDone++;
break;
}
int _seasonNumber = rs.getInt("seasonNumber");
int _episodeNumber = rs.getInt("episodeNumber");
season.setSerie(serie);
episode.setSerie(serie);
episode.setSeason(season);
if(_seasonNumber != 0)
{
if(maxEpisode.get(_seasonNumber) < _episodeNumber)
maxEpisode.put(_seasonNumber, _episodeNumber);
}
}
if(serie.getSeriesID() != -1)
{
serie.setEpisodeState(episodeState);
serie.setStateInit(stateInit);
serie.setStateProg(stateProg);
serie.setStateDone(stateDone);
seriesListModel.add(serie);
}
for(int i = minSeason; i <= maxSeason; i++)
{
int size = maxEpisode.get(i) * stateWidth;
Listheader header = listHeader.get(i);
header.setWidth(size + 40 + "px");
serie.setSeason(season.getSeasonNumber(), season);
season.setEpisode(episode.getEpisodeNumber(), episode);
}
}
catch(SQLException e)
@@ -252,5 +253,92 @@ public class serieListForwardComposer extends GenericForwardComposer
{
ds.close();
}
for(serieData serie : serieList)
seriesListModel.add(serie);
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;
}
}
@@ -32,32 +32,19 @@ public class serieRenderer implements ListitemRenderer
for(int s = 1; s <= data.getMaxSeason(); s++)
{
Listcell imageCell = new Listcell();
imageCell.setImageContent(Images.encode("bla.png", getStateImage(s, data.getEpisodeState())));
imageCell.setImageContent(Images.encode("bla.png", getStateImage(data.getSeasons().get(s))));
imageCell.setParent(item);
imageCell.setTooltiptext(getStateText(s, data.getEpisodeState()));
imageCell.setTooltiptext(getStateText(data.getSeasons().get(s)));
}
item.setValue(data);
}
private BufferedImage getStateImage(Integer curSeason, SortedMap<Integer, Integer> state)
private BufferedImage getStateImage(seasonData s)
{
int season = -1;
int episode = -1;
SortedMap<Integer, Integer> seasonState = new TreeMap<>();
SortedMap<Integer, episodeData> episodes = s.getEpisodes();
for(int key : state.keySet())
{
season = key >> 8;
episode = key & 0xFF;
if(season == curSeason)
seasonState.put(episode, state.get(key));
else if(season > curSeason)
break;
}
if(seasonState.size() == 0)
if(episodes.size() == 0)
{
BufferedImage image = new BufferedImage(1, 1, BufferedImage.TYPE_INT_RGB);
Graphics2D g2d = image.createGraphics();
@@ -68,7 +55,7 @@ public class serieRenderer implements ListitemRenderer
return image;
}
BufferedImage image = new BufferedImage(stateWidth * seasonState.lastKey(), stateHeight, BufferedImage.TYPE_INT_RGB);
BufferedImage image = new BufferedImage(stateWidth * episodes.lastKey(), stateHeight, BufferedImage.TYPE_INT_RGB);
Graphics2D g2d = image.createGraphics();
Color colGrey = new Color(192, 192, 192);
Color colBlue = new Color(0, 0, 192);
@@ -77,11 +64,11 @@ public class serieRenderer implements ListitemRenderer
Color col = colBlack;
g2d.setColor(colBlack);
g2d.fillRect(0, 0, stateWidth * seasonState.lastKey(), stateHeight);
g2d.fillRect(0, 0, stateWidth * episodes.lastKey(), stateHeight);
for(Integer key : seasonState.keySet())
for(Integer key : episodes.keySet())
{
switch(seasonState.get(key))
switch(episodes.get(key).getEpisodeState())
{
case 0:
col = colBlack;
@@ -104,33 +91,20 @@ public class serieRenderer implements ListitemRenderer
return image;
}
private String getStateText(Integer curSeason, SortedMap<Integer, Integer> state)
private String getStateText(seasonData s)
{
int season = -1;
int episode = -1;
SortedMap<Integer, Integer> seasonState = new TreeMap<>();
SortedMap<Integer, episodeData> episodes = s.getEpisodes();
for(int key : state.keySet())
{
season = key >> 8;
episode = key & 0xFF;
if(season == curSeason)
seasonState.put(episode, state.get(key));
else if(season > curSeason)
break;
}
if(seasonState.size() == 0)
if(episodes.size() == 0)
return "";
String stateInit = "";
String stateProg = "";
String stateDone = "";
for(Integer key : seasonState.keySet())
for(Integer key : episodes.keySet())
{
switch(seasonState.get(key))
switch(episodes.get(key).getEpisodeState())
{
case 0:
break;
@@ -1,4 +1,6 @@
at\windesign\application\serie\serieDetailsSelectorComposer.class
at\windesign\application\serie\seasonData.class
at\windesign\application\serie\serieDetailsForwardComposer.class
at\windesign\application\serie\episodeData.class
at\windesign\application\serie\serieDetailsSelectorComposer$1.class
at\windesign\application\main\indexForwardComposer.class