Menu

#8 FormHandler Patches

open
nobody
None
5
2004-09-07
2004-09-07
No

Clean up imports.
Default values may need to override values in fields on
Forms (especially when dealing with Forums).

steve@davidson:~/projects/Crawlers/JOBO> cvs -z9 diff
-bB -u src/net/matuschek/html/FormFiller.java
Index: src/net/matuschek/html/FormFiller.java
===================================================================
RCS file:
/cvsroot/jobo/JOBO/src/net/matuschek/html/FormFiller.java,v
retrieving revision 1.9
diff -b -B -u -r1.9 FormFiller.java
--- src/net/matuschek/html/FormFiller.java 30 Jan
2003 14:54:51 -0000 1.9
+++ src/net/matuschek/html/FormFiller.java 7 Sep
2004 16:22:30 -0000
@@ -155,7 +155,7 @@
if (! type.equals("reset")) {

// must have a name
- if ((name != null) && (! name.equals(""))) {
+ if ((name != null) && (name.trim().length() > 1
)) {

// must have a value
if ((value != null) && (! value.equals(""))) {
steve@davidson:~/projects/Crawlers/JOBO> cvs -z9 diff
-bB -u src/net/matuschek/html/Form
FormField.java FormFiller.java FormHandler.java
steve@davidson:~/projects/Crawlers/JOBO> cvs -z9 diff
-bB -u src/net/matuschek/html/FormHandler.java
Index: src/net/matuschek/html/FormHandler.java
===================================================================
RCS file:
/cvsroot/jobo/JOBO/src/net/matuschek/html/FormHandler.java,v
retrieving revision 1.6
diff -b -B -u -r1.6 FormHandler.java
--- src/net/matuschek/html/FormHandler.java 25 Feb
2003 13:58:56 -0000 1.6
+++ src/net/matuschek/html/FormHandler.java 7 Sep
2004 16:25:11 -0000
@@ -4,8 +4,8 @@
Copyright (c) 2001 by Daniel Matuschek
*********************************************/

-import java.net.*;
-import java.util.*;
+import java.net.MalformedURLException;
+import java.util.Vector;

/**
* This class implements a stores settings for web forms.
@@ -21,6 +21,8 @@
*/
public class FormHandler {

+ private boolean forceDefault = false;
+
/**
* initializes a new FormHandler without any settings
*/
@@ -60,6 +62,18 @@
values = new Vector();
}

+ /**
+ * @return Returns the forceDefault.
+ */
+ public boolean isForceDefault() {
+ return forceDefault;
+ }
+ /**
+ * @param forceDefault The forceDefault to set.
+ */
+ public void setForceDefault(boolean forceDefault) {
+ this.forceDefault = forceDefault;
+ }
public String getUrl() {
//return url.toString();
return url;
@@ -84,38 +98,55 @@
for (int i=0; i<defaults.size(); i++) {
FormField ff = (FormField)defaults.elementAt(i);
// default overidden by another value ?
- if (! hasValue(ff.getFieldname())) {
+ if (this.forceDefault || !
hasValue(ff.getFieldname())) {
sb.append(ff.toEncodedString());
sb.append('&');
- }
- }
+ }//end if
+ }//end for

- // now add the values
+ // now add the values, and the values for the
"hidden fields"
for (int i=0; i<values.size(); i++) {
FormField ff = (FormField)values.elementAt(i);
+ //If we are forcing default values, and we have
a default value for this field,
+ //do not append the current value.
+ if (!(this.forceDefault &&
hasDefaultValue(ff.getFieldname()))) {
sb.append(ff.toEncodedString());
sb.append('&');
- }
+ }//end
+ }//end for

// remove the last "&"
sb.deleteCharAt(sb.length()-1);

return sb.toString();
- }
+ }//end getParamString

/**
* look, if we have a value for this attribute or if
* we should use the default
*/
protected boolean hasValue(String attrib) {
- for (int i=0; i<values.size(); i++) {
- FormField ff = (FormField)values.elementAt(i);
+ for (int i = this.values.size() - 1; i>=0; i--) {
+ FormField ff =
(FormField)this.values.elementAt(i);
if (ff.getFieldname().equals(attrib)) {
return true;
- }
- }
+ }//end if
+ }//end for
return false;
- }
+ }//end hasValue
+
+ /**
+ * Look to see if we havev a default value for this
attribute.
+ */
+ protected boolean hasDefaultValue(String attrib) {
+ for (int i = this.defaults.size() - 1; i >= 0 ;
i--) {
+ FormField ff =
(FormField)this.defaults.elementAt(i);
+ if (ff.getFieldname().equals(attrib)) {
+ return true;
+ }//end if
+ }//end for
+ return false;
+ }//end hasValue

public int getMethod() {
return method;

Discussion


Log in to post a comment.