示例#1
0
  public static PracticeProp create(String client, String displayName, String login) {

    Client.ensureValid(client);
    User.ensureClientLevelPrivilege(client, login, ClientLevelPrivilege.UPDATE_PRACTICE);

    ensureNotNullNotEmpty(displayName, "displayName is null or empty");
    String name = Utils.removeSpaceUnderscoreBracketAndHyphen(displayName.toLowerCase());

    List<Key<PracticeEntity>> keys =
        ofy(client).load().type(PracticeEntity.class).filter("name", name).keys().list();

    if (keys.size() != 0)
      throw new APIException()
          .status(Status.ERROR_RESOURCE_ALREADY_EXISTS)
          .message("There is already a practice with name [" + displayName + "]");

    String key = getUniqueKey(client, name);
    long val = MemcacheServiceFactory.getMemcacheService().increment(key, 1, (long) 0);

    if (val != 1)
      throw new APIException()
          .status(Status.ERROR_RESOURCE_ALREADY_EXISTS)
          .message("There is already a group with name [" + displayName + "]");

    PracticeEntity entity = new PracticeEntity();
    entity.practiceId = Sequence.getNext(client, SequenceType.PRACTICE);
    entity.name = name;
    entity.displayName = displayName;
    ofy(client).save().entity(entity).now();

    return entity.toProp();
  }
示例#2
0
  public static PracticeEntity safeGetByIdOrName(String client, String idOrName) {

    Client.ensureValid(client);
    ensureNotNull(idOrName);

    if (Utils.canParseAsLong(idOrName)) {
      long practiceId = Utils.safeParseAsLong(idOrName);
      return safeGet(client, practiceId);
    }

    idOrName = Utils.removeSpaceUnderscoreBracketAndHyphen(idOrName.toLowerCase());
    List<PracticeEntity> entities =
        ofy(client).load().type(PracticeEntity.class).filter("name", idOrName).list();

    if (entities.size() == 0)
      throw new APIException()
          .status(Status.ERROR_RESOURCE_NOT_FOUND)
          .message("Practice [" + idOrName + "] does not exist");

    if (entities.size() > 1)
      // should never come here
      throw new APIException()
          .status(Status.ERROR_RESOURCE_INCORRECT)
          .message(
              "Found ["
                  + entities.size()
                  + "] matches for practice ["
                  + idOrName
                  + "]. Please specify Id. ");
    return entities.get(0);
  }
示例#3
0
  public static Map<Long, PracticeEntity> getEntities(String client, Set<Long> practiceIds) {

    Client.ensureValid(client);

    Map<Long, PracticeEntity> map = ofy(client).load().type(PracticeEntity.class).ids(practiceIds);

    return map;
  }
示例#4
0
  public static void delete(String client, long practiceId, String login) {

    Client.ensureValid(client);
    User.ensureClientLevelPrivilege(client, login, ClientLevelPrivilege.UPDATE_PRACTICE);

    // there should not be any program type referencing this
    throw new APIException()
        .status(Status.ERROR_NOT_IMPLEMENTED)
        .message("This functionality is not implemented yet");
  }
示例#5
0
  public static List<PracticeProp> getAll(String client) {
    Client.ensureValid(client);

    List<PracticeEntity> entities =
        ofy(client).load().type(PracticeEntity.class).order("name").list();

    List<PracticeProp> props = new ArrayList<>();
    for (PracticeEntity entity : entities) props.add(entity.toProp());

    return props;
  }
示例#6
0
  public static PracticeEntity safeGet(String client, long practiceId) {

    Client.ensureValid(client);

    PracticeEntity entity = ofy(client).load().type(PracticeEntity.class).id(practiceId).now();
    if (null == entity)
      throw new APIException()
          .status(Status.ERROR_RESOURCE_NOT_FOUND)
          .message("Practice [" + practiceId + "] does not exist");

    return entity;
  }
示例#7
0
  public static Map<Long, PracticeProp> get(String client, Set<Long> practiceIds) {

    Client.ensureValid(client);

    Map<Long, PracticeEntity> map = ofy(client).load().type(PracticeEntity.class).ids(practiceIds);

    Map<Long, PracticeProp> props = new HashMap<>();

    for (Long practiceId : map.keySet()) {
      props.put(practiceId, map.get(practiceId).toProp());
    }

    return props;
  }
示例#8
0
  public static PracticeProp rename(
      String client, long practiceId, String newDisplayName, String login) {
    Client.ensureValid(client);
    User.ensureClientLevelPrivilege(client, login, ClientLevelPrivilege.UPDATE_PRACTICE);

    PracticeEntity entity = safeGet(client, practiceId);

    ensureNotNullNotEmpty(newDisplayName, "newDisplayName is null or empty");
    String newName = Utils.removeSpaceUnderscoreBracketAndHyphen(newDisplayName.toLowerCase());

    if (entity.name.equals(newName)) {
      // ideally should be inside a transaction
      entity.displayName = newDisplayName;
      ofy(client).save().entity(entity).now();
      return entity.toProp();
    }

    List<Key<PracticeEntity>> keys =
        ofy(client).load().type(PracticeEntity.class).filter("name", newName).keys().list();
    if (keys.size() != 0)
      throw new APIException()
          .status(Status.ERROR_RESOURCE_ALREADY_EXISTS)
          .message("There is already a practice with name [" + newDisplayName + "]");

    String key = getUniqueKey(client, newName);
    long val = MemcacheServiceFactory.getMemcacheService().increment(key, 1, (long) 0);

    if (val != 1)
      throw new APIException()
          .status(Status.ERROR_RESOURCE_ALREADY_EXISTS)
          .message("There is already a practice with name [" + newDisplayName + "]");

    // ideally should be inside a transaction
    entity.name = newName;
    entity.displayName = newDisplayName;
    ofy(client).save().entity(entity).now();

    return entity.toProp();
  }