/** * Make a DimensionRow by setting all of the field values to the given value. * * @param value Value for dimension fields * @return a DimensionRow */ private DimensionRow makeDimensionRow(String value) { LinkedHashMap<DimensionField, String> map = new LinkedHashMap<>(); for (DimensionField dimensionField: dimension.getDimensionFields()) { map.put(dimensionField, value); } return new DimensionRow(dimension.getKey(), map); }
@Override public DimensionRow createEmptyDimensionRow(String keyFieldValue) { if (findDimensionRowByKeyValue(keyFieldValue) != null) { String error = String.format( "Dimension row with keyFieldValue '%s' already exists for dimension '%s'", keyFieldValue, this ); throw new IllegalArgumentException(error); } else { Map<DimensionField, String> dimensionFieldValueMap = new HashMap<>(); for (DimensionField dimensionField : getDimensionFields()) { dimensionFieldValueMap.put(dimensionField, ""); } dimensionFieldValueMap.put(getKey(), keyFieldValue); return new DimensionRow(key, dimensionFieldValueMap); } }
@Override public DimensionRow parseDimensionRow(Map<String, String> fieldNameValueMap) { // TODO: This rewrite need to be removed once description is normalized in legacy implementations String desc = fieldNameValueMap.remove("description"); if (desc != null) { fieldNameValueMap.put("desc", desc); } LinkedHashMap<DimensionField, String> dimensionRowFieldValues = new LinkedHashMap<>(fieldNameValueMap.size()); // Load every field we expect and only fields we expect for (DimensionField field : dimensionFields) { String fieldName = field.getName(); String value = fieldNameValueMap.get(fieldName); if (value == null) { // A missing key value is unacceptable if (field == getKey()) { String error = String.format(MISSING_ROW_KEY_FORMAT, fieldNameValueMap.toString(), fieldName); LOG.info(error); throw new IllegalArgumentException(error); } // A missing value for another field is turned into the empty string value = ""; } dimensionRowFieldValues.put(field, value); } return new DimensionRow(getKey(), dimensionRowFieldValues); }
/** * Make test DimensionRow using ID and DESC fields from provided Dimension. * * @param dimension provided dimension * @param values Values for dimension fields * * @return test DimensionRow */ public static DimensionRow makeDimensionRow(Dimension dimension, String...values) { LinkedHashMap<DimensionField, String> map = new LinkedHashMap<>(values.length); Iterator<DimensionField> fields = dimension.getDimensionFields().iterator(); for (String value : values) { DimensionField field = fields.next(); map.put(field, value); } return new DimensionRow(dimension.getKey(), map); } }
/** * Make test DimensionRow using ID and DESC fields from provided Dimension. * * @param dimension provided dimension * @param values Values for dimension fields * * @return test DimensionRow */ public static DimensionRow makeDimensionRow(Dimension dimension, String...values) { LinkedHashMap<DimensionField, String> map = new LinkedHashMap<>(values.length); Iterator<DimensionField> fields = dimension.getDimensionFields().iterator(); for (String value : values) { DimensionField field = fields.next(); map.put(field, value); } return new DimensionRow(dimension.getKey(), map); } }