On 05/24/2012 10:18 AM, Adam Heath wrote: > On 05/24/2012 08:15 AM, Adrian Crum wrote: >> On 5/20/2012 10:01 AM, Jacques Le Roux wrote: >>> Quick questions (seems that there is a lack of internal >>> documentation to say the least), there are not only addressed to >>> Adam... >>> >>> About javacc dependency do we really need it *OOTB*? >>> Can't we use rather externally maintained ant targets like in >>> ant-contrib? For instance pleaser read >>> http://markmail.org/message/lidw73cuzyfr6cic >>> >>> What is framework\sql used for *OOTB*? >> >> From what I understand, the sql component parses SQL statements into >> OFBiz entity conditions, and then executes the statement using the >> entity engine. I don't think it is used OOTB for anything, but it >> could be useful for integration with third-party libraries that take >> SQL statements - like Jasper Reports. > > You can also parse *raw* where clauses. > > == > import org.ofbiz.sql.Parser; > import org.ofbiz.entity.sql.EntityPlanner; > > String sqlConditionString = "contactMechId = ?contactMechId"; > > def sqlPlanner = new EntityPlanner(); > def reader = new StringReader(sqlCondition); > def sqlCondition = new Parser(reader).EntityCondition(); > > while (true) { > def condition = sqlPlanner.getConditionPlanner().parse(sqlCondition, > [contactMechId: '1']); > delegator.findList(entityName, condition, ....) > } > == > > I suppose I should place some of that in a util class(SQLUtil comes to > mind, it was never finished). > > I support (), and, or, in, between, it's rather complete.
The idea was that you would parse the sqlCondition once, in a static {} block somewhere, then at runtime, just build that map. This builds-upon the map/list idea inherent in ofbiz. I also had plans that you could store sql strings into a properties file somewhere, so that they could possibly be changed by the end-user without having to recompile. I need to revisit the "SELECT a.partyId, b.* EXCLUDE(partyId) FROM Party a LEFT JOIN PartyContactMech b USING (partyId)", now that ofbiz better supports conditions on the join clauses, esp. when combining views into other views.