Bobby Mitchell wrote:

> Antonio Gallardo Rivera wrote:
>
>> I am trying to start the example of mod-db using PostgreSQL.
>>
>> Currently, I have the autoincr, working, but the problem now is 
>> inserting a new row in the table "groups" - the easier one ;).
>>
>> In the database.xml there is defined as:
>>
>> <table name="groups">
>>     <keys>
>>         <key name="gid" type="int" autoincrement="true">
>>             <mode name="auto" type="autoincr"/>
>>         </key>
>>     </keys>
>>     <values>
>>         <value name="gname" type="string"/>
>>     </values>
>> </table>
>>
>> Also....
>>
>> <table-set name="groups">
>>     <table name="groups"/>
>> </table-set>
>>
>> In the userlist.xsp there is a form that handle the new-group action:
>>
>> <sqltblrow>
>>  <gname>
>>    <form>
>>      <input type="text" name="groups.gname" size="20" maxsize="20"/>
>>      <input type="submit" name="add-group" value="new group"/>
>>   </form>
>> </gname>
>> </sqltblrow>
>>
>> But when I try to Add a new group, It cannot get the groups.gname 
>> parameter. It store a null. In the sitemap.log I found the following:
>>
>> Current Sitemap Parameters:
>> LEVEL 2
>> PARAM: 'add-group' VALUE: 'new group'
>> PARAM: 'groups.gname' VALUE: 'wsqa'
>> LEVEL 1
>> PARAM: '../0' VALUE: 'user-list'
>> PARAM: '../1' VALUE: 'user-list'
>>
>> Thread-9/DefaultComponentFactory: ComponentFactory creating new 
>> instance of org.apache.cocoon.acting.modular.DatabaseAddAction.
>> Thread-9/DefaultComponentFactory: no logger attribute available, 
>> using standard logger
>>
>> Thread-9/AbstractComplementaryConfigurableAction: (Re)Loading 
>> database.xml
>> Thread-9/DatabaseAction: modeTypes : {1=others, 2=attribute, 0=autoincr}
>> Thread-9/DatabaseAction: i=0
>> Thread-9/DatabaseAction: requested mode was "autoincr" returning 
>> "autoincr"
>> Thread-9/DatabaseAction: i=1
>> Thread-9/DatabaseAction: requested mode was "others" returning "others"
>> Thread-9/DatabaseAction: query: INSERT INTO groups (gname) VALUES (?)
>> Thread-9/DatabaseAction: Trying to set column groups.gname from 
>> request using getAttribute method
>> Thread-9/DatabaseAction: Setting column groups.gname [0] null
>> Thread-9/DatabaseAction: ====> row no. 0
>> Thread-9/DatabaseAddAction: Automatically setting key
>> Thread-9/DatabaseAction: Setting column groups.gname[0] to null
>> Thread-9/DatabaseAction: Could not select output mode attribute:null
>> Thread-9/DatabaseAction: Setting column groups.gid[0] to 10
>> Thread-9/DatabaseAction: Could not select output mode attribute:null
>> Thread-9/DatabaseAction: Could not select output mode attribute:null
>> Thread-9/DefaultComponentFactory: ComponentFactory decommissioning 
>> instance of  org.apache.cocoon.acting.modular.DatabaseAddAction.
>>
>> Also, the sitemap is:
>>
>>      <!-- add own new group -->
>>      <map:act type="req-params">
>>         <map:parameter name="parameters" value="add-group 
>> groups.gname"/>
>>         <map:act type="mod-db-add">
>>           <map:parameter name="table-set" value="groups"/>
>>         </map:act>
>>      </map:act>
>>
>>
>> Please help,
>>  
>>
>
> Check the documentation at User Documentation/Actions/Database. Read 
> closely the sections "How to obtain Values" and "How to store Values 
> e.g. in your Session".
>
> It's not completely clear, but it helps. Here are some examples from 
> what I have done so far. I hope they are right.
>
> 1. Declaration of the modular action in the sitemap:
>      <map:action name="mod-db-add"
>        src="org.apache.cocoon.acting.modular.DatabaseAddAction">
>        <!--  <throw-exception>true</throw-exception>  -->
>        <!--  If this is set false, when the action fails it does not 
> produce an error
>        <input>request-parameter</input>                 <!--This input 
> module has to be described in cocoon.xconf. -->
>        <output>session-attribute</output>
>                <!--Ditto for the output module-->
>      </map:action>
> 2. Define <map:act/> in the sitemap:
>               <map:act type="mod-db-add" src="optional src" >
>                <map:parameter name="descriptor" value="database.xml"/>
>                <map:parameter name="table-set" value="<"table-set 
> value"/>
>                <!--  You can also map parameters for the action, such 
> as <map:parameter name="throw-exception" value="true"/>  -->
>              </map:act>
>
> Hope this helps.

Forgot a couple of things.
In the descriptor file:
<value name="ID"  type="int">
    <mode name="session-attribute" 
parameter="org.apache.cocoon.components.modules.output.OutputModule:ID[0]" 
type="attrib"/>
        <!-- if others-mode=attrib, use this one -->
    <mode name="request-parameter" parameter="ID" type="request"/>
        <!-- if others-mode=request, use this one -->
    <mode name="something" parameter="ID" type="all"/>
        <!-- I don't care what others-mode is, always use this one -->
</value>


<mode name="request-parameter" parameter="PREFIX" type="request"

<table-set name="MAILLIST-upd">
    <table name="NIAC_MAILLIST" others-mode="request"/>
</table-set>
Here others-mode request is saying "get the values from however I 
defined type=request in the mode name".
    Other values are: attrib - get values from attributes; session if 
<input/> is session, request if <input/> is request. others -- I'm not 
sure.
    I could be absolutely wrong on this one, but it seems to work.

It would be really nice if we could list all combinations of values with 
a short description(not too short) about what each setting accomplishes 
and put it in the docs for the mod-db actions.

Bobby

>
>
>
>> Regards,
>>
>> Antonio Gallardo.
>>
>> ---------------------------------------------------------------------
>> Please check that your question  has not already been answered in the
>> FAQ before posting.     <http://xml.apache.org/cocoon/faq/index.html>
>>
>> To unsubscribe, e-mail:     <[EMAIL PROTECTED]>
>> For additional commands, e-mail:   <[EMAIL PROTECTED]>
>>  
>>
>
>


-- 
Robert J. (Bobby) Mitchell
Systems Administrator
NASA Institute for Advanced Concepts
555A 14th St Atlanta, Ga. 30318
Phone: (404)347-9633 Fax: (404)347-9638





---------------------------------------------------------------------
Please check that your question  has not already been answered in the
FAQ before posting.     <http://xml.apache.org/cocoon/faq/index.html>

To unsubscribe, e-mail:     <[EMAIL PROTECTED]>
For additional commands, e-mail:   <[EMAIL PROTECTED]>

Reply via email to