1 /******************************************************************************
2 * PicManFacade.java - Primary business interface
3 *
4 * PicMan - The BuckoSoft Picture Manager in Java
5 * Copyright(c) 2005 - Dick Balaska
6 *
7 */
8 package com.buckosoft.PicMan.business;
9
10 import java.awt.Dimension;
11 import java.util.LinkedList;
12 import java.util.List;
13
14 import com.buckosoft.PicMan.business.common.PicManCommonFacade;
15 import com.buckosoft.PicMan.business.mosaic.MosaicMan;
16 import com.buckosoft.PicMan.db.DatabaseFacade;
17 import com.buckosoft.PicMan.domain.Chain;
18 import com.buckosoft.PicMan.domain.Filter;
19 import com.buckosoft.PicMan.domain.JobLogEntry;
20 import com.buckosoft.PicMan.domain.Pic;
21 import com.buckosoft.PicMan.domain.Set;
22 import com.buckosoft.PicMan.domain.SetSize;
23 import com.buckosoft.PicMan.domain.Thumbnail;
24 import com.buckosoft.PicMan.image.PicReader;
25 import com.buckosoft.PicMan.image.ThumbCache;
26
27 /**
28 * PicMan primary business interface.
29 * @author Dick Balaska
30 * @since 2005/07/25
31 * @see <a href="http://cvs.buckosoft.com/Projects/java/PicMan/PicMan/src/com/buckosoft/PicMan/business/PicManFacade.java">PicManFacade.java</a>
32 */
33 public interface PicManFacade extends PicManCommonFacade {
34
35 /** Get a reference to the Database
36 * @return The one and only PicMan Database
37 */
38 public DatabaseFacade getDB();
39
40 ///////////////////////////////////////////////////////////////////////////
41 ///////////////////////////////////////////////////////////////////////////
42 /* PicReader */
43
44 /** Get a reference to the PicReader
45 * @return The one and only PicReader
46 */
47 PicReader getPicReader();
48
49 /** Read the file for this pic to figure out his size
50 * @param pic The Pic to read
51 * @return width/height as a {@link java.awt.Dimension}. (-1,-1) = error.
52 */
53 Dimension determinePicSize(Pic pic);
54
55 ///////////////////////////////////////////////////////////////////////////
56 ///////////////////////////////////////////////////////////////////////////
57 /* ThumbNail cache */
58 /** Get a reference to the ThumbCache Manager
59 * @return The one and only ThumbCache
60 */
61 ThumbCache getThumbCache();
62
63 void setupThumbCache();
64
65 ///////////////////////////////////////////////////////////////////////////
66 ///////////////////////////////////////////////////////////////////////////
67 /* Mosaic ThumbNail cache */
68 /** Initialize the mosaic thumb cache for this set at this height
69 * @param sid The SetID that MosaicMan is using
70 * @param height The height of the thumbnails
71 */
72 void setupMosaicThumbCache(int sid, int height);
73
74 /** Done with the mosaic cache, release it's resources.
75 */
76 void releaseMosaicThumbCache();
77
78 ///////////////////////////////////////////////////////////////////////////
79 ///////////////////////////////////////////////////////////////////////////
80 /* Web output */
81
82
83 /** Return the sets/sizes as an HTML table
84 * @param setSizeList The sets/sizes to include in the table
85 * @param showUnused Show or hide the unused Sets
86 * @return A big honking string
87 */
88 String getSetSizeWebTable(List<SetSize> setSizeList, boolean showUnused);
89
90
91 /** Return a String of {tr}{td} checkboxes for this chain.
92 * This horrible function is still used in 2011 in Chain Editing.
93 * @param chain Chain to filter the checkboxes on. If null, then output all checkboxes
94 * @return A big String
95 */
96 String getSetSizeCheckboxesHtml(Chain chain);
97
98 //List<String> getFilterColumnsAsHtml();
99
100 /** Create a String that represents the Sets and values for this pic. <br>
101 * \r\n represents newline<br>
102 * A Sample output is:
103 * <pre> mlbG:6,6,6,6,0 mlb:6 Trains:6
104 * Springfield</pre>
105 * @param picName
106 * @return A string showing the Sets and values for this pic.
107 */
108 String getFilterAsString(String picName);
109
110 ///////////////////////////////////////////////////////////////////////////
111 ///////////////////////////////////////////////////////////////////////////
112 /* Contact manager */
113
114 /** Get a reference to the instantiated <code>BatchManager</code>.
115 * @return The BatchManager
116 */
117 BatchManager getBatchManager();
118
119 // void runBatchManager() throws Exception;
120
121 /** Return a one or two word status for the engine.
122 * @return Most of the time, this will be "Idle".
123 */
124 String engineRunningShortStatus();
125
126 /** Set the Cron string used to clock the engine. <FONT COLOR=RED>DDS</FONT>
127 * @param expression The cron expression
128 * @see org.springframework.scheduling.quartz.CronTriggerBean
129 */
130 void setEngineCronExpression(String expression);
131
132 /** Get a Thumbnail from this pic at this size
133 * @param pic The Pic to read
134 * @param height How tall to make the image
135 * @return A Thumbnail or null if we can't make it
136 */
137 Thumbnail getThumbNail(Pic pic, int height);
138
139 /** Get a Thumbnail from this pic at this size
140 * @param pic The Pic to read
141 * @param height How tall to make the image
142 * @param label Any text (like the rating) to draw in the lower left corner of the graphic
143 * @return A Thumbnail or null if we can't make it
144 */
145 Thumbnail getThumbNail(Pic pic, int height, String label);
146
147 /** Get a Thumbnail from this pic at this size.
148 * This is a little different than {@link #getThumbNail(Pic, int)} in that it uses the Mosaic ThumbCache,
149 * which has slightly different rules.<br/>
150 * The Mosaic {@link com.buckosoft.PicMan.image.ThumbCache} operates thusly:
151 * If a Thumbnail is requested and it doesn't exist, it is built at the MosaicThumbHeight. Then the size requested is
152 * derived from that and returned.
153 * @param pic The Pic to read
154 * @param height How tall to make the image
155 * @return A Thumbnail or null if we can't make it
156 */
157 Thumbnail getMosaicThumbNail(Pic pic, int height);
158
159
160 Thumbnail getTestMosaicThumbNail(Pic pic, int height, int depth);
161
162 /** Fetch a reference to the Mosaic Manager
163 * @return The one and only MosaicMan
164 */
165 MosaicMan getMosaicMan();
166
167 /** Given a List of Sets, return a copy of a filter with the values 0'd out
168 * except for the Sets listed.
169 * @param sets A list of sets
170 * @param filter The filter to mask
171 * @return The new Filter
172 */
173 Filter getMaskedFilter(List<Set> sets, Filter filter);
174
175 SyncManager_Old getSyncManager();
176
177 /** Return a reference to The PosterManager
178 * @return The one and only PosterManager
179 */
180 PosterManager getPosterManager();
181
182 ///////////////////////////////////////////////////////////////////////////
183 ///////////////////////////////////////////////////////////////////////////
184 /* Pic Importer Manager */
185 /** Get a reference to the PicImporter
186 * @return The PicImporter
187 */
188 PicImporter getPicImporter();
189
190 /** Get the number of files in a directory
191 * @param rid The rootid to look under
192 * @param dir The subdirectory i.e. "2008/20080609"
193 * @return The number of files
194 */
195 int getFilesInDirCount(int rid, String dir);
196
197 /** Fetch a <code>List</code> of dirs in this directory.
198 * Note: This does not do database lookups; rather, it reads the actual directory structure.
199 * Perhaps this is not a good thing as the rest of the system deals with the database.
200 * However, there are no real facilities for walking directories in the database.
201 * @param rid The root id to look under
202 * @param subDir Any subdirectory to check
203 * @return A list of nodes that are directories.
204 */
205 List<String> getDirsInDir(int rid, String subDir);
206
207 ///////////////////////////////////////////////////////////////////////////
208 ///////////////////////////////////////////////////////////////////////////
209 /* Job Log Manager */
210
211 /** Return a reference to the Job Log
212 * @return the jobLog
213 */
214 LinkedList<JobLogEntry> getJobLog();
215
216 /** Get the maximum displayed job log lines in the home page.
217 * @return the Count
218 */
219 int getJobLogMaxCount();
220
221 /** Add an entry to the Job Log
222 * @param jle The JobLogEntry to add.
223 */
224 void addJobToLog(JobLogEntry jle);
225
226 ///////////////////////////////////////////////////////////////////////////
227 ///////////////////////////////////////////////////////////////////////////
228 /* System Config */
229
230 /** Does the User have the batch engine turned on? Should we do work?
231 * @return true = ok to do work.
232 */
233 boolean isEngineOn();
234
235 }