<SandMessageArray _field="_root_value" _length="166">
<Task _field="_root_value_0"
name="serious+template+infrastructure"
description="TaskHeap+could+benefit+from+a+serious+template+infrastructure+that+would+serve+as+a+model+for+a+real-world+application.+While+keeping+things+as+approachable+as+possible+is+still+a+major+goal%2C+showing+how+to+do+this+at+industrial+strength+levels+is+extremely+important."
parent="1206"
resourceID="0"
timeEstimate="8"
dueDate="Apr+7%2C+2015+9%3A59%3A35+PM"
taskTypeID="1007"
taskPhaseID="1001"
uniqueID="1207"
creationTime="Jul+12%2C+2004+5%3A54%3A35+PM"
lastModifiedTime="Jul+21%2C+2004+1%3A36%3A45+PM"
lastModifiedReason="UIFormManager+delete"
revisionNumber="6"
recordStatus="1"
>
<NoteArray _field="notes" _length="1">
<Note _field="notes_0"
subject="remaining+work"
comment="What%27s+left%3A%0D%0A++-+Navbar+links+without+underlines+and+with+hovering.%0D%0A++-+General+summary+transformations+for+users%2Freaders+would+be+good.%0D%0A++-+Plan+tree+links+without+underlines+and+with+hovering+%28lower+prio%29"
authorID="1203"
>
</Note>
</NoteArray>
</Task>
<Task _field="_root_value_1"
name="Unsaved+data+not+found+for+display"
description="When+creating+a+new+instance+to+serve+as+a+reference%2C+the+display+can%27t+find+it+and+ends+up+showing+a+default+instance+of+the+same+type.+This+is+fixed+after+the+AggregateUpdate+is+processed+successfully%2C+but+it+looks+ugly+in+the+interim+and+looks+like+an+error.+Have+the+display+processing+find+this+in+the+outstanding+updates"
parent="1260"
resourceID="0"
timeEstimate="8"
dueDate="Apr+7%2C+2015+9%3A59%3A35+PM"
taskTypeID="1006"
taskPhaseID="1003"
uniqueID="1208"
creationTime="Jul+12%2C+2004+5%3A54%3A35+PM"
lastModifiedTime="Jun+8%2C+2005+10%3A29%3A27+AM"
lastModifiedReason="TaskHeap+bookkeeping%3A+set+parent+to+1260"
revisionNumber="5"
recordStatus="0"
>
<NoteArray _field="notes" _length="1">
<Note _field="notes_0"
subject="works+now"
comment="From+all+I+can+tell%2C+this+is+now+working.++When+I+edit+a+Plan+and+add+a+new+Task%2C+the+task+is+displayed+before+saving.++Before+saving+it+is+displayed+as+a+Task+because+that%27s+what+gets+found+in+the+lookup.++After+saving+it+is+displayed+as+a+PlanComponent+since+that+is+what+gets+retrieved+for+the+collection.++But+nothing+innacurate+shows+up+so+closing+this+out."
authorID="1203"
>
</Note>
</NoteArray>
</Task>
<Task _field="_root_value_2"
name="Move+UpdateMgr+to+calc+server"
description="When+application+processing+gets+serious%2C+we+end+up+moving+the+UpdateMgr+over+to+be+with+the+rest+of+the+application+nodes+and+making+it+the+default+IDLookup+there.+This+can+cause+pain+if+there+is+any+laziness+with+regard+to+assuming+direct+communications+%28not+filling+out+SandTransmitAuthID%29.+We+should+move+this+over+immediately+so+TaskHeap+is+a+better+general+example."
parent="1206"
resourceID="0"
timeEstimate="8"
dueDate="Apr+7%2C+2015+9%3A59%3A35+PM"
taskTypeID="1007"
taskPhaseID="1001"
uniqueID="1209"
creationTime="Jul+12%2C+2004+5%3A54%3A35+PM"
lastModifiedTime="Aug+3%2C+2004+1%3A40%3A41+PM"
lastModifiedReason="UIFormManager+delete"
revisionNumber="2"
recordStatus="1"
>
<NoteArray _field="notes" _length="0">
</NoteArray>
</Task>
<Task _field="_root_value_3"
name="Faster+class+disambiguation"
description="When+adding+a+new+PlanComponent+or+querying+for+a+PlanComponent%2C+the+default+class+type+should+be+Task%2C+and+you+should+be+able+to+get+that+by+just+hitting+the+return+button."
parent="1206"
resourceID="0"
timeEstimate="8"
dueDate="Apr+7%2C+2015+9%3A59%3A35+PM"
taskTypeID="1007"
taskPhaseID="1001"
uniqueID="1210"
creationTime="Jul+12%2C+2004+5%3A54%3A35+PM"
lastModifiedTime="Jul+29%2C+2004+5%3A21%3A10+PM"
lastModifiedReason="UIFormManager+delete"
revisionNumber="5"
recordStatus="1"
>
<NoteArray _field="notes" _length="3">
<Note _field="notes_0"
subject="filter+the+selection+options"
comment="On+a+related+note%2C+it+should+be+possible+to+filter+the+selection+options+so+you+can%27t+add+a+plain+PlanComponent+message.++It%27s+only+valid+to+add+Tasks%2C+Plans+or+ExternalPlans.++We+should+catch+this+in+the+UpdateManager%2C+but+we+should+be+able+to+remove+this+as+a+possible+selection+value+also."
authorID="1203"
>
</Note>
<Note _field="notes_1"
subject="Smart+positioning+and+button+selection"
comment="The+main+point+of+this+task+is+actually+the+larger+issue+of+positioning+the+focus+somewhere+useful+for+tabbing+through+fields%2C+and+having+a+reasonable+guess+as+to+which+button+should+be+selected+by+default.%0D%0A%0D%0AWe+need+to+be+able+to+label+the+focus+and+default+button+for+any+screen+definition%2C+and+then+generate+the+script+to+set+this+approprriately."
authorID="1203"
>
</Note>
<Note _field="notes_2"
subject="done+for+now"
comment="This+is+a+lot+better+than+it+was.++There+are+reasonable+focus+defaults+in+most+cases.++Certainly+enough+to+smooth+out+the+disambiguation.++The+typical+class+prompt+defaults+to+Task%2C+and+sets+the+focus+at+the+selection+window.++You+actually+have+to+tab+to+the+ok%2C+but+that+way+you+at+least+have+to+confirm+the+selection%2C+which+is+important."
authorID="1203"
>
</Note>
</NoteArray>
</Task>
<Task _field="_root_value_4"
name="Task+to+Plan+conversion"
description="With+buttons+to+transform+a+Task+into+a+Plan%2C+hierarchy+maintenance+gets+a+lot+easier+and+you+don%27t+have+to+think+so+much+when+entering+things.+This+should+possibly+be+a+%22wrap+task%22+button.+Not+sure+if+we+need+to+downgrade+a+plan+into+a+task%2C+probably+not."
parent="1297"
resourceID="0"
timeEstimate="8"
dueDate="Apr+7%2C+2015+9%3A59%3A35+PM"
taskTypeID="1007"
taskPhaseID="1002"
uniqueID="1211"
creationTime="Jul+12%2C+2004+5%3A54%3A35+PM"
lastModifiedTime="Mar+23%2C+2005+10%3A38%3A06+AM"
lastModifiedReason="TaskHeap+bookkeeping%3A+set+parent+to+1297"
revisionNumber="4"
recordStatus="0"
>
<NoteArray _field="notes" _length="0">
</NoteArray>
</Task>
<Task _field="_root_value_5"
name="Task+display+starts+as+summary"
description="When+you+first+look+at+a+Task+%28or+a+Plan+for+that+matter%29%2C+it%27s+more+helpful+to+start+off+viewing+the+description+and+the+notes%2C+rather+than+the+instance.%0D%0AThere+should+be+a+button+to+switch+to+editing+the+task+directly."
parent="1206"
resourceID="0"
timeEstimate="8"
dueDate="Apr+7%2C+2015+9%3A59%3A35+PM"
taskTypeID="1007"
taskPhaseID="1001"
uniqueID="1212"
creationTime="Jul+12%2C+2004+5%3A54%3A35+PM"
lastModifiedTime="Jul+29%2C+2004+9%3A07%3A52+PM"
lastModifiedReason="UIFormManager+delete"
revisionNumber="2"
recordStatus="1"
>
<NoteArray _field="notes" _length="0">
</NoteArray>
</Task>
<Task _field="_root_value_6"
name="Filter+to+only+your+assignments"
description="Allow+the+initial+display+to+be+filtered+to+only+the+stuff+assigned+to+you.%0D%0ASo+if+you+want+to+focus+in+on+your+work%2C+you+can.%0D%0A%0D%0AClosing+this+out.++If+you+want+to+find+your+tasks%2C+go+to+the+tasks+screen%2C+click+find%2C+and+enter+your+resourceID.++The+idea+is+for+everyone+to+see+the+project+so+it+becomes+a+shared+view+of+what+is+going+on.++Don%27t+see+a+need+for+this."
parent="1335"
resourceID="0"
timeEstimate="8"
dueDate="Apr+7%2C+2015+9%3A59%3A35+PM"
taskTypeID="1007"
taskPhaseID="1003"
uniqueID="1213"
creationTime="Jul+12%2C+2004+5%3A54%3A35+PM"
lastModifiedTime="Aug+4%2C+2005+4%3A00%3A35+PM"
lastModifiedReason="TaskHeap+bookkeeping%3A+set+parent+to+1335"
revisionNumber="5"
recordStatus="0"
>
<NoteArray _field="notes" _length="0">
</NoteArray>
</Task>
<Task _field="_root_value_7"
name="default+update+comments"
description="The+UI+needs+to+provide+default+comments+like+%22added+new+task+id%3A+4245%22+or+suchlike+on+modification.+This+sets+us+up+for+automatically+generating+an+audit+trail+change+log+of+all+updates."
parent="1206"
resourceID="0"
timeEstimate="8"
dueDate="Apr+7%2C+2015+9%3A59%3A35+PM"
taskTypeID="1007"
taskPhaseID="1002"
uniqueID="1214"
creationTime="Jul+12%2C+2004+5%3A54%3A35+PM"
lastModifiedTime="Aug+6%2C+2004+2%3A14%3A44+PM"
lastModifiedReason="UIFormManager+delete"
revisionNumber="3"
recordStatus="1"
>
<NoteArray _field="notes" _length="0">
</NoteArray>
</Task>
<Task _field="_root_value_8"
name="dynamic+config+editor+updates"
description="sourceforge+bug%3A%0D%0Ahttp%3A%2F%2Fsourceforge.net%2Ftracker%2Findex.php%3Ffunc%3Ddetail%26aid%3D672238%26group_id%3D46466%26atid%3D446222%0D%0A%0D%0ABasically+the+idea+is+to+have+the+config+editor+notify+the+SandBossRoot+so%0D%0Athe+changes+take+place+without+having+to+restart+the+container.+While%0D%0Amaking+the+config+editor+a+standalone+tool+will+make+things+less%0D%0Aconfusing%2C+the+dynamic+restart+is+a+good+thing+to+have+anyway."
parent="1216"
resourceID="0"
timeEstimate="40"
dueDate="Apr+7%2C+2015+9%3A59%3A35+PM"
taskTypeID="1007"
taskPhaseID="1001"
uniqueID="1217"
creationTime="Jul+12%2C+2004+5%3A56%3A50+PM"
lastModifiedTime="Jul+12%2C+2004+6%3A21%3A28+PM"
lastModifiedReason="initial+creation"
revisionNumber="3"
recordStatus="0"
>
<NoteArray _field="notes" _length="1">
<Note _field="notes_0"
subject="hot+deploy+on+build"
comment="At+this+point+you+need+to+redeploy+the+updated+config.xml+file%2C+so+maybe+that+will+help+eliminate+some+of+the+confusion+around+what%27s+going+on.++Currently+we+don%27t+pick+up+on+this+in+a+hot-deploy%2C+but+that+may+be+possible.++This+might+be+worth+a+separate+task."
authorID="1203"
>
</Note>
</NoteArray>
</Task>
<Task _field="_root_value_9"
name="use+-linksource+for+javadoc"
description="Sourceforge+RFE%0D%0Ahttp%3A%2F%2Fsourceforge.net%2Ftracker%2Findex.php%3Ffunc%3Ddetail%26aid%3D617725%26group_id%3D46466%26atid%3D446225%0D%0A%0D%0ABasically+we+want+to+be+able+to+drill+through+to+the+source%2C+but+if+this+makes+javadoc+even+slower+then+it+needs+to+be+a+switchable+option."
parent="1216"
resourceID="0"
timeEstimate="8"
dueDate="Apr+7%2C+2015+9%3A59%3A35+PM"
taskTypeID="1007"
taskPhaseID="1001"
uniqueID="1218"
creationTime="Jul+12%2C+2004+6%3A01%3A52+PM"
lastModifiedTime="Jul+12%2C+2004+6%3A01%3A52+PM"
lastModifiedReason="initial+creation"
revisionNumber="1"
recordStatus="0"
>
<NoteArray _field="notes" _length="0">
</NoteArray>
</Task>
<Task _field="_root_value_10"
name="build+process+monitors+warnings"
description="Sourceforge+RFE%0D%0Ahttp%3A%2F%2Fsourceforge.net%2Ftracker%2Findex.php%3Ffunc%3Ddetail%26aid%3D665051%26group_id%3D46466%26atid%3D446225%0D%0A%0D%0AOur+build+has+improved+a+bunch%2C+but+it+would+be+nice+to+have+it+optionally+stop+if+a+warning+was+generated."
parent="1216"
resourceID="0"
timeEstimate="8"
dueDate="Apr+7%2C+2015+9%3A59%3A35+PM"
taskTypeID="1007"
taskPhaseID="1001"
uniqueID="1219"
creationTime="Jul+12%2C+2004+6%3A02%3A56+PM"
lastModifiedTime="Jul+12%2C+2004+6%3A02%3A56+PM"
lastModifiedReason="initial+creation"
revisionNumber="1"
recordStatus="0"
>
<NoteArray _field="notes" _length="0">
</NoteArray>
</Task>
<Task _field="_root_value_11"
name="localized+XHTMLFormAdaptor"
description="Sourceforge+RFE%0D%0Ahttp%3A%2F%2Fsourceforge.net%2Ftracker%2Findex.php%3Ffunc%3Ddetail%26aid%3D699679%26group_id%3D46466%26atid%3D446225%0D%0A%0D%0ABasically+extend+XHTMLFormAdaptor+and+use+the+locale+to+lookup+what+the+button+text+and+suchlike+should+be."
parent="1216"
resourceID="0"
timeEstimate="24"
dueDate="Apr+7%2C+2015+9%3A59%3A35+PM"
taskTypeID="1007"
taskPhaseID="1001"
uniqueID="1220"
creationTime="Jul+12%2C+2004+6%3A03%3A39+PM"
lastModifiedTime="Jul+12%2C+2004+6%3A21%3A02+PM"
lastModifiedReason="initial+creation"
revisionNumber="3"
recordStatus="0"
>
<NoteArray _field="notes" _length="0">
</NoteArray>
</Task>
<Task _field="_root_value_12"
name="add+totalMatched+field+to+SandCollectionMessage"
description="Sourceforge+RFE%0D%0Ahttp%3A%2F%2Fsourceforge.net%2Ftracker%2Findex.php%3Ffunc%3Ddetail%26aid%3D699738%26group_id%3D46466%26atid%3D446225%0D%0A%0D%0AQuery+stats+are+important%2C+but+can+cause+overhead.++From+our+current+work+we+know+that+retrieving+a+count+%28for+example+a+count+of+the+total+number+of+tasks%29%2C+without+the+overehead+of+actually+transferring+data+can+be+critically+important+for+generating+a+stats+page+or+workflow+summary."
parent="1260"
resourceID="0"
timeEstimate="24"
dueDate="Apr+7%2C+2015+9%3A59%3A35+PM"
taskTypeID="1007"
taskPhaseID="1002"
uniqueID="1221"
creationTime="Jul+12%2C+2004+6%3A13%3A05+PM"
lastModifiedTime="Mar+23%2C+2005+10%3A45%3A08+AM"
lastModifiedReason="TaskHeap+bookkeeping%3A+set+parent+to+1260"
revisionNumber="10"
recordStatus="0"
>
<NoteArray _field="notes" _length="3">
<Note _field="notes_0"
subject="count%28*%29+is+important"
comment="One+possibility+here+is+to+add+some+standard+aggregate+methods+to+SandQueryMessage+to+allow+for+returning+of+values.++For+example+a+%22processingMode%22+field+that+defaults+to+NORMAL%2C+but+also+allows+for+COUNT.%0D%0AOther+functions+like+AVG+or+SUM+could+be+added+and+applied+to+the+first+attr+in+the+match+expression.++That+would+allow+for+reasonably+efficient+summary+type+information+retrieval."
authorID="1203"
>
</Note>
<Note _field="notes_1"
subject="9mar05+separate+function+from+match"
comment="We+don%27t+want+to+confuse+the+match+criteria+%28the+SandAttrVals+in+the+query%29+with+operands+for+an+aggregate+function.++So+the+current+thinking+is+to+add+a+%22function%22+field+to+each+SandQueryMessage+with+values+of+%0D%0ADATA%3A+standard+function%2C+return+the+instances+requested%0D%0ACOUNT%3A+return+the+total+count+of+matched+instances%2C+but+no+actual+data%0D%0AAVG%3A+return+the+average+of+the+specified+operation+field%28s%29%0D%0AMAX%3A+return+the+maximum+of+the+specified+operation+field%28s%29%0D%0AMIN%3A+return+the+minimum+value+of+the+specified+operation+field%28s%29%0D%0A%0D%0AThat+implies+adding+an+%22operationFields%22+string+to+the+SandQueryMessage+which+holds+a+CSV+of+field+names+that+will+be+used+for+the+specified+operation.++So+for+example+you+could+return+the+AVG+timeEstimate+for+all+Tasks+matching+the+given+critera.%0D%0A%0D%0ASandCollectionMessage+gets+a+corresponding+String+%22result%22+field+that+holds+the+results+as+a+CSV+corresponding+to+the+operation+fields.++Even+though+most+of+the+values+from+aggregates+functions+are+numeric%2C+using+a+String+allows+us+to+return+multiple+values+and+is+more+flexible."
authorID="1203"
>
</Note>
<Note _field="notes_2"
subject="9mar05+Intelligent+paging+wants+totals"
comment="Intelligent+pagination+displays+can+make+use+of+a+total%2C+so+whenever+possible+we+will+fill+that+in+even+when+the+function+is+DATA%2C+provided+it+doesn%27t+add+significant+processing+overhead.++In+other+words+if+this+is+available+from+the+stats+on+the+query%2C+then+we+fill+it+in%2C+otherwise+we+leave+the+result+as+null+and+the+caller+will+need+to+make+a+separate+query+with+an+aggregate+function+to+retrieve+the+total."
authorID="1203"
>
</Note>
</NoteArray>
</Task>
<Task _field="_root_value_13"
name="polymorphic+message+collections"
description="Sourceforge+RFE%0D%0Ahttp%3A%2F%2Fsourceforge.net%2Ftracker%2Findex.php%3Ffunc%3Ddetail%26aid%3D699765%26group_id%3D46466%26atid%3D446225%0D%0A%0D%0ABasically+this+is+a+security+issue+vs+a+demand+issue.+Waiting+for+a+real+driving+case+that+isn%27t+a+case+of+sloppy+design+and%2For+inadequate+authorization+considerations."
parent="1216"
resourceID="0"
timeEstimate="80"
dueDate="Apr+7%2C+2015+9%3A59%3A35+PM"
taskTypeID="1007"
taskPhaseID="1001"
uniqueID="1222"
creationTime="Jul+12%2C+2004+6%3A19%3A07+PM"
lastModifiedTime="Jul+12%2C+2004+6%3A20%3A22+PM"
lastModifiedReason="initial+creation"
revisionNumber="2"
recordStatus="0"
>
<NoteArray _field="notes" _length="0">
</NoteArray>
</Task>
<Task _field="_root_value_14"
name="message+struct+version+checking"
description="Sourceforge+RFE%0D%0Ahttp%3A%2F%2Fsourceforge.net%2Ftracker%2Findex.php%3Ffunc%3Ddetail%26aid%3D699791%26group_id%3D46466%26atid%3D446225%0D%0A%0D%0AThis+is+excellent+functionality+which+we+should+probably+deliver+on+an+as-needed+basis.++Waiting+to+drive+the+general+solution+from+a+real+application+so+we+can+demonstrate+appropriate+testing+and+node+reactions+to+old+formats.++Version+checking+follows+the+80%2F20+rule%2C+and+we+want+a+real+case+to+provide+the+focus."
parent="1216"
resourceID="0"
timeEstimate="60"
dueDate="Apr+7%2C+2015+9%3A59%3A35+PM"
taskTypeID="1007"
taskPhaseID="1001"
uniqueID="1223"
creationTime="Jul+12%2C+2004+6%3A19%3A46+PM"
lastModifiedTime="Jul+13%2C+2004+1%3A27%3A38+PM"
lastModifiedReason="initial+creation"
revisionNumber="2"
recordStatus="0"
>
<NoteArray _field="notes" _length="0">
</NoteArray>
</Task>
<Task _field="_root_value_15"
name="%40sand.link+for+javadoc"
description="Sourceforge+RFE%0D%0Ahttp%3A%2F%2Fsourceforge.net%2Ftracker%2Findex.php%3Ffunc%3Ddetail%26aid%3D780840%26group_id%3D46466%26atid%3D446225%0D%0A%0D%0ABasically+putting+explicit+relative+paths+in+the+javadoc+comments+is+ugly+and+kind+of+hard+to+maintain.+The+javadoc+-link+option+is+kind+of+scary+due+to+the+way+it+brings+in+absolutely+everything%2C+but+our+own+linkage+would+not+be+too+bad+and+would+probably+be+very+useful.+Especially+since+we+could+then+run+some+analysis+or+even+generate+our+own+%22see+also%22+type+link+lookups+from+the+core+classes+out+to+the+technology+interface+implementations.+Nice+to+have."
parent="1216"
resourceID="0"
timeEstimate="40"
dueDate="Apr+7%2C+2015+9%3A59%3A35+PM"
taskTypeID="1007"
taskPhaseID="1001"
uniqueID="1224"
creationTime="Jul+12%2C+2004+6%3A48%3A33+PM"
lastModifiedTime="Jul+15%2C+2004+9%3A44%3A05+AM"
lastModifiedReason="initial+creation"
revisionNumber="3"
recordStatus="0"
>
<NoteArray _field="notes" _length="1">
<Note _field="notes_0"
subject="Func+req+linkage"
comment="When+generating+a+functional+requirements+document+from+the+struct+and+node+doc+information%2C+being+able+to+trap+internal+linkage+would+allow+us+to+have+consistent+traversal.++Yet+another+reason+why+this+is+useful."
authorID="1203"
>
</Note>
</NoteArray>
</Task>
<Task _field="_root_value_16"
name="automatic+database+reset"
description="This+was+previously+called+%22autogen+ClearDatabase.sql%22+but+that%27s+HSQL+specific+and+doesn%27t+really+solve+the+whole+problem.++Here%27s+the+use+case%3A+you+have+a+demo+deployment+set+up+that+you+want+to+frequently+reset+to+a+known+starting+state+so+you+can+re-run+the+same+script+or+rebuild+the+playspace.%0D%0A%0D%0AIn+terms+of+TaskHeap%2C+you+want+a+%22reset+database%22+button+on+the+Admin+screen+that+sends+a+DataReset+message+over+to+the+DataManager%2C+which+calls+the+Persister%2C+which+deletes+everything+in+the+database%2C+and+imports+data+from+the+export+file.++On+completion%2C+the+processing+signals+a+global+restart+of+the+app.%0D%0A%0D%0ATo+do+this+we+need%0D%0A1.+A+config+parameter+for+the+DataManager+to+allow%2Fdisallow+reset%0D%0A2.+Create+a+DataResetStruct+in+apps%2Fbasics+%28see+DataImportExportStruct%29%0D%0A3.+Set+up+the+TaskHeap+button%2C+message+plumbing+etc%0D%0A4.+Implement+the+database+reset%2C+followed+by+data+import%0D%0A5.+DataManager+calls+systemwideShutdown%28SHUTDOWN_ERROR_RESTART_GLOBAL%29+%0D%0A%0D%0ASourceforge+RFE%0D%0Ahttp%3A%2F%2Fsourceforge.net%2Ftracker%2Findex.php%3Ffunc%3Ddetail%26aid%3D819294%26group_id%3D46466%26atid%3D446225"
parent="1279"
resourceID="0"
timeEstimate="24"
dueDate="Apr+7%2C+2015+9%3A59%3A35+PM"
taskTypeID="1007"
taskPhaseID="1001"
uniqueID="1225"
creationTime="Jul+13%2C+2004+9%3A59%3A25+AM"
lastModifiedTime="Oct+24%2C+2005+5%3A25%3A41+PM"
lastModifiedReason=""
revisionNumber="6"
recordStatus="0"
>
<NoteArray _field="notes" _length="1">
<Note _field="notes_0"
subject="24oct05+auto+data+load+works"
comment="The+ReinitConverter+now+imports+the+existing+data+specified+in+the+build+config.++We+can+do+something+similar+for+the+db+reset."
authorID="1203"
>
</Note>
</NoteArray>
</Task>
<Task _field="_root_value_17"
name="dynamicrefresh+FieldTagFlag"
description="Sourceforge+RFE%0D%0Ahttp%3A%2F%2Fsourceforge.net%2Ftracker%2Findex.php%3Ffunc%3Ddetail%26aid%3D826951%26group_id%3D46466%26atid%3D446225%0D%0A%0D%0AI+want+some+more+requirements+and+specification+before+putting+a+solution+forward.++Looking+for+a+general+solution+involving+field+triggers."
parent="1216"
resourceID="0"
timeEstimate="40"
dueDate="Apr+7%2C+2015+9%3A59%3A35+PM"
taskTypeID="1007"
taskPhaseID="1001"
uniqueID="1226"
creationTime="Jul+13%2C+2004+10%3A05%3A12+AM"
lastModifiedTime="Jul+13%2C+2004+10%3A05%3A37+AM"
lastModifiedReason="initial+creation"
revisionNumber="2"
recordStatus="0"
>
<NoteArray _field="notes" _length="0">
</NoteArray>
</Task>
<Task _field="_root_value_18"
name="Link.linkType%3Dmacro"
description="At+the+time+of+this+writing+we+have+form+links%2C+text+links%2C+and+empty+links+%28which+are+essentially+invisible+action+holders%29.+A+macro+link+is+a+variant+of+a+text+link%2C+where+the+value+is+determined+through+a+callback+to+the+UIFormOwner.+This+is+useful+for+context-dependent+dynamic+linkage+similar+to+what+we+can+do+in+generated+report+text%2C+but+limited+to+within+a+given+page.%0D%0A%0D%0AWaiting+for+a+driving+case+before+implementing."
parent="1216"
resourceID="0"
timeEstimate="8"
dueDate="Apr+7%2C+2015+9%3A59%3A35+PM"
taskTypeID="1007"
taskPhaseID="1001"
uniqueID="1227"
creationTime="Jul+13%2C+2004+10%3A18%3A47+AM"
lastModifiedTime="Jul+13%2C+2004+10%3A18%3A47+AM"
lastModifiedReason="initial+creation"
revisionNumber="1"
recordStatus="0"
>
<NoteArray _field="notes" _length="0">
</NoteArray>
</Task>
<Task _field="_root_value_19"
name="%40sand.flags+blobpersist"
description="This+is+analogous+to+%40sand.flags+stringpersist%2C+but+stores+the+result+as+a+blob+rather+than+a+String.++Need+a+real+driving+case+for+when+stringpersist+won%27t+cut+it."
parent="1216"
resourceID="0"
timeEstimate="8"
dueDate="Apr+7%2C+2015+9%3A59%3A35+PM"
taskTypeID="1007"
taskPhaseID="1001"
uniqueID="1228"
creationTime="Jul+13%2C+2004+10%3A39%3A47+AM"
lastModifiedTime="Jul+13%2C+2004+10%3A39%3A47+AM"
lastModifiedReason="initial+creation"
revisionNumber="1"
recordStatus="0"
>
<NoteArray _field="notes" _length="0">
</NoteArray>
</Task>
<Task _field="_root_value_20"
name="general+match+expression+query+field"
description="In+the+query+forms+we+generate%2C+we+should+display+a+sandMatchExpression+text+entry+where+you+can+put+raw+match+expressions%2C+including+access+to+subfields+etc.+Any+entered+text+simply+gets+passed+through+raw.+The+field+can+be+removed+in+display+transformation+when+it%27s+not+needed.+%0D%0A%0D%0AWhat+this+does+is+provide+join+capability+to+the+end+user%2C+but+at+the+expense+of+increased+form+complexity.++So+far+we%27ve+dealt+with+this+kind+of+a+perceived+need+using+custom+actions+and+other+hooks.++Not+sure+if+this+is+a+real+need+or+not+so+waiting+for+a+driving+case."
parent="1216"
resourceID="0"
timeEstimate="8"
dueDate="Apr+7%2C+2015+9%3A59%3A35+PM"
taskTypeID="1007"
taskPhaseID="1001"
uniqueID="1229"
creationTime="Jul+13%2C+2004+10%3A42%3A04+AM"
lastModifiedTime="Jul+13%2C+2004+10%3A42%3A04+AM"
lastModifiedReason="initial+creation"
revisionNumber="1"
recordStatus="0"
>
<NoteArray _field="notes" _length="0">
</NoteArray>
</Task>
<Task _field="_root_value_21"
name="duplicate+sand+declarations"
description="When+the+same+%40sand.xyz+tag+is+used+more+than+once+%28usually+a+result+of+cut+and+paste%29%2C+it+can+be+difficult+to+see.+Consider+spitting+out+a+build+warning+or+failing+the+build+when+this+happens."
parent="1230"
resourceID="0"
timeEstimate="8"
dueDate="Apr+7%2C+2015+9%3A59%3A35+PM"
taskTypeID="1007"
taskPhaseID="1001"
uniqueID="1231"
creationTime="Jul+13%2C+2004+1%3A31%3A28+PM"
lastModifiedTime="Jul+13%2C+2004+1%3A31%3A28+PM"
lastModifiedReason="initial+creation"
revisionNumber="1"
recordStatus="0"
>
<NoteArray _field="notes" _length="0">
</NoteArray>
</Task>
<Task _field="_root_value_22"
name="warn+about+uninitialized+comms"
description="When+a+communication+path+is+not+configured%2C+we+should+probably+warn+about+that+at+startup+and%2For+on+saving+the+configuration+in+the+config+editor.+It%27s+too+easy+to+not+hook+something+up+that+needs+to+be."
parent="1304"
resourceID="0"
timeEstimate="8"
dueDate="Apr+7%2C+2015+9%3A59%3A35+PM"
taskTypeID="1007"
taskPhaseID="1001"
uniqueID="1232"
creationTime="Jul+13%2C+2004+1%3A32%3A03+PM"
lastModifiedTime="Apr+5%2C+2005+10%3A49%3A53+AM"
lastModifiedReason="TaskHeap+bookkeeping%3A+set+parent+to+1304"
revisionNumber="2"
recordStatus="0"
>
<NoteArray _field="notes" _length="0">
</NoteArray>
</Task>
<Task _field="_root_value_23"
name="SandTransmitMessage+error+array"
description="We+should+change+SandTransmitMessage+to+have+an+array+of+error+messages+rather+than+just+one.+We+can+adapt+this+to+preserve+the+simple+interface%2C+while+still+enabling+an+application+to+return+multiple+errors.+This+is+particularly+useful+when+an+update+fails+due+to+multiple+problems+with+the+data.+If+you+can+catch+that+up+front%2C+then+you+can+avoid+multiple+annoying+save+attempts."
parent="1303"
resourceID="0"
timeEstimate="24"
dueDate="Apr+7%2C+2015+9%3A59%3A35+PM"
taskTypeID="1007"
taskPhaseID="1001"
uniqueID="1233"
creationTime="Jul+13%2C+2004+1%3A32%3A44+PM"
lastModifiedTime="Apr+5%2C+2005+10%3A47%3A45+AM"
lastModifiedReason="TaskHeap+bookkeeping%3A+set+parent+to+1303"
revisionNumber="3"
recordStatus="0"
>
<NoteArray _field="notes" _length="0">
</NoteArray>
</Task>
<Task _field="_root_value_24"
name="Output+text+severity"
description="A+UI+needs+to+know+the+severity+of+the+output+text.+If+this+is+an+error+in+processing%2C+then+it+might+be+displayed+in+red%2C+if+this+is+a+message+saying+that+the+data+was+saved+successfully%2C+then+it+probably+would+not+be.+The+severity+needs+to+follow+the+log+level%2C+and+be+available+for+transformation."
parent="1241"
resourceID="0"
timeEstimate="16"
dueDate="Apr+7%2C+2015+9%3A59%3A35+PM"
taskTypeID="1007"
taskPhaseID="1001"
uniqueID="1234"
creationTime="Jul+13%2C+2004+1%3A33%3A45+PM"
lastModifiedTime="Apr+5%2C+2005+10%3A58%3A14+AM"
lastModifiedReason="TaskHeap+bookkeeping%3A+set+parent+to+1241"
revisionNumber="3"
recordStatus="0"
>
<NoteArray _field="notes" _length="1">
<Note _field="notes_0"
subject="Use+with+SandTransmitMessage+error+array"
comment="If+we+modify+UIFormContext+to+have+an+array+of+messages%2C+each+with+a+severity+level%2C+then+we+could+code+that+up+for+XHTML+color+transformation+so+that+error+messages+come+out+in+red+and+informational+messages+don%27t."
authorID="1203"
>
</Note>
</NoteArray>
</Task>
<Task _field="_root_value_25"
name="Interim+save+processing"
description="Add+an+additional+call+to+the+UIFormOwner+to+be+able+to+handle+interim+save+processing.+If+the+user+is+adding+a+reference+to+a+new+instance%2C+we+need+to+confirm+the+new+instance+is+ok+before+returning+to+the+referencing+instance+for+the+next+save.++If+possible%2C+do+this+stack-oriented+interim+save+processing+within+the+existing+formSave+UIFormOwner+signature.++The+application+needs+to+confirm+the+data+at+each+stage."
parent="1260"
resourceID="0"
timeEstimate="8"
dueDate="Apr+7%2C+2015+9%3A59%3A35+PM"
taskTypeID="1007"
taskPhaseID="1003"
uniqueID="1235"
creationTime="Jul+13%2C+2004+2%3A32%3A17+PM"
lastModifiedTime="Nov+28%2C+2005+3%3A39%3A58+PM"
lastModifiedReason="TaskHeap+bookkeeping%3A+set+parent+to+1260"
revisionNumber="8"
recordStatus="0"
>
<NoteArray _field="notes" _length="2">
<Note _field="notes_0"
subject="unify+save+and+ok+processing"
comment="It+is+possible+that+we+can+unify+the+OK+and+SAVE+actions+into+a+single+action+as+part+of+this.++That+would+be+a+good+thing%2C+since+this+is+causing+more+confusion+than+it%27s+worth.++Most+of+our+apps+simply+don%27t+use+the+OK+action%2C+they+would+just+always+call+SAVE+and+figure+out+when+it%27s+interim+work+vs+when+the+full+AggregateUpdate+is+ready+to+go.%0D%0A%0D%0AThe+driving+force+behind+having+two+separate+actions+was+to+handle+the+interim+save+processing%2C+allowing+the+user+to+store+up+multiple+edits+before+committing+them.++This+is+the+only+way+to+get+around+circular+referential+integrity+edits+from+a+form-based+UI.++But+in+actual+fact%2C+we+have+usually+been+able+to+handle+circular+references+through+automation%2C+where+the+necessary+modifications+are+added+to+the+AggregateUpdate+in+an+UpdateManager+node.++I+suspect+at+this+point+that+any+situation+where+this+kind+of+automation+is+not+possible+would+be+indicative+of+bad+design%2C+and+not+worth+having+a+feature+to+support+it."
authorID="1203"
>
</Note>
<Note _field="notes_1"
subject="14aug05+Save+of+new+ref+saves+parent"
comment="The+default+UIFormManager+save+processing+now+saves+the+modification+to+the+parent+when+the+child+is+saved.++This+prevents+people+forgetting+to+do+the+second+save+which+they+generally+found+confusing.++So+this+task+is+not+really+relevant+anymore+except+for+the+potential+unification+of+the+ok+and+save+buttons.++Since+most+of+our+UIs+simply+hide+the+ok+button%2C+that%27s+not+much+of+an+issue%2C+and+it+might+come+in+handy+at+some+point.++Closing+this+out."
authorID="1203"
>
</Note>
</NoteArray>
</Task>
<Task _field="_root_value_26"
name="protect+webapp+from+partial+form+submission"
description="If+someone+clicks+a+button+before+a+form+has+a+chance+to+fully+download%2C+then+we+may+potentially+lose+state%2C+leading+to+bad+data+reconstruction+and+potentially+bad+processing.+For+DEREF+operations+this+is+not+critical%2C+but+for+SAVE+or+SELECT+it+could+be+bad.+See+about+providing+an+end-of-data+marker+or+other+strategy+to+prevent+this+from+happening.%0D%0A%0D%0AWe+should+look+into+how+other+people+handle+this%2C+however+any+double+refresh+of+the+page+or+other+hacking+that+affects+the+display+is+not+a+good+idea."
parent="1306"
resourceID="0"
timeEstimate="8"
dueDate="Apr+7%2C+2015+9%3A59%3A35+PM"
taskTypeID="1007"
taskPhaseID="1001"
uniqueID="1236"
creationTime="Jul+13%2C+2004+2%3A43%3A11+PM"
lastModifiedTime="Apr+5%2C+2005+11%3A01%3A09+AM"
lastModifiedReason="TaskHeap+bookkeeping%3A+set+parent+to+1306"
revisionNumber="2"
recordStatus="0"
>
<NoteArray _field="notes" _length="0">
</NoteArray>
</Task>
<Task _field="_root_value_27"
name="greater+than+and+less+than+escapes"
description="Although+quotes+and+single+quotes+make+it+through+ok%2C+the+greater+than+and+less+than+characters+broke+in+TaskHeap.+I+created+a+task+named+something+like+Task+less-than+dash+greater-than+Plan+and+it+died+in+XML+transformation.+Figure+out+what%27s+up+with+that+and+make+it+work.%0D%0A%0D%0ARetested+this+again+and+it+works.++%3C+and+%3E+work+in+the+description+and+in+the+task+name.++Probably+an+encoding+issue+at+one+point+that+is+now+fixed."
parent="1260"
resourceID="0"
timeEstimate="1"
dueDate="Apr+7%2C+2015+9%3A59%3A35+PM"
taskTypeID="1007"
taskPhaseID="1003"
uniqueID="1237"
creationTime="Jul+13%2C+2004+2%3A43%3A53+PM"
lastModifiedTime="Jun+1%2C+2005+11%3A48%3A20+AM"
lastModifiedReason="TaskHeap+bookkeeping%3A+set+parent+to+1260"
revisionNumber="5"
recordStatus="0"
>
<NoteArray _field="notes" _length="0">
</NoteArray>
</Task>
<Task _field="_root_value_28"
name="bulletproof+scrub+with+new+generator"
description="You+can%27t+run+%22ant+scrub%22+after+adding+a+new+generator.+You+get+a+SandBuildException%3A+Could+not+find+class+when+trying+to+run+it.+Recover+from+this+better.+On+scrub%2C+if+there%27s+no+class+found%2C+then+there+probably+isn%27t+any+cleanup+to+do+either."
parent="1230"
resourceID="0"
timeEstimate="8"
dueDate="Apr+7%2C+2015+9%3A59%3A35+PM"
taskTypeID="1007"
taskPhaseID="1001"
uniqueID="1238"
creationTime="Jul+13%2C+2004+2%3A44%3A34+PM"
lastModifiedTime="Jul+13%2C+2004+2%3A44%3A34+PM"
lastModifiedReason="initial+creation"
revisionNumber="1"
recordStatus="0"
>
<NoteArray _field="notes" _length="0">
</NoteArray>
</Task>
<Task _field="_root_value_29"
name="build+tracking+of+deleted+struct+decls"
description="sourceforge+bug%3A%0D%0Ahttp%3A%2F%2Fsourceforge.net%2Ftracker%2Findex.php%3Ffunc%3Ddetail%26aid%3D787779%26group_id%3D46466%26atid%3D446222%0D%0A%0D%0ADeleting+a+struct+decl+causes+the+build+to+fail.+This+was+working+at+one+point+and+is+apparently+busted+now.+The+comments+describe+the+problem+details+and+where+to+start."
parent="1230"
resourceID="0"
timeEstimate="8"
dueDate="Apr+7%2C+2015+9%3A59%3A35+PM"
taskTypeID="1007"
taskPhaseID="1001"
uniqueID="1239"
creationTime="Jul+13%2C+2004+2%3A47%3A56+PM"
lastModifiedTime="Jul+13%2C+2004+3%3A03%3A01+PM"
lastModifiedReason=""
revisionNumber="2"
recordStatus="0"
>
<NoteArray _field="notes" _length="0">
</NoteArray>
</Task>
<Task _field="_root_value_30"
name="note+recursive+edit"
description="Scenario%3A%0D%0AAssume+that+ClassA+contains+an+array+of+ClassB+references%2C+and+ClassB+in+turn+contains+an+array+of+ClassC+references.%0D%0A%0D%0AIf+a+user+edits+InstanceA+and+makes+a+new+InstanceB.++They+cannot+add+an+InstanceC+to+the+new+InstanceB%2C+until+after+InstanceB+and+the+modified+InstanceA+are+saved.++This+is+because+there+is+not+enough+room+in+the+UIFormContext+to+store+this+state.++Some+indication+of+this+needs+to+be+provided+when+editing+InstanceB.%0D%0A%0D%0AOne+possibility+here+is+to+indicate+that+adding+a+new+InstanceC+is+possible%2C+but+is+disabled+until+the+previous+instance+is+saved.++Another+solution+is+to+provide+the+editing+buttons+for+instanceC%2C+and+if+clicked%2C+prompt+the+user+to+save+the+outstanding+InstanceA+and+InstanceB+changes.++We+would+need+to+extend+the+UserQuery+to+provide+this+kind+of+prompting."
parent="1355"
resourceID="0"
timeEstimate="8"
dueDate="Apr+7%2C+2015+9%3A59%3A35+PM"
taskTypeID="1007"
taskPhaseID="1001"
uniqueID="1242"
creationTime="Jul+13%2C+2004+4%3A01%3A03+PM"
lastModifiedTime="Mar+7%2C+2006+9%3A24%3A09+AM"
lastModifiedReason="TaskHeap+bookkeeping%3A+set+parent+to+1355"
revisionNumber="4"
recordStatus="0"
>
<NoteArray _field="notes" _length="1">
<Note _field="notes_0"
subject="UserQuery+extension+useful"
comment="Extending+the+UserQuery+functionality+may+be+helpful+in+doing+things+like+confirming+user+actions+and+such.++For+example+%22Are+you+sure%3F%22+type+prompts.%0D%0AKeep+this+in+mind."
authorID="1203"
>
</Note>
</NoteArray>
</Task>
<Task _field="_root_value_31"
name="near-binary+serialization+of+state+objects"
description="Objects+which+are+part+of+the+current+state+need+to+be+saved+in+a+tight+binary+format.++Although+it+is+more+readable+to+have+them+serialized+out+as+individual+hidden+parameters%2C+this+takes+up+a+huge+amount+of+data+which+needs+to+get+transferred+back+and+forth.++Instead%2C+this+state+needs+to+be+stored+as+a+single+hexified+binary+serialized+value+to+save+transmission+bandwidth."
parent="1241"
resourceID="0"
timeEstimate="8"
dueDate="Apr+7%2C+2015+9%3A59%3A35+PM"
taskTypeID="1007"
taskPhaseID="1001"
uniqueID="1243"
creationTime="Jul+13%2C+2004+4%3A03%3A24+PM"
lastModifiedTime="Jul+13%2C+2004+4%3A05%3A39+PM"
lastModifiedReason="initial+creation"
revisionNumber="2"
recordStatus="0"
>
<NoteArray _field="notes" _length="1">
<Note _field="notes_0"
subject="Add+explanatory+text"
comment="I+personally+hate+viewing+source+and+finding+a+pile+of+hexified+crap%2C+so+we+should+dump+a+URL+in+a+comment+where+people+can+get+details+of+what%27s+going+on."
authorID="1203"
>
</Note>
</NoteArray>
</Task>
<Task _field="_root_value_32"
name="switch+to+store+state+in+session"
description="We+should+provide+a+switch+for+storing+the+state+information+in+the+session+as+opposed+to+with+the+client+request.++The+session+is+more+susceptible+to+things+getting+out+of+sync%2C+but+it+saves+transmission+bandwidth."
parent="1216"
resourceID="0"
timeEstimate="8"
dueDate="Apr+7%2C+2015+9%3A59%3A35+PM"
taskTypeID="1007"
taskPhaseID="1001"
uniqueID="1244"
creationTime="Jul+13%2C+2004+4%3A07%3A58+PM"
lastModifiedTime="Aug+14%2C+2005+9%3A44%3A57+PM"
lastModifiedReason="TaskHeap+bookkeeping%3A+set+parent+to+1216"
revisionNumber="2"
recordStatus="0"
>
<NoteArray _field="notes" _length="0">
</NoteArray>
</Task>
<Task _field="_root_value_33"
name="stack+push+and+pop+capability"
description="The+idea+here+is+to+be+able+to+take+the+entire+UIFormContext+and+push+it+onto+its+own+stack.++That+way+we+can+recursively+edit+references+without+any+depth+limitations.++The+UIFormOwner.formSave+processing+would+need+to+be+called+on+CANCEL+when+there+is+a+stack%2C+but+otherwise+this+seems+possible.++Needs+spec."
parent="1355"
resourceID="0"
timeEstimate="8"
dueDate="Apr+7%2C+2015+9%3A59%3A35+PM"
taskTypeID="1007"
taskPhaseID="1001"
uniqueID="1245"
creationTime="Jul+13%2C+2004+4%3A12%3A27+PM"
lastModifiedTime="Mar+7%2C+2006+9%3A24%3A18+AM"
lastModifiedReason="TaskHeap+bookkeeping%3A+set+parent+to+1355"
revisionNumber="2"
recordStatus="0"
>
<NoteArray _field="notes" _length="0">
</NoteArray>
</Task>
<Task _field="_root_value_34"
name="cancel+tree+for+contained+add"
description="Sourceforge+RFE%0D%0Ahttp%3A%2F%2Fsourceforge.net%2Ftracker%2Findex.php%3Ffunc%3Ddetail%26aid%3D699993%26group_id%3D46466%26atid%3D446225%0D%0A%0D%0AThis+needs+to+be+considered+as+part+of+the+standalone+config+editor+tool."
parent="1355"
resourceID="0"
timeEstimate="80"
dueDate="Apr+7%2C+2015+9%3A59%3A35+PM"
taskTypeID="1007"
taskPhaseID="1001"
uniqueID="1246"
creationTime="Jul+13%2C+2004+4%3A23%3A33+PM"
lastModifiedTime="Mar+7%2C+2006+9%3A24%3A28+AM"
lastModifiedReason="TaskHeap+bookkeeping%3A+set+parent+to+1355"
revisionNumber="2"
recordStatus="0"
>
<NoteArray _field="notes" _length="0">
</NoteArray>
</Task>
<Task _field="_root_value_35"
name="Empty+collection+marker"
description="When+a+collection+is+empty%2C+we+need+to+provide+markup+around+the+output+marker+text+for+use+in+transformation+templates."
parent="1297"
resourceID="0"
timeEstimate="4"
dueDate="Apr+7%2C+2015+9%3A59%3A35+PM"
taskTypeID="1007"
taskPhaseID="1002"
uniqueID="1247"
creationTime="Jul+13%2C+2004+4%3A24%3A47+PM"
lastModifiedTime="Mar+23%2C+2005+10%3A38%3A21+AM"
lastModifiedReason="TaskHeap+bookkeeping%3A+set+parent+to+1297"
revisionNumber="6"
recordStatus="0"
>
<NoteArray _field="notes" _length="0">
</NoteArray>
</Task>
<Task _field="_root_value_36"
name="WS-I+basic+profile+1.0+%28SOAP+messaging%29"
description="It+must+be+possible+to+easily+create+standards-based+web+services+in+sandboss+using+the+container+support+for+J2EE+1.4+SOAP+calls.+This+is+JAX-RPC+with+lookups+via+JNDI.++Define+how+this+works+and+implement+the+supporting+generators."
parent="1280"
resourceID="0"
timeEstimate="8"
dueDate="Apr+7%2C+2015+9%3A59%3A35+PM"
taskTypeID="1007"
taskPhaseID="1001"
uniqueID="1249"
creationTime="Jul+13%2C+2004+9%3A01%3A59+PM"
lastModifiedTime="Feb+21%2C+2005+1%3A05%3A38+PM"
lastModifiedReason="TaskHeap+bookkeeping%3A+set+parent+to+1280"
revisionNumber="2"
recordStatus="0"
>
<NoteArray _field="notes" _length="0">
</NoteArray>
</Task>
<Task _field="_root_value_37"
name="QuickWSMessager"
description="Our+Quick+WebServices+Messager+is+a+Messager+implmentation+that+uses+our+XMLSerializer+to+send+messages+between+machines+via+servlets.+Since+this+also+goes+over+the+default+port%2C+it+needs+to+play+nicely+with+webapps.%0D%0A%0D%0AStandalone+GUI+apps+must+be+able+to+use+QuickWSMessager.++Note+that+in+this+case+there+is+no+servlet+container."
parent="1281"
resourceID="0"
timeEstimate="8"
dueDate="Apr+7%2C+2015+9%3A59%3A35+PM"
taskTypeID="1007"
taskPhaseID="1001"
uniqueID="1250"
creationTime="Jul+13%2C+2004+9%3A09%3A02+PM"
lastModifiedTime="Feb+21%2C+2005+3%3A24%3A43+PM"
lastModifiedReason="TaskHeap+bookkeeping%3A+set+parent+to+1281"
revisionNumber="4"
recordStatus="0"
>
<NoteArray _field="notes" _length="2">
<Note _field="notes_0"
subject="mention+Fast+Web+Service"
comment="In+the+comments+for+our+QuickWSMessager+we+should+refer+to+the+Fast+Web+Services+concept+%28WS+using+binary+serialization%29+that+Sun+put+forward+in+their%0D%0Ahttp%3A%2F%2Fdeveloper.java.sun.com%2Fdeveloper%2FtechnicalArticles%2FWebServices%2FfastWS%2Findex.html+article.%0D%0A%0D%0AIt%27s+also+probably+worth+mentioning+in+the+comments+that+a+binary+transmission+format+like+ASN.1+could+also+be+used%2C+provided+secure+transmission+was+available+at+the+transport+level."
authorID="1203"
>
</Note>
<Note _field="notes_1"
subject="is+pure+J2SE+possible%3F"
comment="Our+only+real+dependency+on+J2EE+%28aside+from+the+webapp+template+transformation%29+is+the+HttpServlet+APIs.+If+in+the+process+of+supporting+our+standalone+GUI+apps%2C+we+can+work+out+a+better+interface+layer+here%2C+then+we+should+record+a+task+to+make+that+happen.%0D%0A%0D%0AWe+should+also+look+into+the+state+of+JSR+work+for+generalized+servlet+interfaces.+There+may+be+more+relevant+APIs+that+are+heading+for+J2SE+core+because+things+like+cell+phones+need+more+lightweight+protocols."
authorID="1203"
>
</Note>
</NoteArray>
</Task>
<Task _field="_root_value_38"
name="build+a+JCA+statement"
description="Describe+how+we+fit+onto+different+messager+implementations.++Webservices+should+be+pretty+clear+from+our+default+implementation%2C+and+JMS+is+already+covered+in+a+few+comments+even+though+it+could+probably+be+brought+together+more+cohesively.++After+we+figure+out+the+appropriate+place+to+cover+these%2C+we+also+need+a+statement+on+how+we+work+over+JCA.++This+is+important+for+people+who+want+to+work+directly+with+higher+level+integration+packages."
parent="1338"
resourceID="0"
timeEstimate="8"
dueDate="Apr+7%2C+2015+9%3A59%3A35+PM"
taskTypeID="1007"
taskPhaseID="1001"
uniqueID="1251"
creationTime="Jul+13%2C+2004+9%3A11%3A41+PM"
lastModifiedTime="Aug+14%2C+2005+9%3A38%3A20+PM"
lastModifiedReason="TaskHeap+bookkeeping%3A+set+parent+to+1338"
revisionNumber="3"
recordStatus="0"
>
<NoteArray _field="notes" _length="0">
</NoteArray>
</Task>
<Task _field="_root_value_39"
name="build+a+Java+Spaces+statement"
description="We+need+a+relatively+concrete+statement+of+how+the+SAND+Messager+works+in+Java+Spaces.++Added+to+sandservices+FAQ."
parent="1260"
resourceID="0"
timeEstimate="8"
dueDate="Apr+7%2C+2015+9%3A59%3A35+PM"
taskTypeID="1007"
taskPhaseID="1002"
uniqueID="1252"
creationTime="Jul+13%2C+2004+9%3A18%3A27+PM"
lastModifiedTime="Nov+28%2C+2005+3%3A40%3A09+PM"
lastModifiedReason="TaskHeap+bookkeeping%3A+set+parent+to+1260"
revisionNumber="5"
recordStatus="0"
>
<NoteArray _field="notes" _length="0">
</NoteArray>
</Task>
<Task _field="_root_value_40"
name="container+independent+mainbuild.xml"
description="Sourceforge+RFE%0D%0Ahttp%3A%2F%2Fsourceforge.net%2Ftracker%2Findex.php%3Ffunc%3Ddetail%26aid%3D756781%26group_id%3D46466%26atid%3D446225%0D%0A%0D%0AWe+need+to+get+the+JBoss+and+even+the+J2EE+.jar+links+out+of+the+core+mainbuild.xml+so+that+we+use+the+same+build+across+multiple+SAND+environments."
parent="1240"
resourceID="0"
timeEstimate="8"
dueDate="Apr+7%2C+2015+9%3A59%3A35+PM"
taskTypeID="1007"
taskPhaseID="1001"
uniqueID="1253"
creationTime="Jul+13%2C+2004+9%3A20%3A34+PM"
lastModifiedTime="Jul+13%2C+2004+9%3A20%3A34+PM"
lastModifiedReason="initial+creation"
revisionNumber="1"
recordStatus="0"
>
<NoteArray _field="notes" _length="0">
</NoteArray>
</Task>
<Task _field="_root_value_41"
name="array+contents+movement"
description="In+addition+to+new%2Ffind%2Fremove+for+reference+arrays%2C+we+also+want+%22move+up%22+and+%22move+down%22+buttons+to+make+rearranging+the+contents+easier."
parent="1297"
resourceID="0"
timeEstimate="8"
dueDate="Apr+7%2C+2015+9%3A59%3A35+PM"
taskTypeID="1007"
taskPhaseID="1002"
uniqueID="1255"
creationTime="Jul+13%2C+2004+9%3A31%3A34+PM"
lastModifiedTime="Mar+23%2C+2005+10%3A38%3A13+AM"
lastModifiedReason="TaskHeap+bookkeeping%3A+set+parent+to+1297"
revisionNumber="6"
recordStatus="0"
>
<NoteArray _field="notes" _length="0">
</NoteArray>
</Task>
<Task _field="_root_value_42"
name="PlanCalculator+uses+update+data"
description="PlanCalculator+currently+pulls+its+information+from+persistent+storage%2C+which+leads+to+incorrect+results+when+totalling+things+up.++It+should+use+the+updated+information+even+if+it+hasn%27t+been+written+to+storage+yet.++That+way+the+Plan+will+reflect+the+latest+info+when+everything+gets+written.%0D%0A%0D%0ASo+the+update+information+overrides+the+saved+information+if+found."
parent="1206"
resourceID="0"
timeEstimate="8"
dueDate="Apr+7%2C+2015+9%3A59%3A35+PM"
taskTypeID="1007"
taskPhaseID="1002"
uniqueID="1256"
creationTime="Jul+14%2C+2004+6%3A55%3A32+PM"
lastModifiedTime="Aug+6%2C+2004+12%3A39%3A16+PM"
lastModifiedReason="UIFormManager+delete"
revisionNumber="5"
recordStatus="1"
>
<NoteArray _field="notes" _length="0">
</NoteArray>
</Task>
<Task _field="_root_value_43"
name="restrict+import%2Fexport+availability"
description="Only+Resources+should+be+authorized+for+import%2Fexport+operations.%0D%0A%0D%0ASince+there%27s+not+a+lot+of+reason+why+Readers+would+need+to+see+the+heap+settings+either%2C+the+easiest+thing+seems+to+be+to+simply+restrict+access+to+the+Admin+screen+to+just+Resources.++Did+that."
parent="1260"
resourceID="0"
timeEstimate="1"
dueDate="Apr+7%2C+2015+9%3A59%3A35+PM"
taskTypeID="1007"
taskPhaseID="1002"
uniqueID="1257"
creationTime="Jul+14%2C+2004+6%3A58%3A17+PM"
lastModifiedTime="Jun+8%2C+2005+10%3A39%3A14+AM"
lastModifiedReason="TaskHeap+bookkeeping%3A+set+parent+to+1260"
revisionNumber="5"
recordStatus="0"
>
<NoteArray _field="notes" _length="0">
</NoteArray>
</Task>
<Task _field="_root_value_44"
name="Preserve+times+on+default+import"
description="Provide+a+RESTORE+option+in+addition+to+IMPORT+and+EXPORT+in+DataImportExportStruct.++When+DataManager+sees+restore%2C+it%0D%0A1.+sets+the+UpdateTimeBatchOverride%0D%0A2.+does+the+import%0D%0A3.+unsets+the+UpdateTimeBatchOverride%0D%0A%0D%0ADoing+this+in+the+control+panel+is+kind+of+a+hassle+and+not+what+people+would+expect+as+the+default+behavior."
parent="1206"
resourceID="0"
timeEstimate="8"
dueDate="Apr+7%2C+2015+9%3A59%3A35+PM"
taskTypeID="1007"
taskPhaseID="1001"
uniqueID="1258"
creationTime="Jul+15%2C+2004+2%3A44%3A11+PM"
lastModifiedTime="Jul+17%2C+2004+11%3A50%3A04+AM"
lastModifiedReason="UIFormManager+delete"
revisionNumber="2"
recordStatus="1"
>
<NoteArray _field="notes" _length="0">
</NoteArray>
</Task>
<Task _field="_root_value_45"
name="Const+message+instances"
description="I+think+the+caching+issue+we+see+on+update+failures+%28form+still+has+the%0D%0Achanged+data%29+is+due+to+a+common+pattern%3A%0D%0A++-+retrieve+an+instance+from+cache+or+other+known+location%0D%0A++-+modify+it%0D%0A++-+wrap+it+in+an+update+message+and+call+to+do+the+update%0D%0AWhen+the+update+fails%2C+we+have+nonetheless+modified+the+instance+we+were%0D%0Aworking+with.%0D%0A%0D%0AThe+solution+is+to+support+immutable+instances.++So+every+message+would%0D%0Ahave+a+makeInstanceConstant%28%29+method+which+would+flip+a+protected+int%0D%0AinstanceProtection+member+from+zero+%28MUTABLE%29+to+one+%28CONST%29.++Every%0D%0Amutator+method+in+the+message+would+then+check+the+isInstanceConst+before%0D%0Amaking+a+change+to+any+data+members.%0D%0A%0D%0AModification+of+a+const+message+results+in+a+runtime+error+being+thrown.%0D%0AWe+don%27t+want+this+to+be+a+standard+exception+since+it+causes+all+sorts+of%0D%0Aunnecessary+annoyance+for+non-const+instances.++The+main+use+for+this+is%0D%0Ain+the+IDCache%2C+a+secondary+use+is+in+the+UIFormContext."
parent="1248"
resourceID="0"
timeEstimate="8"
dueDate="Apr+7%2C+2015+9%3A59%3A35+PM"
taskTypeID="1007"
taskPhaseID="1001"
uniqueID="1259"
creationTime="Sep+17%2C+2004+6%3A05%3A13+PM"
lastModifiedTime="Aug+14%2C+2005+9%3A56%3A50+PM"
lastModifiedReason="TaskHeap+bookkeeping%3A+set+parent+to+1248"
revisionNumber="4"
recordStatus="0"
>
<NoteArray _field="notes" _length="0">
</NoteArray>
</Task>
<Task _field="_root_value_46"
name="default+to+save+action+after+editing"
description="When+there+are+outstanding+edits+in+the+UIFormContext%2C+then+the+default+action+should+be+SAVE.++That+helps+with+having+to+use+the+mouse.++It+also+avoids+losing+data+since+the+current+default+of+Cancel+makes+it+hard+to+figure+out+what+happened+if+you+accidentally+hit+return.++If+you+do+extensive+editing+and+don%27t+remember+to+hit+the+back+button+on+the+browser%2C+then+you+can+lose+your+edits."
parent="1260"
resourceID="0"
timeEstimate="24"
dueDate="Apr+7%2C+2015+9%3A59%3A35+PM"
taskTypeID="1007"
taskPhaseID="1002"
uniqueID="1262"
creationTime="Nov+7%2C+2004+2%3A32%3A38+PM"
lastModifiedTime="May+25%2C+2005+10%3A43%3A39+PM"
lastModifiedReason="TaskHeap+bookkeeping%3A+set+parent+to+1260"
revisionNumber="10"
recordStatus="0"
>
<NoteArray _field="notes" _length="2">
<Note _field="notes_0"
subject="more+description"
comment="I+tested+this+out+and+in+the+case+where+there+is+a+control+available+%28such+as+when+editing+or+adding%29%2C+the+focus+is+set+to+the+first+control+%28so+the+name+text+box+when+editing+a+task+for+example%29.++If+there+is+no+form+control+available%2C+then+the+focus+is+set+to+the+%22save%22+button%2C+unless+the+mode+is+LISTING+in+which+case+it+is+set+to+%22edit%22.++This+is+correct+behavior.%0D%0A%0D%0AThe+problem+arises+because+the+browser+is+being+smart%2C+and+in+the+case+of+an+input+control+that+does+not+accept+the+enter+key+%28in+other+words+anything+other+than+a+large+text+entry+box%29%2C+it+chooses+a+button+to+activate+as+the+default.++This+is+the+first+button+in+the+form.++So+in+the+case+of+a+Plan%2C+it+adds+a+note%2C+and+for+anything+without+contained+components+it+defaults+to+the+cancel+button+since+it+finds+that+first.%0D%0A%0D%0APutting+the+save+button+first+is+not+enough.++For+example+this+won%27t+work+for+a+Plan+since+the+button+to+add+a+note+ends+up+being+the+default+button.%0D%0A%0D%0ATo+handle+this+we+essentially+trap+the+enter+key+being+pressed+in+any+input+control+that+is+not+large+text%2C+and+note+that+the+enter+key+was+pressed+so+we+can+set+the+default+action+appropriately."
authorID="1203"
>
</Note>
<Note _field="notes_1"
subject="default+button+in+LISTING+mode+stays"
comment="At+least+in+firefox%2C+tabbing+to+a+specific+button+and+then+hitting+return+is+equivalent+to+clicking+on+it%2C+so+if+focus+is+set+to+a+button+by+default+then+there+is+no+way+to+figure+out+that+they+hit+the+return+key+and+attempt+to+do+a+default.+++Given+that+people+can+and+do+enter+forms+this+way%2C+for+us+to+override+in+this+case+would+lead+to+incorrect+behavior.%0D%0A%0D%0ASo+for+LISTING+mode%2C+whatever+button+the+browser+sets+the+focus+to+will+be+the+action+that+fires+if+you+hit+return."
authorID="1203"
>
</Note>
</NoteArray>
</Task>
<Task _field="_root_value_47"
name="Form+tabs"
description="Form+tabs+are+kind+of+like+form+actions+except+they+would+typically+be+displayed+above+the+form%2C+rather+than+below+it.++A+typical+example+of+their+use+would+be+to+switch+between+Plans%2C+Tasks%2C+and+ExternalPlans+on+the+Plans+screen.++The+task+here+is+to+make+this+happen+by%0D%0A%0D%0A1.+Add+an+ActionStruct%5B%5D+tabs+member+to+LinkStruct.++Update+the+sandboss+code+to+get+these+rendering+before+the+link+contents.%0D%0A2.+Change+the+TaskHeap+Resources%2FPlans%2FTasks+screens+to+use+the+tabs.++Get+the+tabs+rendering+nicely+so+this+looks+pro."
parent="1297"
resourceID="0"
timeEstimate="16"
dueDate="Apr+7%2C+2015+9%3A59%3A35+PM"
taskTypeID="1007"
taskPhaseID="1002"
uniqueID="1263"
creationTime="Nov+7%2C+2004+2%3A42%3A11+PM"
lastModifiedTime="Mar+23%2C+2005+10%3A38%3A28+AM"
lastModifiedReason="TaskHeap+bookkeeping%3A+set+parent+to+1297"
revisionNumber="4"
recordStatus="0"
>
<NoteArray _field="notes" _length="0">
</NoteArray>
</Task>
<Task _field="_root_value_48"
name="Email+WBS"
description="Add+a+button+to+generate+the+WBS+report+and+then+email+it+to+yourself%2C+without+actually+exporting+it.++That%27s+useful+for+generating+various+possible+planning+scenarios+for+consideration%2C+and+it+serves+as+an+example+for+using+email+in+a+SAND+app."
parent="1261"
resourceID="0"
timeEstimate="16"
dueDate="Apr+7%2C+2015+9%3A59%3A35+PM"
taskTypeID="1007"
taskPhaseID="1002"
uniqueID="1264"
creationTime="Nov+7%2C+2004+2%3A48%3A51+PM"
lastModifiedTime="Aug+23%2C+2005+4%3A38%3A03+PM"
lastModifiedReason="TaskHeap+bookkeeping%3A+set+parent+to+1261"
revisionNumber="5"
recordStatus="0"
>
<NoteArray _field="notes" _length="2">
<Note _field="notes_0"
subject="generalized+email+utility"
comment="If+it+turns+out+to+be+possible+to+factor+a+generalized+email+utility+into+sand%2Fapps%2Fbasics+then+we+should+do+that.++Note+that+apps%2Fbasics+can+only+depend+on+J2SE."
authorID="1203"
>
</Note>
<Note _field="notes_1"
subject="14aug05+forgotPassword+example"
comment="At+this+point+the+forgotPassword+processing+serves+as+an+example+of+using+email+within+a+SAND+app%2C+so+it+comes+down+to+whether+emailing+the+heap+to+yourself+is+a+good+thing+to+do.++In+practice+it%27s+better+to+email+a+link+to+the+static+page%2C+but+since+we+already+have+a+chunk+of+code+in+here+we+may+as+well+finish+this.++Do+the+easiest+thing+that+works.++Assume+html+mail."
authorID="1203"
>
</Note>
</NoteArray>
</Task>
<Task _field="_root_value_49"
name="sandpersist+project+declaration"
description="The+persistence+code+we+generate+%28both+schema+verification+and+query+processing%29+depends+on+the+datasource+we+are+targeting.++That+kind+of+wrecks+the+existing+design+of+a+dual-mode+DataManager+with+a+development+db+config+and+a+production+db+config+co-existing+off+the+same+codebase.++We+need+to+restructure+this+into+the+dynamic+build+and+clean+things+up.%0D%0A%0D%0AEssentially+this+means+removing+the+SQLStructMapper+property+and+replacing+it+with+a+full+blown+sandpersist+task+similar+to+the+sandui+or+sandpackager+tasks.%0D%0A%0D%0AThe+new+sandpersist+task+will+have+the+StructMapper+to+use%2C+the+persister+class%2C+the+ID+manager+class%2C+the+converter+class%2C+the+datasource+spec%2C+and+import%2Fexport+source.++The+username%2Fpassword+fields+are+gone.++Even+if+username%2Fpassword+values+are+necessary%2C+they+are+typically+incorporated+into+the+datasource+string+itself.++And+for+most+situations+this+is+set+up+in+the+container+config+so+these+are+just+generally+confusing+right+now."
parent="1298"
resourceID="0"
timeEstimate="16"
dueDate="Apr+7%2C+2015+9%3A59%3A35+PM"
taskTypeID="1007"
taskPhaseID="1002"
uniqueID="1265"
creationTime="Nov+7%2C+2004+3%3A39%3A03+PM"
lastModifiedTime="Apr+5%2C+2005+11%3A03%3A27+AM"
lastModifiedReason="TaskHeap+bookkeeping%3A+set+parent+to+1298"
revisionNumber="9"
recordStatus="0"
>
<NoteArray _field="notes" _length="0">
</NoteArray>
</Task>
<Task _field="_root_value_50"
name="Tabular+collection+summary+display"
description="When+dumping+out+a+collection+of+messages%2C+it+should+be+possible+to+put+the+summary+field+names+across+the+top%2C+and+then+dump+out+each+of+the+elements+formatted+in+a+tabular+way.++The+task+here+is+to+build+the+demonstration+transforms+for+TaskHeapDemo%2C+and+add+any+supporting+output+tagging+if+necessary."
parent="1260"
resourceID="0"
timeEstimate="16"
dueDate="Apr+7%2C+2015+9%3A59%3A35+PM"
taskTypeID="1007"
taskPhaseID="1002"
uniqueID="1266"
creationTime="Nov+14%2C+2004+7%3A56%3A12+PM"
lastModifiedTime="Nov+28%2C+2005+3%3A39%3A26+PM"
lastModifiedReason="TaskHeap+bookkeeping%3A+set+parent+to+1260"
revisionNumber="8"
recordStatus="0"
>
<NoteArray _field="notes" _length="2">
<Note _field="notes_0"
subject="thoughts+so+far"
comment="Not+really+sure+how+to+do+this.++Maybe+an+initial+summary+line+with+just+the+summary+field+names+would+be+useful.++Transforms+could+pick+up+on+this+line+to+write+out+an+appropriate+first+table+line+with+width+percentages+and+whatnot."
authorID="1203"
>
</Note>
<Note _field="notes_1"
subject="18aug05+Handle+in+template+transform"
comment="We+don%27t+want+to+dump+out+any+special+tagging%2C+the+XHTML+has+all+the+tags+necessary+to+transform+the+output+into+tabular+display.++The+default.xsl+template+in+TaskHeapDemo+shows+how+to+do+this+for+any+given+project."
authorID="1203"
>
</Note>
</NoteArray>
</Task>
<Task _field="_root_value_51"
name="Recursive+editing+indicator"
description="When+you+are+editing+a+Plan%2C+and+you+add+a+new+Task+to+the+components%2C+you+can%27t+add+a+Note+to+the+new+Task+because+you+are+already+two+levels+down+in+editing+context+and+that%27s+all+the+current+XHTMLFormAdaptor+can+do.++Eventually+the+full+stack+UIFormAdaptor+will+remove+this+restriction%2C+but+in+the+meantime+some+kind+of+an+indicator+as+to+why+editing+is+not+available+would+be+useful.++Something+like+%22save+this+instance+before+editing+contained%2Freferenced+instances%22+would+be+useful.++The+actual+text+needs+to+be+wrapped+so+it+can+be+picked+up+and+transformed."
parent="1260"
resourceID="0"
timeEstimate="4"
dueDate="Apr+7%2C+2015+9%3A59%3A35+PM"
taskTypeID="1007"
taskPhaseID="1002"
uniqueID="1267"
creationTime="Nov+14%2C+2004+8%3A00%3A36+PM"
lastModifiedTime="Jun+1%2C+2005+10%3A19%3A25+AM"
lastModifiedReason="TaskHeap+bookkeeping%3A+set+parent+to+1260"
revisionNumber="5"
recordStatus="0"
>
<NoteArray _field="notes" _length="0">
</NoteArray>
</Task>
<Task _field="_root_value_52"
name="Support+for+Postgres"
description="We+want+to+be+able+to+explicitely+support+Postgres.++This+might+just+work+with+the+DefaultSQLStrutMapper%2C+but+we+won%27t+know+until+we+try+it.++Given+that+the+two+major+free+databases+right+now+are+MySQL+and+Postgres%2C+I+think+it%27s+time+to+get+Postgres+happening+for+cash+constrained+deployments."
parent="1260"
resourceID="0"
timeEstimate="24"
dueDate="Apr+7%2C+2015+9%3A59%3A35+PM"
taskTypeID="1007"
taskPhaseID="1002"
uniqueID="1268"
creationTime="Dec+17%2C+2004+7%3A59%3A25+PM"
lastModifiedTime="Apr+5%2C+2005+11%3A03%3A08+AM"
lastModifiedReason="TaskHeap+bookkeeping%3A+set+parent+to+1260"
revisionNumber="4"
recordStatus="0"
>
<NoteArray _field="notes" _length="0">
</NoteArray>
</Task>
<Task _field="_root_value_53"
name="Root+class+query+support"
description="We+want+to+support+queries+with+%22_class+%21%3D+XYZ%22+where+XYZ+where+XYZ+is+a+subclass+of+the+current+query+type.++So+for+example+we+could+specify+a+ReaderQuery+_class+%21%3D+Resource+which+would+return+just+the+Reader+instances.++The+query+gets+translated+into+a+SQL+WHERE+clause+subselect+of%0D%0AuniqueID+NOT+IN+%28SELECT+uniqueID+from+Resource%29%0D%0A%0D%0AApplications+that+don%27t+want+to+allow+their+users+to+differentiate+can+restrict+the+query+as+part+of+their+authorization+logic."
parent="1297"
resourceID="0"
timeEstimate="16"
dueDate="Apr+7%2C+2015+9%3A59%3A35+PM"
taskTypeID="1007"
taskPhaseID="1003"
uniqueID="1269"
creationTime="Dec+17%2C+2004+8%3A50%3A57+PM"
lastModifiedTime="Mar+23%2C+2005+10%3A38%3A58+AM"
lastModifiedReason="TaskHeap+bookkeeping%3A+set+parent+to+1297"
revisionNumber="5"
recordStatus="0"
>
<NoteArray _field="notes" _length="1">
<Note _field="notes_0"
subject="obviated+by+subselect+processing"
comment="The+subselect+mechanism+is+a+much+more+powerful+way+to+do+the+same+thing%2C+so+we+are+going+with+that+instead."
authorID="1203"
>
</Note>
</NoteArray>
</Task>
<Task _field="_root_value_54"
name="jar+file+versioning"
description="In+addition+to+prefixing%2C+we+want+to+allow+some+form+of+suffixing+to+provide+version+identification+based+on+the+.jar+file+name+itself."
parent="1240"
resourceID="0"
timeEstimate="8"
dueDate="Apr+7%2C+2015+9%3A59%3A35+PM"
taskTypeID="1007"
taskPhaseID="1001"
uniqueID="1270"
creationTime="Dec+17%2C+2004+8%3A53%3A15+PM"
lastModifiedTime="Dec+17%2C+2004+8%3A53%3A15+PM"
lastModifiedReason="initial+creation"
revisionNumber="1"
recordStatus="0"
>
<NoteArray _field="notes" _length="0">
</NoteArray>
</Task>
<Task _field="_root_value_55"
name="print+names+in+func+spec+generator"
description="We+should+give+the+print+names+for+fields+in+addition+to+the+actual+names%2C+since+that+allows+for+mapping+what+is+generally+seen.++It+can+be+confusing+to+track+things+down+through+the+data+model+otherwise.++The+print+names+are+at+least+as+important+as+the+real+ones.%0D%0A%0D%0AWhile+we+are+at+it%2C+list+the+config+parameters+for+nodes."
parent="1297"
resourceID="0"
timeEstimate="2"
dueDate="Apr+7%2C+2015+9%3A59%3A35+PM"
taskTypeID="1007"
taskPhaseID="1002"
uniqueID="1271"
creationTime="Dec+17%2C+2004+8%3A55%3A33+PM"
lastModifiedTime="Mar+23%2C+2005+10%3A38%3A47+AM"
lastModifiedReason="TaskHeap+bookkeeping%3A+set+parent+to+1297"
revisionNumber="4"
recordStatus="0"
>
<NoteArray _field="notes" _length="0">
</NoteArray>
</Task>
<Task _field="_root_value_56"
name="Cancel+button+clears+outstanding+updates"
description="In+the+default+form+management%2C+clicking+the+cancel+button+should+clear+any+outstanding+updates.++That+helps+recover+from+problematic+update+situations."
parent="1260"
resourceID="0"
timeEstimate="4"
dueDate="Apr+7%2C+2015+9%3A59%3A35+PM"
taskTypeID="1007"
taskPhaseID="1002"
uniqueID="1272"
creationTime="Dec+17%2C+2004+8%3A57%3A05+PM"
lastModifiedTime="Apr+20%2C+2005+7%3A13%3A38+PM"
lastModifiedReason="TaskHeap+bookkeeping%3A+set+parent+to+1260"
revisionNumber="4"
recordStatus="0"
>
<NoteArray _field="notes" _length="0">
</NoteArray>
</Task>
<Task _field="_root_value_57"
name="multiselect+drop+down+support"
description="The+first+stage+of+this+is+to+generate+a+multiselect+dropdown+for+enumint+fields+in+the+query+message.++Each+multiselect+item+is+related+by+OR.%0D%0A%0D%0AOnce+that%27s+happening%2C+we+want+to+be+able+to+trigger+this+using+some+kind+of+a+tag.++Maybe+%40sand.reference+my.struct.name+fieldname+combined+with+%40sand.flags+multiselectOR.++Figure+that+out+after+the+multiselect+is+working."
parent="1216"
resourceID="0"
timeEstimate="8"
dueDate="Apr+7%2C+2015+9%3A59%3A35+PM"
taskTypeID="1007"
taskPhaseID="1001"
uniqueID="1273"
creationTime="Dec+17%2C+2004+9%3A01%3A56+PM"
lastModifiedTime="Aug+14%2C+2005+9%3A43%3A32+PM"
lastModifiedReason="TaskHeap+bookkeeping%3A+set+parent+to+1216"
revisionNumber="4"
recordStatus="0"
>
<NoteArray _field="notes" _length="1">
<Note _field="notes_0"
subject="14aug05+needs+spec"
comment="This+needs+more+spec.++Maybe+a+string+field+with+enumint+tags+and+a+multiselect+flag+would+be+a+good+way+to+deal+with+this%3F++Then+the+result+could+be+stored+as+a+CSV+of+ints.++On+the+other+hand+a+straight+String+field+with+some+additional+display+transformation+might+do+this.++Tabling+this+until+there+is+a+driving+case."
authorID="1203"
>
</Note>
</NoteArray>
</Task>
<Task _field="_root_value_58"
name="Reregister+MBeans+on+hot+deploy"
description="Now+that+we+are+using+generic+MBeans+which+are+registering+both+in+JBoss+and+standalone+Tomcat%2C+the+next+step+is+to+make+them+resilient+on+hot+deploy.++Currently+hot+deploy+of+a+self-contained+WAR+fails+because+the+MBeans+are+already+registered.++We+need+to+destroy+the+existing+instances+and+recreate+them+in+this+case."
parent="1240"
resourceID="0"
timeEstimate="16"
dueDate="Apr+7%2C+2015+9%3A59%3A35+PM"
taskTypeID="1007"
taskPhaseID="1001"
uniqueID="1274"
creationTime="Dec+17%2C+2004+9%3A03%3A57+PM"
lastModifiedTime="Jun+3%2C+2005+6%3A31%3A36+PM"
lastModifiedReason="initial+creation"
revisionNumber="2"
recordStatus="0"
>
<NoteArray _field="notes" _length="0">
</NoteArray>
</Task>
<Task _field="_root_value_59"
name="protect+against+format+exceptions+in+form+submission"
description="Originally+the+idea+here+was+to+add+more+conversion+around+every+Long.decode+or+Integer.decode+call+in+XHTMLFormAdaptor%2C+but+a+more+useful+alternative+is+to+provide+a+setXYZ%28String+val%29+method+for+any+numeric+or+Date+field+which+does+the+conversion+and+returns+error+text+if+unsuccessful.++That%27s+more+generally+useful+and+easier+to+read+in+the+adaptor+code.%0D%0A%0D%0ARather+than+throwing+the+same+old+NumberFormatException+or+parsing+exception%2C+we+should+rest+the+value+to+the+default+value+and+return+a+message+that+can+be+used+directly+for+output.++So+the+signature+would+be+something+like%0D%0A%0D%0A++++public+String+setUniqueID%28String+val%29%0D%0A%0D%0Awhere+we+would+return+%22%22+if+no+errors%2C+and+%22uniqueID+cannot+be+set+to+xxx%2C+resetting+to+default+value+of+yyy%22+on+failure.++That+way+code+that+is+doing+several+conversions+can+simply+call+StringBuffer.append+with+the+result+text+to+end+up+with+a+legible+list+of+conversion+errors+and+no+text+%22null%22+values.++Localized+adaptors+can+parse+and+convert+the+return+text+since+it+is+always+the+same.%0D%0A%0D%0ASo+the+task+here+is+to+generate+the+new+converter+methods+for+each+message+class%2C+then+change+AbstractXHTMLFormAdaptor+and+XHTMLFormGenerator+to+use+the+new+converter+methods+instead+of+doing+this+inline."
parent="1297"
resourceID="0"
timeEstimate="8"
dueDate="Apr+7%2C+2015+9%3A59%3A35+PM"
taskTypeID="1007"
taskPhaseID="1002"
uniqueID="1275"
creationTime="Jan+8%2C+2005+3%3A06%3A49+PM"
lastModifiedTime="Mar+23%2C+2005+10%3A38%3A42+AM"
lastModifiedReason="TaskHeap+bookkeeping%3A+set+parent+to+1297"
revisionNumber="4"
recordStatus="0"
>
<NoteArray _field="notes" _length="1">
<Note _field="notes_0"
subject="Factored+to+StringUtil+class+instead"
comment="It+turns+out+that+the+right+way+to+do+all+these+conversions+is+with+the+java.text+classes%2C+which+throw+ParseExceptions.++Easiest+to+factor+all+the+standard+conversions+into+static+utils.++Then+converted+the+form+adaptor+and+other+general+modifier+code+to+use+that+instead.++Same+result%2C+slightly+different+approach."
authorID="1203"
>
</Note>
</NoteArray>
</Task>
<Task _field="_root_value_60"
name="Advanced+paging"
description="Once+we+are+able+to+return+the+total+for+a+query%2C+we+can+separate+out%0D%0Apaging+from+the+standard+add%2Fedit%2Fdelete+functions+onto+a+separate+line.%0D%0AThis+line+should+display+the+total%2C+and+then+provide+paging+through+a%0D%0Astandard+text+line+of%0D%0A%0D%0A++prev+1+2+3+4+5+6+7+8+9+10+next+%2812050+total%29%0D%0A%0D%0Awhere+each+item+is+a+link+except+for+the+current+page.++As+you+move+up%0D%0Apast+page+5%2C+the+entire+contents+scrolls%2C+so+for+the+6th+page+you+see%0D%0A%0D%0A++prev+2+3+4+5+6+7+8+9+10+11+next+%2812050+total%29%0D%0A%0D%0Aand+so+on+until+you+run+out+of+data+of+pages+on+the+right.%0D%0A%0D%0ATo+implement+this%2C+we+need+to+provide+support+in+XHTMLFormAdaptor+and%0D%0Aany+other+UIFormAdaptor+implementations.++The+links+all+correspond+to+a%0D%0Anew+button+called+%22pager%22+which+reads+a+request+parameter+of+%22pg%22+that%0D%0Ais+set+to+a+relative+page+number.++So+for+example+pg%3D1+means+forward+one%0D%0Apage+and+pg%3D-1+means+back+one+page.++This+logic+needs+to+be+implemented%0D%0Ain+AbstractFormManager%2C+and+needs+to+be+supported+by+an+additional%0D%0ASandQueryMessage+parameter.+%0D%0A%0D%0AThe+idea+here+is+that+the+query+processing+will+repeat+the+appropriate%0D%0Anumber+of+queries+to+get+to+the+next+relative+page.++So+if+pg%3D5%2C+then%0D%0Awe+would+repeat+the+query+to+the+database+5+times+and+then+retun+that%0D%0Aresult.++A+value+of+-3+would+repeat+the+query+3+times+in+the+reverse%0D%0Adirection."
parent="1216"
resourceID="0"
timeEstimate="80"
dueDate="Apr+7%2C+2015+9%3A59%3A35+PM"
taskTypeID="1007"
taskPhaseID="1001"
uniqueID="1276"
creationTime="Jan+21%2C+2005+5%3A55%3A06+PM"
lastModifiedTime="Jan+21%2C+2005+5%3A55%3A06+PM"
lastModifiedReason="initial+creation"
revisionNumber="1"
recordStatus="0"
>
<NoteArray _field="notes" _length="0">
</NoteArray>
</Task>
<Task _field="_root_value_61"
name="Smart+quoting+of+strings+in+match+value"
description="If+we+are+matching+a+string+field+called+%22name%22%2C+we+might+specify+a+match+value+of+%22Sue+OR+Mary%22.++In+actual+fact+this+needs+to+written+as+%0D%0A%22%5C%22Sue%5C%22+OR+%5C%22Mary%5C%22%22+to+be+processed+correctly.++We+should+provide+some+heuristic+preprocessing+in+these+cases+so+if+an+expression+can+be+tokenized+on+whitespace+we+let+it+go+through."
parent="1279"
resourceID="0"
timeEstimate="4"
dueDate="Apr+7%2C+2015+9%3A59%3A35+PM"
taskTypeID="1007"
taskPhaseID="1001"
uniqueID="1277"
creationTime="Feb+9%2C+2005+9%3A34%3A55+PM"
lastModifiedTime="Feb+21%2C+2005+12%3A52%3A35+PM"
lastModifiedReason="TaskHeap+bookkeeping%3A+set+parent+to+1279"
revisionNumber="2"
recordStatus="0"
>
<NoteArray _field="notes" _length="0">
</NoteArray>
</Task>
<Task _field="_root_value_62"
name="fastXMLWS+servlet+generator"
description="In+response+to+a+sandui+project+declaration+type%3D%22fastXMLWS%22%2C+create+a+servlet+shell+that+initializes+the+implClass+servlet+%28for+example+org.sandboss.tools.UIProcessor.FastWSServlet%29+with+name+of+the+class+implementing+the+CommBridge+interface+%28specified+in+the+ownerNodeNameLookup+param%29.++Fixed+mode+is+assumed.%0D%0A%0D%0AThis+is+analogous+to+the+current+sandui+webapp+declaration%2C+but+source+and+decl+files+get+written+to+the+fastXMLWS+directory+rather+than+the+webapp+directory.++Note+that+there+is+no+target+for+supporting+this+%28or+any+other+custom+interfaces%29+in+mainbuild.xml.++We+should+provide+a+sample+declaration+for+TaskHeapDemo+to+build+THD_FastWS.war+for+illustration+purposes."
parent="1260"
resourceID="0"
timeEstimate="6"
dueDate="Apr+7%2C+2015+9%3A59%3A35+PM"
taskTypeID="1007"
taskPhaseID="1002"
uniqueID="1282"
creationTime="Feb+21%2C+2005+2%3A41%3A08+PM"
lastModifiedTime="Mar+23%2C+2005+10%3A39%3A31+AM"
lastModifiedReason="TaskHeap+bookkeeping%3A+set+parent+to+1260"
revisionNumber="3"
recordStatus="0"
>
<NoteArray _field="notes" _length="0">
</NoteArray>
</Task>
<Task _field="_root_value_63"
name="FastWSServlet+implementation"
description="Create+and+implement+org.sandboss.tools.UIProcessor.FastWSServlet.++This+is+analogous+to+XHTMLSandUIServlet%2C+but+handles+AuthWrapper+messages+via+HTTP+POST+instead.++If+we+can+factor+code+between+these%2C+then+we+should.%0D%0A%0D%0AThe+FastWSServlet+has+a+CommBridge+reference+for+support+in+doing+its+work.++In+response+to+an+HTTP+GET%2C+it+just+returns+the+contents+of+getBufferedMessages.++It+does+no+parameter+setting+or+other+interaction+with+the+CommBridge.++The+idea+is+that+the+CommBridge+is+probably+a+node+with+settings+that+can+be+controlled+through+the+config+and+runtime+control."
parent="1260"
resourceID="0"
timeEstimate="12"
dueDate="Apr+7%2C+2015+9%3A59%3A35+PM"
taskTypeID="1007"
taskPhaseID="1002"
uniqueID="1283"
creationTime="Feb+21%2C+2005+2%3A47%3A53+PM"
lastModifiedTime="Mar+23%2C+2005+10%3A39%3A35+AM"
lastModifiedReason="TaskHeap+bookkeeping%3A+set+parent+to+1260"
revisionNumber="3"
recordStatus="0"
>
<NoteArray _field="notes" _length="0">
</NoteArray>
</Task>
<Task _field="_root_value_64"
name="FastWSClient+class"
description="For+testing%2C+and+to+make+it+easy+to+write+client+apps%2C+we+provide+a+FastWSClient+class+that+is+set+up+with+some+parameters+%28like+the+WS+URL%2C+onReceive+callback+class%2C+polling+interval+etc%29+which+it+uses+to+handle+the+calls+and+polling+needed+for+communications+with+the+server+over+FastWS.%0D%0A%0D%0ATo+make+this+readily+available%2C+we+generate+a+simple+console-based+standalone+java+app+as+part+of+the+SandUI+project.++The+app+reads+a+SandMessage+in+XML+format+from+a+local+file+%28eg+SampleRequest.xml%29%2C+makes+the+call%2C+and+then+dumps+the+results+to+the+screeen.++If+the+file+is+empty+then+it+mentions+that+fact+and+then+dumps+the+result+of+a+GET.++Provide+a+sample+ant+target+that+sets+the+parameters+and+calls+the+app.++That+makes+it+easy+to+test+external+connectivity+at+any+time."
parent="1260"
resourceID="0"
timeEstimate="20"
dueDate="Apr+7%2C+2015+9%3A59%3A35+PM"
taskTypeID="1007"
taskPhaseID="1002"
uniqueID="1284"
creationTime="Feb+21%2C+2005+3%3A15%3A51+PM"
lastModifiedTime="Mar+23%2C+2005+10%3A39%3A41+AM"
lastModifiedReason="TaskHeap+bookkeeping%3A+set+parent+to+1260"
revisionNumber="3"
recordStatus="0"
>
<NoteArray _field="notes" _length="0">
</NoteArray>
</Task>
<Task _field="_root_value_65"
name="Client+.jar+ant+task"
description="Create+an+ant+task+that+will+create+a+single+deployment+project+subdir+containing+all+the+source+needed+for+an+external+client.++This+includes+all+the+generated+sandmessages%2C+supporting+code+like+serializers+and+comm+interfaces%2C+and+a+relatively+small+set+of+the+total+utilities.++This+provides+a+base+for+an+application+to+add+whatever+additional+files+it+wants+to+make+available%2C+build+the+client.jar+as+a+separate+ant+task%2C+and+then+do+whatever+to+make+this+available+to+the+client+app.++This+simplifies+the+client+complexity+and+reduces+the+size+of+any+download+that+is+needed."
parent="1281"
resourceID="0"
timeEstimate="8"
dueDate="Apr+7%2C+2015+9%3A59%3A35+PM"
taskTypeID="1007"
taskPhaseID="1001"
uniqueID="1285"
creationTime="Feb+21%2C+2005+3%3A22%3A08+PM"
lastModifiedTime="Dec+28%2C+2005+3%3A20%3A51+PM"
lastModifiedReason="Added+new+note"
revisionNumber="3"
recordStatus="0"
>
<NoteArray _field="notes" _length="1">
<Note _field="notes_0"
subject="28dec05+or+copy+what+you+need"
comment="In+practice%2C+a+client+app+may+need+only+a+subset+of+the+structs.++I%27m+not+sure+if+there+is+a+need+for+a+general+task+here.++Another+SAND+app+could+simply+copy+in+the+struct+definitions+it+uses+and+then+have+all+the+needed+utilities+generated+for+it.++For+a+non-SAND+app%2C+simply+build+a+SAND+project+for+it+that+has+everything+it+needs%2C+then+link+in+the+resulting+jar.+%0D%0A%0D%0AAlternatively+the+build+could+simply+unpack+the+resulting+.jar+and+copy+over+what+it+needs+to+do+it%27s+work.++Waiting+for+a+driving+use+case+that+can%27t+easily+be+solved+like+this+before+proceeding."
authorID="1203"
>
</Note>
</NoteArray>
</Task>
<Task _field="_root_value_66"
name="Automatic+session+recovery"
description="The+AuthorizedJMSMessager+should+recover+automatically+when+the+session+has+been+closed.++So+if+it+receives+a+javax.jms.IllegalStateException+%22cannot+perform+operation%2C+session+has+been+closed%22%2C+then+it+should+complain+and+then+reinit+to+recover.+%0D%0A%0D%0AThis+happens+if+the+JMS+server+gets+restarted+and+sandboss+doesn%27t."
parent="1286"
resourceID="0"
timeEstimate="4"
dueDate="Apr+7%2C+2015+9%3A59%3A35+PM"
taskTypeID="1007"
taskPhaseID="1001"
uniqueID="1287"
creationTime="Feb+21%2C+2005+3%3A27%3A59+PM"
lastModifiedTime="Feb+21%2C+2005+3%3A27%3A59+PM"
lastModifiedReason="initial+creation"
revisionNumber="1"
recordStatus="0"
>
<NoteArray _field="notes" _length="0">
</NoteArray>
</Task>
<Task _field="_root_value_67"
name="Query+string+serialization"
description="Allow+for+serialization+of+SandQueryMessages+by+providing+toText+and+fromText+methods+in+the+generated+classes.++So+toText+of+a+ResourceQuery+for+username+eric+would+come+out+as%0D%0A%0D%0AResourceQuery+username+%3D+%22eric%22%0D%0A%0D%0AAnd+fromText%28%22ResourceQuery+username+%3D+%5C%22eric%5C%22%22%29+would+reconstruct+the+object.%0D%0A%0D%0AThe+methods+need+to+be+symmetric%2C+but+fromText+does+not+need+to+be+as+forgiving+as+the+general+query+processing+in+terms+of+quoting+or+implied+equality+operators."
parent="1288"
resourceID="0"
timeEstimate="4"
dueDate="Apr+7%2C+2015+9%3A59%3A35+PM"
taskTypeID="1007"
taskPhaseID="1001"
uniqueID="1289"
creationTime="Mar+8%2C+2005+8%3A38%3A41+AM"
lastModifiedTime="Mar+8%2C+2005+8%3A38%3A41+AM"
lastModifiedReason="initial+creation"
revisionNumber="1"
recordStatus="0"
>
<NoteArray _field="notes" _length="0">
</NoteArray>
</Task>
<Task _field="_root_value_68"
name="Note+no+advanced+matching+in+matches+method"
description="The+matches+method+generated+for+each+SandQueryMessage+needs+commentage+describing+that+it+does+not+handle+dereferencing+operations+%28for+example+a+PlanQuery+specifying+%22taskPhaseID.name+%3D+proposed%22%29%2C+or+other+advanced+query+processing+like+subselects.++This+kind+of+processing+is+why+databases+were+invented%2C+so+that%27s+where+we+draw+the+line.+%0D%0A%0D%0AA+generalized+matcher+that+can+handle+the+dereferencing+and+subselects+is+effectively+a+DataManager+implementation+%28or+at+least+a+very+smart+cache%29.++This+kind+of+thing+is+handled+on+a+per+application+basis+as+needed."
parent="1288"
resourceID="0"
timeEstimate="1"
dueDate="Apr+7%2C+2015+9%3A59%3A35+PM"
taskTypeID="1007"
taskPhaseID="1001"
uniqueID="1290"
creationTime="Mar+8%2C+2005+8%3A56%3A01+AM"
lastModifiedTime="Mar+8%2C+2005+8%3A56%3A01+AM"
lastModifiedReason="initial+creation"
revisionNumber="1"
recordStatus="0"
>
<NoteArray _field="notes" _length="0">
</NoteArray>
</Task>
<Task _field="_root_value_69"
name="IN%2FEXCLUDE+matching+for+longs"
description="Extend+the+query+processing+to+allow+the+IN+or+EXCLUDE+operators+for+any+long.++So+for+example+we+could+have+a+ReaderQuery+with+a+match+of%0D%0A%0D%0A%22uniqueID%22%2C%22EXCLUDE+ResourceQuery%22%0D%0A%0D%0AThis+would+trigger+a+NOT+IN+subselect+clause+with+%22SELECT+uniqueID+FROM+Resource%22.++To+avoid+issues+with+String+fields+containing+values+of+%22in%22+or+%22exclude%22%2C+this+matching+is+limited+to+longs."
parent="1288"
resourceID="0"
timeEstimate="16"
dueDate="Apr+7%2C+2015+9%3A59%3A35+PM"
taskTypeID="1007"
taskPhaseID="1001"
uniqueID="1291"
creationTime="Mar+8%2C+2005+9%3A02%3A49+AM"
lastModifiedTime="Mar+8%2C+2005+9%3A02%3A49+AM"
lastModifiedReason="initial+creation"
revisionNumber="1"
recordStatus="0"
>
<NoteArray _field="notes" _length="0">
</NoteArray>
</Task>
<Task _field="_root_value_70"
name="Authorizer+support+for+subqueries"
description="The+Authorizer+needs+to+be+extended+so+it+checks+for+subqueries.++Someone+who+has+no+access+to+Resources+should+not+be+allowed+to+specify+a+ReaderQuery+EXCLUDE+ResourceQuery.++We+have+a+similar+issue+for+dereferencing+using+dot+notation.++The+unpacking+process+for+both+of+these+needs+to+be+handled+by+the+Authorizer+processing.%0D%0A%0D%0ATODO%3A+This+needs+spec."
parent="1288"
resourceID="0"
timeEstimate="16"
dueDate="Apr+7%2C+2015+9%3A59%3A35+PM"
taskTypeID="1007"
taskPhaseID="1001"
uniqueID="1292"
creationTime="Mar+8%2C+2005+9%3A09%3A26+AM"
lastModifiedTime="Mar+8%2C+2005+9%3A09%3A26+AM"
lastModifiedReason="initial+creation"
revisionNumber="1"
recordStatus="0"
>
<NoteArray _field="notes" _length="0">
</NoteArray>
</Task>
<Task _field="_root_value_71"
name="add+norefdisplay+to+FieldTagFlags"
description="In+cases+where+an+instance+contains+an+extensive+array+of+references+to+other+objects+%28for+example+a+batch+processing+control+structure%29%2C+the+SANDForms+display+needs+to+be+alerted+that+it+should+not+retrieve+each+instance+to+generate+a+summary+display+form.++While+this+is+generally+very+helpful+when+following+links+between+instances+in+the+display%2C+the+overhead+from+these+queries+can+be+prohibitive+in+the+batch+control+structure+case.++We+need+a+norefdisplay+tag+to+indicate+that+the+summary+info+should+not+be+retrieved."
parent="1260"
resourceID="0"
timeEstimate="8"
dueDate="Apr+7%2C+2015+9%3A59%3A35+PM"
taskTypeID="1007"
taskPhaseID="1002"
uniqueID="1293"
creationTime="Mar+9%2C+2005+11%3A00%3A02+PM"
lastModifiedTime="Mar+27%2C+2005+9%3A42%3A31+PM"
lastModifiedReason="TaskHeap+bookkeeping%3A+set+parent+to+1260"
revisionNumber="3"
recordStatus="0"
>
<NoteArray _field="notes" _length="0">
</NoteArray>
</Task>
<Task _field="_root_value_72"
name="Actions+on+collections"
description="When+working+with+a+SandCollectionMessage%2C+we+want+to+enable+the+selection+of+multiple+instances+to+apply+a+single+function+to.++For+example+you+might+want+to+select+13+out+of+20+instances+to+delete.%0D%0A%0D%0ATo+handle+this+and+numerous+other+multi-select+situations%2C+we+will+provide+a+%22Select%22+button+for+collections.++When+first+clicked%2C+this+puts+checkboxes+in+front+of+all+the+collection+elements%2C+and+displays+%22Mark+All%22%2C+%22Clear+All%22%2C+and+%22Select%22+buttons.++The+second+select+click+restricts+the+collection+to+the+checked+items.%0D%0A%0D%0AApplications+can+%28as+usual%29+provide+their+own+custom+buttons+to+handle+deleting%2C+accepting%2C+or+otherwise+manipulating+multiple+items."
parent="1278"
resourceID="0"
timeEstimate="32"
dueDate="Apr+7%2C+2015+9%3A59%3A35+PM"
taskTypeID="1007"
taskPhaseID="1001"
uniqueID="1294"
creationTime="Mar+9%2C+2005+11%3A09%3A22+PM"
lastModifiedTime="Mar+23%2C+2005+11%3A09%3A28+AM"
lastModifiedReason="initial+creation"
revisionNumber="2"
recordStatus="0"
>
<NoteArray _field="notes" _length="0">
</NoteArray>
</Task>
<Task _field="_root_value_73"
name="requiredMode+parameter"
description="Modify+the+TaskHeapDemo+build.xml+to+show+how+development%2Fproduction+builds+can+be+generally+managed.++The+approach+I%27m+thinking+of+is+to+have+a+%22requiredMode%22+parameter+in+the+sandpersist+task+which+it+checks+at+runtime+to+see+if+it+matches+a+global+%22SANDevMode%22+property.++So+you+might+have+two+sandpersist+task+declarations+in+the+%22sandproject%22+target%2C+one+with+requiredMode%3D%22development%22+and+the+other+with+requiredMode%3D%22production%22.++Then+we+have+a+SANDevMode+property+which+is+set+to+one+of+these+%28or+read+from+the+environment+or+whatever+makes+sense%29.++Not+sure+if+that%27s+the+best+thing%2C+but+we+need+something+that+allows+switching+without+any+significant+modification+to+avoid+typos+screwing+up+an+otherwise+tested+deployment.++Whatever+makes+the+most+sense."
parent="1298"
resourceID="0"
timeEstimate="16"
dueDate="Apr+7%2C+2015+9%3A59%3A35+PM"
taskTypeID="1007"
taskPhaseID="1002"
uniqueID="1299"
creationTime="Mar+27%2C+2005+3%3A43%3A20+PM"
lastModifiedTime="Apr+5%2C+2005+11%3A03%3A44+AM"
lastModifiedReason="initial+creation"
revisionNumber="2"
recordStatus="0"
>
<NoteArray _field="notes" _length="0">
</NoteArray>
</Task>
<Task _field="_root_value_74"
name="tablePrefix+parameter"
description="Table+prefixing+is+a+good+thing+to+have+on+by+default%2C+so+the+generated+deployment+doesn%27t+conflict+with+other+deployments+of+the+same+app%2C+or+have+any+table+overlap+issues.++The+persistence+declaration+has+a+tablePrefix+parameter+which+is+set+to+the+deployment+prefix+in+our+example+code."
parent="1298"
resourceID="0"
timeEstimate="4"
dueDate="Apr+7%2C+2015+9%3A59%3A35+PM"
taskTypeID="1007"
taskPhaseID="1002"
uniqueID="1300"
creationTime="Mar+27%2C+2005+9%3A37%3A40+PM"
lastModifiedTime="Apr+17%2C+2005+1%3A22%3A20+PM"
lastModifiedReason="initial+creation"
revisionNumber="2"
recordStatus="0"
>
<NoteArray _field="notes" _length="0">
</NoteArray>
</Task>
<Task _field="_root_value_75"
name="autogenerate+db+clear+script"
description="We+should+autogenerate+a+script+to+drop+all+the+tables+for+the+deployment+so+that+it+is+possible+to+reinitialize+the+db+from+scratch.++Maintaining+this+with+the+automatic+prefixing+will+turn+into+an+unnecessary+hassle."
parent="1298"
resourceID="0"
timeEstimate="4"
dueDate="Apr+7%2C+2015+9%3A59%3A35+PM"
taskTypeID="1007"
taskPhaseID="1002"
uniqueID="1301"
creationTime="Mar+27%2C+2005+9%3A40%3A11+PM"
lastModifiedTime="Apr+17%2C+2005+1%3A22%3A33+PM"
lastModifiedReason="initial+creation"
revisionNumber="2"
recordStatus="0"
>
<NoteArray _field="notes" _length="0">
</NoteArray>
</Task>
<Task _field="_root_value_76"
name="Full+exception+bulletproofing"
description="We+never+want+to+crash+with+a+server+500+error%2C+so+make+sure+we+trap+all+exceptions+that+occur+during+processing+and+return+some+kind+of+an+error+message+inside+of+an+AuthWrapper."
parent="1281"
resourceID="0"
timeEstimate="4"
dueDate="Apr+7%2C+2015+9%3A59%3A35+PM"
taskTypeID="1007"
taskPhaseID="1001"
uniqueID="1302"
creationTime="Mar+27%2C+2005+9%3A41%3A44+PM"
lastModifiedTime="Mar+27%2C+2005+9%3A41%3A44+PM"
lastModifiedReason="initial+creation"
revisionNumber="1"
recordStatus="0"
>
<NoteArray _field="notes" _length="0">
</NoteArray>
</Task>
<Task _field="_root_value_77"
name="Host-specific+launch"
description="SandBossRootNode+needs+to+launch+only+the+nodes+that+should+be+launched+for+the+server+it+is+currently+on.++We+can%27t+rely+on+figuring+this+out+from+the+network+environment%2C+so+we+need+to+use+a+setting.++To+figure+out+the+current+host%2C+the+root+will+look+for%0D%0A1.+A+%22sandhostname%22+system+property.%0D%0A2.+A+%22SANDHOSTNAME%22+environment+variable.%0D%0A3.+A+%22hostname%22+system+property.%0D%0A4.+A+%22HOSTNAME%22+environment+variable.%0D%0AIf+none+of+these+are+found+then+the+hostname+is+%22%22.%0D%0A%0D%0AThe+host+name+value+can+be+set+to+a+single+name%2C+or+a+CSV+of+names.++The+root+will+launch+all+node+instances+declared+to+be+running+on+the+host%28s%29+defined.++The+reserved+value+%22SAND_ALLNODESLOCAL%22+directs+the+root+to+launch+all+nodes+regardless+of+which+server+they+are+declared+to+be+running+on.++If+hostname+ends+up+as+%22%22+that+is+treated+as+SAND_ALLNODESLOCAL+by+default.%0D%0A%0D%0ASandRoot+exposes+two+new+methods%3A+getHostName%28%29+and+overrideHostName%28String%29.++The+first+is+a+general+utility+and+the+second+allows+things+like+XHTMLSandUIServlet+to+force+local+launch.%0D%0A%0D%0AWe+log+what+the+hostname+is+when+we+figure+it+out%2C+or+when+it+is+overridden.++It+should+be+clear+from+the+log+what+host+we+are+on."
parent="1304"
resourceID="0"
timeEstimate="8"
dueDate="Apr+7%2C+2015+9%3A59%3A35+PM"
taskTypeID="1007"
taskPhaseID="1001"
uniqueID="1307"
creationTime="Apr+5%2C+2005+11%3A15%3A03+AM"
lastModifiedTime="Apr+5%2C+2005+11%3A19%3A10+AM"
lastModifiedReason="initial+creation"
revisionNumber="2"
recordStatus="0"
>
<NoteArray _field="notes" _length="0">
</NoteArray>
</Task>
<Task _field="_root_value_78"
name="Clean+up+query+processing"
description="The+query+processing+SQL+might+be+easier+to+understand+if+we+defined+a+SQLQuery+class+with+%0D%0AString+selectClause%0D%0AString+fromClause%0D%0AString+whereClause%0D%0AString+orderByClause%0D%0Aand+then+had+methods+to+generate+result+SQL+based+on+the+target+DB.%0D%0A%0D%0AAt+this+point+what+we+have+is+working+and+relatively+stable%2C+so+this+is+not+the+highest+prio%2C+but+it+might+help+to+support+more+databases+in+the+future+and+make+things+more+readable+next+time+we+need+to+go+in+there."
parent="1338"
resourceID="0"
timeEstimate="8"
dueDate="Apr+7%2C+2015+9%3A59%3A35+PM"
taskTypeID="1007"
taskPhaseID="1001"
uniqueID="1308"
creationTime="Apr+5%2C+2005+11%3A24%3A15+AM"
lastModifiedTime="Aug+14%2C+2005+9%3A38%3A04+PM"
lastModifiedReason="TaskHeap+bookkeeping%3A+set+parent+to+1338"
revisionNumber="2"
recordStatus="0"
>
<NoteArray _field="notes" _length="0">
</NoteArray>
</Task>
<Task _field="_root_value_79"
name="Messaging.html+improvements"
description="Add+a+section+in+the+beginning+talking+about+basic+usage.++Call+with+a+SandQueryMessage%2C+get+a+SandCollectionMessage+in+return.++Call+with+a+SandUpdateMessage%2C+get+a+SandUpdateMessage+back.++We+need+to+cover+the+basics+here+first.%0D%0A%0D%0ANote+that+in+practice+many+times+even+single+updates+are+wrapped+inside+of+an+AggregateUpdate+message%2C+since+that+saves+on+comm+declarations+and+authorization+processing."
parent="1260"
resourceID="0"
timeEstimate="6"
dueDate="Apr+7%2C+2015+9%3A59%3A35+PM"
taskTypeID="1007"
taskPhaseID="1002"
uniqueID="1309"
creationTime="Apr+5%2C+2005+11%3A27%3A54+AM"
lastModifiedTime="Nov+28%2C+2005+3%3A39%3A16+PM"
lastModifiedReason="TaskHeap+bookkeeping%3A+set+parent+to+1260"
revisionNumber="5"
recordStatus="0"
>
<NoteArray _field="notes" _length="0">
</NoteArray>
</Task>
<Task _field="_root_value_80"
name="SAND+intro+doc"
description="Create+an+intro+document+describing+SAND.++Modeling+this+as+following+an+%22introduction+to+distributed+systems%22+slideshow+might+bore+some+people+in+spots%2C+but+it%27s+still+the+best+format+for+most+of+our+audience.%0D%0A%0D%0AWrite+this+up."
parent="1305"
resourceID="0"
timeEstimate="16"
dueDate="Apr+7%2C+2015+9%3A59%3A35+PM"
taskTypeID="1007"
taskPhaseID="1001"
uniqueID="1310"
creationTime="Apr+5%2C+2005+11%3A51%3A35+AM"
lastModifiedTime="Apr+5%2C+2005+11%3A51%3A35+AM"
lastModifiedReason="initial+creation"
revisionNumber="1"
recordStatus="0"
>
<NoteArray _field="notes" _length="0">
</NoteArray>
</Task>
<Task _field="_root_value_81"
name="Leave+selection+after+move+up%2Fdown"
description="After+moving+an+array+element+up+or+down%2C+leave+it+selected+so+it+can+be+easily+moved+again.++Having+to+reselect+it+each+time+you+move+it+one+spot+is+definitely+annoying."
parent="1260"
resourceID="0"
timeEstimate="8"
dueDate="Apr+7%2C+2015+9%3A59%3A35+PM"
taskTypeID="1007"
taskPhaseID="1002"
uniqueID="1311"
creationTime="Apr+5%2C+2005+11%3A53%3A04+AM"
lastModifiedTime="May+28%2C+2005+3%3A05%3A19+PM"
lastModifiedReason="TaskHeap+bookkeeping%3A+set+parent+to+1260"
revisionNumber="3"
recordStatus="0"
>
<NoteArray _field="notes" _length="0">
</NoteArray>
</Task>
<Task _field="_root_value_82"
name="Outdenting+a+task+causes+orphaning"
description="Outdenting+a+task+loses+it.++Moving+C+from+A-B-C+to+A-C+loses+C.++The+child+points+to+the+parent+but+the+parent+does+not+have+a+reference+to+the+child.++Fix+this.++It%27s+kind+of+a+heart+attack+when+the+task+disappears%2C+and+worse+if+you+don%27t+notice+it.++Need+to+fix+this+before+production.%0D%0A%0D%0ASee+UpdateManagerNode+v1.27"
parent="1260"
resourceID="0"
timeEstimate="6"
dueDate="Apr+7%2C+2015+9%3A59%3A35+PM"
taskTypeID="1007"
taskPhaseID="1002"
uniqueID="1312"
creationTime="Apr+5%2C+2005+11%3A55%3A38+AM"
lastModifiedTime="Apr+21%2C+2005+4%3A53%3A31+PM"
lastModifiedReason="TaskHeap+bookkeeping%3A+set+parent+to+1260"
revisionNumber="4"
recordStatus="0"
>
<NoteArray _field="notes" _length="0">
</NoteArray>
</Task>
<Task _field="_root_value_83"
name="Import+logs+progress"
description="The+import+processing+should+log+which+number+object+it%27s+on%2C+so+you+that+you+can+see+where+it+is+at.++Do+this+right+before+the+insert+call."
parent="1260"
resourceID="0"
timeEstimate="2"
dueDate="Apr+7%2C+2015+9%3A59%3A35+PM"
taskTypeID="1007"
taskPhaseID="1002"
uniqueID="1313"
creationTime="Apr+20%2C+2005+11%3A53%3A53+PM"
lastModifiedTime="Nov+28%2C+2005+3%3A39%3A44+PM"
lastModifiedReason="TaskHeap+bookkeeping%3A+set+parent+to+1260"
revisionNumber="5"
recordStatus="0"
>
<NoteArray _field="notes" _length="0">
</NoteArray>
</Task>
<Task _field="_root_value_84"
name="Better+string+length+error+handling"
description="Trap+string+length+violations+up+front+so+that+the+returned+error+message+explains+which+field+was+a+problem%2C+what+the+current+length+is%2C+and+what+the+declared+maximum+length+is."
parent="1260"
resourceID="0"
timeEstimate="4"
dueDate="Apr+7%2C+2015+9%3A59%3A35+PM"
taskTypeID="1007"
taskPhaseID="1002"
uniqueID="1314"
creationTime="Apr+20%2C+2005+11%3A55%3A59+PM"
lastModifiedTime="Nov+28%2C+2005+3%3A39%3A52+PM"
lastModifiedReason="TaskHeap+bookkeeping%3A+set+parent+to+1260"
revisionNumber="8"
recordStatus="0"
>
<NoteArray _field="notes" _length="2">
<Note _field="notes_0"
subject="04aug05+trapping+but+not+done+yet"
comment="I+tried+to+enter+a+name+in+TaskHeap+that+was+too+long%2C+and+it+trapped+it%2C+but+it+didn%27t+give+any+helpful+info+in+the+error+as+described+so+this+is+still+open."
authorID="1203"
>
</Note>
<Note _field="notes_1"
subject="16aug05+better+error+messages"
comment="The+default+error+constants+in+SandInstanceMessage+now+include+substitution+tokens%2C+and+the+generated+instance+verification+methods+fill+them+out.++So+now+the+default+errors+are+much+better.++So+now+it+will+be+difficult+to+get+bad+values+past+the+UI+checking.++That+leaves+raw+database+updates.++To+get+a+bad+value+into+the+db%2C+someone+would+need+to+skip+the+standard+checking.++If+they+do+that%2C+then+the+results+are+currently+DB-dependent.++That+seems+ok+to+me%2C+so+marking+this+as+finished.++Some+DBs+will+truncate%2C+some+will+expand+as+needed%2C+and+others+will+throw+an+exception.++Shouldn%27t+affect+the+user+under+most+circumstances."
authorID="1203"
>
</Note>
</NoteArray>
</Task>
<Task _field="_root_value_85"
name="Thousands+separator+for+numbers"
description="Change+the+default+numeric+output+to+use+number+formatting+rather+than+the+default+toString+conversion.++That+way+we+can+get+the+commas+for+large+numbers+in+there."
parent="1278"
resourceID="0"
timeEstimate="8"
dueDate="Apr+7%2C+2015+9%3A59%3A35+PM"
taskTypeID="1007"
taskPhaseID="1001"
uniqueID="1316"
creationTime="Apr+23%2C+2005+12%3A44%3A58+PM"
lastModifiedTime="Apr+23%2C+2005+12%3A44%3A58+PM"
lastModifiedReason="initial+creation"
revisionNumber="1"
recordStatus="0"
>
<NoteArray _field="notes" _length="0">
</NoteArray>
</Task>
<Task _field="_root_value_86"
name="Get+the+ExternalPlan+refresh+working"
description="As+an+http+client%2C+assume+that+the+URL+for+the+ExternalPlan+points+to+the+report+output+area+where+that+plan+can+be+found.++Read+the+remaining+hours+off+that+report+if+asked+to+recalc."
parent="1261"
resourceID="0"
timeEstimate="16"
dueDate="Apr+7%2C+2015+9%3A59%3A35+PM"
taskTypeID="1007"
taskPhaseID="1002"
uniqueID="1317"
creationTime="May+19%2C+2005+11%3A58%3A15+AM"
lastModifiedTime="Sep+23%2C+2005+12%3A25%3A32+PM"
lastModifiedReason="initial+creation"
revisionNumber="2"
recordStatus="0"
>
<NoteArray _field="notes" _length="0">
</NoteArray>
</Task>
<Task _field="_root_value_87"
name="Clean+up+Resource+display"
description="The+public+key+field+should+be+hidden+and+not+used+by+default.++The+userParams+field+shouldn%27t+be+showing+up+for+display.++Probably+want+a+status+field+so+it+is+possible+to+disable+a+user+without+deleting+them.%0D%0A%0D%0AAlso+added+form+links+to+struct+descriptions%2C+fixed+the+help+file+access%2C+and+added+title+prefixing+in+the+display."
parent="1260"
resourceID="0"
timeEstimate="16"
dueDate="Apr+7%2C+2015+9%3A59%3A35+PM"
taskTypeID="1007"
taskPhaseID="1002"
uniqueID="1318"
creationTime="May+19%2C+2005+12%3A02%3A16+PM"
lastModifiedTime="Jun+3%2C+2005+6%3A22%3A50+PM"
lastModifiedReason="TaskHeap+bookkeeping%3A+set+parent+to+1260"
revisionNumber="5"
recordStatus="0"
>
<NoteArray _field="notes" _length="0">
</NoteArray>
</Task>
<Task _field="_root_value_88"
name="prepulate+ddmmmyy+for+notes+subject"
description="Notes+are+frequently+time+based%2C+so+it%27s+helpful+to+know+when+a+note+was+added.++Default+the+subject+so+it+starts+with+%2204may05+%22+so+its+easy+to+enter+new+notes+with+the+timestamp."
parent="1260"
resourceID="0"
timeEstimate="2"
dueDate="Apr+7%2C+2015+9%3A59%3A35+PM"
taskTypeID="1007"
taskPhaseID="1002"
uniqueID="1319"
creationTime="May+19%2C+2005+12%3A07%3A23+PM"
lastModifiedTime="Jun+7%2C+2005+11%3A33%3A44+AM"
lastModifiedReason="TaskHeap+bookkeeping%3A+set+parent+to+1260"
revisionNumber="4"
recordStatus="0"
>
<NoteArray _field="notes" _length="0">
</NoteArray>
</Task>
<Task _field="_root_value_89"
name="Explicit+MBean+reset+%28hot+redeploy%29"
description="Currently+hot+deploy+of+a+war+can+fail+if+the+node+control+MBeans+were+already+registered.++We+need+to+check+for+an+existing+registration+and+reset+it+as+necessary+on+startup.%0D%0A%0D%0AWe+can%27t+rely+on+appropriate+signaling+for+teardown.++Even+if+this+were+generally+reliable%2C+we+would+still+want+the+reset+capability."
parent="1304"
resourceID="0"
timeEstimate="16"
dueDate="Apr+7%2C+2015+9%3A59%3A35+PM"
taskTypeID="1007"
taskPhaseID="1001"
uniqueID="1320"
creationTime="May+19%2C+2005+12%3A20%3A37+PM"
lastModifiedTime="Jul+15%2C+2005+11%3A17%3A36+AM"
lastModifiedReason="initial+creation"
revisionNumber="2"
recordStatus="0"
>
<NoteArray _field="notes" _length="0">
</NoteArray>
</Task>
<Task _field="_root_value_90"
name="dump+deployment+prefix"
description="Dump+the+deployment+prefix+out+as+part+of+the+general+info+after+the+locale+and+language+info.++Then+pick+up+on+this+in+the+transform+to+prefix+the+title+so+it+is+easy+to+see+which+heap+you+are+working+with."
parent="1260"
resourceID="0"
timeEstimate="4"
dueDate="Apr+7%2C+2015+9%3A59%3A35+PM"
taskTypeID="1007"
taskPhaseID="1002"
uniqueID="1321"
creationTime="May+19%2C+2005+12%3A53%3A36+PM"
lastModifiedTime="May+23%2C+2005+1%3A04%3A00+PM"
lastModifiedReason="TaskHeap+bookkeeping%3A+set+parent+to+1260"
revisionNumber="3"
recordStatus="0"
>
<NoteArray _field="notes" _length="0">
</NoteArray>
</Task>
<Task _field="_root_value_91"
name="Split+deployment+prefix+into+deployment+and+application"
description="Split+the+current+DeploymentPrefix+property+into+an+ApplicationPrefix+and+a+DeploymentPrefix.++This+allows+optimum+memory+usage+in+a+multi-app+deployment+environment.++Things+like+XHTMLFormAdaptor+use+the+ApplicationPrefix%2C+since+they+can+be+shared+across+multiple+runtime+instances.++Things+like+the+JDBCPersister+and+supporting+database+code+uses+the+ApplicationPrefix+to+generate+code%2C+which+takes+the+DeploymentPrefix+as+a+parameter+of+what+tables+to+access."
parent="1240"
resourceID="0"
timeEstimate="32"
dueDate="Apr+7%2C+2015+9%3A59%3A35+PM"
taskTypeID="1007"
taskPhaseID="1001"
uniqueID="1322"
creationTime="May+19%2C+2005+1%3A38%3A23+PM"
lastModifiedTime="May+19%2C+2005+1%3A38%3A23+PM"
lastModifiedReason="initial+creation"
revisionNumber="1"
recordStatus="0"
>
<NoteArray _field="notes" _length="0">
</NoteArray>
</Task>
<Task _field="_root_value_92"
name="Move+CSVSerializer+into+apps+util"
description="XMLSerializer+was+moved+into+the+util+directory+of+the+last+application+before+the+deployment+in+the+build+chain.++That+was+so+the+same+class+could+be+shared+across+multiple+deployments+of+the+same+app.++CSVSerialier+is+analogous%2C+and+it+should+go+to+the+same+place.++Change+the+generator+and+any+dependent+code+to+move+this+over."
parent="1260"
resourceID="0"
timeEstimate="3"
dueDate="Apr+7%2C+2015+9%3A59%3A35+PM"
taskTypeID="1007"
taskPhaseID="1002"
uniqueID="1323"
creationTime="May+19%2C+2005+1%3A44%3A52+PM"
lastModifiedTime="Jun+8%2C+2005+11%3A44%3A34+AM"
lastModifiedReason="TaskHeap+bookkeeping%3A+set+parent+to+1260"
revisionNumber="4"
recordStatus="0"
>
<NoteArray _field="notes" _length="0">
</NoteArray>
</Task>
<Task _field="_root_value_93"
name="Update+parent+collection+on+Add"
description="When+adding+a+new+element+and+then+clicking+%22parent%22%2C+the+new+element+isn%27t+displayed+in+the+collection.++We+need+to+test+the+new+element+they+added+against+the+find+query+they+were+using%2C+and+if+it+matches%2C+add+it+to+the+collection.++If+it+doesn%27t+match%2C+then+we+should+disable+the+parent+button.%0D%0A%0D%0AActually+the+find+query+may+have+been+overwritten+in+the+process+of+adding+the+new+instance%2C+so+we+should+add+the+new+instance+to+the+parent+collection+regadless+of+whether+it+matches+or+not."
parent="1260"
resourceID="0"
timeEstimate="4"
dueDate="Apr+7%2C+2015+9%3A59%3A35+PM"
taskTypeID="1007"
taskPhaseID="1002"
uniqueID="1324"
creationTime="May+19%2C+2005+2%3A20%3A56+PM"
lastModifiedTime="May+31%2C+2005+11%3A33%3A12+AM"
lastModifiedReason="TaskHeap+bookkeeping%3A+set+parent+to+1260"
revisionNumber="4"
recordStatus="0"
>
<NoteArray _field="notes" _length="0">
</NoteArray>
</Task>
<Task _field="_root_value_94"
name="Avoid+recreating+demo+data"
description="The+demo+data+gets+recreated+each+time.++Something+is+causing+the+isEquivalent+check+to+fail+and+so+we+rewrite+it+on+startup.++The+isEquivalent+method+only+checks+the+base+declared+fields%2C+this+is+being+caused+by+the+algo%2C+which+always+ended+up+resetting+the+components+in+the+main+demo+plan.++Better+now."
parent="1260"
resourceID="0"
timeEstimate="4"
dueDate="Apr+7%2C+2015+9%3A59%3A35+PM"
taskTypeID="1007"
taskPhaseID="1002"
uniqueID="1325"
creationTime="May+20%2C+2005+1%3A20%3A08+PM"
lastModifiedTime="Jun+7%2C+2005+7%3A12%3A26+PM"
lastModifiedReason="TaskHeap+bookkeeping%3A+set+parent+to+1260"
revisionNumber="5"
recordStatus="0"
>
<NoteArray _field="notes" _length="0">
</NoteArray>
</Task>
<Task _field="_root_value_95"
name="Reset+lastModifiedReason+on+update"
description="When+editing+an+existing+instance%2C+reset+the+the+lastModifiedReason+to+the+empty%0D%0Astring+so+we+don%27t+get+the+same+text+being+written+each+time.++This+is+especially+stupid+when+it+continues+to+say+%22Initial+creation%22+or+whatever."
parent="1260"
resourceID="0"
timeEstimate="4"
dueDate="Apr+7%2C+2015+9%3A59%3A35+PM"
taskTypeID="1007"
taskPhaseID="1002"
uniqueID="1326"
creationTime="May+28%2C+2005+5%3A42%3A39+PM"
lastModifiedTime="Jun+7%2C+2005+11%3A08%3A15+AM"
lastModifiedReason="TaskHeap+bookkeeping%3A+set+parent+to+1260"
revisionNumber="4"
recordStatus="0"
>
<NoteArray _field="notes" _length="0">
</NoteArray>
</Task>
<Task _field="_root_value_96"
name="SandBuildDriver+reset+ant+task"
description="We+need+an+ant+task+to+nuke+the+SandBuildDriver+so+it+can+be+reset.++Currently+it+is+not+possible+to+do+several+top+level+independent+ant+builds+within+a+single+target%2C+because+the+SBD+context+carries+over.++We+need+a+way+to+tell+the+SBD+when+we+are+done+with+it."
parent="1240"
resourceID="0"
timeEstimate="6"
dueDate="Apr+7%2C+2015+9%3A59%3A35+PM"
taskTypeID="1007"
taskPhaseID="1001"
uniqueID="1328"
creationTime="Jun+3%2C+2005+6%3A34%3A53+PM"
lastModifiedTime="Jun+3%2C+2005+6%3A34%3A53+PM"
lastModifiedReason="initial+creation"
revisionNumber="1"
recordStatus="0"
>
<NoteArray _field="notes" _length="0">
</NoteArray>
</Task>
<Task _field="_root_value_97"
name="more+flexible+XMLSerializer"
description="The+XMLSerializer+should+avoid+using+array+element+totals%2C+or+use+them+just+as+an+initial+guide.++It+should+avoid+using+indices+or+other+values+that+make+it+hard+to+insert+new+array+elements+during+hand+editing.++It+should+also+fall+back+to+using+a+full+SAX+parser+if+reading+fails.%0D%0A%0D%0ABy+making+these+changes%2C+we+retain+the+speed+used+for+messaging%2C+but+we+also+gain+the+capability+of+being+able+to+easily+hand+edit+the+config+and+sandui+files%2C+and%2For+have+other+editors+built+for+these+that+aren%27t+tied+to+our+XMLSerializer."
parent="1304"
resourceID="0"
timeEstimate="24"
dueDate="Apr+7%2C+2015+9%3A59%3A35+PM"
taskTypeID="1007"
taskPhaseID="1001"
uniqueID="1329"
creationTime="Jun+14%2C+2005+12%3A11%3A51+PM"
lastModifiedTime="Jun+14%2C+2005+12%3A11%3A51+PM"
lastModifiedReason="initial+creation"
revisionNumber="1"
recordStatus="0"
>
<NoteArray _field="notes" _length="0">
</NoteArray>
</Task>
<Task _field="_root_value_98"
name="easier+current+plan+selection"
description="Having+a+current+plan+to+move+things+to+is+great%2C+but+it+would+be+a+lot+better+if+we+could+select+this+more+easily.++I+might+want+to+factor+existing+work+into+several+places+at+once+%28eg+%22reference+recycling%22%2C+%22phase+3+work%22%2C+%22hidden+recycling%22+and+%22future%22%29.++Having+to+reselect+the+current+plan+each+time+as+I+work+through+a+list+is+kind+of+a+pain.++The+idea+here+is+to+remember+which+plans+have+been+marked+as+current+at+some+point%2C+and+then+offer+a+drop+down+or+some+mechanism+to+switch+between+them+without+losing+context+on+the+current+component+being+viewed.++Not+sure+how+to+do+this.%0D%0A%0D%0AAnother+option+is+to+have+a+selection+icon+for+each+item+in+the+outline%2C+with+the+current+item+noted.++So+small+titlebar+colored+spheres+in+front+of+each+plan%2C+which+when+clicked+set+the+current+plan+to+the+selected+one.++The+selected+plan+has+a+large+sphere+in+front+of+it+that+does+nothing.++That+would+move+things+around+pretty+quickly."
parent="1260"
resourceID="0"
timeEstimate="24"
dueDate="Jul+11%2C+2025+3%3A33%3A09+PM"
taskTypeID="1007"
taskPhaseID="1002"
uniqueID="1332"
creationTime="Jul+16%2C+2005+3%3A37%3A57+PM"
lastModifiedTime="Nov+28%2C+2005+3%3A40%3A15+PM"
lastModifiedReason="TaskHeap+bookkeeping%3A+set+parent+to+1260"
revisionNumber="6"
recordStatus="0"
>
<NoteArray _field="notes" _length="1">
<Note _field="notes_0"
subject="04aug05+Solved+through+outline+buttons"
comment="Handled+this+through+two+graphic+buttons+in+the+revised+outline+view.++The+first+sets+the+current+plan%2C+and+the+second+moves+an+item+into+the+current+plan.++Really+quick+to+reorganize+things+now.++The+movement+is+smart+enough+so+it+prepends+when+something+is+being+pushed+down%2C+and+appends+when+something+is+being+pushed+up.++That+saves+a+lot+of+reorganizing+at+the+plan+ordering+level+also."
authorID="1203"
>
</Note>
</NoteArray>
</Task>
<Task _field="_root_value_99"
name="Smart+caching+of+Plans+and+Tasks"
description="By+preloading+Plans+and+Tasks+into+our+cache+via+a+single+database+query%2C+we+can+reduce+the+number+of+database+calls+required+to+construct+the+initial+heap+display.++But+if+we+precache+hidden+tasks%2Fplans%2C+then+we+are+potentially+holding+a+lot+of+info+in+memory+that+we+don%27t+need+for+display.++Find+an+appropropriate+balance+for+the+cache+preload."
parent="1261"
resourceID="0"
timeEstimate="8"
dueDate="Jul+11%2C+2025+3%3A40%3A43+PM"
taskTypeID="1007"
taskPhaseID="1002"
uniqueID="1333"
creationTime="Jul+16%2C+2005+3%3A44%3A05+PM"
lastModifiedTime="Aug+24%2C+2005+10%3A11%3A24+AM"
lastModifiedReason=""
revisionNumber="7"
recordStatus="0"
>
<NoteArray _field="notes" _length="1">
<Note _field="notes_0"
subject="24aug05+types+of+heaps"
comment="new+heaps%3A+small+numbers+of+tasks%2Fplans%2C+precaching+not+necessary.%0D%0Aold+heaps%3A+large+numbers+of+hidden+tasks%2Fplans+for+finished+work.++Dumb+precaching+wastes+memory.+%0D%0A%0D%0AWe+are+better+off+without+precaching%2C+unless+the+precaching+is+smart.++But+being+smart+is+difficult%2C+since+hiding+is+computed+at+runtime.++A+plan+or+task+is+hidden+if+any+of+its+ancestors+are+hidden%2C+so+even+if+a+PlanQuery+matches+on+visibility%3DPlan.VISIBILITY_INTERNAL+it+may+still+be+hidden+it+its+parent%2C+grandparent%2C+or+other+ancestor+is+VISIBILITY_HIDDEN.++So+there+is+no+way+to+do+this+via+database+matching+without+query+computations+that+rival+how+long+it+takes+to+load+the+WBS+in+the+first+place.%0D%0A%0D%0AThe+only+way+to+make+precaching+really+work+is+to+do+open+ended+queries+for+all+tasks+and+plans%2C+then+clean+up+the+extra+that+got+loaded+in.++That+doesn%27t+seem+worth+it+for+the+time+it+saves+%28if+it+saves+any+time+at+all+for+older+heaps%29.%0D%0A%0D%0AThe+initial+display+is+always+driven+by+what+is+on+screen%2C+so+if+for+all+heaps+we+are+looking+at+a+maximum+of+a+few+screenfulls%2C+then+the+initial+time+will+be+bounded+by+that.++Disabled+precaching+for+now."
authorID="1203"
>
</Note>
</NoteArray>
</Task>
<Task _field="_root_value_100"
name="config+editor+dies+with+sand.flags+dynamicselect"
description="The+%40sand.flags+dynamicselect+messes+up+the+config+editor+so+it+spits+out+the+%22save+parent+before+editing%22+placeholder.++Fix+this.%0D%0A%0D%0AActually+the+problem+was+that+we+weren%27t+allowing+the+config+editor+to+process+more+than+one+level+of+message+editing+at+a+time+because+of+the+context+limitations.++Opened+that+up+and+it+works+ok.++The+dynamic+select+is+totally+ignored+in+the+config+editor%2C+which+is+ok+for+now.++Eventually+we%27ll+make+the+tools+nicer+and+easier+to+use.++First+platform+independence%2C+then+hot+deploy%2C+then+we+make+these+look+nice."
parent="1260"
resourceID="0"
timeEstimate="4"
dueDate="Jul+24%2C+2025+6%3A34%3A12+PM"
taskTypeID="1006"
taskPhaseID="1002"
uniqueID="1334"
creationTime="Jul+29%2C+2005+6%3A36%3A07+PM"
lastModifiedTime="Nov+28%2C+2005+3%3A39%3A36+PM"
lastModifiedReason="TaskHeap+bookkeeping%3A+set+parent+to+1260"
revisionNumber="5"
recordStatus="0"
>
<NoteArray _field="notes" _length="0">
</NoteArray>
</Task>
<Task _field="_root_value_101"
name="Publish+Release+1_6"
description="Do+a+release+of+sandboss+and+clean+up+the+recycling.++We+are+way+overdue+for+this.++Don%27t+worry+about+getting+onto+the+latest+version+of+JBoss+since+the+single+wardeploy+is+the+norm+and+our+existing+installations+aren%27t+migrating+yet.++Make+sure+we+run+with+the+latest+version+of+Ant+though."
parent="1260"
resourceID="0"
timeEstimate="4"
dueDate="Aug+15%2C+2025+11%3A54%3A51+AM"
taskTypeID="1007"
taskPhaseID="1002"
uniqueID="1340"
creationTime="Aug+20%2C+2005+11%3A57%3A22+AM"
lastModifiedTime="Nov+28%2C+2005+3%3A43%3A43+PM"
lastModifiedReason="TaskHeap+bookkeeping%3A+set+parent+to+1260"
revisionNumber="4"
recordStatus="0"
>
<NoteArray _field="notes" _length="0">
</NoteArray>
</Task>
<Task _field="_root_value_102"
name="specify+descending+order+in+query"
description="In+the+standard+SandQueryMessage%2C+you+can+specify+a+comma+separated+list+of+field+names+in+the+orderBy%2C+and+in+some+cases+passing+in+a+DESCENDING+flag+might+work+depending+on+the+database+being+used%2C+but+there+is+no+standard+way+of+doing+this.++We+need+to+add+a+field+for+this%2C+and+handle+it+automatically.%0D%0A%0D%0ADescending+order+is+very+useful+when+you+want+the+newest+object+instances+at+the+start+of+a+collection+display.++In+practice%2C+this+hasn%27t+been+much+of+an+issue+because+there+have+typically+been+intermediate+runtime+data+structures+that+handle+the+ordering.++But+this+is+not+always+the+case.++The+work+here+is+to+add+the+flag+%28default+is+ASCENDING%29+and+provide+support+in+the+generated+Persister+implementation."
parent="1175"
resourceID="0"
timeEstimate="8"
dueDate="Sep+30%2C+2025+9%3A53%3A09+PM"
taskTypeID="1007"
taskPhaseID="1001"
uniqueID="1341"
creationTime="Oct+5%2C+2005+10%3A25%3A05+PM"
lastModifiedTime="Oct+5%2C+2005+10%3A25%3A05+PM"
lastModifiedReason="initial+creation"
revisionNumber="1"
recordStatus="0"
>
<NoteArray _field="notes" _length="0">
</NoteArray>
</Task>
<Task _field="_root_value_103"
name="Simplified%2FAdvanced+find"
description="The+current+query+form+is+quite+powerful%2C+allowing+for+full+match+expressions+on+every+field+of+a+class+for+search+purposes.++However+most+users+simply+want+to+find+an+instance+of+an+object+based+on+some+simple+match+criteria.++For+example+they+may+want+to+specify+a+status+or+type+value+and+get+all+the+results.++This+is+the+most+common+type+of+find%2C+and+it+is+the+most+difficult+to+do+with+our+current+interface.++Multiselect+capability+for+enumints+would+help%2C+but+the+real+issue+is+that+we+want+to+provide+a+simplified+find+interface.%0D%0A%0D%0AThe+idea+is+to+provide+a+simplified+find%2C+with+just+the+uniqueID%2C+short+string+fields%2C+and+enumint+drop+down+boxes.++This+would+be+a+straight+query+by+example+interface.++The+user+would+have+the+option+to+switch+to+advanced+find+which+is+equivalent+to+what+we+have+now.%0D%0A%0D%0AThe+work+here+is+to+allow+for+dual+level+find."
parent="1175"
resourceID="0"
timeEstimate="24"
dueDate="Sep+30%2C+2025+10%3A25%3A26+PM"
taskTypeID="1007"
taskPhaseID="1001"
uniqueID="1342"
creationTime="Oct+5%2C+2005+10%3A33%3A15+PM"
lastModifiedTime="Oct+5%2C+2005+10%3A33%3A15+PM"
lastModifiedReason="initial+creation"
revisionNumber="1"
recordStatus="0"
>
<NoteArray _field="notes" _length="0">
</NoteArray>
</Task>
<Task _field="_root_value_104"
name="Include+totals+in+pagination+display"
description="To+retrieve+the+current+query+result+page%2C+and+a+total+results+page+typically+requires+two+separate+queries.++Add+a+deployment+flag+to+trigger+the+creation+of+this+kind+of+display.++By+default+this+is+off+since+it+requires+more+overhead."
parent="1278"
resourceID="0"
timeEstimate="24"
dueDate="Nov+4%2C+2025+9%3A15%3A44+PM"
taskTypeID="1007"
taskPhaseID="1001"
uniqueID="1344"
creationTime="Nov+9%2C+2005+9%3A18%3A58+PM"
lastModifiedTime="Nov+9%2C+2005+9%3A18%3A58+PM"
lastModifiedReason="initial+creation"
revisionNumber="1"
recordStatus="0"
>
<NoteArray _field="notes" _length="0">
</NoteArray>
</Task>
<Task _field="_root_value_105"
name="func+spec+node+descriptions+need+detail"
description="Dump+the+configuration+parameters+and+an+I%2FO+summary+into+the+node+descriptions+in+the+func+spec.++That+way+it+works+as+a+reference+for+what+parameters+are+available+and+what+their+default+settings+are.++You+would+still+have+to+go+to+the+config+to+see+the+actual+current+settings%2C+but+this+helps+with+the+description."
parent="1175"
resourceID="0"
timeEstimate="8"
dueDate="Dec+4%2C+2025+10%3A45%3A06+AM"
taskTypeID="1007"
taskPhaseID="1001"
uniqueID="1348"
creationTime="Dec+9%2C+2005+10%3A47%3A40+AM"
lastModifiedTime="Dec+9%2C+2005+10%3A47%3A40+AM"
lastModifiedReason="initial+creation"
revisionNumber="1"
recordStatus="0"
>
<NoteArray _field="notes" _length="0">
</NoteArray>
</Task>
<Task _field="_root_value_106"
name="func+spec+struct+def+detail"
description="The+struct+field+descriptions+need+type+information%2C+default+values%2C+range+constraints+and+other+detail.++This+is+a+great+quick+reference+for+reviewing+the+database+structure+so+we+don%27t+want+to+double+the+size+or+make+this+really+complex+to+read%2C+but+this+info+is+important+to+understand.++Maybe+a+summary+statement+at+the+end+of+the+field+description%3F"
parent="1175"
resourceID="0"
timeEstimate="8"
dueDate="Dec+4%2C+2025+10%3A47%3A49+AM"
taskTypeID="1007"
taskPhaseID="1001"
uniqueID="1349"
creationTime="Dec+9%2C+2005+10%3A50%3A17+AM"
lastModifiedTime="Dec+9%2C+2005+10%3A50%3A17+AM"
lastModifiedReason="initial+creation"
revisionNumber="1"
recordStatus="0"
>
<NoteArray _field="notes" _length="0">
</NoteArray>
</Task>
<Task _field="_root_value_107"
name="Soft+reference+cache"
description="Extend+NamedSingletonIDCache+to+create+NamedSingletonIDCacheSoft+which+adds+soft+references.++Retrieval+works+the+same+way%2C+but+adding+an+instance+can+be+specified+as+a+java.lang.ref.SoftReference+so+that+if+the+cache+grows+too+large+these+values+will+be+removed.++Have+a+method+to+register+what+class+names+are+always+soft+references+so+that+use+is+automatic."
parent="1216"
resourceID="0"
timeEstimate="8"
dueDate="Feb+6%2C+2026+3%3A59%3A02+PM"
taskTypeID="1007"
taskPhaseID="1001"
uniqueID="1351"
creationTime="Feb+11%2C+2006+4%3A08%3A35+PM"
lastModifiedTime="Feb+11%2C+2006+4%3A09%3A01+PM"
lastModifiedReason=""
revisionNumber="2"
recordStatus="0"
>
<NoteArray _field="notes" _length="0">
</NoteArray>
</Task>
<Task _field="_root_value_108"
name="Change+the+help+link"
description="Nobody+clicks+on+the+help+link+because+in+most+applications+it+represents+a+pile+of+useless+noob+info.++Change+this+to+something+like+%22User+Manual%22+or+something+that+gives+and+indication+of+what+it+actually+is."
parent="1175"
resourceID="0"
timeEstimate="1"
dueDate="Feb+18%2C+2026+5%3A16%3A26+PM"
taskTypeID="1007"
taskPhaseID="1001"
uniqueID="1352"
creationTime="Feb+23%2C+2006+5%3A18%3A29+PM"
lastModifiedTime="Feb+23%2C+2006+5%3A18%3A29+PM"
lastModifiedReason="initial+creation"
revisionNumber="1"
recordStatus="0"
>
<NoteArray _field="notes" _length="0">
</NoteArray>
</Task>
<Task _field="_root_value_109"
name="Rename+the+Export+All+button"
description="This+should+be+called+something+like+%22Export+Changes%22+or+something+to+show+what+it+really+does."
parent="1175"
resourceID="0"
timeEstimate="1"
dueDate="Feb+18%2C+2026+5%3A18%3A45+PM"
taskTypeID="1007"
taskPhaseID="1001"
uniqueID="1353"
creationTime="Feb+23%2C+2006+5%3A19%3A42+PM"
lastModifiedTime="Feb+23%2C+2006+5%3A19%3A42+PM"
lastModifiedReason="initial+creation"
revisionNumber="1"
recordStatus="0"
>
<NoteArray _field="notes" _length="0">
</NoteArray>
</Task>
<Task _field="_root_value_110"
name="change+%22save+parent%22+note"
description="Change+the+%5Bsave+parent+before+editing%5D+recursive+editing+note+to+something+more+intuitive%2C+like+just+%5Bsave+first+before+editing%5D+or+somesuch.++The+%22parent%22+part+of+this+is+not+intuitive+when+you+are+editing+the+instance."
parent="1175"
resourceID="0"
timeEstimate="1"
dueDate="Feb+18%2C+2026+7%3A14%3A41+PM"
taskTypeID="1007"
taskPhaseID="1001"
uniqueID="1354"
creationTime="Feb+23%2C+2006+7%3A16%3A58+PM"
lastModifiedTime="Feb+23%2C+2006+7%3A16%3A58+PM"
lastModifiedReason="initial+creation"
revisionNumber="1"
recordStatus="0"
>
<NoteArray _field="notes" _length="0">
</NoteArray>
</Task>
<Task _field="_root_value_111"
name="Use+outstanding+updates+as+stack"
description="The+idea+here+is+to+handle+multi-level+editing+by+checkpointing+%28calling+doActionOk+automatically%29+as+we+traverse+downward+through+referenced+children%2C+and+then+being+smart+on+return.++So+if+someone+edits+MessageA+--%3E+MessageB+--%3E+MessageC+and+then+saves%2C+we+are+saving+the+checkpointed+MessageA%2C+and+checkpointed+MessageB+along+with+the+new+MessageC.++If+they+cancel%2C+then+we+are+pulling+the+MessageB+instance+from+the+current+updates+and+resetting+the+context+into+edit+mode+with+that+info.++We+can+continue+to+cancel+our+way+up+through+the+stack+until+we+run+out+of+outstanding+updates+in+the+uifc.%0D%0A%0D%0AAt+the+top+level%2C+if+the+object+has+a+real+uniqueID%2C+then+we+just+end+with+it.++If+not%2C+then+we+have+to+reinitialize+on+cancel.++But+at+each+point+in+the+editing+chain+the+action+is+either+save+or+cancel%2C+which+returns+us+up+one+level+to+where+we+were+before."
parent="1355"
resourceID="0"
timeEstimate="40"
dueDate="Mar+2%2C+2026+9%3A25%3A20+AM"
taskTypeID="1007"
taskPhaseID="1001"
uniqueID="1356"
creationTime="Mar+7%2C+2006+9%3A29%3A52+AM"
lastModifiedTime="Mar+7%2C+2006+9%3A29%3A52+AM"
lastModifiedReason="initial+creation"
revisionNumber="1"
recordStatus="0"
>
<NoteArray _field="notes" _length="0">
</NoteArray>
</Task>
<Task _field="_root_value_112"
name="sand.help+tag"
description="Create+a+new+sand.help+field+tag+that+takes+text+describing+a+field+for+presentation+to+the+user+as+a+mouseover+popup+or+similar+mechanism.++This+would+go+a+long+way+towards+making+forms+easier.%0D%0A%0D%0AThe+work+here+involves+creating+the+new+tag%2C+and+then+adding+the+necessary+XHTML+output+to+allow+a+transform+to+be+able+to+pick+up+on+it%2C+then+updating+the+existing+transforms+to+demonstrate+the+functionality."
parent="1278"
resourceID="0"
timeEstimate="32"
dueDate="Mar+10%2C+2026+3%3A23%3A46+PM"
taskTypeID="1007"
taskPhaseID="1001"
uniqueID="1357"
creationTime="Mar+15%2C+2006+3%3A34%3A36+PM"
lastModifiedTime="Mar+15%2C+2006+3%3A34%3A36+PM"
lastModifiedReason="initial+creation"
revisionNumber="1"
recordStatus="0"
>
<NoteArray _field="notes" _length="0">
</NoteArray>
</Task>
<Plan _field="_root_value_113"
name="Immediate"
description="Top+level+organization+plan+for+work+to+be+done+immediately."
parent="0"
resourceID="0"
timeEstimate="51"
dueDate="Apr+7%2C+2015+9%3A59%3A35+PM"
visibility="0"
execution="0"
components_length="7"
components_value="1341%2C+1342%2C+1348%2C+1349%2C+1352%2C+1353%2C+1354"
uniqueID="1175"
creationTime="May+5%2C+2005+3%3A09%3A33+PM"
lastModifiedTime="Feb+23%2C+2006+7%3A16%3A58+PM"
lastModifiedReason="updated+timeEstimate+from+plan+components"
revisionNumber="9"
recordStatus="0"
sandTransmitStatus="0"
sandTransmitErrorMessage=""
sandTransmissionCount="0"
sandTransmitAuthID="0"
>
<NoteArray _field="notes" _length="0">
</NoteArray>
</Plan>
<Plan _field="_root_value_114"
name="Near"
description="Near+term+work+to+be+done+after+immediate+work."
parent="0"
resourceID="0"
timeEstimate="559"
dueDate="Apr+7%2C+2015+9%3A59%3A35+PM"
visibility="0"
execution="0"
components_length="2"
components_value="1336%2C+1337"
uniqueID="1176"
creationTime="May+5%2C+2005+3%3A09%3A33+PM"
lastModifiedTime="Mar+15%2C+2006+3%3A34%3A37+PM"
lastModifiedReason="TaskHeap+bookkeeping%3A+recalcParents"
revisionNumber="8"
recordStatus="0"
sandTransmitStatus="0"
sandTransmitErrorMessage=""
sandTransmissionCount="0"
sandTransmitAuthID="0"
>
<NoteArray _field="notes" _length="0">
</NoteArray>
</Plan>
<Plan _field="_root_value_115"
name="Future"
description="Work+to+potentially+be+done+in+the+future+%28not+near+term%29."
parent="0"
resourceID="0"
timeEstimate="444"
dueDate="Apr+7%2C+2015+9%3A59%3A35+PM"
visibility="0"
execution="0"
components_length="2"
components_value="1358%2C+1359"
uniqueID="1178"
creationTime="May+5%2C+2005+3%3A09%3A33+PM"
lastModifiedTime="Apr+10%2C+2006+7%3A17%3A25+PM"
lastModifiedReason="removed+reference+to+child+1216"
revisionNumber="9"
recordStatus="0"
sandTransmitStatus="0"
sandTransmitErrorMessage=""
sandTransmissionCount="0"
sandTransmitAuthID="0"
>
<NoteArray _field="notes" _length="0">
</NoteArray>
</Plan>
<Plan _field="_root_value_116"
name="Recycling"
description="Work+which+was+not+done+and+won%27t+be+done.++Storing+these+work+definitions+under+recycling+rather+than+just+deleting+them+can+help+in+tracking+and+allows+work+to+potentially+be+revisited+later+if+needs+change."
parent="0"
resourceID="0"
timeEstimate="0"
dueDate="Apr+7%2C+2015+9%3A59%3A35+PM"
visibility="0"
execution="0"
components_length="2"
components_value="1297%2C+1335"
uniqueID="1190"
creationTime="May+5%2C+2005+3%3A09%3A33+PM"
lastModifiedTime="Nov+28%2C+2005+3%3A41%3A39+PM"
lastModifiedReason="removed+reference+to+child+1260"
revisionNumber="12"
recordStatus="0"
sandTransmitStatus="0"
sandTransmitErrorMessage=""
sandTransmissionCount="0"
sandTransmitAuthID="0"
>
<NoteArray _field="notes" _length="0">
</NoteArray>
</Plan>
<Plan _field="_root_value_117"
name="Hotlist"
description="Tasks+which+we+are+currently+working+on+as+priority+items.++This+changes+depending+on+other+active+projects%2C+annoyance+level+etc."
parent="1297"
resourceID="0"
timeEstimate="0"
dueDate="Apr+7%2C+2015+9%3A59%3A35+PM"
visibility="0"
execution="0"
components_length="0"
components_value=""
uniqueID="1206"
creationTime="Jul+12%2C+2004+5%3A54%3A35+PM"
lastModifiedTime="May+5%2C+2005+4%3A50%3A33+PM"
lastModifiedReason="TaskHeap+bookkeeping%3A+set+parent+to+1297"
revisionNumber="63"
recordStatus="0"
sandTransmitStatus="0"
sandTransmitErrorMessage=""
sandTransmissionCount="0"
sandTransmitAuthID="0"
>
<NoteArray _field="notes" _length="0">
</NoteArray>
</Plan>
<Plan _field="_root_value_118"
name="sandboss+work"
description="General+sandboss+work.++TaskHeap+specific+tasks%2C+and+work+tasks+that+positively+affect+all+SAND+applications+including+TaskHeap."
parent="1297"
resourceID="0"
timeEstimate="0"
dueDate="Apr+7%2C+2015+9%3A59%3A35+PM"
visibility="0"
execution="0"
components_length="0"
components_value=""
uniqueID="1215"
creationTime="Jul+12%2C+2004+5%3A54%3A35+PM"
lastModifiedTime="May+5%2C+2005+4%3A50%3A39+PM"
lastModifiedReason="TaskHeap+bookkeeping%3A+set+parent+to+1297"
revisionNumber="104"
recordStatus="0"
sandTransmitStatus="0"
sandTransmitErrorMessage=""
sandTransmissionCount="0"
sandTransmitAuthID="0"
>
<NoteArray _field="notes" _length="0">
</NoteArray>
</Plan>
<Plan _field="_root_value_119"
name="case-driven+development"
description="Work+best+handled+as+part+of+an+ongoing+project.++In+the+absence+of+at+least+one+driving+real-world+scenario%2C+it%27s+generally+a+bad+idea+to+proceed.++If+someone+requires+the+feature%2C+and+they+are+working+with+us%2C+then+we+will+make+it+happen.++Otherwise+it%27s+tabled+here."
parent="1359"
resourceID="0"
timeEstimate="428"
dueDate="Apr+7%2C+2015+9%3A59%3A35+PM"
visibility="0"
execution="0"
components_length="15"
components_value="1244%2C+1273%2C+1217%2C+1218%2C+1219%2C+1220%2C+1276%2C+1222%2C+1223%2C+1224%2C+1226%2C+1227%2C+1228%2C+1229%2C+1351"
uniqueID="1216"
creationTime="Jul+12%2C+2004+5%3A54%3A35+PM"
lastModifiedTime="Apr+10%2C+2006+7%3A17%3A25+PM"
lastModifiedReason="TaskHeap+bookkeeping%3A+set+parent+to+1359"
revisionNumber="25"
recordStatus="0"
sandTransmitStatus="0"
sandTransmitErrorMessage=""
sandTransmissionCount="0"
sandTransmitAuthID="0"
>
<NoteArray _field="notes" _length="0">
</NoteArray>
</Plan>
<Plan _field="_root_value_120"
name="SAND+error+handling"
description="A+plan+for+making+SAND+development+more+robust+in+the+face+of+errors%2C+or+probable+mistakes."
parent="1305"
resourceID="0"
timeEstimate="24"
dueDate="Apr+7%2C+2015+9%3A59%3A35+PM"
visibility="0"
execution="0"
components_length="3"
components_value="1231%2C+1238%2C+1239"
uniqueID="1230"
creationTime="Jul+13%2C+2004+1%3A30%3A33+PM"
lastModifiedTime="Apr+5%2C+2005+11%3A01%3A15+AM"
lastModifiedReason="removed+reference+to+child+1237"
revisionNumber="17"
recordStatus="0"
sandTransmitStatus="0"
sandTransmitErrorMessage=""
sandTransmissionCount="0"
sandTransmitAuthID="0"
>
<NoteArray _field="notes" _length="0">
</NoteArray>
</Plan>
<Plan _field="_root_value_121"
name="build+work"
description="Other+general+open+work+on+SAND%2Fsandboss"
parent="1305"
resourceID="0"
timeEstimate="70"
dueDate="Apr+7%2C+2015+9%3A59%3A35+PM"
visibility="0"
execution="0"
components_length="5"
components_value="1322%2C+1253%2C+1270%2C+1274%2C+1328"
uniqueID="1240"
creationTime="Jul+13%2C+2004+3%3A39%3A15+PM"
lastModifiedTime="Jun+3%2C+2005+6%3A34%3A53+PM"
lastModifiedReason="updated+timeEstimate+from+plan+components"
revisionNumber="20"
recordStatus="0"
sandTransmitStatus="0"
sandTransmitErrorMessage=""
sandTransmissionCount="0"
sandTransmitAuthID="0"
>
<NoteArray _field="notes" _length="0">
</NoteArray>
</Plan>
<Plan _field="_root_value_122"
name="UIFormContext+improvements"
description="Our+currrent+UIFormContext+model+organizes+all+state+into+an+efficient+structure+that+works+well+under+most+circumstances%2C+but+there+is+room+for+improvement.++This+plan+organizes+identified+or+potential+improvement+work."
parent="1278"
resourceID="0"
timeEstimate="24"
dueDate="Apr+7%2C+2015+9%3A59%3A35+PM"
visibility="0"
execution="0"
components_length="2"
components_value="1243%2C+1234"
uniqueID="1241"
creationTime="Jul+13%2C+2004+3%3A48%3A56+PM"
lastModifiedTime="Mar+7%2C+2006+9%3A24%3A27+AM"
lastModifiedReason="removed+reference+to+child+1246"
revisionNumber="15"
recordStatus="0"
sandTransmitStatus="0"
sandTransmitErrorMessage=""
sandTransmissionCount="0"
sandTransmitAuthID="0"
>
<NoteArray _field="notes" _length="0">
</NoteArray>
</Plan>
<Plan _field="_root_value_123"
name="Messaging"
description="Tasks+around+messaging+and+distributed+communications."
parent="1336"
resourceID="0"
timeEstimate="64"
dueDate="Apr+7%2C+2015+9%3A59%3A35+PM"
visibility="0"
execution="0"
components_length="5"
components_value="1281%2C+1280%2C+1286%2C+1303%2C+1259"
uniqueID="1248"
creationTime="Jul+13%2C+2004+9%3A00%3A35+PM"
lastModifiedTime="Aug+14%2C+2005+9%3A56%3A50+PM"
lastModifiedReason="updated+timeEstimate+from+plan+components"
revisionNumber="36"
recordStatus="0"
sandTransmitStatus="0"
sandTransmitErrorMessage=""
sandTransmissionCount="0"
sandTransmitAuthID="0"
>
<NoteArray _field="notes" _length="0">
</NoteArray>
</Plan>
<Plan _field="_root_value_124"
name="Field+triggers"
description="A+field+trigger+can+be+declared+via+an+%40sand.fieldtrigger+struct+field+tag%2C+and+causes+the+associated+method+in+a+FieldTriggerHandler+interface+implementation+to+be+called+at+run+time%2C+with+a+representation+of+the+form+display.++The+FieldTriggerHandler+processes+the+form+display%2C+doing+things+like+altering+the+possible+values+of+other+fields+and+the+like.%0D%0A%0D%0AA+possible+example+implementation+would+be+for+the+struct+rendering+to+produce+client+side+javascript+associated+with+the+specific+field%2C+which+would+then+call+the+FieldTriggerHandler+processing+as+a+javascript+function.++The+idea+is+to+provide+client-side+dynamic+forms+without+having+to+worry+about+doing+this+kind+of+thing+in+transformation+templates.++Needs+spec."
parent="1278"
resourceID="0"
timeEstimate="0"
dueDate="Apr+7%2C+2015+9%3A59%3A35+PM"
visibility="0"
execution="0"
components_length="0"
components_value=""
uniqueID="1254"
creationTime="Jul+13%2C+2004+9%3A29%3A47+PM"
lastModifiedTime="Aug+14%2C+2005+9%3A57%3A10+PM"
lastModifiedReason="TaskHeap+bookkeeping%3A+set+parent+to+1278"
revisionNumber="4"
recordStatus="0"
sandTransmitStatus="0"
sandTransmitErrorMessage=""
sandTransmissionCount="0"
sandTransmitAuthID="0"
>
<NoteArray _field="notes" _length="0">
</NoteArray>
</Plan>
<Plan _field="_root_value_125"
name="Work+done+for+release+1_6"
description="A+plan+to+hold+finished+or+closed+tasks+so+they+are+out+of+the+way+but+can%0D%0Astill+be+viewed+for+reference+purposes.%0D%0A%0D%0ATo+reference+deleted+tasks%2C+go+to+the+tasks+screen%2C+click+the+find+button%2C+and+enter+%221%22+for+the+status."
parent="1297"
resourceID="0"
timeEstimate="0"
dueDate="Apr+7%2C+2015+9%3A59%3A35+PM"
visibility="0"
execution="0"
components_length="32"
components_value="1340%2C+1282%2C+1283%2C+1284%2C+1221%2C+1293%2C+1268%2C+1298%2C+1272%2C+1312%2C+1321%2C+1262%2C+1311%2C+1324%2C+1267%2C+1237%2C+1318%2C+1326%2C+1319%2C+1325%2C+1208%2C+1257%2C+1323%2C+1261%2C+1309%2C+1266%2C+1334%2C+1313%2C+1314%2C+1235%2C+1252%2C+1332"
uniqueID="1260"
creationTime="Oct+27%2C+2004+2%3A22%3A01+PM"
lastModifiedTime="Nov+28%2C+2005+3%3A43%3A43+PM"
lastModifiedReason="TaskHeap+bookkeeping%3A+set+parent+to+1297"
revisionNumber="55"
recordStatus="0"
sandTransmitStatus="0"
sandTransmitErrorMessage=""
sandTransmissionCount="0"
sandTransmitAuthID="0"
>
<NoteArray _field="notes" _length="0">
</NoteArray>
</Plan>
<Plan _field="_root_value_126"
name="TaskHeap+specific+work"
description="Tasks+that+are+specific+to+just+the+TaskHeap+application.++These+may+help+demonstrate+what%27s+possible+with+SAND+apps%2C+but+don%27t+automatically+apply+to+other+applications."
parent="1260"
resourceID="0"
timeEstimate="0"
dueDate="Apr+7%2C+2015+9%3A59%3A35+PM"
visibility="0"
execution="0"
components_length="3"
components_value="1317%2C+1264%2C+1333"
uniqueID="1261"
creationTime="Nov+7%2C+2004+2%3A27%3A10+PM"
lastModifiedTime="Nov+28%2C+2005+3%3A38%3A57+PM"
lastModifiedReason="TaskHeap+bookkeeping%3A+set+parent+to+1260"
revisionNumber="31"
recordStatus="0"
sandTransmitStatus="0"
sandTransmitErrorMessage=""
sandTransmissionCount="0"
sandTransmitAuthID="0"
>
<NoteArray _field="notes" _length="0">
</NoteArray>
</Plan>
<Plan _field="_root_value_127"
name="UI+and+SANDForms+processing"
description="Work+related+to+SANDForms%2C+SandUI+or+other+general+UI+behavior."
parent="1336"
resourceID="0"
timeEstimate="264"
dueDate="Apr+7%2C+2015+9%3A59%3A35+PM"
visibility="0"
execution="0"
components_length="13"
components_value="1355%2C+1294%2C+1316%2C+1241%2C+1306%2C+1315%2C+1254%2C+1339%2C+1344%2C+1346%2C+1347%2C+1350%2C+1357"
uniqueID="1278"
creationTime="Feb+21%2C+2005+12%3A47%3A17+PM"
lastModifiedTime="Mar+15%2C+2006+3%3A34%3A36+PM"
lastModifiedReason="updated+timeEstimate+from+plan+components"
revisionNumber="61"
recordStatus="0"
sandTransmitStatus="0"
sandTransmitErrorMessage=""
sandTransmissionCount="0"
sandTransmitAuthID="0"
>
<NoteArray _field="notes" _length="0">
</NoteArray>
</Plan>
<Plan _field="_root_value_128"
name="Persistence+and+query+processing"
description="Work+related+to+storing+and+retrieving+persistent+message+instances."
parent="1336"
resourceID="0"
timeEstimate="65"
dueDate="Apr+7%2C+2015+9%3A59%3A35+PM"
visibility="0"
execution="0"
components_length="3"
components_value="1225%2C+1277%2C+1288"
uniqueID="1279"
creationTime="Feb+21%2C+2005+12%3A50%3A30+PM"
lastModifiedTime="Aug+14%2C+2005+9%3A39%3A00+PM"
lastModifiedReason="removed+reference+to+child+1313"
revisionNumber="36"
recordStatus="0"
sandTransmitStatus="0"
sandTransmitErrorMessage=""
sandTransmissionCount="0"
sandTransmitAuthID="0"
>
<NoteArray _field="notes" _length="0">
</NoteArray>
</Plan>
<Plan _field="_root_value_129"
name="SOAP+messaging"
description="The+goal+here+is+to+create+a+service%2C+which+means+creating+a+WSDL+and+publishing+it+to+a+registry.++%0D%0A%0D%0AWeb+services+are+primarily+used+for+edge+communications+to%2Ffrom+the+outside+world.++For+communications+within+the+app+but+across+VMs%2C+it+should+be+no+problem+at+all+using+our+own+%22quick+web+services%22+interface%2C+but+nobody+from+outside+of+our+build%2Frelease+process+has+any+business+calling+this+directly%2C+since+the+serialization+will+change+with+each+data+revision+%28the+app+could+just+as+well+be+sending+a+binary+stream%2C+or+using+sockets%29.++This+is+a+useful+default+communications+mechanism+but+it+is+not+a+basis+for+external+integration.%0D%0A%0D%0AWe+need+some+build+support+to+produce+the+basics.++Specifically+we+need+Ant+tasks+that+make+it+possible+to%3A%0D%0A1.+Generate+struct+defs+from+WSDL+%28for+ease+of+creating+processing+nodes%29.+This+is+a+pretty+nice+driver+task+for+folks+coming+from+pure+SOA+tools.%0D%0A2.+Generate+a+servlet+shell+and+WSDL+from+an+inmessage%2Foutmessage+specification.+That%27s+pretty+nice+for+SAND+folks+needing+to+expose+a+web+service.+The+security+here+is+still+evolving%2C+but+with+the+next+spec+revision+supporting+OSS+XML%2C+this+should+straighten+out+a+bit.+For+now+we+just+do+the+basics+and+assume+they+are+over+HTTPS."
parent="1248"
resourceID="0"
timeEstimate="8"
dueDate="Apr+7%2C+2015+9%3A59%3A35+PM"
visibility="0"
execution="0"
components_length="1"
components_value="1249"
uniqueID="1280"
creationTime="Feb+21%2C+2005+1%3A01%3A04+PM"
lastModifiedTime="Feb+21%2C+2005+1%3A05%3A38+PM"
lastModifiedReason="updated+timeEstimate+from+plan+components"
revisionNumber="3"
recordStatus="0"
sandTransmitStatus="0"
sandTransmitErrorMessage=""
sandTransmissionCount