RE: Handling Date objects in ActionForm gracefully

2004-03-26 Thread Freddy Villalba Arias
As someone with good experience in MVC-based applications but a newbie
to Struts, what I understand from this discussion is that the
recommended implementation would have to comply, at least, with this
guidelines:

- The conversion code is encapsulated in a separate class (I suppose one
converter class per each String, Target Data Type combination
required, right?).

- Passes all (String) parameters to a Business Object that encapsulates
the use case (I mean, the logic) and, from within that BO, use the
corresponding converter classes for getting the actual data object to
flow around (i.e. be eventually get-ed or set-ed from the DAOs/DTOs, bla
bla bla...)

I'm I right here or am I missing any other IMPORTANT aspect(s)?

STILL, there is something I don't get: how would you implement /
encapsulate then the opposite direction for data conversion; in other
words:

- Convert from original data types towards String (another method in
the same converter class?)

- Map (set) some (non-String) data object into the corresponding String
property on the form bean.

Thanks,
Freddy.

-Mensaje original-
De: Mark Lowe [mailto:[EMAIL PROTECTED] 
Enviado el: viernes, 26 de marzo de 2004 0:59
Para: Sreenivasa Chadalavada; Struts Users Mailing List
Asunto: Re: Handling Date objects in ActionForm gracefully

You deal with the conversion else where but not in the form bean, you  
can argue about it or just believe me. The action form sits between the

view and the action, the date conversion goes on between the action and

the model.

Your approach isn't that bad its just not to the MVC pattern that  
struts follows (not that its the only one).

Create a date convertion util class or something.

If you dont want to take my word for it here's what craig had to say  
albeit in response to a different question

snippet
As the original designer of Struts :-), I must point out that the  
design of
ActionForm (and the recommendation that form bean properties be  
Strings) is
***very*** deliberate.  The reason this is needed is obvious when you  
consider
the following use case:

* You have an input form that, say, accepts only integers.

* Your form bean property is of type int.

* The user types 1b3 instead of 123, by accident.

* Based on experience with any garden variety GUI application,
   the user will expect that they receive an error message,
   plus a redisplay of the form ***WITH THE INCORRECT VALUES
   THAT WERE ENTERED DISPLAYED SO THE USER CAN CORRECT THEM***.

* The current Struts environment will throw an exception
   due to the conversion failure.

* The suggested solution will ***hopelessly*** confuse the
   nature of a form bean, which is part of the VIEW tier, with
   model beans that have native data types.

Struts does not include any sort of user interface component model  
where the
details of conversion are hidden inside the user interface component.   
If that
is what you are after, you should look at a *real* user interface  
component
model (such as using JavaServer Faces with a Struts application).   
Corrupting
the functionality of a form bean to *pretend* that it is a user  
interface
component is only going to create complications for the world.
/snippet

I hope this helps

Mark

On 25 Mar 2004, at 21:26, Sreenivasa Chadalavada wrote:


 Application Tier is strongly typed.

 So if the field is a java.util.Date in the database, then the data  
 object will have the method

 public DataObject{
         public java.util.Date getAsOfDate()
         public void setAsOfDate(java.util.Date asOfDate) methods.
 }

 My Action form is:

 public MyActionForm extends ActionForm{
         public DataObject getDataObject();
         public void setDataObject(DataObject dataObject);
 }

 My jsp contains

 html:text property=dataObject.asOfDate/

 This will fail if the user does not enter any date. I want the  
 (changed) struts framework to handle that.

 I did not want to create a new method with type String for every Date

 field

 Hope this explanation helps !!

 Thanks and Regards,
  Sree/-


   

--- 
 -
  This is a PRIVATE message. If you are not the intended recipient,  
 please delete without copying and kindly advise us by e-mail of the  
 mistake in delivery. NOTE: Regardless of content, this e-mail shall  
 not operate to bind CSC to any order or other contract unless pursuant

 to explicit written agreement or government initiative expressly  
 permitting the use of e-mail for such purpose.
   

--- 
 -





 Mark Lowe mark.lowe
  @boxstuff.com

 03/25/2004 03:17 PM
 Please respond to Struts Users Mailing List

        
         To:        Struts Users Mailing List  
 [EMAIL PROTECTED]
         cc:        
         Subject:        Re: Handling Date objects in ActionForm  
 gracefully



 Ask yourself why are you trying to convert 

RE: Handling Date objects in ActionForm gracefully

2004-03-26 Thread Freddy Villalba Arias
Mark, didn't mean to be pedantic... just wanted to prevent everybody
from going through all the (obvious / basic / simple) details and just
go to the important stuff. Neither am I an MVC guru.

In any case, thanx everybody 4 your help.

Regards,
Freddy.


-Mensaje original-
De: Mark Lowe [mailto:[EMAIL PROTECTED] 
Enviado el: viernes, 26 de marzo de 2004 10:24
Para: Struts Users Mailing List
Asunto: Re: Handling Date objects in ActionForm gracefully

I think the way of going about converting is pretty open, either have 
some conversion utils between the web tier and the model. I tend to do 
it in the action and then when things get long or i need the code again 
move it out into  a util class or like you're saying make my model util 
classes deal with strings (this makes a lot of sense as then other 
front ends can be plugged on).

Talk of MVC aside (after all MVC is a broader issue than the particular 
pattern that struts is based on) why piss about dealing with all sorts 
of errors and exceptions being thrown in the place where its hardest to 
deal with them?

You can and people do use different types for form beans, but I just 
don't see the point. Date comes up often and lets face it dates are 
more user friendly as dropdown menus rather than free text, so  
getDay() , getMonth() and getYear() IMO are a simpler way of going 
about things. Then have methods in you model that create a date based 
on that, or have a util class in the web tier as you can deal with 
validating the three values. Perhaps even have a date that's in you 
form bean but is set and got (passed participle of get) via string 
flavors day, month and year.

Not sure if this works but I think the idea is valid (corrections 
welcome).

public class SomeForm extends ActionForm {

private Calendar aDate = Calender.instance();

public String getDay() {
int d = aDate.get(Calendar. DAY_OF_MONTH);
return Integer.toString(d);
}

public void setDay(String day) {
aDate.set(Calendar.DAY_OF_MONTH,Integer.parseInt(day));
}
...
protected Date getAdate() {
return dDate.getTime();
}
}

This way come checking and comparing values before can be done, before 
passing anything up to you model. Many folk would say that this should 
be done in the model, but i'd say situations where you need to check if 
a user has entered a valid date (e.g. expire and from dates with a 
credit card).

This functionality will want to be produced even if you change the 
model , if you wanted to demo your web tier on its own (without a model 
e.g acme ltd credit card form)  and therefore doing it ONLY in the 
model would be limited.

Very much IMO and I'm not MVC guru, but that's my understanding.

On 26 Mar 2004, at 09:43, Freddy Villalba Arias wrote:

 As someone with good experience in MVC-based applications but a newbie
 to Struts, what I understand from this discussion is that the
 recommended implementation would have to comply, at least, with this
 guidelines:

 - The conversion code is encapsulated in a separate class (I suppose 
 one
 converter class per each String, Target Data Type combination
 required, right?).

 - Passes all (String) parameters to a Business Object that
encapsulates
 the use case (I mean, the logic) and, from within that BO, use the
 corresponding converter classes for getting the actual data object
to
 flow around (i.e. be eventually get-ed or set-ed from the DAOs/DTOs, 
 bla
 bla bla...)

 I'm I right here or am I missing any other IMPORTANT aspect(s)?

 STILL, there is something I don't get: how would you implement /
 encapsulate then the opposite direction for data conversion; in other
 words:

 - Convert from original data types towards String (another method in
 the same converter class?)

 - Map (set) some (non-String) data object into the corresponding
String
 property on the form bean.

 Thanks,
 Freddy.

 -Mensaje original-
 De: Mark Lowe [mailto:[EMAIL PROTECTED]
 Enviado el: viernes, 26 de marzo de 2004 0:59
 Para: Sreenivasa Chadalavada; Struts Users Mailing List
 Asunto: Re: Handling Date objects in ActionForm gracefully

 You deal with the conversion else where but not in the form bean, you
 can argue about it or just believe me. The action form sits between
the

 view and the action, the date conversion goes on between the action
and

 the model.

 Your approach isn't that bad its just not to the MVC pattern that
 struts follows (not that its the only one).

 Create a date convertion util class or something.

 If you dont want to take my word for it here's what craig had to say
 albeit in response to a different question

 snippet
 As the original designer of Struts :-), I must point out that the
 design of
 ActionForm (and the recommendation that form bean properties be
 Strings) is
 ***very*** deliberate.  The reason this is needed is obvious when you
 consider
 the following use case

RE: Handling Date objects in ActionForm gracefully

2004-03-26 Thread Freddy Villalba Arias
Cool!

No offence, Mark. In part, it's my fault since English is not my native
tongue and sometimes the same word translated into other language
changes the connotation of a phrase. Sh*t happens! :)

I believe yours is a valid approach (in fact, was one of the options I
was considering for the project we're about to begin). In any case, I'd
appreciate if you or anybody else would share any other views / opinions
about this issue (s) -- or any other related...

Peace, and thanx again everybody.
Freddy.

-Mensaje original-
De: Mark Lowe [mailto:[EMAIL PROTECTED] 
Enviado el: viernes, 26 de marzo de 2004 11:05
Para: Struts Users Mailing List
Asunto: Re: Handling Date objects in ActionForm gracefully

Freddy. No, you misunderstood if you thought I was responding with any 
hostility whatsoever.

There is a general problem where input would be better validated in the 
web tier so it can be decoupled from the model. So times comparing two 
dates would be useful and so on. But i think its also try to say that 
using anything but strings for user input will lead to problems.

And my suggestion could well be incorrect, I was putting it out there 
to see what response it would provoke.

Cheers Mark

On 26 Mar 2004, at 10:51, Freddy Villalba Arias wrote:

 Mark, didn't mean to be pedantic... just wanted to prevent everybody
 from going through all the (obvious / basic / simple) details and just
 go to the important stuff. Neither am I an MVC guru.

 In any case, thanx everybody 4 your help.

 Regards,
 Freddy.


 -Mensaje original-
 De: Mark Lowe [mailto:[EMAIL PROTECTED]
 Enviado el: viernes, 26 de marzo de 2004 10:24
 Para: Struts Users Mailing List
 Asunto: Re: Handling Date objects in ActionForm gracefully

 I think the way of going about converting is pretty open, either have
 some conversion utils between the web tier and the model. I tend to do
 it in the action and then when things get long or i need the code
again
 move it out into  a util class or like you're saying make my model
util
 classes deal with strings (this makes a lot of sense as then other
 front ends can be plugged on).

 Talk of MVC aside (after all MVC is a broader issue than the
particular
 pattern that struts is based on) why piss about dealing with all sorts
 of errors and exceptions being thrown in the place where its hardest
to
 deal with them?

 You can and people do use different types for form beans, but I just
 don't see the point. Date comes up often and lets face it dates are
 more user friendly as dropdown menus rather than free text, so
 getDay() , getMonth() and getYear() IMO are a simpler way of going
 about things. Then have methods in you model that create a date based
 on that, or have a util class in the web tier as you can deal with
 validating the three values. Perhaps even have a date that's in you
 form bean but is set and got (passed participle of get) via string
 flavors day, month and year.

 Not sure if this works but I think the idea is valid (corrections
 welcome).

 public class SomeForm extends ActionForm {

   private Calendar aDate = Calender.instance();

   public String getDay() {
   int d = aDate.get(Calendar. DAY_OF_MONTH);
   return Integer.toString(d);
   }

   public void setDay(String day) {
   aDate.set(Calendar.DAY_OF_MONTH,Integer.parseInt(day));
   }
   ...
   protected Date getAdate() {
   return dDate.getTime();
   }
 }

 This way come checking and comparing values before can be done, before
 passing anything up to you model. Many folk would say that this should
 be done in the model, but i'd say situations where you need to check
if
 a user has entered a valid date (e.g. expire and from dates with a
 credit card).

 This functionality will want to be produced even if you change the
 model , if you wanted to demo your web tier on its own (without a
model
 e.g acme ltd credit card form)  and therefore doing it ONLY in the
 model would be limited.

 Very much IMO and I'm not MVC guru, but that's my understanding.

 On 26 Mar 2004, at 09:43, Freddy Villalba Arias wrote:

 As someone with good experience in MVC-based applications but a
newbie
 to Struts, what I understand from this discussion is that the
 recommended implementation would have to comply, at least, with
this
 guidelines:

 - The conversion code is encapsulated in a separate class (I suppose
 one
 converter class per each String, Target Data Type combination
 required, right?).

 - Passes all (String) parameters to a Business Object that
 encapsulates
 the use case (I mean, the logic) and, from within that BO, use the
 corresponding converter classes for getting the actual data object
 to
 flow around (i.e. be eventually get-ed or set-ed from the DAOs/DTOs,
 bla
 bla bla...)

 I'm I right here or am I missing any other IMPORTANT aspect(s)?

 STILL, there is something I don't get: how would you implement /
 encapsulate then the opposite

[OT] JTA, JDBC and data persistence

2004-03-26 Thread Freddy Villalba Arias
Hello everybody,

 

An off-topic question (it's Friday, I hope you accept it!):

 

I want to implement a Business Object Model on top of many DAOs. Those
BOs will be - obviously - related to each other (mainly 1:n and m:n
relationships).

 

I must implement this in such way that, when - for example - deleting a
BO that has 3 children associated (therefore, those must be deleted as
well), it's is possible to do so atomically. That is, I need to be able
to delimit the beginning and the end of the transaction that spans the
delete operation on those 4 objects.

 

I want this to be as transparent and elegant as possible. I believe
the right choice for solving this is using JTA objects (that is XA
objects) instead of plain JDBC. I've been reading the API and some
papers regarding JTA; I have a fundamental doubt:

 

Does JTA allows me to delimit (and perform) 2 independent, yet
concurrent transactions??? For instance: 2 users that click the delete
button at the same time (it's a web application).

 

I haven't seen anything like a transaction ID or similar on any example
I've examined. Is this issue transparent to me? Is JTA able, in any way,
to differentiate the Transaction begun from each user's corresponding
instance of the respective BO (the one they wanted to delete... i.e. the
father, not its children)???

 

I'd appreciate any light you can shed on this matter.

 

Thanks and regards,

Freddy.



Templating

2004-03-25 Thread Freddy Villalba Arias
Scenario:

 

Sort of a templating system, based on the usual design patterns:
Template, Attribute-Value, etc... (don't remember the exact names, but
I'm confident you all know what I mean)  :-)

 

There are different entities whose (type's) properties are stored as
attributes that are grouped and related altogether by an entity type
(the Template). Therefore, the name and number of properties may vary
from entity type to entity type.

 

In order to manage (paint, enter data, store, etc...) this model, I
understand there is something in Struts called indexed properties. Is
that what I need to implement the right solution? Are there any best
practices to solve the typical issues associated to this paradigm (data
flow and validation, mainly)?

 

I've implemented this before; however, the first time I try to do on a
Struts-based application.

 

All suggestion are welcome.

 

Cheers,

Freddy.



RE: Refresh parent window on popup submit with old params to parent

2004-03-22 Thread Freddy Villalba Arias
I'd say:

Popup submits info.
Info ges processed.
Popup gets reloaded.
On popup reload, invoke refresh on parent, then close (in that exact
order).
Parent gets fresh info.

There is only one race-condition with this approach:

The background operations launched by the popup's submit action (I
assume there will be some) must be completed before the refresh
function is invoked on the parent window.

One way to avoid this is to wait until vital operations are completed,
then return (to the popup window).

HTH.

Freddy V.A.

-Mensaje original-
De: Gandle, Panchasheel [mailto:[EMAIL PROTECTED] 
Enviado el: jueves, 18 de marzo de 2004 14:49
Para: Struts Users Mailing List
Asunto: Refresh parent window on popup submit with old params to parent

This must have asked before but ...

I popup a child window from a parent window.
Popup window submits info, gets closed.
Parent window gets refreshed.

Whats the best way to refresh parent window, 
such that it gets the new info from child window
and the parameters that were previously 
submitted for the parent window to appear.


Thanks
Panchasheel


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


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



RE: Hierarchical Lists

2004-03-18 Thread Freddy Villalba Arias
I'm envolved in a Project that will be basically lots of this stuff.

This CSS approach seems nice one, but it doesn't look like feasible if
the hierarchical structure is too complex and / or it's just too big
(then we would have an awfully heavy page). Everytime I face the same
problem, I come to the very same conclusion  (100% server-side
solution). I admit it: I haven't had the guts to take the risk with the
client-side one.

Anybody: something to share regarding these issues? Has somebody gone
all-the-way with some scripting solution for a complex hierarchy?

Cheers,
Freddy.

-Mensaje original-
De: Scherger, Derek [mailto:[EMAIL PROTECTED] 
Enviado el: miércoles, 17 de marzo de 2004 23:16
Para: 'Struts Users Mailing List'
Asunto: RE: Hierarchical Lists

You might use something like 

select id=parent-list.../select

select id=child-1 style=display:none;.../select 
select id=child-2 style=display:none;.../select 
select id=child-3 style=display:none;.../select 
select id=child-4 style=display:none;.../select 

Then in the onchange event of the parent-list you can call a javascript
function that would do 

list = document.getElementById(child)
list.style.display=;  // show list
list.style.display=none;  // hide list

as required.

You'll have to set the proper list to be visible when the page first
loads
and you'll have to keep track of which list is currently visible (in
javascript) so that you can toggle it off and the next one on.

This type of thing seems to be working pretty well for me at the moment,
although I haven't done exactly this.

Let mw know how it works out.

Cheers,
Derek


-Original Message-
From: Randy Dillon [mailto:[EMAIL PROTECTED] 
Sent: Wednesday, March 17, 2004 2:46 PM
To: Struts Users Mailing List
Subject: RE: Hierarchical Lists


Derek,

That's an interesting concept.  My CSS skills are pretty basic though.
How
could you use CSS to do it?  Would it work if the first list was
multi-select with many different possible combinations?

:- -Original Message-
:- From: Scherger, Derek [mailto:[EMAIL PROTECTED]
:- Sent: Wednesday, March 17, 2004 3:32 PM
:- To: 'Struts Users Mailing List'
:- Subject: RE: Hierarchical Lists
:- 
:- 
:- I've though of (but not done) the possibility of using css 
:- to hide and show
:- different versions of the second select list rather than 
:- adding/removing
:- elements with javascript. Not sure which would be a better 
:- way to go as they
:- both will require some scripting. The css hide/show 
:- version's script is
:- pertty trivial though.
:- 
:- Cheers,
:- Derek
:- 
:- -Original Message-
:- From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] 
:- Sent: Wednesday, March 17, 2004 12:54 PM
:- To: [EMAIL PROTECTED]
:- Subject: RE: Hierarchical Lists
:- 
:- 
:- Short of a reload, I believe only a JavaScript/DHTML 
:- function can provide
:- this behavior.
:- 
:- 
:- -Original Message-
:- From: Randy Dillon [mailto:[EMAIL PROTECTED]
:- Sent: Wednesday, March 17, 2004 2:48 PM
:- To: Struts Users Mailing List
:- Subject: Hierarchical Lists
:- 
:- 
:- Say I have 2 (or more) lists that are part of a hierarchy, 
:- such that the
:- first list is a category (say Food Groups) and the second 
:- list contains
:- children of each of the first list's items (for this 
:- example, let's say Food
:- Types).  
:- 
:- How do I get the second list to be filtered based on the 
:- selection in the
:- first list?  I know this can be done by reloading the page 
:- each time the
:- selection is changed in the first list, but is there a way 
:- to do this
:- without the page reload?
:- 
:- To add more detail to the example:
:- 
:- Food Groups Food Types
:- --- --
:- MeatDairy  Beef
:- Chicken
:- Milk
:- Eggs
:- FruitVeg   Melons
:- Apples
:- Oranges
:- Lettuce
:- . . 
:- . .
:- . .
:- 
:- If MeatDairy is selected in the Food Groups list, can the 
:- second Food Types
:- list be filtered to only the MeatDairy food types without 
:- a page reload?
:- 
:- 
:- 
:- -
:- To unsubscribe, e-mail: [EMAIL PROTECTED]
:- For additional commands, e-mail: [EMAIL PROTECTED]
:- 
:- 
:- -
:- To unsubscribe, e-mail: [EMAIL PROTECTED]
:- For additional commands, e-mail: [EMAIL PROTECTED]
:- 
:- 
:- -
:- To unsubscribe, e-mail: [EMAIL PROTECTED]
:- For additional commands, e-mail: [EMAIL PROTECTED]
:- 
:- 

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