/** * This is used only for serializing * * @param name attribute name * @param props Properties */ public ReferencedDimAttribute(String name, Map<String, String> props) throws LensException { super(name, props); String chNamesStr = props.get(MetastoreUtil.getDimRefChainNameKey(getName())); if (!StringUtils.isBlank(chNamesStr)) { String refColsStr = props.get(MetastoreUtil.getDimRefChainColumnKey(getName())); String[] chainNames = StringUtils.split(chNamesStr, ","); String[] refCols = StringUtils.split(refColsStr, ","); for (int i = 0; i < chainNames.length; i++) { chainRefColumns.add(new ChainRefCol(chainNames[i], refCols[i])); } } else { throw new LensException( LensCubeErrorCode.ERROR_IN_ENTITY_DEFINITION.getLensErrorInfo(), " Ref column: " + getName() + " does not have any chain_ref_column defined"); } }
@Override public void addProperties(Map<String, String> props) { super.addProperties(props); StringBuilder chainNamesValue = new StringBuilder(); StringBuilder refColsValue = new StringBuilder(); Iterator<ChainRefCol> iterator = chainRefColumns.iterator(); // Add the first without appending separator ChainRefCol chainRefCol = iterator.next(); chainNamesValue.append(chainRefCol.getChainName()); refColsValue.append(chainRefCol.getRefColumn()); while (iterator.hasNext()) { chainRefCol = iterator.next(); chainNamesValue.append(CHAIN_REF_COL_SEPARATOR).append(chainRefCol.getChainName()); refColsValue.append(CHAIN_REF_COL_SEPARATOR).append(chainRefCol.getRefColumn()); } props.put(MetastoreUtil.getDimRefChainNameKey(getName()), chainNamesValue.toString()); props.put(MetastoreUtil.getDimRefChainColumnKey(getName()), refColsValue.toString()); }