@Override public Object retrieve(String field) { if (field == null) { return null; } else if (field.equals(GROUP)) { return getGroup(); } else if (field.equals(ITEMCOUNT)) { return getItemCount(); } else if (field.equals(ACTIVE)) { return getActive(); } else if (field.equals(DATA)) { return getData(); } else { return super.retrieve(field); } }
protected boolean updateField(Session s, String field, RLong value, boolean isAdmin) { if (value == null) { return false; } long target = value.getValue(); long current = ((Long) s.retrieve(field)).longValue(); long diff = target - current; if (!isAdmin && diff > 0) { throw helper.cancel(new ERR(), null, "non-admin-increase", "field", field, "target", ""+target, "current", ""+current); } else if (!isAdmin && target <= 0) { throw helper.cancel(new ERR(), null, "non-admin-disabling", "field", field, "target", ""+target, "current", ""+current); } helper.info("Modifying %s from %s to %s for %s", field, current, target, session); s.putAt(field, target); return true; } }
@Override public Session executeUpdate(ServiceFactory sf, Session session, String uuid, long userId, Long sudoerId) { Node node = nodeProvider.getManagerByUuid(uuid, sf); if (node == null) { node = new Node(0L, false); // Using default node. } session.setNode(node); session.setOwner(new Experimenter(userId, false)); if (sudoerId == null) { session.setSudoer(null); } else { session.setSudoer(new Experimenter(sudoerId, false)); } Session rv = sf.getUpdateService().saveAndReturnObject(session); rv.putAt("#2733", session.retrieve("#2733")); return rv; }