Quantcast
Channel: SmartClient Forums
Viewing all articles
Browse latest Browse all 4756

Filter Builder : Criteria encode/decode to store in the database

$
0
0
Hi Isomorphic,

I'm trying to encode a criteria to save it in the database. All works fine till I add a date in the criteria.
When a date is added in the criteria, I'm not able to fetch the date with the criteria coming from the database.

The criteria is generated with a FilterBuilder.

I think the trouble come from the date parser... but I do not find a solution.

Here is an example
Code:


JSONEncoder encoder = new JSONEncoder();
encoder.setDateFormat(JSONDateFormat.DATE_CONSTRUCTOR);
String criteriaValue = JSON.encode(criteria.getJsObj(), encoder);
System.out.println(criteriaValue);
       
Criteria newCriteria = new AdvancedCriteria(JSON.decode(criteriaValue));
               
               
listGrid.fetchData(newCriteria);

The filter encode looks like
Code:

{
    "_constructor":"AdvancedCriteria",
    "operator":"and",
    "criteria":[
        {
            "fieldName":"CREATED",
            "operator":"equals",
            "value":"2014-06-02T22:00:00.000",
            "_constructor":"AdvancedCriteria"
        }
    ]
}

with date is 03/06/2014 (format DD/MM/yyyy) in the filterbuilder for the field "CREATED".

The definition of the field "CREATED" is the datasource
Code:

<field name="CREATED" type="creatorTimestamp" title="Created" hidden="false" details="true" />
Here is the date format that I use
Code:

private static DateTimeFormat dateTimeFormat = DateTimeFormat.getFormat("dd MMM yyyy - HH:mm:ss");
private static DateTimeFormat dateFormat = DateTimeFormat.getFormat("dd MMM yyyy");
private static DateTimeFormat timeFormat  = DateTimeFormat.getFormat("HH:mm:ss");

DateUtil.setNormalDatetimeDisplayFormatter(new DateDisplayFormatter() {

                        public String format(Date date) {
                                return dateTimeFormat.format(date);
                        }
                });
                DateUtil.setNormalDateDisplayFormatter(new DateDisplayFormatter() {

                        public String format(Date date) {
                                return dateFormat.format(date);
                        }
                });
                DateUtil.setNormalTimeDisplayFormatter(new DateDisplayFormatter() {

                        public String format(Date date) {
                                return timeFormat.format(date);
                        }
                });

                DateUtil.setShortDatetimeDisplayFormatter(new DateDisplayFormatter() {

                        public String format(Date date) {
                                return dateTimeFormat.format(date);
                        }
                });
                DateUtil.setShortDateDisplayFormatter(new DateDisplayFormatter() {

                        public String format(Date date) {
                                return dateFormat.format(date);
                        }
                });
                DateUtil.setShortTimeDisplayFormatter(new DateDisplayFormatter() {

                        public String format(Date date) {
                                return timeFormat.format(date);
                        }
                });

                DateUtil.setDateParser(new DateParser() {

                        public Date parse(String dateString) {
                               
                                if ((dateString == null) || (dateString.length() == 0))
                                        return null;
                                try{
                                        return dateTimeFormat.parse(dateString);
                                }catch(Exception e ){
                                        e.printStackTrace();
                                }
                                try{
                                        return timeFormat.parse(dateString);
                                }catch(Exception e){
                                        e.printStackTrace();
                                }
                                try {
                                        return dateFormat.parse(dateString);
                                } catch (Exception e) {
                                        e.printStackTrace();
                                }
                                return null;
                        }
                });

Can you help me with that?

Thanks

Julien

Viewing all articles
Browse latest Browse all 4756

Trending Articles