Exemple #1
0
  public void update(EntityConfig config, Object entity) throws HiveLockableException {
    Map<String, Collection<Object>> secondaryIndexValues =
        getAllSecondaryIndexValues(config, entity);
    Map<String, Object> partitionIndexValues = getAllPartitionIndexValues(config, entity);
    Map<String, Collection<Object>> toDelete = Maps.newHashMap();
    Map<String, Collection<Object>> toInsert = Maps.newHashMap();

    conditionallyInsertDelegatedResourceIndexes(config, entity);

    for (EntityIndexConfig indexConfig : getPartitionIndexConfigs(config)) {
      if (!partitionIndexValues
          .get(indexConfig.getIndexName())
          .equals(indexConfig.getIndexValues(entity).iterator().next())) {
        if (!hive.directory()
            .doesPrimaryIndexKeyExist(indexConfig.getIndexValues(entity).iterator().next())) {
          hive.directory()
              .insertPrimaryIndexKey(indexConfig.getIndexValues(entity).iterator().next());
        }
        hive.directory()
            .updatePrimaryIndexKeyOfResourceId(
                config.getResourceName(),
                config.getId(entity),
                indexConfig.getIndexValues(entity).iterator().next());
      }
    }

    // Delete and insert secondary index values that have changed
    for (EntityIndexConfig indexConfig : getSecondaryIndexConfigs(config)) {
      Pair<Collection<Object>, Collection<Object>> diff =
          Collect.diff(
              secondaryIndexValues.get(indexConfig.getIndexName()),
              indexConfig.getIndexValues(entity));
      toDelete.put(indexConfig.getIndexName(), diff.getKey());
      toInsert.put(indexConfig.getIndexName(), diff.getValue());
    }

    hive.directory()
        .insertSecondaryIndexKeys(config.getResourceName(), toInsert, config.getId(entity));
    hive.directory()
        .deleteSecondaryIndexKeys(config.getResourceName(), toDelete, config.getId(entity));
  }
Exemple #2
0
 private void collect(final Object message) {
   final ActorRef self = self();
   final Collect request = (Collect) message;
   final PlayCollect.Builder builder = PlayCollect.builder();
   for (final URI prompt : request.prompts()) {
     builder.addPrompt(prompt);
   }
   builder.setClearDigitBuffer(true);
   builder.setDigitPattern(request.pattern());
   builder.setFirstDigitTimer(request.timeout());
   builder.setInterDigitTimer(request.timeout());
   builder.setEndInputKey(request.endInputKey());
   builder.setMaxNumberOfDigits(request.numberOfDigits());
   stop();
   ivr.tell(builder.build(), self);
   ivrInUse = true;
 }