You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user@commons.apache.org by "Desai, Jasmina" <jd...@qualcomm.com> on 2008/01/14 21:48:20 UTC

Using JXPATH for dates

I am using JXPATH to build a java expression which can be used to get
records from a table if its columns fall between a specific date range.

Basically I have a client application which asks the end user to enter a
date range.

The application needs to get the results which fall between the
specified date range.

 

I have something like this for the lower value of the date range:

 

if (criterion.getValue() instanceof Date) {

                  SimpleDateFormat dateFormat = new
SimpleDateFormat("yyyy-MM-dd"); // TODO 01-DEC-2007 i.e. dd-MM-yyyy

                  valueAsJXPath = "xs:date:('" +
dateFormat.format(((Date) criterion.getValue())) + ")'";  //DOES NOT
WORK

            }

 

Here the "Date" is of type java.util.Date.

 

Then I have the following for the upper value:

 

if (criterion.getUpperValue() instanceof Date) {

                        SimpleDateFormat dateFormat = new
SimpleDateFormat("yyyy-MM-dd");

                        upperValueAsJXPath = "xs:date:('" +
dateFormat.format(((Date) criterion.getUpperValue())) + ")'"; 

                  }

 

 

The xpath sentence that gets created is something like 

 

marketData/enteredMarketDate >= xs:date:('2008-01-01)' and
marketData/enteredMarketDate <= xs:date:('2008-01-15)'

 

But I get an error which says:

 

An Exception has occured: org.apache.commons.jxpath.JXPathException:
Invalid XPath: '/wirelessDevices[marketData/enteredMarketDate >=
xs:date:(\'2008-01-01)\' and marketData/enteredMarketDate <=
xs:date:(\'2008-01-15)\' ]'. Syntax error after:
'/wirelessDevices[marketData/enteredMarketDate >= xs:d' at
org.apache.commons.jxpath.ri.Parser.parseExpression(Parser.java:60) at
org.apache.commons.jxpath.ri.JXPathContextReferenceImpl.compileExpressio
n(JXPathContextReferenceImpl.java:218) at
org.apache.commons.jxpath.ri.JXPathContextReferenceImpl.iterate(JXPathCo
ntextReferenceImpl.java:384)

 

 

I am a first time user of JXPATH. Kindly help me with this error.

 

Also, I need to use the date as 01-DEC-2007 i.e. dd-MM-yyyy instead of
yyyy-MM-dd.

Will the xs:date accept the date in dd-MM-yyyy format?

 

Thanks

Regards,
Jasmina

 

Programmer Analyst, Sr

Direct: (858) 651-1132

Ext:     11132

 


RE: [jxpath] Using JXPATH for dates

Posted by "Desai, Jasmina" <jd...@qualcomm.com>.
HI Matt,

Thanks for the reply.

Basically my code generates a xpath sentence as follows (forget about
how it generates)

/wirelessDevices[marketData/enteredMarketDate >= xs:date:("2008-01-01")
and marketData/enteredMarketDate <= xs:date:("2008-01-14") ]

Here "wirelessDevices" is the main object which has an instance of
"marketData" object which in turn has a property "Date
enteredMarketDate".

Basically this date comes form the client side where the user selects a
date range from the calendar (just like any other web application).

So what I do is, get these dates and generate an xpath sentence and
execute it to get the results back from the database.

In all other cases like String, Boolean, Numbers etc, a similar kind of
xpath sentence works perfectly fine.

For e.g.: The sentence below works and gets me the appropriate results
back:

/wirelessDevices[marketData/operators/address/countryType/regionType/id=
'10']

Here the id (10) is a number and hence the sentence gets executed
easily. But when I try to use a date it throws an Invalid XPATH error.

I hope this explains you my problem. 

Thanks
Regards,
Jasmina
 
Programmer Analyst, Sr
Direct: (858) 651-1132
Ext:     11132

-----Original Message-----
From: Matt Benson [mailto:gudnabrsam@yahoo.com] 
Sent: Monday, January 14, 2008 2:43 PM
To: Jakarta Commons Users List
Subject: Re: [jxpath] Using JXPATH for dates

Hi,
  To be quite honest I'm not sure where the "xs:"
portions of your example, and question, are coming
from.  Maybe if you provide a little more basic detail
to describe how you got to the point you're at with
JXPath, the list could be of more help.

-Matt

--- "Desai, Jasmina" <jd...@qualcomm.com> wrote:

> I am using JXPATH to build a java expression which
> can be used to get
> records from a table if its columns fall between a
> specific date range.
> 
> Basically I have a client application which asks the
> end user to enter a
> date range.
> 
> The application needs to get the results which fall
> between the
> specified date range.
> 
>  
> 
> I have something like this for the lower value of
> the date range:
> 
>  
> 
> if (criterion.getValue() instanceof Date) {
> 
>                   SimpleDateFormat dateFormat = new
> SimpleDateFormat("yyyy-MM-dd"); // TODO 01-DEC-2007
> i.e. dd-MM-yyyy
> 
>                   valueAsJXPath = "xs:date:('" +
> dateFormat.format(((Date) criterion.getValue())) +
> ")'";  //DOES NOT
> WORK
> 
>             }
> 
>  
> 
> Here the "Date" is of type java.util.Date.
> 
>  
> 
> Then I have the following for the upper value:
> 
>  
> 
> if (criterion.getUpperValue() instanceof Date) {
> 
>                         SimpleDateFormat dateFormat
> = new
> SimpleDateFormat("yyyy-MM-dd");
> 
>                         upperValueAsJXPath =
> "xs:date:('" +
> dateFormat.format(((Date)
> criterion.getUpperValue())) + ")'"; 
> 
>                   }
> 
>  
> 
>  
> 
> The xpath sentence that gets created is something
> like 
> 
>  
> 
> marketData/enteredMarketDate >=
> xs:date:('2008-01-01)' and
> marketData/enteredMarketDate <=
> xs:date:('2008-01-15)'
> 
>  
> 
> But I get an error which says:
> 
>  
> 
> An Exception has occured:
> org.apache.commons.jxpath.JXPathException:
> Invalid XPath:
> '/wirelessDevices[marketData/enteredMarketDate >=
> xs:date:(\'2008-01-01)\' and
> marketData/enteredMarketDate <=
> xs:date:(\'2008-01-15)\' ]'. Syntax error after:
> '/wirelessDevices[marketData/enteredMarketDate >=
> xs:d' at
>
org.apache.commons.jxpath.ri.Parser.parseExpression(Parser.java:60)
> at
>
org.apache.commons.jxpath.ri.JXPathContextReferenceImpl.compileExpressio
> n(JXPathContextReferenceImpl.java:218) at
>
org.apache.commons.jxpath.ri.JXPathContextReferenceImpl.iterate(JXPathCo
> ntextReferenceImpl.java:384)
> 
>  
> 
>  
> 
> I am a first time user of JXPATH. Kindly help me
> with this error.
> 
>  
> 
> Also, I need to use the date as 01-DEC-2007 i.e.
> dd-MM-yyyy instead of
> yyyy-MM-dd.
> 
> Will the xs:date accept the date in dd-MM-yyyy
> format?
> 
>  
> 
> Thanks
> 
> Regards,
> Jasmina
> 
>  
> 
> Programmer Analyst, Sr
> 
> Direct: (858) 651-1132
> 
> Ext:     11132
> 
>  
> 
> 



 
________________________________________________________________________
____________
Be a better friend, newshound, and 
know-it-all with Yahoo! Mobile.  Try it now.
http://mobile.yahoo.com/;_ylt=Ahu06i62sR8HDtDypao8Wcj9tAcJ 


---------------------------------------------------------------------
To unsubscribe, e-mail: user-unsubscribe@commons.apache.org
For additional commands, e-mail: user-help@commons.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: user-unsubscribe@commons.apache.org
For additional commands, e-mail: user-help@commons.apache.org


Re: [jxpath] Using JXPATH for dates

Posted by Matt Benson <gu...@yahoo.com>.
Hi,
  To be quite honest I'm not sure where the "xs:"
portions of your example, and question, are coming
from.  Maybe if you provide a little more basic detail
to describe how you got to the point you're at with
JXPath, the list could be of more help.

-Matt

--- "Desai, Jasmina" <jd...@qualcomm.com> wrote:

> I am using JXPATH to build a java expression which
> can be used to get
> records from a table if its columns fall between a
> specific date range.
> 
> Basically I have a client application which asks the
> end user to enter a
> date range.
> 
> The application needs to get the results which fall
> between the
> specified date range.
> 
>  
> 
> I have something like this for the lower value of
> the date range:
> 
>  
> 
> if (criterion.getValue() instanceof Date) {
> 
>                   SimpleDateFormat dateFormat = new
> SimpleDateFormat("yyyy-MM-dd"); // TODO 01-DEC-2007
> i.e. dd-MM-yyyy
> 
>                   valueAsJXPath = "xs:date:('" +
> dateFormat.format(((Date) criterion.getValue())) +
> ")'";  //DOES NOT
> WORK
> 
>             }
> 
>  
> 
> Here the "Date" is of type java.util.Date.
> 
>  
> 
> Then I have the following for the upper value:
> 
>  
> 
> if (criterion.getUpperValue() instanceof Date) {
> 
>                         SimpleDateFormat dateFormat
> = new
> SimpleDateFormat("yyyy-MM-dd");
> 
>                         upperValueAsJXPath =
> "xs:date:('" +
> dateFormat.format(((Date)
> criterion.getUpperValue())) + ")'"; 
> 
>                   }
> 
>  
> 
>  
> 
> The xpath sentence that gets created is something
> like 
> 
>  
> 
> marketData/enteredMarketDate >=
> xs:date:('2008-01-01)' and
> marketData/enteredMarketDate <=
> xs:date:('2008-01-15)'
> 
>  
> 
> But I get an error which says:
> 
>  
> 
> An Exception has occured:
> org.apache.commons.jxpath.JXPathException:
> Invalid XPath:
> '/wirelessDevices[marketData/enteredMarketDate >=
> xs:date:(\'2008-01-01)\' and
> marketData/enteredMarketDate <=
> xs:date:(\'2008-01-15)\' ]'. Syntax error after:
> '/wirelessDevices[marketData/enteredMarketDate >=
> xs:d' at
>
org.apache.commons.jxpath.ri.Parser.parseExpression(Parser.java:60)
> at
>
org.apache.commons.jxpath.ri.JXPathContextReferenceImpl.compileExpressio
> n(JXPathContextReferenceImpl.java:218) at
>
org.apache.commons.jxpath.ri.JXPathContextReferenceImpl.iterate(JXPathCo
> ntextReferenceImpl.java:384)
> 
>  
> 
>  
> 
> I am a first time user of JXPATH. Kindly help me
> with this error.
> 
>  
> 
> Also, I need to use the date as 01-DEC-2007 i.e.
> dd-MM-yyyy instead of
> yyyy-MM-dd.
> 
> Will the xs:date accept the date in dd-MM-yyyy
> format?
> 
>  
> 
> Thanks
> 
> Regards,
> Jasmina
> 
>  
> 
> Programmer Analyst, Sr
> 
> Direct: (858) 651-1132
> 
> Ext:     11132
> 
>  
> 
> 



      ____________________________________________________________________________________
Be a better friend, newshound, and 
know-it-all with Yahoo! Mobile.  Try it now.  http://mobile.yahoo.com/;_ylt=Ahu06i62sR8HDtDypao8Wcj9tAcJ 


---------------------------------------------------------------------
To unsubscribe, e-mail: user-unsubscribe@commons.apache.org
For additional commands, e-mail: user-help@commons.apache.org