You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@struts.apache.org by hu...@apache.org on 2007/01/06 02:03:12 UTC

svn commit: r493264 - in /struts/sandbox/trunk/overdrive/PhoneBook2: ./ projects/Core/ projects/Core/Commands/ projects/Test/ projects/Web/

Author: husted
Date: Fri Jan  5 17:03:09 2007
New Revision: 493264

URL: http://svn.apache.org/viewvc?view=rev&rev=493264
Log:
PhoneBook2 - Add formatting test, conform AppEntry with latest Nexus, refine workflow. 




Modified:
    struts/sandbox/trunk/overdrive/PhoneBook2/PhoneBook2.sln
    struts/sandbox/trunk/overdrive/PhoneBook2/projects/Core/AppEntry.cs
    struts/sandbox/trunk/overdrive/PhoneBook2/projects/Core/AppEntryList.cs
    struts/sandbox/trunk/overdrive/PhoneBook2/projects/Core/Commands/BaseEntry.cs
    struts/sandbox/trunk/overdrive/PhoneBook2/projects/Core/TelephoneProcessor.cs
    struts/sandbox/trunk/overdrive/PhoneBook2/projects/Test/Objects.xml
    struts/sandbox/trunk/overdrive/PhoneBook2/projects/Test/Test.csproj
    struts/sandbox/trunk/overdrive/PhoneBook2/projects/Web/PhoneBook.ashx
    struts/sandbox/trunk/overdrive/PhoneBook2/projects/Web/PhoneBook.html

Modified: struts/sandbox/trunk/overdrive/PhoneBook2/PhoneBook2.sln
URL: http://svn.apache.org/viewvc/struts/sandbox/trunk/overdrive/PhoneBook2/PhoneBook2.sln?view=diff&rev=493264&r1=493263&r2=493264
==============================================================================
--- struts/sandbox/trunk/overdrive/PhoneBook2/PhoneBook2.sln (original)
+++ struts/sandbox/trunk/overdrive/PhoneBook2/PhoneBook2.sln Fri Jan  5 17:03:09 2007
@@ -27,6 +27,11 @@
 		VWDPort = "3594"
 	EndProjectSection
 EndProject
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{F5B697F2-0FFC-4459-BCBB-5F6F4DB01D64}"
+	ProjectSection(SolutionItems) = preProject
+		..\Nexus\Core\Validators\DateTimeProcessor.cs = ..\Nexus\Core\Validators\DateTimeProcessor.cs
+	EndProjectSection
+EndProject
 Global
 	GlobalSection(SolutionConfigurationPlatforms) = preSolution
 		Debug|.NET = Debug|.NET

Modified: struts/sandbox/trunk/overdrive/PhoneBook2/projects/Core/AppEntry.cs
URL: http://svn.apache.org/viewvc/struts/sandbox/trunk/overdrive/PhoneBook2/projects/Core/AppEntry.cs?view=diff&rev=493264&r1=493263&r2=493264
==============================================================================
--- struts/sandbox/trunk/overdrive/PhoneBook2/projects/Core/AppEntry.cs (original)
+++ struts/sandbox/trunk/overdrive/PhoneBook2/projects/Core/AppEntry.cs Fri Jan  5 17:03:09 2007
@@ -15,6 +15,7 @@
  */
 using System;
 using System.Collections;
+using Nexus.Core;
 
 namespace PhoneBook.Core
 {
@@ -23,73 +24,41 @@
     /// </summary>
     /// 
     [Serializable]
-    public class AppEntry
+    public class AppEntry : EntryDictionary
     {
-        /// <summary>
-        /// Internal storage.
-        /// </summary>
-        /// 
-        private IDictionary _Value = new Hashtable(5);
 
-        /// <summary>
-        /// Add each source entry to our internal store. 
-        /// </summary>
-        /// <remarks><p>
-        /// Entries with keys that match the property names will be exposed. 
-        /// Other entries may be added, but can only be retrieved via Get.
-        /// </p></remarks>
-        /// <param name="sources">Entries to add</param>
-        /// 
-        public void AddAll(IDictionary sources)
+        public AppEntry()
         {
-            ICollection keys = sources.Keys;
-            foreach (string key in keys)
-            {
-                Add(key, sources[key] as string);
-            }
+            // Default contstructor	
         }
 
-        /// <summary>
-        /// Add a single entry to our internal store.
-        /// </summary>
-        /// <remarks><p>
-        /// Entries with keys that match the property names will be exposed. 
-        /// Other entries may be added, but can only be retrieved via Get.
-        /// </p></remarks>
-        /// <param name="key">ID for entry</param>
-        /// <param name="value">Content for entry</param>
-        /// 
-        public void Add(string key, string value)
+        public AppEntry(IDictionary sources)
         {
-            _Value.Add(key, value);
+            AddAll(sources);
         }
 
-        /// <summary>
-        /// Provide the value corresponding to key from the internal store.
-        /// </summary>
-        /// <param name="key">ID for entry</param>
-        /// <returns>Content for entry</returns>
-        /// 
-        public string Get(string key)
+        public AppEntry(AppEntry row)
         {
-            return _Value[key] as string;
+            AddAll(row);
         }
 
         /// <summary>
-        /// Set an entry to the internal store, overwriting any existing entry.
+        /// Add each source entry to our internal store. 
         /// </summary>
         /// <remarks><p>
-        /// This is a protected method used by the Properties. 
-        /// Use an existing Property to set values, 
-        /// or extend the class to include other Properties. 
+        /// Entries with keys that match the property names will be exposed. 
+        /// Other entries may be added, but can only be retrieved via Get.
         /// </p></remarks>
-        /// <param name="key"></param>
-        /// <param name="value"></param>
-        protected void Set(string key, string value)
+        /// <param name="row">Entries to add</param>
+        /// 
+        public void AddAll(AppEntry row)
         {
-            _Value[key] = value;
+            ICollection keys = row.Keys;
+            foreach (string key in keys)
+            {
+                Add(key, row.Get(key));
+            }
         }
-
 
         /*
         public string Property

Modified: struts/sandbox/trunk/overdrive/PhoneBook2/projects/Core/AppEntryList.cs
URL: http://svn.apache.org/viewvc/struts/sandbox/trunk/overdrive/PhoneBook2/projects/Core/AppEntryList.cs?view=diff&rev=493264&r1=493263&r2=493264
==============================================================================
--- struts/sandbox/trunk/overdrive/PhoneBook2/projects/Core/AppEntryList.cs (original)
+++ struts/sandbox/trunk/overdrive/PhoneBook2/projects/Core/AppEntryList.cs Fri Jan  5 17:03:09 2007
@@ -1,3 +1,4 @@
+using System;
 using System.Collections;
 using Nexus.Core;
 
@@ -21,7 +22,11 @@
         {
             AppEntry entry = new AppEntry();
             foreach (DictionaryEntry col in row)
-                entry.Add(col.Key.ToString(), col.Value.ToString());
+            {
+                string key = Convert.ToString(col.Key);
+                string value = Convert.ToString(col.Value);
+                entry.Add(key, value);
+            }
             Add(entry);
         }
         
@@ -30,4 +35,4 @@
             return (AppEntry[])ToArray(typeof(AppEntry));
         }
     }
-}
\ No newline at end of file
+}

Modified: struts/sandbox/trunk/overdrive/PhoneBook2/projects/Core/Commands/BaseEntry.cs
URL: http://svn.apache.org/viewvc/struts/sandbox/trunk/overdrive/PhoneBook2/projects/Core/Commands/BaseEntry.cs?view=diff&rev=493264&r1=493263&r2=493264
==============================================================================
--- struts/sandbox/trunk/overdrive/PhoneBook2/projects/Core/Commands/BaseEntry.cs (original)
+++ struts/sandbox/trunk/overdrive/PhoneBook2/projects/Core/Commands/BaseEntry.cs Fri Jan  5 17:03:09 2007
@@ -29,13 +29,18 @@
 		public override bool RequestExecute(IRequestContext context)
 		{
 			object o = Mapper.QueryForObject(QueryID, context);
-			context[ID] = o;
-			IDictionary entry = o as IDictionary;
-			foreach (DictionaryEntry e in entry)
-			{
-				context[e.Key] = e.Value;
-			}
-			return CONTINUE;
+            IDictionary result = o as IDictionary;
+
+		    ICollection keys = result.Keys;
+            foreach (string key in keys)
+            {
+                context[key] = result[key];
+            }
+
+		    AppEntry entry = new AppEntry(result);
+            context[ID] = entry;
+		    
+		    return CONTINUE;
 		}
 	}
 }

Modified: struts/sandbox/trunk/overdrive/PhoneBook2/projects/Core/TelephoneProcessor.cs
URL: http://svn.apache.org/viewvc/struts/sandbox/trunk/overdrive/PhoneBook2/projects/Core/TelephoneProcessor.cs?view=diff&rev=493264&r1=493263&r2=493264
==============================================================================
--- struts/sandbox/trunk/overdrive/PhoneBook2/projects/Core/TelephoneProcessor.cs (original)
+++ struts/sandbox/trunk/overdrive/PhoneBook2/projects/Core/TelephoneProcessor.cs Fri Jan  5 17:03:09 2007
@@ -43,7 +43,7 @@
 
 			string mark = "-";
 			if (output == null) return false;
-			string buffer = null;
+			string buffer;
 
 			if (output.Length == 10)
 			{

Modified: struts/sandbox/trunk/overdrive/PhoneBook2/projects/Test/Objects.xml
URL: http://svn.apache.org/viewvc/struts/sandbox/trunk/overdrive/PhoneBook2/projects/Test/Objects.xml?view=diff&rev=493264&r1=493263&r2=493264
==============================================================================
--- struts/sandbox/trunk/overdrive/PhoneBook2/projects/Test/Objects.xml (original)
+++ struts/sandbox/trunk/overdrive/PhoneBook2/projects/Test/Objects.xml Fri Jan  5 17:03:09 2007
@@ -3,9 +3,9 @@
 	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
 	xsi:schemaLocation="http://www.springframework.net http://www.springframework.net/xsd/spring-objects.xsd">
 
-  <import resource="web://~/Resources/AppBase.xml"/>
-  <import resource="web://~/Resources/AppConfig.xml"/>
-  <import resource="web://~/Resources/AppFields.xml"/>
-  <import resource="web://~/Resources/Catalog.xml"/>
+  <import resource="Resources/AppBase.xml"/>
+  <import resource="Resources/AppConfig.xml"/>
+  <import resource="Resources/AppFields.xml"/>
+  <import resource="Resources/Catalog.xml"/>
 
 </objects>

Modified: struts/sandbox/trunk/overdrive/PhoneBook2/projects/Test/Test.csproj
URL: http://svn.apache.org/viewvc/struts/sandbox/trunk/overdrive/PhoneBook2/projects/Test/Test.csproj?view=diff&rev=493264&r1=493263&r2=493264
==============================================================================
--- struts/sandbox/trunk/overdrive/PhoneBook2/projects/Test/Test.csproj (original)
+++ struts/sandbox/trunk/overdrive/PhoneBook2/projects/Test/Test.csproj Fri Jan  5 17:03:09 2007
@@ -73,6 +73,7 @@
     <Compile Include="BaseTest.cs" />
     <Compile Include="Commands\DirectoryViewTest.cs" />
     <Compile Include="Commands\FilterLists.cs" />
+    <Compile Include="Commands\FormatEntry.cs" />
     <Compile Include="Commands\SelectAllTest.cs" />
     <Compile Include="Properties\AssemblyInfo.cs" />
   </ItemGroup>

Modified: struts/sandbox/trunk/overdrive/PhoneBook2/projects/Web/PhoneBook.ashx
URL: http://svn.apache.org/viewvc/struts/sandbox/trunk/overdrive/PhoneBook2/projects/Web/PhoneBook.ashx?view=diff&rev=493264&r1=493263&r2=493264
==============================================================================
--- struts/sandbox/trunk/overdrive/PhoneBook2/projects/Web/PhoneBook.ashx (original)
+++ struts/sandbox/trunk/overdrive/PhoneBook2/projects/Web/PhoneBook.ashx Fri Jan  5 17:03:09 2007
@@ -48,13 +48,13 @@
 
         [JsonRpcMethod(App.ENTRY_LIST, Idempotent = true)]
         [JsonRpcHelp("Returns the complete directory as an array of formatted IDictionary objects.")]
-        public AppEntry[] entry_list()
+        public AppEntryList entry_list()
         {
             IViewHelper helper = GetCatalog().GetHelperFor(App.ENTRY_LIST);
             helper.Execute();
             // if helper.IsNominal ... 
             AppEntryList list = helper.Outcome as AppEntryList;
-            return list.ToAppEntryArray();
+            return list;
         }
 
         [JsonRpcMethod(App.ENTRY, Idempotent = true)]
@@ -65,18 +65,20 @@
             helper.Criteria[App.ENTRY_KEY] = key;
             helper.Execute();
             // if helper.IsNominal ... 
-            return helper.Outcome[0] as AppEntry;
+            AppEntry entry = new AppEntry(helper.Criteria);
+            return entry;
         }
 
         [JsonRpcMethod(App.ENTRY_SAVE, Idempotent = true)]
         [JsonRpcHelp("Saves the entry, insert or updating as appropriate.")]
-        public IDictionary entry_save(IDictionary input)
+        public AppEntry entry_save(IDictionary input)
         {
             IViewHelper helper = GetCatalog().GetHelperFor(App.ENTRY_SAVE);
             helper.Read(input,true);
             helper.Execute();
             // if helper.IsNominal ... 
-            return helper.Outcome[0] as IDictionary;
+            AppEntry entry = new AppEntry(helper.Criteria);
+            return entry;
         }
             
     }

Modified: struts/sandbox/trunk/overdrive/PhoneBook2/projects/Web/PhoneBook.html
URL: http://svn.apache.org/viewvc/struts/sandbox/trunk/overdrive/PhoneBook2/projects/Web/PhoneBook.html?view=diff&rev=493264&r1=493263&r2=493264
==============================================================================
--- struts/sandbox/trunk/overdrive/PhoneBook2/projects/Web/PhoneBook.html (original)
+++ struts/sandbox/trunk/overdrive/PhoneBook2/projects/Web/PhoneBook.html Fri Jan  5 17:03:09 2007
@@ -21,7 +21,7 @@
                     {
                         var bindArgs = {
                             url: call.url+'?rpc',
-                            error: function(type, data, evt){alert("Error Communicating with Server: " + data);},
+                            error: function(type, data, evt){alert("Error Communicating with Server: " + data.result);},
                             method: "POST",
                             mimetype: "text/json",
                             handle: call.callback,
@@ -47,10 +47,7 @@
                     
                     function entry_list_select_result(evt) {                   
                         var table = dojo.widget.byId("entry_list");
-                        var row = table.getSelectedData();
-                        var user_name = row.user_name; 
-                        var entry_key = row.entry_key;
-                        alert(user_name + " (" + entry_key + ") is selected.");
+                        entry_edit(table.getSelectedData().entry_key);
                     }                   
                     function entry_list_select() {
                         dojo.event.connect(dojo.byId("entry_list"), "onSelect",	entry_list_select_result);
@@ -83,6 +80,17 @@
 			        			        
                     /* editor */
                     
+                    function entry_edit_result(type, data, evt) 
+                    {
+                    	var w = dojo.widget.byId("entry_form");         
+                    	w.setValues(data.result);     
+                    	      	                        
+                    }
+                    function entry_edit(entry_key) 
+                    {
+                        PhoneBook.rpc.entry(entry_key,entry_edit_result).call(server);
+                    }
+
                     function entry_save_result(type, data, evt)
                     {
                     	alert ( "Added: " + data.result.user_name + " (" + data.result.entry_key + ")" );
@@ -158,29 +166,8 @@
     	</style>                            
     </head>
     <body>   
-        
-        <div id="editor">
-        <form id="entry_form" dojoType="Form">
-            <table><tr>
-                    <td>First Name</td><td><input name="first_name" /></td>
-                </tr><tr>
-                    <td>Last Name</td><td><input name="last_name" /></td>
-                </tr><tr>
-                    <td>Extension</td><td><input name="extension" /></td>
-                </tr><tr>
-                    <td>User Name</td><td><input name="user_name" /></td>
-                </tr><tr>
-                    <td>Hired</td><td><input type="text" name="hired" dojoType="dropdowndatepicker" displayFormat="dd/MM/yyyy" /></td>
-                </tr><tr>
-                    <td>Hours</td><td><input name="hours" /></td>
-                </tr><tr>
-                    <td rowspan="2"><input type="button" onClick="entry_save();" value="SAVE" />
-                    <input type="hidden" name="editor" value="1" />
-                    <input type="hidden" name="entry_key" />
-                </td>
-            </tr></table>
-        </form>
-        </div>
+    
+        <div id="finder" />
         
         <div id="lister">
 	    <table id="entry_list" 
@@ -203,9 +190,34 @@
 		<input type="button" onclick="applyName('entry_list');" value="Show only names between M and Z" /> 
 		<input type="button" value="Show All Entries" onclick="clearFilters('entry_list');" />
 		<input type="button" value="Reload Data" onclick="reloadData('entry_list');" />
-		<input type="button" value="Select Row" onclick="entry_list_select_result('entry_list');" />
+		<input type="button" value="Edit Row" onclick="entry_list_select_result('entry_list');" />
        	</p>
        	</div> 
        	
+       	<div id="viewer" />
+       	
+        <div id="editor">
+        <form id="entry_form" dojoType="Form">
+            <table><tr>
+                    <td>First Name</td><td><input name="first_name" /></td>
+                </tr><tr>
+                    <td>Last Name</td><td><input name="last_name" /></td>
+                </tr><tr>
+                    <td>Extension</td><td><input name="extension" /></td>
+                </tr><tr>
+                    <td>User Name</td><td><input name="user_name" /></td>
+                </tr><tr>
+                    <td>Hired</td><td><input name="hired" dojoType="dropdowndatepicker" displayFormat="dd/MM/yyyy" /></td>
+                </tr><tr>
+                    <td>Hours</td><td><input name="hours" /></td>
+                </tr><tr>
+                    <td rowspan="2"><input type="button" onClick="entry_save();" value="SAVE" />
+                    <input type="hidden" name="editor" value="1" />
+                    <input type="hidden" name="entry_key" />
+                </td>
+            </tr></table>
+        </form>
+        </div>
+        
     </body>
 </html>