List of usage examples for org.hibernate.type LongType INSTANCE
LongType INSTANCE
To view the source code for org.hibernate.type LongType INSTANCE.
Click Source Link
From source file:org.unitime.timetable.server.solver.TimetableGridSolverHelper.java
License:Apache License
public static void fixInstructors(TimetableGridModel model, TimetableGridContext context) { Map<Long, List<TimetableGridCell>> id2cells = new HashMap<Long, List<TimetableGridCell>>(); for (TimetableGridCell cell : model.getCells()) { if (cell.getType() != Type.Class || cell.getId() == null || cell.getId() < 0 || !cell.isCommitted()) continue; List<TimetableGridCell> cells = id2cells.get(cell.getId()); if (cells == null) { cells = new ArrayList<TimetableGridCell>(); id2cells.put(cell.getId(), cells); }/*w w w . j ava 2s . c o m*/ cell.resetInstructors(); cells.add(cell); } if (id2cells.isEmpty()) return; String query = null; if (ApplicationProperty.TimetableGridUseClassInstructors.isTrue()) { query = "select ci.classInstructing.uniqueId, ci.instructor from ClassInstructor ci " + "where ci.classInstructing.uniqueId in :classIds"; if (ApplicationProperty.TimetableGridUseClassInstructorsCheckClassDisplayInstructors.isTrue()) query += " and ci.classInstructing.displayInstructor = true"; if (ApplicationProperty.TimetableGridUseClassInstructorsCheckLead.isTrue()) query += " and ci.lead = true"; } else { query = "select a.clazz.uniqueId, i from Assignment a inner join a.instructors i " + "where a.solution.commited = true and a.clazz.uniqueId in :classIds"; } if (id2cells.size() <= 1000) { for (Object[] o : (List<Object[]>) Class_DAO.getInstance().getSession().createQuery(query) .setParameterList("classIds", id2cells.keySet(), LongType.INSTANCE).setCacheable(true).list()) { Long classId = (Long) o[0]; DepartmentalInstructor instructor = (DepartmentalInstructor) o[1]; for (TimetableGridCell cell : id2cells.get(classId)) { cell.addInstructor(instructor.getName(context.getInstructorNameFormat())); } } } else { List<Long> ids = new ArrayList<Long>(1000); for (Long id : id2cells.keySet()) { ids.add(id); if (ids.size() == 1000) { for (Object[] o : (List<Object[]>) Class_DAO.getInstance().getSession().createQuery(query) .setParameterList("classIds", ids, LongType.INSTANCE).setCacheable(true).list()) { Long classId = (Long) o[0]; DepartmentalInstructor instructor = (DepartmentalInstructor) o[1]; for (TimetableGridCell cell : id2cells.get(classId)) { cell.addInstructor(instructor.getName(context.getInstructorNameFormat())); } } ids.clear(); } } if (!ids.isEmpty()) { for (Object[] o : (List<Object[]>) Class_DAO.getInstance().getSession().createQuery(query) .setParameterList("classIds", ids, LongType.INSTANCE).setCacheable(true).list()) { Long classId = (Long) o[0]; DepartmentalInstructor instructor = (DepartmentalInstructor) o[1]; for (TimetableGridCell cell : id2cells.get(classId)) { cell.addInstructor(instructor.getName(context.getInstructorNameFormat())); } } } } }
From source file:org.yamj.core.api.model.DataItemTools.java
License:Open Source License
/** * Add scalars for the data items// w w w .j a v a2 s . com * * @param sqlScalars * @param dataItems */ public static void addDataItemScalars(SqlScalars sqlScalars, List<DataItem> dataItems) { for (DataItem item : dataItems) { if (item.isNotColumn()) { // This is not a specific scalar and is not needed continue; } if (item == DataItem.TOP_RANK) { sqlScalars.addScalar("topRank", LongType.INSTANCE); continue; } // This is the default approach sqlScalars.addScalar(item.toString().toLowerCase(), StringType.INSTANCE); } }
From source file:org.yamj.core.database.dao.ApiDao.java
License:Open Source License
/** * Generate the query and load the results into the wrapper * * @param wrapper/*from w w w . j av a 2 s.c om*/ */ @SuppressWarnings({ "unchecked", "rawtypes" }) public void getVideoList(ApiWrapperList<ApiVideoDTO> wrapper) { OptionsIndexVideo options = (OptionsIndexVideo) wrapper.getOptions(); IndexParams params = new IndexParams(options); SqlScalars sqlScalars = new SqlScalars(generateSqlForVideoList(params)); sqlScalars.addScalar(ID, LongType.INSTANCE); sqlScalars.addScalar("videoTypeString", StringType.INSTANCE); sqlScalars.addScalar(TITLE, StringType.INSTANCE); sqlScalars.addScalar(ORIGINAL_TITLE, StringType.INSTANCE); sqlScalars.addScalar(VIDEO_YEAR, IntegerType.INSTANCE); sqlScalars.addScalar(SERIES_ID, LongType.INSTANCE); sqlScalars.addScalar(SEASON_ID, LongType.INSTANCE); sqlScalars.addScalar(SEASON, LongType.INSTANCE); sqlScalars.addScalar(WATCHED, BooleanType.INSTANCE); if (params.includeNewest() || params.excludeNewest()) { sqlScalars.addScalar("newest", TimestampType.INSTANCE); } // add Scalars for additional data item columns DataItemTools.addDataItemScalars(sqlScalars, params.getDataItems()); // add additional parameters params.addScalarParameters(sqlScalars); DataItemTools.addDataItemScalars(sqlScalars, params.getDataItems()); List<ApiVideoDTO> queryResults = executeQueryWithTransform(ApiVideoDTO.class, sqlScalars, wrapper); wrapper.setResults(queryResults); if (CollectionUtils.isNotEmpty(queryResults)) { if (params.hasDataItem(DataItem.GENRE)) { LOG.trace("Adding genres to index videos"); for (ApiVideoDTO video : queryResults) { video.setGenres(this.getGenresForId(video.getVideoType(), video.getId())); } } if (params.hasDataItem(DataItem.STUDIO)) { LOG.trace("Adding studios to index videos"); for (ApiVideoDTO video : queryResults) { video.setStudios(this.getStudiosForId(video.getVideoType(), video.getId())); } } if (params.hasDataItem(DataItem.COUNTRY)) { LOG.trace("Adding countries to index videos"); for (ApiVideoDTO video : queryResults) { video.setCountries(this.getCountriesForId(video.getVideoType(), video.getId())); } } if (params.hasDataItem(DataItem.CERTIFICATION)) { LOG.trace("Adding certifications to index videos"); for (ApiVideoDTO video : queryResults) { video.setCertifications(this.getCertificationsForId(video.getVideoType(), video.getId())); } } if (params.hasDataItem(DataItem.RATING)) { LOG.trace("Adding ratings to index videos"); for (ApiVideoDTO video : queryResults) { video.setRatings(this.getRatingsForId(video.getVideoType(), video.getId())); } } if (params.hasDataItem(DataItem.AWARD)) { LOG.trace("Adding awards to index videos"); for (ApiVideoDTO video : queryResults) { video.setAwards(this.getAwardsForId(video.getVideoType(), video.getId())); } } if (params.hasDataItem(DataItem.EXTERNALID)) { LOG.trace("Adding external IDs to index videos"); for (ApiVideoDTO video : queryResults) { video.setExternalIds(this.getExternalIdsForId(video.getVideoType(), video.getId())); } } if (params.hasDataItem(DataItem.BOXSET)) { LOG.trace("Adding boxed sets to index videos"); for (ApiVideoDTO video : queryResults) { video.setBoxedSets(this.getBoxedSetsForId(video.getVideoType(), video.getId())); } } if (params.hasDataItem(DataItem.TRAILER)) { LOG.trace("Adding trailers to index videos"); for (ApiVideoDTO video : queryResults) { video.setTrailers(this.getTrailersForId(video.getVideoType(), video.getId())); } } if (CollectionUtils.isNotEmpty(options.getArtworkTypes())) { // Create and populate the ID list Map<MetaDataType, List<Long>> ids = new EnumMap<>(MetaDataType.class); for (MetaDataType mdt : MetaDataType.values()) { ids.put(mdt, new ArrayList()); } Map<String, ApiVideoDTO> results = new HashMap<>(); for (ApiVideoDTO video : queryResults) { // Add the item to the map for further processing results.put(ApiArtworkDTO.makeKey(video), video); // Add the ID to the list ids.get(video.getVideoType()).add(video.getId()); } boolean foundArtworkIds = Boolean.FALSE; // Check to see that we have artwork to find // Remove any blank entries for (MetaDataType mdt : MetaDataType.values()) { if (CollectionUtils.isEmpty(ids.get(mdt))) { ids.remove(mdt); } else { // We've found an artwork, so we can continue foundArtworkIds = Boolean.TRUE; } } if (foundArtworkIds) { LOG.trace("Found artwork to process, IDs: {}", ids); addArtworks(ids, results, options); } else { LOG.trace("No artwork found to process, skipping."); } } else { LOG.trace("Artwork not required, skipping."); } } else { LOG.debug("No results found to process."); } }
From source file:org.yamj.core.database.dao.ApiDao.java
License:Open Source License
/** * Search the list of IDs for artwork and add to the artworkList. * * @param ids/* w ww . j a v a2 s . c o m*/ * @param artworkList * @param options */ private void addArtworks(Map<MetaDataType, List<Long>> ids, Map<String, ApiVideoDTO> artworkList, OptionsIndexVideo options) { Set<String> artworkRequired = options.getArtworkTypes(); LOG.debug("Artwork required: {}", artworkRequired); if (CollectionUtils.isNotEmpty(artworkRequired)) { SqlScalars sqlScalars = new SqlScalars(); boolean hasMovie = CollectionUtils.isNotEmpty(ids.get(MetaDataType.MOVIE)); boolean hasSeries = CollectionUtils.isNotEmpty(ids.get(MetaDataType.SERIES)); boolean hasSeason = CollectionUtils.isNotEmpty(ids.get(MetaDataType.SEASON)); boolean hasEpisode = CollectionUtils.isNotEmpty(ids.get(MetaDataType.EPISODE)); if (hasMovie) { sqlScalars.addToSql( "SELECT 'MOVIE' as sourceString, v.id as sourceId, a.id as artworkId, al.id as locatedId, ag.id as generatedId, a.artwork_type as artworkTypeString, ag.cache_dir as cacheDir, ag.cache_filename as cacheFilename"); sqlScalars.addToSql(" FROM videodata v, artwork a"); sqlScalars.addToSql(SQL_LEFT_JOIN_ARTWORK_LOCATED); sqlScalars.addToSql(SQL_LEFT_JOIN_ARTWORK_GENERATED); sqlScalars.addToSql(" WHERE v.id=a.videodata_id"); sqlScalars.addToSql(" AND v.episode<0"); sqlScalars.addToSql(" AND v.id IN (:movielist)"); sqlScalars.addToSql(SQL_ARTWORK_TYPE_IN_ARTWORKLIST); } if (hasMovie && hasSeries) { sqlScalars.addToSql(" UNION"); } if (hasSeries) { sqlScalars.addToSql( " SELECT 'SERIES' as sourceString, s.id as sourceId, a.id as artworkId, al.id as locatedId, ag.id as generatedId, a.artwork_type as artworkTypeString, ag.cache_dir as cacheDir, ag.cache_filename as cacheFilename"); sqlScalars.addToSql(" FROM series s, artwork a"); sqlScalars.addToSql(SQL_LEFT_JOIN_ARTWORK_LOCATED); sqlScalars.addToSql(SQL_LEFT_JOIN_ARTWORK_GENERATED); sqlScalars.addToSql(" WHERE s.id=a.series_id"); sqlScalars.addToSql(" AND s.id IN (:serieslist)"); sqlScalars.addToSql(SQL_ARTWORK_TYPE_IN_ARTWORKLIST); } if ((hasMovie || hasSeries) && hasSeason) { sqlScalars.addToSql(" UNION"); } if (hasSeason) { sqlScalars.addToSql( " SELECT 'SEASON' as sourceString, s.id as sourceId, a.id as artworkId, al.id as locatedId, ag.id as generatedId, a.artwork_type as artworkTypeString, ag.cache_dir as cacheDir, ag.cache_filename as cacheFilename"); sqlScalars.addToSql(" FROM season s, artwork a"); sqlScalars.addToSql(SQL_LEFT_JOIN_ARTWORK_LOCATED); sqlScalars.addToSql(SQL_LEFT_JOIN_ARTWORK_GENERATED); sqlScalars.addToSql(" WHERE s.id=a.season_id"); sqlScalars.addToSql(" AND s.id IN (:seasonlist)"); sqlScalars.addToSql(SQL_ARTWORK_TYPE_IN_ARTWORKLIST); } if ((hasMovie || hasSeries || hasSeason) && hasEpisode) { sqlScalars.addToSql(" UNION"); } if (hasEpisode) { sqlScalars.addToSql( "SELECT 'EPISODE' as sourceString, v.id as sourceId, a.id as artworkId, al.id as locatedId, ag.id as generatedId, a.artwork_type as artworkTypeString, ag.cache_dir as cacheDir, ag.cache_filename as cacheFilename"); sqlScalars.addToSql(" FROM videodata v, artwork a"); sqlScalars.addToSql(SQL_LEFT_JOIN_ARTWORK_LOCATED); sqlScalars.addToSql(SQL_LEFT_JOIN_ARTWORK_GENERATED); sqlScalars.addToSql(" WHERE v.id=a.videodata_id"); sqlScalars.addToSql(" AND v.episode>-1"); sqlScalars.addToSql(" AND v.id IN (:episodelist)"); sqlScalars.addToSql(SQL_ARTWORK_TYPE_IN_ARTWORKLIST); } sqlScalars.addScalar("sourceString", StringType.INSTANCE); sqlScalars.addScalar("sourceId", LongType.INSTANCE); sqlScalars.addScalar("artworkId", LongType.INSTANCE); sqlScalars.addScalar("locatedId", LongType.INSTANCE); sqlScalars.addScalar("generatedId", LongType.INSTANCE); sqlScalars.addScalar("artworkTypeString", StringType.INSTANCE); sqlScalars.addScalar(CACHE_DIR, StringType.INSTANCE); sqlScalars.addScalar(CACHE_FILENAME, StringType.INSTANCE); if (hasMovie) { sqlScalars.addParameter("movielist", ids.get(MetaDataType.MOVIE)); } if (hasSeries) { sqlScalars.addParameter("serieslist", ids.get(MetaDataType.SERIES)); } if (hasSeason) { sqlScalars.addParameter("seasonlist", ids.get(MetaDataType.SEASON)); } if (hasEpisode) { sqlScalars.addParameter("episodelist", ids.get(MetaDataType.EPISODE)); } sqlScalars.addParameter("artworklist", artworkRequired); List<ApiArtworkDTO> results = executeQueryWithTransform(ApiArtworkDTO.class, sqlScalars, null); LOG.trace("Found {} artworks", results.size()); for (ApiArtworkDTO ia : results) { LOG.trace(" {} = {}", ia.key(), ia.toString()); artworkList.get(ia.key()).addArtwork(ia); } } }
From source file:org.yamj.core.database.dao.ApiDao.java
License:Open Source License
public List<ApiFilmographyDTO> retrieveFilmography(long id, SqlScalars sqlScalars) { sqlScalars.addScalar(TYPE_STRING, StringType.INSTANCE); sqlScalars.addScalar("job", StringType.INSTANCE); sqlScalars.addScalar("role", StringType.INSTANCE); sqlScalars.addScalar(TITLE, StringType.INSTANCE); sqlScalars.addScalar(ORIGINAL_TITLE, StringType.INSTANCE); sqlScalars.addScalar(YEAR, IntegerType.INSTANCE); sqlScalars.addScalar("yearEnd", IntegerType.INSTANCE); sqlScalars.addScalar("releaseDate", DateType.INSTANCE); sqlScalars.addScalar("releaseCountryCode", StringType.INSTANCE); sqlScalars.addScalar("description", StringType.INSTANCE); sqlScalars.addScalar("videoDataId", LongType.INSTANCE); sqlScalars.addScalar(SERIES_ID, LongType.INSTANCE); sqlScalars.addParameter(ID, id);//from w w w.j a v a 2 s . co m return executeQueryWithTransform(ApiFilmographyDTO.class, sqlScalars, null); }
From source file:org.yamj.core.database.dao.ApiDao.java
License:Open Source License
/** * Generates a list of people in a video * * @param metaDataType/*from w ww . j a va 2 s.com*/ * @param options * @return */ private static SqlScalars generateSqlForVideoPerson(MetaDataType metaDataType, OptionsId options) { SqlScalars sqlScalars = new SqlScalars(); sqlScalars.addToSql("SELECT DISTINCT p.id,"); if (options.hasDataItem(DataItem.BIOGRAPHY)) { sqlScalars.addToSql("p.biography,"); sqlScalars.addScalar("biography", StringType.INSTANCE); } sqlScalars.addToSql("p.name,"); sqlScalars.addToSql("p.first_name as firstName,"); sqlScalars.addToSql("p.last_name as lastName,"); sqlScalars.addToSql("p.birth_day AS birthDay,"); sqlScalars.addToSql("p.birth_place AS birthPlace,"); sqlScalars.addToSql("p.birth_name AS birthName,"); sqlScalars.addToSql("p.death_day AS deathDay,"); sqlScalars.addToSql("p.death_place AS deathPlace,"); sqlScalars.addToSql("c.job as job,"); sqlScalars.addToSql("c.role as role "); sqlScalars.addToSql("FROM person p "); if (metaDataType == MetaDataType.SERIES) { sqlScalars.addToSql("JOIN cast_crew c ON c.person_id=p.id "); sqlScalars.addToSql("JOIN videodata vd ON vd.id=c.videodata_id "); sqlScalars.addToSql("JOIN season sea ON sea.id=vd.season_id and sea.series_id=:id "); } else if (metaDataType == MetaDataType.SEASON) { sqlScalars.addToSql("JOIN cast_crew c ON c.person_id=p.id "); sqlScalars.addToSql("JOIN videodata vd ON vd.id=c.videodata_id and vd.season_id=:id "); } else { // defaults to movie/episode sqlScalars.addToSql("JOIN cast_crew c ON c.person_id=p.id and c.videodata_id=:id "); } sqlScalars.addToSql(" WHERE p.id=c.person_id "); if (MapUtils.isNotEmpty(options.splitJobs())) { sqlScalars.addToSql("AND c.job IN (:jobs)"); sqlScalars.addParameter("jobs", options.getJobTypesAsSet()); } // Add the search string sqlScalars.addToSql(options.getSearchString(Boolean.FALSE)); // This will default to blank if there's no required sqlScalars.addToSql(options.getSortString()); // Add the ID sqlScalars.addParameter(ID, options.getId()); sqlScalars.addScalar(ID, LongType.INSTANCE); sqlScalars.addScalar("name", StringType.INSTANCE); sqlScalars.addScalar("firstName", StringType.INSTANCE); sqlScalars.addScalar("lastName", StringType.INSTANCE); sqlScalars.addScalar("birthDay", DateType.INSTANCE); sqlScalars.addScalar("birthPlace", StringType.INSTANCE); sqlScalars.addScalar("birthName", StringType.INSTANCE); sqlScalars.addScalar("deathDay", DateType.INSTANCE); sqlScalars.addScalar("deathPlace", StringType.INSTANCE); sqlScalars.addScalar("job", StringType.INSTANCE); sqlScalars.addScalar("role", StringType.INSTANCE); LOG.debug("SQL ForVideoPerson: {}", sqlScalars.getSql()); return sqlScalars; }
From source file:org.yamj.core.database.dao.ApiDao.java
License:Open Source License
/** * Generate the SQL for the information about a person * * @param options//from w w w. ja v a 2 s.c om * @return */ private static SqlScalars generateSqlForPerson(OptionsId options) { SqlScalars sqlScalars = new SqlScalars(); // Make sure to set the alias for the files for the Transformation into the class sqlScalars.addToSql("SELECT DISTINCT p.id,p.name,"); if (options.hasDataItem(DataItem.BIOGRAPHY)) { sqlScalars.addToSql(" p.biography, "); sqlScalars.addScalar("biography", StringType.INSTANCE); } sqlScalars.addToSql("p.first_name AS firstName, "); sqlScalars.addToSql("p.last_name AS lastName, "); sqlScalars.addToSql("p.birth_day AS birthDay, "); sqlScalars.addToSql("p.birth_place AS birthPlace, "); sqlScalars.addToSql("p.birth_name AS birthName, "); sqlScalars.addToSql("p.death_day AS deathDay, "); sqlScalars.addToSql("p.death_place AS deathPlace "); sqlScalars.addToSql("FROM person p"); if (options.getId() > 0L) { sqlScalars.addToSql(" WHERE id=:id"); sqlScalars.addParameter(ID, options.getId()); } else { if (MapUtils.isNotEmpty(options.splitJobs())) { sqlScalars.addToSql(", cast_crew c"); } sqlScalars.addToSql(SQL_WHERE_1_EQ_1); if (MapUtils.isNotEmpty(options.splitJobs())) { sqlScalars.addToSql(" AND p.id=c.person_id"); sqlScalars.addToSql(" AND c.job IN (:jobs)"); sqlScalars.addParameter("jobs", options.getJobTypesAsSet()); } // Add the search string sqlScalars.addToSql(options.getSearchString(Boolean.FALSE)); // This will default to blank if there's no sort required sqlScalars.addToSql(options.getSortString()); } sqlScalars.addScalar(ID, LongType.INSTANCE); sqlScalars.addScalar("name", StringType.INSTANCE); sqlScalars.addScalar("firstName", StringType.INSTANCE); sqlScalars.addScalar("lastName", StringType.INSTANCE); sqlScalars.addScalar("birthDay", DateType.INSTANCE); sqlScalars.addScalar("birthPlace", StringType.INSTANCE); sqlScalars.addScalar("birthName", StringType.INSTANCE); sqlScalars.addScalar("deathDay", DateType.INSTANCE); sqlScalars.addScalar("deathPlace", StringType.INSTANCE); return sqlScalars; }
From source file:org.yamj.core.database.dao.ApiDao.java
License:Open Source License
private static SqlScalars getSqlArtwork(OptionsIndexArtwork options) { SqlScalars sqlScalars = new SqlScalars(); sqlScalars.addToSql("SELECT a.id AS artworkId,"); sqlScalars.addToSql(" al.id AS locatedId,"); sqlScalars.addToSql(" ag.id AS generatedId,"); sqlScalars.addToSql(" a.season_id AS seasonId,"); sqlScalars.addToSql(" a.series_id AS seriesId,"); sqlScalars.addToSql(" a.videodata_id AS videodataId,"); sqlScalars.addToSql(" a.artwork_type AS artworkTypeString,"); sqlScalars.addToSql(" ag.cache_filename AS cacheFilename,"); sqlScalars.addToSql(" ag.cache_dir AS cacheDir"); sqlScalars.addToSql(" FROM artwork a"); sqlScalars.addToSql(SQL_LEFT_JOIN_ARTWORK_LOCATED); sqlScalars.addToSql(SQL_LEFT_JOIN_ARTWORK_GENERATED); sqlScalars.addToSql(SQL_WHERE_1_EQ_1); // Make appending restrictions easier if (options != null) { if (options.getId() > 0L) { sqlScalars.addToSql(" AND a.id=:id"); sqlScalars.addParameter(ID, options.getId()); }//from w ww.j ava 2s. c o m if (CollectionUtils.isNotEmpty(options.getArtwork())) { sqlScalars.addToSql(SQL_ARTWORK_TYPE_IN_ARTWORKLIST); sqlScalars.addParameter("artworklist", options.getArtwork()); } if (CollectionUtils.isNotEmpty(options.getVideo())) { StringBuilder sb = new StringBuilder("AND ("); boolean first = Boolean.TRUE; for (String type : options.getVideo()) { MetaDataType mdt = MetaDataType.fromString(type); if (first) { first = Boolean.FALSE; } else { sb.append(" OR"); } if (mdt == MetaDataType.MOVIE) { sb.append(" videodata_id IS NOT NULL"); } else if (mdt == MetaDataType.SERIES) { sb.append(" series_id IS NOT NULL"); } else if (mdt == MetaDataType.SEASON) { sb.append(" season_id IS NOT NULL"); } else if (mdt == MetaDataType.PERSON) { sb.append(" person_id IS NOT NULL"); } else if (mdt == MetaDataType.BOXSET) { sb.append(" boxedset_id IS NOT NULL"); } } sb.append(")"); sqlScalars.addToSql(sb.toString()); } } // Add the scalars sqlScalars.addScalar("artworkId", LongType.INSTANCE); sqlScalars.addScalar("locatedId", LongType.INSTANCE); sqlScalars.addScalar("generatedId", LongType.INSTANCE); sqlScalars.addScalar(SEASON_ID, LongType.INSTANCE); sqlScalars.addScalar(SERIES_ID, LongType.INSTANCE); sqlScalars.addScalar("videodataId", LongType.INSTANCE); sqlScalars.addScalar("artworkTypeString", StringType.INSTANCE); sqlScalars.addScalar(CACHE_DIR, StringType.INSTANCE); sqlScalars.addScalar(CACHE_FILENAME, StringType.INSTANCE); return sqlScalars; }
From source file:org.yamj.core.database.dao.ApiDao.java
License:Open Source License
public void getEpisodeList(ApiWrapperList<ApiEpisodeDTO> wrapper) { OptionsEpisode options = (OptionsEpisode) wrapper.getOptions(); SqlScalars sqlScalars = new SqlScalars(); sqlScalars.addToSql("SELECT ser.id AS seriesId, sea.id AS seasonId, sea.season, vid.episode, "); sqlScalars.addToSql(//from w w w. java 2s .c o m "vid.id, vid.title, vid.title_original as originalTitle, vid.release_date as firstAired, "); sqlScalars.addToSql("(vid.watched_nfo or vid.watched_file or vid.watched_api) as watched, "); if (options.hasDataItem(DataItem.PLOT)) { sqlScalars.addToSql("vid.plot, "); sqlScalars.addScalar("plot", StringType.INSTANCE); } if (options.hasDataItem(DataItem.OUTLINE)) { sqlScalars.addToSql("vid.outline, "); sqlScalars.addScalar("outline", StringType.INSTANCE); } sqlScalars.addToSql("ag.cache_filename AS cacheFilename, ag.cache_dir AS cacheDir"); sqlScalars.addToSql("FROM season sea, series ser, videodata vid, artwork a"); sqlScalars.addToSql(SQL_LEFT_JOIN_ARTWORK_LOCATED); sqlScalars.addToSql(SQL_LEFT_JOIN_ARTWORK_GENERATED); sqlScalars.addToSql("WHERE sea.series_id=ser.id"); sqlScalars.addToSql("AND vid.season_id=sea.id"); sqlScalars.addToSql("AND a.videodata_id=vid.id"); if (options.getSeriesid() > 0L) { sqlScalars.addToSql("AND ser.id=:seriesid"); sqlScalars.addParameter("seriesid", options.getSeriesid()); if (options.getSeason() > 0L) { sqlScalars.addToSql("AND sea.season=:season"); sqlScalars.addParameter(SEASON, options.getSeason()); } } if (options.getSeasonid() > 0L) { sqlScalars.addToSql("AND sea.id=:seasonid"); sqlScalars.addParameter("seasonid", options.getSeasonid()); } if (options.getWatched() != null && options.getWatched()) { sqlScalars.addToSql(" AND (vid.watched_nfo=1 or vid.watched_file=1 or vid.watched_api=1)"); } else if (options.getWatched() != null && !options.getWatched()) { sqlScalars.addToSql(" AND vid.watched_nfo=0 AND vid.watched_file=0 AND vid.watched_api=0"); } sqlScalars.addToSql(" ORDER BY seriesId, season, episode"); LOG.debug("getEpisodeList SQL: {}", sqlScalars.getSql()); sqlScalars.addScalar(ID, LongType.INSTANCE); sqlScalars.addScalar(SERIES_ID, LongType.INSTANCE); sqlScalars.addScalar(SEASON_ID, LongType.INSTANCE); sqlScalars.addScalar(SEASON, LongType.INSTANCE); sqlScalars.addScalar(EPISODE, LongType.INSTANCE); sqlScalars.addScalar(TITLE, StringType.INSTANCE); sqlScalars.addScalar(ORIGINAL_TITLE, StringType.INSTANCE); sqlScalars.addScalar(CACHE_FILENAME, StringType.INSTANCE); sqlScalars.addScalar(CACHE_DIR, StringType.INSTANCE); sqlScalars.addScalar("firstAired", DateType.INSTANCE); sqlScalars.addScalar(WATCHED, BooleanType.INSTANCE); List<ApiEpisodeDTO> results = executeQueryWithTransform(ApiEpisodeDTO.class, sqlScalars, wrapper); if (CollectionUtils.isNotEmpty(results)) { if (options.hasDataItem(DataItem.FILES)) { for (ApiEpisodeDTO episode : results) { episode.setFiles(getFilesForId(MetaDataType.EPISODE, episode.getId())); } } if (options.hasDataItem(DataItem.GENRE)) { // use series genres Map<Long, List<ApiGenreDTO>> map = new HashMap<>(); for (ApiEpisodeDTO episode : results) { List<ApiGenreDTO> genres = map.get(episode.getSeriesId()); if (genres == null) { genres = getGenresForId(MetaDataType.SERIES, episode.getSeriesId()); map.put(episode.getSeriesId(), genres); } episode.setGenres(genres); } } if (options.hasDataItem(DataItem.COUNTRY)) { // use series countries Map<Long, List<ApiCountryDTO>> map = new HashMap<>(); for (ApiEpisodeDTO episode : results) { List<ApiCountryDTO> countries = map.get(episode.getSeriesId()); if (countries == null) { countries = getCountriesForId(MetaDataType.SERIES, episode.getSeriesId()); map.put(episode.getSeriesId(), countries); } episode.setCountries(countries); } } if (options.hasDataItem(DataItem.STUDIO)) { // use series studios Map<Long, List<Studio>> map = new HashMap<>(); for (ApiEpisodeDTO episode : results) { List<Studio> studios = map.get(episode.getSeriesId()); if (studios == null) { studios = getStudiosForId(MetaDataType.SERIES, episode.getSeriesId()); map.put(episode.getSeriesId(), studios); } episode.setStudios(studios); } } if (options.hasDataItem(DataItem.CERTIFICATION)) { // use series certifications Map<Long, List<ApiCertificationDTO>> map = new HashMap<>(); for (ApiEpisodeDTO episode : results) { List<ApiCertificationDTO> certifications = map.get(episode.getSeriesId()); if (certifications == null) { certifications = getCertificationsForId(MetaDataType.SERIES, episode.getSeriesId()); map.put(episode.getSeriesId(), certifications); } episode.setCertifications(certifications); } } if (options.hasDataItem(DataItem.AWARD)) { // use series awards Map<Long, List<ApiAwardDTO>> map = new HashMap<>(); for (ApiEpisodeDTO episode : results) { List<ApiAwardDTO> awards = map.get(episode.getSeriesId()); if (awards == null) { awards = getAwardsForId(MetaDataType.SERIES, episode.getSeriesId()); map.put(episode.getSeriesId(), awards); } episode.setAwards(awards); } } if (options.hasDataItem(DataItem.RATING)) { // use episode certifications for (ApiEpisodeDTO episode : results) { episode.setRatings(getRatingsForId(MetaDataType.EPISODE, episode.getId())); } } if (MapUtils.isNotEmpty(options.splitJobs())) { Set<String> jobs = options.getJobTypesAsSet(); for (ApiEpisodeDTO episode : results) { List<ApiPersonDTO> cast = getCastForId(MetaDataType.EPISODE, episode.getId(), options.splitDataItems(), jobs); // just add given amount for jobs to cast Map<JobType, Integer> jobMap = new HashMap<>(options.splitJobs()); for (ApiPersonDTO entry : cast) { Integer amount = jobMap.get(entry.getJobType()); if (amount == null) { episode.addCast(entry); } else if (amount > 0) { episode.addCast(entry); amount--; jobMap.put(entry.getJobType(), amount); } } } } else if (options.isAllJobTypes()) { for (ApiEpisodeDTO episode : results) { episode.setCast( getCastForId(MetaDataType.EPISODE, episode.getId(), options.splitDataItems(), null)); } } } wrapper.setResults(results); }
From source file:org.yamj.core.database.dao.ApiDao.java
License:Open Source License
public void getSingleVideo(ApiWrapperSingle<ApiVideoDTO> wrapper) { OptionsIndexVideo options = (OptionsIndexVideo) wrapper.getOptions(); IndexParams params = new IndexParams(options); MetaDataType type = MetaDataType.fromString(options.getType()); if (CollectionUtils.isNotEmpty(params.getDataItems())) { LOG.trace("Getting additional data items: {} ", params.getDataItems()); }/*from www . java 2 s . c o m*/ String sql; if (type == MetaDataType.MOVIE) { sql = generateSqlForVideo(true, params); } else if (type == MetaDataType.SERIES) { sql = generateSqlForSeries(params); } else if (type == MetaDataType.SEASON) { sql = generateSqlForSeason(params); } else { throw new UnsupportedOperationException( "Unable to process type '" + type + "' (Original: '" + options.getType() + "')"); } LOG.trace("SQL for {}-{}: {}", type, params.getId(), sql); SqlScalars sqlScalars = new SqlScalars(sql); sqlScalars.addScalar(ID, LongType.INSTANCE); sqlScalars.addScalar("videoTypeString", StringType.INSTANCE); sqlScalars.addScalar(TITLE, StringType.INSTANCE); sqlScalars.addScalar(ORIGINAL_TITLE, StringType.INSTANCE); sqlScalars.addScalar(VIDEO_YEAR, IntegerType.INSTANCE); sqlScalars.addScalar(SERIES_ID, LongType.INSTANCE); sqlScalars.addScalar(SEASON_ID, LongType.INSTANCE); sqlScalars.addScalar(SEASON, LongType.INSTANCE); sqlScalars.addScalar(WATCHED, BooleanType.INSTANCE); // add Scalars for additional data item columns DataItemTools.addDataItemScalars(sqlScalars, params.getDataItems()); // add additional parameters params.addScalarParameters(sqlScalars); List<ApiVideoDTO> queryResults = executeQueryWithTransform(ApiVideoDTO.class, sqlScalars, wrapper); LOG.trace("Found {} results for ID {}", queryResults.size(), params.getId()); if (CollectionUtils.isNotEmpty(queryResults)) { ApiVideoDTO video = queryResults.get(0); if (params.hasDataItem(DataItem.GENRE)) { LOG.trace("Adding genres for ID {}", options.getId()); video.setGenres(getGenresForId(type, options.getId())); } if (params.hasDataItem(DataItem.STUDIO)) { LOG.trace("Adding studios for ID {}", options.getId()); video.setStudios(getStudiosForId(type, options.getId())); } if (options.hasDataItem(DataItem.COUNTRY)) { LOG.trace("Adding countries for ID {}", options.getId()); video.setCountries(getCountriesForId(type, options.getId())); } if (params.hasDataItem(DataItem.CERTIFICATION)) { LOG.trace("Adding certifications for ID {}", options.getId()); video.setCertifications(getCertificationsForId(type, options.getId())); } if (params.hasDataItem(DataItem.RATING)) { LOG.trace("Adding ratings for ID {}", options.getId()); video.setRatings(getRatingsForId(type, options.getId())); } if (options.hasDataItem(DataItem.AWARD)) { LOG.trace("Adding awards for ID {}", options.getId()); video.setAwards(getAwardsForId(type, options.getId())); } if (options.hasDataItem(DataItem.EXTERNALID)) { LOG.trace("Adding external IDs for ID {}", options.getId()); video.setExternalIds(getExternalIdsForId(type, options.getId())); } if (options.hasDataItem(DataItem.BOXSET)) { LOG.trace("Adding boxed sets for ID {}", options.getId()); video.setBoxedSets(getBoxedSetsForId(type, options.getId())); } if (params.hasDataItem(DataItem.ARTWORK)) { LOG.trace("Adding artwork for ID {}", options.getId()); Map<Long, List<ApiArtworkDTO>> artworkList; if (CollectionUtils.isNotEmpty(options.getArtworkTypes())) { artworkList = getArtworkForId(type, options.getId(), options.getArtworkTypes()); } else { artworkList = getArtworkForId(type, options.getId()); } if (artworkList.containsKey(options.getId())) { video.setArtwork(artworkList.get(options.getId())); } } if (params.hasDataItem(DataItem.FILES)) { LOG.trace("Adding files for ID {}", options.getId()); video.setFiles(getFilesForId(type, options.getId())); } if (params.hasDataItem(DataItem.TRAILER)) { LOG.trace("Adding trailers for ID {}", options.getId()); video.setTrailers(getTrailersForId(type, options.getId())); } if (MapUtils.isNotEmpty(options.splitJobs())) { Set<String> jobs = options.getJobTypesAsSet(); LOG.trace("Adding jobs for ID {}: {}", options.getId(), jobs); List<ApiPersonDTO> cast = getCastForId(type, options.getId(), options.splitDataItems(), jobs); // just add given amount for jobs to cast Map<JobType, Integer> jobMap = new HashMap<>(options.splitJobs()); for (ApiPersonDTO entry : cast) { Integer amount = jobMap.get(entry.getJobType()); if (amount == null) { video.addCast(entry); } else if (amount > 0) { video.addCast(entry); amount--; jobMap.put(entry.getJobType(), amount); } } } else if (options.isAllJobTypes()) { LOG.trace("Adding all jobs for ID {}", options.getId()); video.setCast(getCastForId(type, options.getId(), params.getDataItems(), null)); } wrapper.setResult(video); } else { wrapper.setResult(null); } wrapper.setStatusCheck(); }