Example #1
0
  public static void putDisplayName(String displayName) throws JEDuplicateException {
    final String UNIQUE_KEY_DISPLAY_NAME = "UniqueKeyDisplayName";
    final User user = getUser();
    final Key key = Datastore.createKey(JEUser.class, user.getEmail());
    if (Datastore.putUniqueValue(UNIQUE_KEY_DISPLAY_NAME, displayName) == false) {
      throw new JEDuplicateException("the display name is already used");
    }
    Transaction tx = Datastore.beginTransaction();
    try {
      JEUser jeUser = Datastore.getOrNull(tx, JEUser.class, key);
      final long now = new Date().getTime();
      if (jeUser == null) {
        jeUser = new JEUser();
        jeUser.setKey(key);
        jeUser.setCreatedAt(now);
      }
      jeUser.setDisplayName(displayName);
      jeUser.setUpdatedAt(now);
      Datastore.put(tx, jeUser);

      // TODO: Run TQ to update past's memos.

      Datastore.commit(tx);

    } catch (Exception e) {
      Datastore.rollback(tx);
      Datastore.deleteUniqueValue(UNIQUE_KEY_DISPLAY_NAME, displayName);
    }
  }