Package talkfeed.data

Examples of talkfeed.data.User


  public User getOrCreateUser(String jid){
   
    DataManager dm = DataManagerFactory.getInstance();
    PersistenceManager pm = dm.newPersistenceManager();
   
    User user = dm.getUserFromId(pm , jid);
    if (user == null){
      user = new User();
      user.setId(jid);
      user.setDateCrea(new Date());
      user.setNextUpdate(new Date());
      pm.currentTransaction().begin();
      pm.makePersistent(user);
      pm.currentTransaction().commit();
    }
   
View Full Code Here


    // create new persistenceManager
    this.currentManager = DataManagerFactory.getInstance()
        .newPersistenceManager();

    //fetch user from his jabber id
    User user = null;
   
    if (id >0) {
      //fetch by id
      user = (User) this.currentManager.getObjectById(User.class, id);
    } else {
      //find by email
      if(email != null){
        user = this.getOrCreateUser(email);
      }
    }

    //user error
    if (user == null){
      throw new IllegalArgumentException("NO user found : id="
            + id + ", email=" +email);
    }
   
    // next update
    int minuteNextUpdate = user.getInterval();
    if (minuteNextUpdate < 10)
      minuteNextUpdate = 10;

    // test user presence
    JID jid = new JID(user.getId());
   
    boolean isAvailable = UserPresence.isUserAvailable(jid.getId());
   
    if (isAvailable) {
      //user is present : do update !

      // select subscriptions
      Query q = this.currentManager.newQuery(Subscription.class);
      q.setOrdering("lastProcessDate");
      q.setRange(0, NB_SUBSCRIPTIONS_MAX);
      q.setFilter("userKey == uk");
      q.declareParameters("com.google.appengine.api.datastore.Key uk");

      @SuppressWarnings("unchecked")
      List<Subscription> subs = (List<Subscription>) q.execute(user
          .getKey());

      // update
      for (Subscription sub : subs) {
        // update is done ?
        boolean updateDone = false;

        // fetch blog
        Blog blog = (Blog) this.currentManager.getObjectById(
            Blog.class, sub.getBlogKey());

        // compare dates bet blog last entry and subscription update
        if (blog.getLatestEntry().after(sub.getLatestEntryNotifiedDate())) {
          Logger.getLogger("UserService").info(
              "user " + user.getId() + " present. Try notify : "
                  + blog.getTitle());

          // find next entry
          BlogEntry nextEntry = this.findNextEntry(sub);

          if (nextEntry == null) {
            // subscription is up to date
          } else {
            // notify user
            this.sendBlogEntry(jid, nextEntry);
            // set modification is done
            updateDone = true;
            // set current subscription mark to entry date
            sub.setLatestEntryNotifiedDate(nextEntry.getPubDate());
          }
        }

        // Update subscription process
        // last analyze date
        sub.setLastProcessDate(now);
        this.currentManager.currentTransaction().begin();
        this.currentManager.flush();
        this.currentManager.currentTransaction().commit();

        // break
        if (updateDone) {
          // update user
          user.setLastUpdate(now);
          user.setLastSubscriptionKey(sub.getKey());
          this.currentManager.currentTransaction().begin();
          this.currentManager.flush();
          this.currentManager.currentTransaction().commit();
          break;
        }else {
          //nothing to update
          Logger.getLogger("UserService").info(
              "user " + user.getId() + " present but nothing to update.");
        }

      }

      q.closeAll();

    } else {
      /*
       * removed for XMPP issues
      minuteNextUpdate = 30;
      //remove from presence
      UserPresence.setPresence(user.getId(), presence);
      Logger.getLogger("UserService").info(
          "user " + user.getId() + " not present");
      */
    }

    // next update
    // record next update
    Calendar nextTime = Calendar.getInstance();
    nextTime.add(Calendar.MINUTE, minuteNextUpdate);
    user.setNextUpdate(nextTime.getTime());
    UserPresence.setNextUpdate(user.getId(), minuteNextUpdate);

    // flush
    this.currentManager.currentTransaction().begin();
    this.currentManager.flush();
    this.currentManager.currentTransaction().commit();
View Full Code Here

    //check is user exists, if not, create it
    //clean email
    String jid = TextTools.cleanJID(this.user);

    User user = dm.getUserFromId(getPersitence(), jid);
    if (user == null){
      user = new User();
      user.setId(jid);
      user.setDateCrea(new Date());
      user.setNextUpdate(new Date());
      getPersitence().currentTransaction().begin();
      getPersitence().makePersistent(user);
      getPersitence().currentTransaction().commit();
    }
   
View Full Code Here

      Query q = getPersitence().newQuery(User.class);
      q.setFilter("id == email");
      q.declareParameters("String email");
      q.setUnique(true);
     
      User u = (User) q.execute(this.user);
      this.userKey = u.getKey();
     
    }
   
    return this.userKey;
  }
View Full Code Here

    qUser.setFilter("id == email");
    qUser.declareParameters("String email");
    qUser.setRange(0, 1);
    qUser.setUnique(true);

    User user = (User) qUser.execute(email);

    if (user == null) {
      qUser.closeAll();
      return false;
    }

    Blog blog = pm.getObjectById(Blog.class, new Long(blogId));

    Query q = pm.newQuery(Subscription.class);
    q.setFilter("userKey == uid && blogKey == bid");
    q.declareParameters("com.google.appengine.api.datastore.Key uid, com.google.appengine.api.datastore.Key bid");
    q.setRange(0, 1);

    @SuppressWarnings("unchecked")
    List<Subscription> list = (List<Subscription>) q.execute(user.getKey(),
        blog.getKey());

    if (list.size() > 0) {
      pm.currentTransaction().begin();
      pm.deletePersistent(list.get(0));
View Full Code Here

    BlogManager blogManager = BlogManager.getInstance();
    DataManager dataManager = DataManagerFactory.getInstance();
    PersistenceManager pm = dataManager.newPersistenceManager();
   
    //get user
    User user = dataManager.getUserFromId(pm , id);
   
    //check if blog exists
    Blog blog = blogManager.getOrCreateSource(link);
   
    if (blog == null){
      //blog not found or not avaiable
      TalkService.sendMessage(user.getId(),"blog not found ! :(");
      return;
    }
   
    //check subscription
    Subscription sub = dataManager.getSubscription(pm , user, blog);
   
    //create new subscription
    if (sub == null){
      sub = new Subscription();
      sub.setBlogKey(blog.getKey());
      sub.setPriority(0);
      sub.setUserKey(user.getKey());
      sub.setLastProcessDate(new Date());
      sub.setLatestEntryNotifiedDate(new Date());
     
      pm.currentTransaction().begin();
      pm.makePersistent(sub);
      pm.currentTransaction().commit();

      TalkService.sendMessage(user.getId(),"source added ! :)");
      //update cache
      SubscriptionCache.removeUserFromCache(user.getId());
    } else {
      TalkService.sendMessage(user.getId(),"already subscribed");
    }
   
    pm.close();
    pm = null;
   
View Full Code Here

    //data
    DataManager dm = DataManagerFactory.getInstance();
    PersistenceManager pm = dm.newPersistenceManager();
   
    //fetch user
    User user = pm.getObjectById(User.class,id);
   
    if (user.getLastEmail() == null){
      Calendar cal = Calendar.getInstance();
      cal.add(Calendar.HOUR, -(4 * 24));
      user.setLastEmail(cal.getTime());
    }
   
    Date now = Calendar.getInstance().getTime();
   
    boolean ismail = false;
   
    StringBuilder email = new StringBuilder();
   
    email.append("Hello ");
    email.append(user.getId());
    email.append("\r\n\r\nHere are your updates since ");
    email.append(user.getLastEmail());
    email.append("\r\n\r\n");
   
    //retrieve subscriptions
    //fetch sub
    Query sq = pm.newQuery(Subscription.class);
    sq.setFilter("userKey == uk && lastDate > date");
    sq.declareParameters("com.google.appengine.api.datastore.Key uk, java.util.Date date");
   
    @SuppressWarnings("unchecked")
    List<Subscription> ls = (List<Subscription>) sq.execute(user.getKey(),user.getLastEmail());
   
    //fetch new subscriptions
    for(Subscription sub : ls){
      //fetch entries
      Query qEntry = pm.newQuery(BlogEntry.class);
      qEntry.setFilter("blogKey == bk && pubDate > date");
      qEntry.declareParameters("com.google.appengine.api.datastore.Key bk, java.util.Date date");
     
      //fetch entries
      List<BlogEntry> entries = (List<BlogEntry>) qEntry.execute(sub.getBlogKey(),user.getLastEmail());
     
      boolean title = false;
      for(BlogEntry entry : entries){
        ismail = true;
        if (!title) {
          title = true;
          email.append("\r\n");
          email.append(entry.getBlogTitle());
          email.append("\r\n");
        }
        email.append(" * ");
        email.append(entry.getTitle());
        email.append("\r\n  ");
        email.append(entry.getLink());
        email.append("\r\n");
      }
      qEntry.closeAll();
    }
    sq.closeAll();
   
    email.append("\r\nClick here to unsubscribe : ");
    email.append(HOST);
    email.append("stopmail/");
    email.append(user.getKey().getId());
    email.append("\r\nOr type 'email stop' to the talkfeed bot in gtalk.");
    System.out.println(email.toString());
  }
View Full Code Here

      qUser.setFilter("id == email");
      qUser.declareParameters("String email");
      qUser.setRange(0, 1);
      qUser.setUnique(true);

      User user = (User) qUser.execute(email);
     
      if (user != null){
        //fetch subscription
        // select subscriptions
        Query q = getPM().newQuery(Subscription.class);
        q.setFilter("userKey == uk");
        q.declareParameters("com.google.appengine.api.datastore.Key uk");

        List<Subscription> subs = (List<Subscription>) q.execute(user
            .getKey());
        for(Subscription sub : subs){
          long id = sub.getBlogKey().getId();
          if (!blogs.contains(id)){
            blogs.add(id);
View Full Code Here

   
    if (jid != null){
      DataManager dm = DataManagerFactory.getInstance();
      PersistenceManager pm = dm.newPersistenceManager();
     
      User u = dm.getUserFromId(pm,jid);
     
      Key subToRemove = null;
     
      //no number : remove last subscription
      if (number == null) subToRemove = u.getLastSubscriptionKey();
      else {
        int nb = 0;
        try {
          nb = Integer.valueOf(number);
        } catch (Exception ex){
          //bad number
          return;
        }
       
        //find sub
        Query q = pm.newQuery(Subscription.class);
        q.setFilter("userKey == k");
        q.declareParameters("com.google.appengine.api.datastore.Key k");
       
        @SuppressWarnings("unchecked")
        List<Subscription> subs = (List<Subscription>) q.execute(u.getKey());
        int i = 1;
        for(Subscription sub : subs){
          if (nb == i) {
            subToRemove = sub.getKey();
            break;
View Full Code Here

    if (id == null) return;
   
    DataManager dm = DataManagerFactory.getInstance();
    PersistenceManager pm = dm.newPersistenceManager();
   
    User user = null;
   
    //bad action
    if (run == null || time == null) return;
   
    user = dm.getUserFromId(pm, id);
   
    //manage updates
    if (run != null){
      boolean isPaused = run.equals("0");
     
      user.setPaused(isPaused);
     
      String reply = null;
      if (isPaused){
        reply = "updates are paused !";
      } else {
        reply = "welcome back !";
      }
      TalkService.sendMessage(id, reply);
    }
   
    //interval between updates
    if (time != null && unit != null){
      int minutes = Integer.parseInt(time);
     
      if (unit.toLowerCase().startsWith("hour")){
        minutes = minutes * 60;
      }
     
      user.setInterval(minutes);
      TalkService.sendMessage(id, "blog update every " + minutes + " minute(s)");
    }
   
    pm.currentTransaction().begin();
    pm.flush();
View Full Code Here

TOP

Related Classes of talkfeed.data.User

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.