I finally got a chance to look this over. I really don't know how
most of the code is working, so I can't comment super intelligently.
However, why is the query name being set with a name + some
calculated hash code? Will the query itself calculate the same hash
code? If so, why calculate here? If not, why does the name have a
hashCode value that the query itself does not?
-- KevinOn Sep 6, 2005, at 12:12 PM, Michael Gentry (Yes, I'm a Contractor) wrote:
> Could a few eyeballs look over this and give me feedback? It seems > to work with my test case. > > In org.objectstyle.cayenne.query.SelectQuery.java:354 (at least in > my 1.2 checkout): > > > public SelectQuery queryWithParameters(Map parameters, boolean > pruneMissing) { > // create a query replica > SelectQuery query = new SelectQuery(); > query.setDistinct(distinct); > > this.selectProperties.copyToProperties > (query.selectProperties); > > query.setLoggingLevel(logLevel); > query.setParentObjEntityName(parentObjEntityName); > query.setParentQualifier(parentQualifier); > query.setRoot(root); > > // TODO: implement algorithm for building the name based on > the original name and > // the hashcode of the map of parameters. This way query > clone can take advantage > // of caching. > > Iterator keyValuePairs = parameters.entrySet > ().iterator(); > HashCodeBuilder parametersHash = new HashCodeBuilder(); > > while (keyValuePairs.hasNext()) { > Map.Entry entry = (Map.Entry) keyValuePairs.next(); > > parametersHash.append(entry.getKey()); > parametersHash.append(entry.getValue()); > } > > query.setName(name + parametersHash.toHashCode()); > > if (prefetches != null) { > query.addPrefetches(prefetches); > } > > if (orderings != null) { > query.addOrderings(orderings); > } > > if (customDbAttributes != null) { > query.addCustomDbAttributes(customDbAttributes); > } > > // substitute qualifier parameters > if (qualifier != null) { > query.setQualifier(qualifier.expWithParameters > (parameters, pruneMissing)); > } > > return query; > } > > > I bolded the portions of interest. Of course, the TODO can be > removed if everything thinks this is valid. > > Thanks, > > /dev/mrg > -- > I'm Victor. I'm the cleaner. >
This archive was generated by hypermail 2.0.0 : Mon Sep 12 2005 - 12:47:39 EDT