Ejemplo n.º 1
0
    @Nonnull
    @Override
    public OptionalTsData build() {
      if (dc.getCount() == 0) {
        return onFailure("No data available");
      }
      if (freq == TsFrequency.Undefined && aggregation != TsAggregationType.None) {
        return onFailure("Invalid aggregation mode");
      }
      TsData result;
      if (aggregation == TsAggregationType.None) {
        result = dc.make(freq, aggregation);
      } else {
        result = dc.make(TsFrequency.Undefined, TsAggregationType.None);
        if (result != null && (result.getFrequency().intValue() % freq.intValue() == 0)) {
          // should succeed
          result = result.changeFrequency(freq, aggregation, true);
        } else {
          result = dc.make(freq, aggregation);
        }
      }

      if (result == null) {
        switch (freq) {
          case Undefined:
            return dc.getCount() == 1
                ? onFailure("Cannot guess frequency with a single observation")
                : onFailure("Cannot guess frequency with duplicated periods");
          default:
            // TODO: if TsAggregationType.None
        }
        return onFailure("Unexpected error");
      }
      return onSuccess(result);
    }