Author: oching
Date: Wed Sep 13 03:11:04 2006
New Revision: 442925

URL: http://svn.apache.org/viewvc?view=rev&rev=442925
Log:
Revised the validation for cron expression. Also revised the configure.jsp page 
(for the cron editor) -- removed the <table> tags.

Modified:
    
maven/archiva/trunk/archiva-webapp/src/main/java/org/apache/maven/archiva/web/action/admin/ConfigureAction.java
    
maven/archiva/trunk/archiva-webapp/src/main/webapp/WEB-INF/jsp/admin/configure.jsp

Modified: 
maven/archiva/trunk/archiva-webapp/src/main/java/org/apache/maven/archiva/web/action/admin/ConfigureAction.java
URL: 
http://svn.apache.org/viewvc/maven/archiva/trunk/archiva-webapp/src/main/java/org/apache/maven/archiva/web/action/admin/ConfigureAction.java?view=diff&rev=442925&r1=442924&r2=442925
==============================================================================
--- 
maven/archiva/trunk/archiva-webapp/src/main/java/org/apache/maven/archiva/web/action/admin/ConfigureAction.java
 (original)
+++ 
maven/archiva/trunk/archiva-webapp/src/main/java/org/apache/maven/archiva/web/action/admin/ConfigureAction.java
 Wed Sep 13 03:11:04 2006
@@ -18,6 +18,7 @@
 
 import com.opensymphony.xwork.ModelDriven;
 import com.opensymphony.xwork.Preparable;
+import com.opensymphony.xwork.Validateable;
 import org.apache.maven.archiva.configuration.Configuration;
 import org.apache.maven.archiva.configuration.ConfigurationChangeException;
 import org.apache.maven.archiva.configuration.ConfigurationStore;
@@ -38,7 +39,7 @@
  */
 public class ConfigureAction
     extends PlexusActionSupport
-    implements ModelDriven, Preparable
+    implements ModelDriven, Preparable, Validateable
 {
     /**
      * @plexus.requirement
@@ -66,6 +67,21 @@
 
     private String year;
 
+    private String cronEx = "";
+
+    public void validate()
+    {
+        cronEx = ( second + " " + minute + " " + hour + " " + dayOfMonth + " " 
+ month +
+                    " " + dayOfWeek + " " + year ).trim();
+
+        //validate cron expression
+        cronValidator = new CronExpressionValidator();
+
+        if( !cronValidator.validate( cronEx ) )
+        {
+            addActionError( "Invalid Cron Expression" );
+        }              
+    }
 
     public String execute()
         throws IOException, RepositoryIndexException, 
RepositoryIndexSearchException, ConfigurationStoreException,

Modified: 
maven/archiva/trunk/archiva-webapp/src/main/webapp/WEB-INF/jsp/admin/configure.jsp
URL: 
http://svn.apache.org/viewvc/maven/archiva/trunk/archiva-webapp/src/main/webapp/WEB-INF/jsp/admin/configure.jsp?view=diff&rev=442925&r1=442924&r2=442925
==============================================================================
--- 
maven/archiva/trunk/archiva-webapp/src/main/webapp/WEB-INF/jsp/admin/configure.jsp
 (original)
+++ 
maven/archiva/trunk/archiva-webapp/src/main/webapp/WEB-INF/jsp/admin/configure.jsp
 Wed Sep 13 03:11:04 2006
@@ -26,95 +26,47 @@
 
 <h1>Configuration</h1>
 
+<div class="errors">
+  <ww:actionerror />
+</div>
+
 <div id="contentArea">
   <ww:actionmessage/>
   <ww:form method="post" action="saveConfiguration" namespace="/admin" 
validate="true">
+    <ww:textfield name="indexPath" label="Index Directory" size="100" 
required="true"/>
+    <!--ww:textfield name="indexerCronExpression" label="Indexing Schedule"/-->
+
+    <ww:label value="Indexing Schedule" labelposition="top"/>
+      <ww:div>
+        <ww:textfield name="second" label="Second" size="2"/>
+        <ww:textfield name="minute" label="Minute" labelposition="left" 
size="2"/>
+        <ww:textfield name="hour" label="Hour" size="2"/>
+        <ww:textfield name="dayOfMonth" label="Day Of Month" size="2"/>
+        <ww:textfield name="month" label="Month" size="2"/>
+        <ww:textfield name="dayOfWeek" label="Day Of Week" size="2"/>
+        <ww:textfield name="year" label="Year" size="4"/>
+      </ww:div>
+
+    <ww:hidden name="proxy.protocol" value="http"/>
+    <ww:textfield name="proxy.host" label="HTTP Proxy Host"/>
+    <ww:textfield name="proxy.port" label="HTTP Proxy Port"/>
+    <ww:textfield name="proxy.username" label="HTTP Proxy Username"/>
+    <ww:password name="proxy.password" label="HTTP Proxy Password"/>
 
-    <div>
-    <table>
-        <tbody>
-          <tr>
-            <th><font size="2"><ww:label theme="simple" value="Indexing 
Directory*:"/></font></th>
-            <td><ww:textfield name="indexPath" theme="simple" size="140" 
required="true"/></td>
-          </tr>
-          <tr>
-            <th><font size="2"><ww:label theme="simple" value="Indexing 
Schedule:"/></font></th>
-            <td>
-              <table>
-                <tr>
-                  <th><ww:label theme="simple" value="Second:"/></th>
-                  <td><ww:textfield name="second" theme="simple" 
size="2"/></td>
-
-                  <th><ww:label theme="simple" value="Minute:"/></th>
-                  <td><ww:textfield name="minute" theme="simple" 
size="2"/></td>
-
-                  <th><ww:label theme="simple" value="Hour:"/></th>
-                  <td><ww:textfield name="hour" theme="simple" size="2"/></td>
-
-                  <th><ww:label theme="simple" value="Day of Month:"/></th>
-                  <td><ww:textfield name="dayOfMonth" theme="simple" 
size="2"/></td>
-
-                  <th><ww:label theme="simple" value="Month:"/></th>
-                  <td><ww:textfield name="month" theme="simple" size="2"/></td>
-
-                  <th><ww:label theme="simple" value="Day of Week:"/></th>
-                  <td><ww:textfield name="dayOfWeek" theme="simple" 
size="2"/></td>
-
-                  <th><ww:label theme="simple" value="Year [optional]:"/></th>
-                  <td><ww:textfield name="year" theme="simple" size="4"/></td>
-                </tr>
-              </table>
-            </td>
-          </tr>
-        <ww:hidden name="proxy.protocol" value="http"/>
-        <tr>
-            <th><font size="2"><ww:label theme="simple" value="HTTP Proxy 
Host:"/></font></th>
-            <td><ww:textfield name="proxy.host" theme="simple"/></td>
-        </tr>
-        <tr>
-            <th><font size="2"><ww:label theme="simple" value="HTTP Proxy 
Port:"/></font></th>
-            <td><ww:textfield name="proxy.port" theme="simple"/></td>
-        </tr>
-        <tr>
-            <th><font size="2"><ww:label theme="simple" value="HTTP Proxy 
Username:"/></font></th>
-            <td><ww:textfield name="proxy.username" theme="simple"/></td>
-        </tr>
-        <tr>
-            <th><font size="2"><ww:label theme="simple" value="HTTP Proxy 
Password:"/></font></th>
-            <td><ww:textfield name="proxy.password" theme="simple"/></td>
-        </tr>
-        </tbody>
-    </table>
-    </div>
-
-    <div>
-      <p><i>For valid cron expression values for the Indexing Schedule, see 
<ww:a 
href="http://www.opensymphony.com/quartz/api/org/quartz/CronExpression.html";>here</ww:a></i></p>
-    </div>
-    <div>
-      <table>
-        <tr>
-          <b>Indexing Schedule Keys:</b>
-        </tr>
-        <tr>
-          <th>*</th>
-          <td>every</td>
-        </tr>
-        <tr>
-          <th>?</th>
-          <td>any</td>
-        </tr>
-        <tr>
-          <th>-</th>
-          <td>ranges</td>
-        </tr>
-        <tr>
-          <th>/</th>
-          <td>increments</td>
-        </tr>
-      </table>
-    </div>
     <ww:submit value="Save Configuration"/>
+
+    <ww:div>
+      <ww:label value="Indexing Schedule Keys:" labelposition="top"/>
+      <ww:label value="* = every" labelposition="top"/>
+      <ww:label value="? = any" labelposition="top"/>
+      <ww:label value="- = ranges" labelposition="top"/>
+      <ww:label value="/ = increments" labelposition="top"/>
+    </ww:div>
   </ww:form>
+
+  <ww:div>
+    <p><i>For valid cron expression values for the Indexing Schedule, see 
<ww:a 
href="http://www.opensymphony.com/quartz/api/org/quartz/CronExpression.html";>here</ww:a></i></p>
+  </ww:div>
 
   <script type="text/javascript">
     document.getElementById("saveConfiguration_indexPath").focus();


Reply via email to