blob: 25862688d091eac9fde2249c1d6cbbc7658d6737 [file] [log] [blame]
/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.apache.griffin.measure.configuration.enums
/**
* the strategy to flatten metric
* <li>{@link #DefaultFlattenType} - default flatten strategy
* metrics contains 1 row -> flatten metric json map
* metrics contains n > 1 rows -> flatten metric json array
* n = 0: { }
* n = 1: { "col1": "value1", "col2": "value2", ... }
* n > 1: { "arr-name": [ { "col1": "value1", "col2": "value2", ... }, ... ] }
* all rows
* </li>
* <li>{@link #EntriesFlattenType} - metrics contains n rows -> flatten metric json map
* n = 0: { }
* n >= 1: { "col1": "value1", "col2": "value2", ... }
* the first row only
* </li>
* <li>{@link #ArrayFlattenType} - metrics contains n rows -> flatten metric json array
* n = 0: { "arr-name": [ ] }
* n >= 1: { "arr-name": [ { "col1": "value1", "col2": "value2", ... }, ... ] }
* all rows
* </li>
* <li>{@link #MapFlattenType} - metrics contains n rows -> flatten metric json wrapped map
* n = 0: { "map-name": { } }
* n >= 1: { "map-name": { "col1": "value1", "col2": "value2", ... } }
* the first row only
* </li>
*/
object FlattenType extends GriffinEnum {
type FlattenType = Value
val DefaultFlattenType, EntriesFlattenType, ArrayFlattenType, MapFlattenType =
Value
val List, Array, Entries, Map, Default = Value
override def withNameWithDefault(name: String): Value = {
val flattenType = super.withNameWithDefault(name)
flattenType match {
case Array | List => ArrayFlattenType
case Map => MapFlattenType
case Entries => EntriesFlattenType
case _ => DefaultFlattenType
}
}
}