You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@cxf.apache.org by "Sergey Beryozkin (JIRA)" <ji...@apache.org> on 2012/05/14 11:50:48 UTC

[jira] [Updated] (CXF-4314) Introduce a search bean which can hold properties with different names

     [ https://issues.apache.org/jira/browse/CXF-4314?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Sergey Beryozkin updated CXF-4314:
----------------------------------

    Description: 
At the moment, in order to capture a FIQL expression into a list of Search conditions, one needs to provide a bean which needs to have a matching property per every property name in the expression, for example, an expression such as "name==bar;id=234" will require a bean with properties 'name' & 'id' available. This is reasonable when the set of properties is limited, but is too restricting in cases where one needs to experiment with an open-ended set of properties, which would require a bean to be updated every time a new search property gets introduced.

Adding a simple SearchBean bean with a Map property will make it much simpler to convert FIQL expressions into SQL/etc expressions, as well as capture the FIQL expressions and analyze them without having to introduce a custom bean every time...

For example, this is how it would look like when printing SQL expressions:

{code:java}
// Search context represents this query: "name==foo*;(name!=*bar,level=gt=10)"
SearchCondition<SearchBean> filter = searchContext.getSearchCondition(SearchBean.class);
SQLPrinterVisitor<SearchBean> visitor = new SQLPrinterVisitor<SearchBean>("table");
filter.accept(visitor);
String sql = visitor.getResult();
assertTrue(("SELECT * FROM table WHERE (name LIKE 'foo%') AND ((name NOT LIKE '%bar') "
                   + "OR (level > '10'))").equals(sql)
                   || ("SELECT * FROM table WHERE (name LIKE 'foo%') AND "
                   + "((level > '10') OR (name NOT LIKE '%bar'))").equals(sql));
}
{code}


  was:
At the moment, in order to capture a FIQL expression into a list of Search conditions, one needs to provide a bean which needs to have a matching property per every property name in the expression, for example, an expression such as "name==bar;id=234" will require a bean with properties 'name' & 'id' available. This is reasonable when the set of properties is limited, but is too restricting in cases where one needs to experiment with an open-ended set of properties, which would require a bean to be updated every time a new search property gets introduced.

Adding a simple SearchBean bean with a Map property will make it much simpler to convert FIQL expressions into SQL/etc expressions, as well as capture the FIQL expressions and analyze them without having to introduce a custom bean every time...

    
> Introduce a search bean which can hold properties with different names
> ----------------------------------------------------------------------
>
>                 Key: CXF-4314
>                 URL: https://issues.apache.org/jira/browse/CXF-4314
>             Project: CXF
>          Issue Type: Improvement
>          Components: JAX-RS
>            Reporter: Sergey Beryozkin
>            Assignee: Sergey Beryozkin
>
> At the moment, in order to capture a FIQL expression into a list of Search conditions, one needs to provide a bean which needs to have a matching property per every property name in the expression, for example, an expression such as "name==bar;id=234" will require a bean with properties 'name' & 'id' available. This is reasonable when the set of properties is limited, but is too restricting in cases where one needs to experiment with an open-ended set of properties, which would require a bean to be updated every time a new search property gets introduced.
> Adding a simple SearchBean bean with a Map property will make it much simpler to convert FIQL expressions into SQL/etc expressions, as well as capture the FIQL expressions and analyze them without having to introduce a custom bean every time...
> For example, this is how it would look like when printing SQL expressions:
> {code:java}
> // Search context represents this query: "name==foo*;(name!=*bar,level=gt=10)"
> SearchCondition<SearchBean> filter = searchContext.getSearchCondition(SearchBean.class);
> SQLPrinterVisitor<SearchBean> visitor = new SQLPrinterVisitor<SearchBean>("table");
> filter.accept(visitor);
> String sql = visitor.getResult();
> assertTrue(("SELECT * FROM table WHERE (name LIKE 'foo%') AND ((name NOT LIKE '%bar') "
>                    + "OR (level > '10'))").equals(sql)
>                    || ("SELECT * FROM table WHERE (name LIKE 'foo%') AND "
>                    + "((level > '10') OR (name NOT LIKE '%bar'))").equals(sql));
> }
> {code}

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira