Applying a query language to collections

Hi, we handed in a project a while ago that was essentially to read in data from a .DAT file, store it in appropriate collections, then use a basic query language to filter through the stored data. I wasn't really happy with my querying though, as it was basically a huge succession of control statements. The queries were of the form "select OBJECTNAME where ATRIBUTE OPERATOR VALUE and ATRIBUTE OPERATOR VALUE", there could be as many sub clauses as desired (0... 200 whatever). For example "select elephant where height > 360 and weight <= 1000".
We had a comment back that we should use a Query interface and a two subclasses to represent a simple query (e.g. height > 360) and then a conjunctive query (ie simplequery1 AND simplequery2 ). The Query interface would then have a match method. I'm struggling to get my head around how I do this, does anyone have a simple example or explaination that might help me out?
Cheers.

I've done something like this a couple times. Your need to get a better idea of what you want your query language to look like. For example, if you're given a list of elephants, the "select elephant" part is unnecessary (your query will just return a list of matching elephants). You should decide if you want it to handle things like (height > (weight / 2)), whether conditions can be nested "((a and b) or (c and d)) and (e or f)". Will you need to support the conditional operator (a ? b : c) or a unary operator (-)? How complex will your order of operations rules be?
If you keep it simple (always two operands), you could go with something like this:
public interface QueryOperator
  public boolean eval(Object leftParam, Object rightParam);
public enum BasicOperators implements QueryOperator
public class  QueryElement
  private QueryOperator operator;
  private Object leftParam;
  private Object rightParam;
}

Similar Messages

  • Object Query Language (OQL) Support ?

    I know Toplink has an "ExpressionBuilder" type querying
    But does Toplink support Object Query Language (OQL)
    Example :
    Something like this ?
    // perform query
    OQLQuery query = new OQLQuery(
    "select x from Person x where x.name = \"Doug Barry\"");
    Collection result = (Collection) query.execute();
    Iterator iter = result.iterator();
    Thanks
    Ratheesh

    Ratheesh,
    TopLink does not support OQL. We offer query support through the following 5 options:
    1. EJB QL - for both Entity Beans (CMP/BMP) and Java objects
    2. TopLink Expressions - Object based query API
    3. SQL calls
    4. Stored procedure calls
    5. Quey by example
    Doug

  • Is EJB query language supports UNION

    Hi All,
    Can anyone suggest me is EJB query language supports UNION type of select queries
    if possible can any one suggest me how to convert below Sql query to Ejb ql
    Ex:
    select * from table1 where id='10'
    union all
    select * from table1 where id='20'

    The UNION clause specifies a combination of the output of two subqueries. The two queries must return the same number of elements and compatible types
    1.You cannot use dependent value objects with UNION.
    2.UNION ALL combines all results together in a single collection.
    3.UNION combines results but eliminates duplicates.
    4.If ORDER BY is used together with UNION, the ORDER BY
    must refer to selection expression using integer numbers.
    Example:
    This example returns a collection of all employee objects of type EmpBean and all manager objects of type ManagerBean where ManagerBean is a subtype of EmpBean.
    select e from EmpBean e union all select m from DeptBean d, in(d.mgr) mThis example shows a query that is not valid, because EmpBean and DeptBean are not compatible.
    select e from EmpBean e union all select d from DeptBean d
    Your Example:
    Select e from Table1Bean e where e.id=10
    union all
    Select e from Table1Bean e where e.id=10

  • Creating a query in a collection - SCCM 2012

    Hi Everyone,
    I've got a weird issue and was hoping you techies could shed a light.
    I'm trying to create a script that makes a query into a collection with input from a CSV file. (this is a part of a bigger script, but this is what I'm having trouble with at the moment).
    #Import CSV
    $source = Import-Csv -Path C:\temp\source.csv -Delimiter ","
    foreach ($row in $source) {
    #Variables
    $ApplicationName = $row.ApplicationName
    $Customer = $row.Customer
    $ApplicationDL = $row.ApplicationDL
    $QueryPath = "$Customer\$ApplicationDL"
    $ApplicationDescription = $row.ApplicationDescription
    #Creates a Query Rule in the Collection
    Add-CMDeviceCollectionQueryMembershipRule -CollectionName $ApplicationName -QueryExpression "select * from SMS_R_System where SMS_R_System.SystemGroupName = '$QueryPath'" -RuleName $ApplicationName
    This is a multi-tenant environment so each customer has their own child domain. For example lets say that my root domain is contoso.com and my childdomain is test (and thus test.contoso.com).
    That is why I've created $QueryPath, which results in: test\groupname (The same as when I do it manually) 
    However the problem is when I execute this script it simply does not create the query.
    I don't get an error or what so ever.
    When I change $QueryPath to $ApplicationDL (resulting in just 'groupname' without the domain prefix) it actually does create the query but at that point it is not functional because it needs the domain prefix of the child-domain.
    Any help is much appreciated.
    Thanks in advance :)

    Sorry - chnage this line:
    $QueryPath='{}\{}'
    -f $row.Customer,$row.ApplicationDL
    To this:
    $QueryPath='{0}\{1}'
    -f $row.Customer,$row.ApplicationDL
    ¯\_(ツ)_/¯

  • XPath Query Language Reference

    Aside from the three little examples given in the 11g Guide and the B2B Tech Note #011, is there a reference available for the XPath Query Language used by B2B? Is is possible to use complex XPath queries in the B2B Doc Definitions?

    I'm mainly just looking for the full capabilities of the queries.
    Specifically, at the moment, I'm looking for a way to match the value of a node to a group of values (like a sql 'in') as well as check the existence and value of other nodes within the same query.
    Do the documents I find for 'Preference XPath' pertain here?

  • EJB Query Language

    Hi All,
         I am using SAP Netweaver Developer Studio(2004)version.I want to know that EJB2.0 Query Language will
    support Joins,Internal select statement with in a select
    statement or not.Is it posssible or not.I have a requirement lilke this,I have to use joins.
    Thanks & Regards,
    Guru

    Guruvulu,
    In EJB QL you may operate on objects relations (both 0..1 and 0..n) in the same way as with joins in SQL. So the answer is yes.
    Read free <a href="http://www.theserverside.com/books/wiley/masteringEJB/downloads/MasteringEJB3rdEd.pdf">Mastering EJB</a> book -- it contains separate chapter on EJB QL.
    Valery Silaev
    EPAM Systems
    http://www.NetWeaverTeam.com

  • EJB Query Language where condtion based on date

    Hi,
    I am using EJB3 query language. In the table I have a column called requestdate which is in date time format. I have created an entity class.
    I need to select few records using query language(named queries) based on this requestdate matching to the current date. I want to compare only based on Date value (truncating the time). Something like this
    select max(o.req_id) from requests o where o.requestdate = :currentdate
    currentdate is java.sql.Date value formatted to yyyymmdd only.
    How can I do this using query language?
    Please help to me get this done.
    thanka
    Anuradha

    Hi Anuradha ,
    I'm afraid the query language does not support retrieving the date portion (i.e. truncating the time) from a date field.
    I propose you turn you named into a BETWEEN query taking two parameters one for the beginning of the day and another for the end of the day. Then your named query could look like:
    SELECT max(o.req_id) FROM requests o WHERE o.requestdate BETWEEN :start AND :end
    The following code creates two calendar instances for the current day, one for 00:00:00 and another for 23:59:59:
    Calendar start = Calendar.getInstance();
    start.set(Calendar.HOUR_OF_DAY, 0);
    start.set(Calendar.MINUTE, 0);
    start.set(Calendar.SECOND, 0);
    start.set(Calendar.MILLISECOND, 0);
    Calendar end = Calendar.getInstance();
    end.set(Calendar.HOUR_OF_DAY, 23);
    end.set(Calendar.MINUTE, 59);
    end.set(Calendar.SECOND, 59);
    end.set(Calendar.MILLISECOND, 999);
    Here is some sample code that creates a query instance for a named query called findMaxRequestPerDay and passes the Date of the above Calendar instance as actual parameter values. It assumes the named query is called findMaxRequestPerDay and the req_id field is a long:
    Query query = em.createNamedQuery("findMaxRequestPerDay");
    query.setParameter("start", start.getTime());
    query.setParameter("end", end.getTime());
    Long max = (Long)query.getSingleResult();
    I hope this helps.
    Regards Michael

  • EJB query language help!!

    Hi all, I have been trying to run a ejb query on JBoss 4.0.5, using built in hypersonic db, For some strange reasons am able to fetch all objects from db without any where clause but if am using a where clause with an attribute name from the entitybean am unable to retrieve any results.
    I get an org.hibernate.QueryException, could not resolve property : "property name"
    My ejb query looks like this...
    SELECT template FROM TemplateSelect template WHERE template.template_name='Template_One'
    TemplateSelect is my entity bean class and I do have an attribute named template_name in my bean class.
    could any one please suggest me what could be wrong and also direct me to a good tutorial on ejb query language as well as I am fairly new to hibernate and ejb3 !
    tons of thanks in advance!
    pravin

    Hi Anuradha ,
    I'm afraid the query language does not support retrieving the date portion (i.e. truncating the time) from a date field.
    I propose you turn you named into a BETWEEN query taking two parameters one for the beginning of the day and another for the end of the day. Then your named query could look like:
    SELECT max(o.req_id) FROM requests o WHERE o.requestdate BETWEEN :start AND :end
    The following code creates two calendar instances for the current day, one for 00:00:00 and another for 23:59:59:
    Calendar start = Calendar.getInstance();
    start.set(Calendar.HOUR_OF_DAY, 0);
    start.set(Calendar.MINUTE, 0);
    start.set(Calendar.SECOND, 0);
    start.set(Calendar.MILLISECOND, 0);
    Calendar end = Calendar.getInstance();
    end.set(Calendar.HOUR_OF_DAY, 23);
    end.set(Calendar.MINUTE, 59);
    end.set(Calendar.SECOND, 59);
    end.set(Calendar.MILLISECOND, 999);
    Here is some sample code that creates a query instance for a named query called findMaxRequestPerDay and passes the Date of the above Calendar instance as actual parameter values. It assumes the named query is called findMaxRequestPerDay and the req_id field is a long:
    Query query = em.createNamedQuery("findMaxRequestPerDay");
    query.setParameter("start", start.getTime());
    query.setParameter("end", end.getTime());
    Long max = (Long)query.getSingleResult();
    I hope this helps.
    Regards Michael

  • Query language for CTXRULE MATCHES

    I am trying to build an alerting application when, on receipt of a new XML document, user's are alerted if the document matches one or more of the profiles that they have defined. I have created a CTXRULE index that does this but only with very simple profiles. For example ABOUT(soccer), which is the example in the Text documentation.
    Is it possible to create more complex queries, for example using WITHIN to only match within defined elements of the XML document. Is there a definition of the query language that can be used with MATCHES and are there any good example?
    Thanks
    Martin Haigh

    Omar,
    Thanks for the reply. I had actually found that document myself but I couldn't get the WITHIN clause to work and that document conflicted with the ORACLE documentation at:
    <a href="http://download-west.oracle.com/docs/cd/B10501_01/text.920/a96517/ind.htm#1010647>  Do you have any examples of using WITHIN?
    Thanks
    Martin                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   

  • Query language for XML documents

    Which is a better (efficiency in terms of memory management) query language for interacting with XML documents.The query language shouls support 'insert', 'delete', 'update' and 'select' commands. How fast is database as compared to XML ( database being replaced by XML) when only 'insert' n 'select' commands are issued?

    Hi,
    I suggest you use the Sunopsis JDBC for XML driver that will let you perform all kind of SQL statements on your XML files. It is a type 4 driver so it's very use to use. You may have more information and download it here:
    http://www.sunopsis.com/corporate/us/products/jdbcforxml/
    Hope that will help
    Simo Fernandez

  • Query language for XML that is going to remove use of database

    Friends,
    I want to know whether my idea is feasible or not.
    I want to make a query language similar to SQL for XML which is going to remove the need for database for a large extent.
    Their will be queries for making table,extracting data,making foreign key all through XML and no database.
    I just want to know that is their any market value for such a project and will it be sellable,so that i can start working on it.

    There is no way to judge any future market for such a thing.
    As it is, XML is widely abused, having mutated from its original purpose, a markup language readable by both machine and human, to a general data interchange language. It winds up being extremely slow and convoluted, in some cases overwhelming the hardware when a simple and common error occurs, then having to catch up. A big part of this is the silly and redundant method of defining metadata, again and again and again and again.
    So what you want to do is create a database which will be highly formatted with redundant information, dynamically. This is silly, why does data need to be stored in a human readable format? It doesn't always even need to be presented in a human readable format! Why the heck would you need to read the bits of an mp4? Steganography?
    What you are proposing is the exact opposite of what is needed. What is needed is a way to describe metadata for many different kinds of data, in a manner that can be interpreted by both man and machine at appropriate times, extensible for various paradigms.
    What can be sold, on the other hand, is another question entirely, and not technical at all.
    First definition of database that pops up during a search: an organized body of related information
    Why would you want to get rid of that?

  • Display dynamic query result in collection

    How to we put the query results in collection for a dynamic query?

    Do you want to display or to store or do both.
    Anyway try a check at this:
    http://forum.java.sun.com/thread.jspa?threadID=584195&messageID=2991930#2991930
    I think if u do the reverse process you will be able to retrieve the values from the list and display them.
    Try giving a thought.

  • TFS 2010: Query over all Collections and Team Projects

    Hi,
    is it possible to generate a query which queries all collections and team project on a TFS?
    For example if I want to know all work items assigned to me. Actually I can only query over a collection and not over the complete TFS.
    How can I do this?
    Thanks,
    Mat

    Hi Mat,
    Thank you for your post.
    You may need write a TFS API to list all team project collections in server. For detail information, you can refer to Taylaf's blog
    Retrieve the List of Team Project Collections from TFS 2010 Client APIs and Paul's blog
    List all TFS Project Collections and Projects.
    I hope this information will help resolve this issue.
    If anything is unclear, please free feel to let me know.
    Regards,
    Lily Wu
    MSDN Community Support | Feedback to us
    Develop and promote your apps in Windows Store
    Please remember to mark the replies as answers if they help and unmark them if they provide no help.

  • JPA query language syntax

    My question is if JPA query language syntax allows full qualified class names in the SELECT clause of the query, e.g.:
    SELECT * FROM com.abc.Person
    This works well with Hibernate, but TopLink Essentials complains about the dots in com.abc.Person.
    In the Java EE 5 Tutorial only partially qualified names ( SELECT * FROM Person) are used.
    There are only examples with fully qualified names for constants in WHERE clauses.

    my first guess:
    SELECT t FROM tablename t WHERE t.timestamp>:somethingwhere :something
    is handled with something like: (..).setParameter("something", someSQLDate);

  • SAP Query Language max retrieve size 512 bytes?

    Hello,
    Does anyone know if there is a 512 byte limit on retrieves from a table when using SAP Query Language?  In other words the length of all the fields in the retrieve can't exceed 512 bytes?
    Thanks

    Hi,
    And also you need check this thread
    May this will help you out.

Maybe you are looking for

  • HT4623 My iPad 3 has lost the speaker sound after updating to iOS 6.1, headphones are working fine

    My iPad 3 has lost the speaker sound after updating to iOS 6.1, headphones are working fine. Please help me out, done all the troubleshooting like restarting, side switcing, cleeaning the headphone jack etc.,

  • Modify the Overall credit check status in Sales order

    Dear all, Good morning/afternoon/evening! I have a question that how to modify the Overall credit check status (VBUK-CMGST) in sales order when the order saved? I try to do this in USEREXIT_SAVE_DOCUMENT_PREPARE, but it does not works. Maybe I need t

  • Service tax - vendor

    Dear all Vendor  1,103.00            Cr 18729001 PL-Vnd-Mtl 1,000.00          DR 26364211 Svc tx OH on svcs 100.00  DR 26364216 ECS OH on svcs- 2.00       DR 26364218 SEC OH on svcs-1.00        DR This is my miro entry and it is gong to on hold accou

  • Airport Express (g) drops out but light remains green

    I have a setup: (internet)>modem>TC(dual)>powerline>netgear switch>AX(g) AX(g) set in bridge mode with same broadcast ID and WPA2 password as TC Everything works well for a few hours when the AX suddenly loses connection. A restart (power off/on) res

  • HT1947 Is the current Remote app compatible with iPod Touch 4.2.1?

    This KB article says so, but iTunes will not load the current version of Remote onto a 2g 4.2.1 iPod Touch. http://support.apple.com/kb/HT1947 I unfortunately had to restore my 2nd Gen iPod Touch, and in doing so, iTunes indicated that several existi