1 /****************************************************************************** 2 * BuckoVidLib.java - Primary business object interface 3 * $Id: BuckoVidLib.java,v 1.28 2015/05/14 03:00:03 dick Exp $ 4 * 5 * BuckoVidLib - The BuckoSoft Video Library 6 * Copyright(c) 2014 - Dick Balaska 7 * 8 * $Log: BuckoVidLib.java,v $ 9 * Revision 1.28 2015/05/14 03:00:03 dick 10 * getPlexUrl is a property to be read, not hardcoded in. 11 * 12 * Revision 1.27 2015/05/11 01:57:54 dick 13 * /statistics wants a session so we don't count restricted movies. 14 * 15 * Revision 1.26 2015/05/08 02:37:14 dick 16 * findVideosAndThings(key, max) returns videos, actors, directors, and writers 17 * 18 * Revision 1.25 2015/05/07 00:15:38 dick 19 * findMaxResults is a user config option. 20 * 21 * Revision 1.24 2015/05/06 17:04:09 dick 22 * Add findVideos(). 23 * Remove unused unprotected video lookups. 24 * 25 * Revision 1.23 2015/05/06 03:36:53 dick 26 * hideRestricted allows a user with restricted access to temporarily turn it off. 27 * 28 * Revision 1.22 2015/05/05 04:26:00 dick 29 * Persist backgroundDelay and artShowDelay. 30 * 31 * Revision 1.21 2015/05/04 20:36:09 dick 32 * getBackgroundFit() needs to know if we are running the ArtShow, which may be different 33 * than the normal backgroundFit. 34 * 35 * Revision 1.20 2015/05/03 18:02:10 dick 36 * Add UserAttributes and backgroundFit handling. 37 * 38 * Revision 1.19 2015/05/01 12:46:11 dick 39 * Implement a thread to dynamically update the database from plex. 40 * 41 * Revision 1.18 2015/04/30 06:34:27 dick 42 * Getting lists of VideoBase is always protected by session. 43 * 44 * Revision 1.17 2015/04/30 03:18:04 dick 45 * Deal mostly with VideoBase. Only fetch full Video when we really need it. 46 * Protect all (most) calls to the restricted section of the library by session. 47 * 48 * Revision 1.16 2015/04/27 14:59:12 dick 49 * Support having restricted LibrarySections that you must have access to get to. 50 * 51 * Revision 1.15 2015/04/01 02:39:09 dick 52 * getDirectorVideos(key) 53 * stub getActorVideos and getWriterVideos. 54 * Build the video mappings of directors and genres so hibernate figures them out. 55 * 56 * Revision 1.14 2015/03/29 04:05:02 dick 57 * Improve statistics. 58 * 59 * Revision 1.13 2015/03/25 06:13:52 dick 60 * Keys are ints, not Strings. 61 * 62 * Revision 1.12 2015/03/21 09:21:12 dick 63 * getLibraryListVideos(key) returns one LibrarySection's videos. 64 * 65 * Revision 1.11 2014/11/01 08:05:05 dick 66 * Count TV episodes. 67 * 68 * Revision 1.10 2014/10/26 05:36:57 dick 69 * recentlyAdded status can display 2 videos. 70 * 71 * Revision 1.9 2014/10/23 05:00:10 dick 72 * WishList handling. 73 * 74 * Revision 1.8 2014/10/20 01:25:29 dick 75 * getRecentlyAdded(). 76 * 77 * Revision 1.7 2014/10/17 08:11:19 dick 78 * Add the database and getFailedToRip(). 79 * 80 * Revision 1.6 2014/10/09 08:34:35 dick 81 * Use the Video as a key for the client, not just the image url. 82 * 83 * Revision 1.5 2014/10/08 04:25:44 dick 84 * Load the entire library and implement fetching an image. 85 * 86 * Revision 1.4 2014/10/07 02:28:05 dick 87 * Implement getSectionList(). 88 * 89 * Revision 1.3 2014/10/06 08:09:45 dick 90 * Still skeleton object, really an interface. 91 */ 92 package com.buckosoft.BuckoVidLib.business; 93 94 import java.util.List; 95 96 import javax.servlet.http.HttpServletRequest; 97 98 import com.buckosoft.BuckoVidLib.domain.FailedToRip; 99 import com.buckosoft.BuckoVidLib.domain.LibrarySection; 100 import com.buckosoft.BuckoVidLib.domain.TVSeason; 101 import com.buckosoft.BuckoVidLib.domain.UserAttribute; 102 import com.buckosoft.BuckoVidLib.domain.Video; 103 import com.buckosoft.BuckoVidLib.domain.VideoBase; 104 import com.buckosoft.BuckoVidLib.domain.WishList; 105 import com.buckosoft.BuckoVidLib.domain.rest.RestVideo; 106 import com.buckosoft.BuckoVidLib.domain.rest.admin.RestRefreshStatus; 107 108 /** Primary business object interface. <br> 109 * In the BuckoVidLib world, key always refers to the hashKey of an item, which is an int usually represented as a base36 string 110 * @author dick 111 * @since 2014-10-06 112 */ 113 public interface BuckoVidLib { 114 115 List<LibrarySection> getSectionList(); 116 List<LibrarySection> getSectionList(boolean allowRestricted); 117 RestVideo getRandomMovie(boolean allowRestricted); 118 Video getVideoFromKey(int key, boolean allowRestricted); 119 VideoBase getVideoBaseFromKey(int key, boolean allowRestricted); 120 List<FailedToRip> getFailedToRip(); 121 List<WishList> getWishList(); 122 List<VideoBase> getRecentlyAdded(int count, boolean allowRestricted); 123 List<VideoBase> getLibraryListVideos(int key); 124 List<VideoBase> getDirectorVideos(int key); 125 List<VideoBase> getWriterVideos(int key); 126 List<VideoBase> getActorVideos(int key); 127 List<RestVideo> findVideosAndThings(String key, boolean allowRestricted, int maxReturned); 128 129 TVSeason getTVSeasonFromHashKey(int key); 130 long getLastUpdateTime(); 131 132 int getMovieCount(boolean allowRestricted); 133 int getTVShowCount(boolean allowRestricted); 134 int getTVEpisodeCount(boolean allowRestricted); 135 136 List<UserAttribute> getUserAttributes(int userId); 137 void saveUserAttributes(List<UserAttribute> list); 138 139 /** Is this user allowed access to the restricted sections, and does he want to see them? 140 * @param request The request containing the session containing the User 141 * @return true if he has access and desire. 142 */ 143 boolean isAllowRestricted(HttpServletRequest request); 144 145 boolean isHideRestricted(HttpServletRequest request); 146 void setHideRestricted(HttpServletRequest request, boolean hideRestricted); 147 148 /** Is this user an Admin? 149 * @param request The request containing the session containing the User 150 * @return true if he is an Admin. 151 */ 152 boolean isAdmin(HttpServletRequest request); 153 154 /** Get the background fit style. 155 * @param request The request containing the session containing the User 156 * @param artShow Maybe we are running the ArtShow and want the override. Grey background needs a real style for the ArtShow. 157 * @return 158 */ 159 int getBackgroundFit(HttpServletRequest request, boolean artShow); 160 void setBackgroundFit(HttpServletRequest request, int backgroundFit); 161 162 163 void setBackgroundDelays(HttpServletRequest request, int backgroundDelay, int artShowDelay); 164 165 int getFindMaxResults(HttpServletRequest request); 166 void setFindMaxResults(HttpServletRequest request, int findMaxResults); 167 168 void startRefreshLibraryFromPlex(); 169 RestRefreshStatus getRefreshLibraryFromPlexStatus(); 170 171 /** Get the base url for our plex server from the properties file. 172 * @return http://lamp/plex 173 */ 174 String getPlexUrl(); 175 176 }