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); } }
public static String getDisplayName() { final User user = getUser(); if (user == null) { return null; } Key key = Datastore.createKey(JEUser.class, user.getEmail()); JEUser jeUser = Datastore.getOrNull(JEUser.class, key); return (jeUser == null) ? null : jeUser.getDisplayName(); }