X-Git-Url: http://wamblee.org/gitweb/?a=blobdiff_plain;f=crawler%2Fkiss%2Fsrc%2Forg%2Fwamblee%2Fcrawler%2Fkiss%2FProgram.java;h=e48ccae48a3ca0d9a0d989ae1f164a0244465218;hb=e1d3e74f8d691b5def8bbb9b422002fdf3a61968;hp=2308fa982296ea76368d782043c2425d11af0486;hpb=d4bb47fd284738756cd112b788a49caa1a9d5c38;p=utils diff --git a/crawler/kiss/src/org/wamblee/crawler/kiss/Program.java b/crawler/kiss/src/org/wamblee/crawler/kiss/Program.java index 2308fa98..e48ccae4 100644 --- a/crawler/kiss/src/org/wamblee/crawler/kiss/Program.java +++ b/crawler/kiss/src/org/wamblee/crawler/kiss/Program.java @@ -12,76 +12,170 @@ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. - */ + */ package org.wamblee.crawler.kiss; import org.wamblee.crawler.Action; +import org.wamblee.crawler.Page; import org.wamblee.crawler.PageException; /** - * + * Represents a television program. */ public class Program { - + + /** + * Name of the record action on the program details page. + */ private static final String RECORD_ACTION = "record"; - private static final String INDENT = " "; - private String _channel; + private static final String RESULT_ELEM = "result"; + + public enum RecordingResult { + OK("Successfully recorded programs"), + DUPLICATE("Already recorded programs"), + CONFLICT("Programs in conflict with another recorded program"), + OLDSHOW("Programs that occurred in the past"), + ERROR("Programs that could not be recorded for technical reasons"); + + private String _description; + + private RecordingResult(String aDescription) { + _description = aDescription; + } + + public String getDescription() { + return _description; + } + }; + + /** + * Indent string to use for pretty printing. + */ + private static final String INDENT = " "; + + /** + * Channel the program is on. + */ + private String _channel; + + /** + * Program name. + */ private String _name; - private String _description; + + /** + * Program description. + */ + private String _description; + + /** + * Keywords or classification of the program. + */ private String _keywords; + + /** + * Time interval for the program (from/to). + */ private TimeInterval _interval; - private Action _programInfo; - - public Program(String aChannel, String aName, String aDescription, String aKeywords, TimeInterval aInterval, Action aProgramInfo) { - _channel = aChannel; - _name = aName; + + /** + * Action to execute to obtain program information and/or record the program. + */ + private Action _programInfo; + + /** + * Constructs the program. + * @param aChannel Channel name. + * @param aName Program name. + * @param aDescription Description. + * @param aKeywords Keywords/classification. + * @param aInterval Time interval. + * @param aProgramInfo Action to execute for detailed program information or + * for recording the page. + */ + public Program(String aChannel, String aName, String aDescription, + String aKeywords, TimeInterval aInterval, Action aProgramInfo) { + _channel = aChannel; + _name = aName; _description = aDescription; - _keywords = aKeywords; + _keywords = aKeywords; _interval = aInterval; - _programInfo = aProgramInfo; + _programInfo = aProgramInfo; } - - public String getChannel() { - return _channel; + + /** + * Gets the channel. + * @return Channel. + */ + public String getChannel() { + return _channel; } - - public String getName() { - return _name; + + /** + * Gets the program name. + * @return Name. + */ + public String getName() { + return _name; } - - public String getDescription() { + + /** + * Gets the description. + * @return Description. + */ + public String getDescription() { return _description; } - - public String getKeywords() { - return _keywords; + + /** + * Gets the keywords/classification. + * @return Keywords/classification + */ + public String getKeywords() { + return _keywords; } - - public TimeInterval getInterval() { - return _interval; + + /** + * Gets the time interval. + * @return Time interval. + */ + public TimeInterval getInterval() { + return _interval; } - - public boolean record() throws PageException { - Action record = _programInfo.execute().getAction(RECORD_ACTION); - if ( record == null) { - return false; + + /** + * Records the show. + * @return True iff an attempt could be made to record the page. + * @throws PageException In case of problems recording the page. + */ + public RecordingResult record() throws PageException { + Action record = _programInfo.execute().getAction(RECORD_ACTION); + if (record == null) { + return RecordingResult.OLDSHOW; } - record.execute(); - return true; + Page result = record.execute(); + return RecordingResult.valueOf(result.getContent().getText()); } - - public void accept(Visitor aVisitor) { + + /** + * Accepts the visitor. + * @param aVisitor Visitor. + */ + public void accept(Visitor aVisitor) { aVisitor.visitProgram(this); } - - /* (non-Javadoc) + + /* + * (non-Javadoc) + * * @see java.lang.Object#toString() */ @Override public String toString() { - return _interval + " - " + _name + " (" + _channel + "/" + _keywords + ")" + "\n" + - (INDENT + _description).replaceAll("\n", "\n" + INDENT); + return _interval + " - " + _name + " (" + _channel + "/" + _keywords + + ")" + "\n" + + (INDENT + _description).replaceAll("\n", "\n" + INDENT); } }