001 // Copyright (c) 2001 Hursh Jain (http://www.mollypages.org)
002 // The Molly framework is freely distributable under the terms of an
003 // MIT-style license. For details, see the molly pages web site at:
004 // http://www.mollypages.org/. Use, modify, have fun !
005
006 package fc.web.forms;
007
008 import javax.servlet.*;
009 import javax.servlet.http.*;
010 import java.io.*;
011 import java.util.*;
012 import java.util.regex.*;
013 import java.sql.*;
014
015 /**
016 Refreshes the value of a field (or fields) before the field is displayed
017 to the user. Refreshed values are typically retrieved from a database.
018 */
019 public abstract class FieldRefresher
020 {
021 Field field; //set by target field when added to it
022
023 /**
024 Refresh the value of the field. The new values are request specific (and
025 each HTTP request handler thread will update the values for that request
026 independent of other requests). The values should be stored in the
027 supplied form data object by invoking field methods that look like:
028 <tt>setValue(<i>FormData fd</i>,....)</tt>.
029 <p>
030 It is possible for the specified form data to be <tt>null</tt>.
031
032 @param fd the form data object, possibly <tt>null</tt> if there
033 is no submit data.
034 */
035 public abstract void refresh(FormData fd) throws IOException, SQLException;
036
037 /**
038 There must be a way to figure out if the client hacked/delete/modified the
039 form before submitting it. Since the rendered values are different per
040 request, we cannot rely on values that the target field was constructed
041 with. This method is conceptually similar to a {@link
042 Dependency#isSubmitDataValid} method.
043
044 This method can be implemented to check the submitted values and return
045 <tt>true</tt> if the submit was valid, <tt>false</tt> otherwise.
046 <p>
047 The default implementation always returns <tt>true</tt>.
048 */
049 public boolean isSubmitValid(FormData fd) {
050 return true;
051 }
052
053 public String toString() {
054 return "[Refresher: " + field.name + "]";
055 }
056 }