Found another article with a similar problem. All fixed. Needed to better strip out the time information. cw
On Aug 28, 8:05 am, cdub <[email protected]> wrote: > Hello, > > I'm creating a class that help me keep track on which dates certain > types of activities occur (user registration, logins, etc). > > I'm having a problem getting my incrementCounter() method to correct > query for whether an event of that type has already occurred on that > date. I believe it's because I'm not doing the date comparison of the > query correctly. Any help would be appreciated as there isn't a lot of > sample code out there on date queries. > > Thanks, > cw > > ------------------- > > import java.util.*; > import java.util.logging.Logger; > import javax.jdo.Query; > import javax.jdo.PersistenceManager; > import javax.jdo.annotations.IdGeneratorStrategy; > import javax.jdo.annotations.IdentityType; > import javax.jdo.annotations.PersistenceCapable; > import javax.jdo.annotations.Persistent; > import javax.jdo.annotations.PrimaryKey; > import java.util.Properties; > import com.something.PMF; > > @PersistenceCapable(identityType = IdentityType.APPLICATION) > public class DayCount { > private static final Logger log = Logger.getLogger > (DayCount.class.getName()); > > @PrimaryKey > @Persistent(valueStrategy = IdGeneratorStrategy.IDENTITY) > private Long id; > > @Persistent > private String countType; > > @Persistent > private Date whichDay; > > @Persistent > private int count; > > public DayCount(String countType, Date whichDay) { > this.countType = countType; > this.whichDay = removeTime(whichDay); > this.count = 0; > } > > public static List<DayCount> getCounts(String countType) { > PersistenceManager pm = PMF.get().getPersistenceManager(); > Query query = > pm.newQuery(com.mathblitz.models.DayCount.class); > query.setFilter("countType == countTypeParam"); > query.setOrdering("whichDay desc"); > query.declareParameters("String countTypeParam"); > > List<DayCount> results = null; > > try { > results = (List<DayCount>) query.execute(countType); > } finally { > query.closeAll(); > } > > return results; > } > > public static boolean incrementCount(String countType, Date whichDay) > { > boolean returnVal = false; > > PersistenceManager pm = PMF.get().getPersistenceManager(); > Query query = pm.newQuery(DayCount.class); > query.setFilter("countType == countTypeParam && whichDay == > whichDayParam"); > query.declareImports("import java.util.Date"); > query.declareParameters("String countTypeParam, Date > whichDayParam"); > > List<DayCount> results = null; > DayCount dc = null; > > try { > results = (List<DayCount>) query.execute(countType, > removeTime > (whichDay)); > log.warning("Results: " + results.size() + " for > date: " + > removeTime(whichDay)); > > if (results.size() == 0) { > dc = new DayCount(countType, whichDay); > dc.count = 1; > log.warning("New Object Count: " + dc.count); > pm.makePersistent(dc); > returnVal = true; > } else if (results.size() == 1) { > dc = results.get(0); > dc.count++; > log.warning("Existing Object Count: " + > dc.count); > pm.makePersistent(dc); > returnVal = true; > } else { > log.warning("Too many results for countType: > " + countType + " > day: " + whichDay.toString()); > } > } catch (Exception e) { > log.warning(e + ""); > } finally { > query.closeAll(); > pm.close(); > } > > return returnVal; > } > > // Get rid of time stamp > public static Date removeTime(Date whichDay) { > whichDay.setHours(0); > whichDay.setMinutes(0); > whichDay.setSeconds(0); > return whichDay; > } > > } --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Google App Engine for Java" group. To post to this group, send email to [email protected] To unsubscribe from this group, send email to [email protected] For more options, visit this group at http://groups.google.com/group/google-appengine-java?hl=en -~----------~----~----~----~------~----~------~--~---
