@Override public Object getListElement(Object data, int index) { if (data == null) { return null; } PhoenixArray array = (PhoenixArray) data; return array.getElement(index); }
@Override public List<?> getList(Object data) { if (data == null) { return null; } PhoenixArray array = (PhoenixArray) data; int valueLength = array.getDimensions(); List<Object> valueList = Lists.newArrayListWithExpectedSize(valueLength); for (int i = 0; i < valueLength; i++) { valueList.add(array.getElement(i)); } return valueList; }
@Override public String toString() { StringBuilder sb = new StringBuilder(TO_STRING_BEGIN); boolean isFirst = true; for (int i = 0; i < getDimensions(); i++) { Object o = getElement(i); if (isFirst) { isFirst = false; } else { sb.append(TO_STRING_SEPARATOR); } sb.append(this.baseType.toStringLiteral(o)); } sb.append(TO_STRING_END); return sb.toString(); }
@Override public String toStringLiteral(Object o, Format formatter) { StringBuilder buf = new StringBuilder(PArrayDataType.ARRAY_TYPE_SUFFIX + "["); PhoenixArray array = (PhoenixArray)o; PDataType baseType = PDataType.arrayBaseType(this); int len = array.getDimensions(); if (len != 0) { for (int i = 0; i < len; i++) { buf.append(baseType.toStringLiteral(array.getElement(i), null)); buf.append(','); } buf.setLength(buf.length() - 1); } buf.append(']'); return buf.toString(); } }
public static boolean arrayToString(ImmutableBytesWritable ptr, PhoenixArray array, String delimiter, String nullString, SortOrder sortOrder) { StringBuilder result = new StringBuilder(); boolean delimiterPending = false; for (int i = 0; i < array.getDimensions() - 1; i++) { Object element = array.getElement(i); if (element == null) { if (nullString != null) { result.append(nullString); } } else { result.append(element.toString()); delimiterPending = true; } if (nullString != null || (array.getElement(i + 1) != null && delimiterPending)) { result.append(delimiter); delimiterPending = false; } } Object element = array.getElement(array.getDimensions() - 1); if (element == null) { if (nullString != null) { result.append(nullString); } } else { result.append(element.toString()); } ptr.set(PVarchar.INSTANCE.toBytes(result.toString(), sortOrder)); return true; }
@Override public boolean isSizeCompatible(ImmutableBytesWritable ptr, Object value, PDataType srcType, SortOrder sortOrder, Integer maxLength, Integer scale, Integer desiredMaxLength, Integer desiredScale) { if (value == null) return true; PhoenixArray pArr = (PhoenixArray)value; PDataType baseType = PDataType.fromTypeId(srcType.getSqlType() - PDataType.ARRAY_TYPE_BASE); // Since we only have a value and no byte[], use an empty length byte[] as otherwise // isSizeCompatible will attempt to interpret the array ptr as a ptr to an element. ImmutableBytesWritable elementPtr = new ImmutableBytesWritable(ByteUtil.EMPTY_BYTE_ARRAY); for (int i = 0; i < pArr.numElements; i++) { Object val = pArr.getElement(i); if (!baseType.isSizeCompatible(elementPtr, val, baseType, sortOrder, srcType.getMaxLength(val), scale, desiredMaxLength, desiredScale)) { return false; } } return true; }
Tuple t = TUPLE_FACTORY.newTuple(array.getDimensions());; for(int j = 0 ; j < array.getDimensions() ; j++) { t.set(j,array.getElement(j));
@SuppressWarnings("unchecked") public static <T> List<T> toModifiableList(Array value, int from, int to) { PhoenixArray phoenixArray = (PhoenixArray) value; to = to > 0 ? to : phoenixArray.getDimensions(); ArrayList<T> list = new ArrayList<>(to - from); for (int i = from; i < to; i++) { T t = (T) phoenixArray.getElement(i); list.add(t); } return list; }
@Override public String toStringLiteral(Object o, Format formatter) { StringBuilder buf = new StringBuilder(PArrayDataType.ARRAY_TYPE_SUFFIX + "["); PhoenixArray array = (PhoenixArray)o; PDataType baseType = PDataType.arrayBaseType(this); int len = array.getDimensions(); if (len != 0) { for (int i = 0; i < len; i++) { buf.append(baseType.toStringLiteral(array.getElement(i), null)); buf.append(','); } buf.setLength(buf.length() - 1); } buf.append(']'); return buf.toString(); } }
@Override public String toString() { StringBuilder sb = new StringBuilder(TO_STRING_BEGIN); boolean isFirst = true; for (int i = 0; i < getDimensions(); i++) { Object o = getElement(i); if (isFirst) { isFirst = false; } else { sb.append(TO_STRING_SEPARATOR); } sb.append(this.baseType.toStringLiteral(o)); } sb.append(TO_STRING_END); return sb.toString(); }
@Override public String toString() { StringBuilder sb = new StringBuilder(TO_STRING_BEGIN); boolean isFirst = true; for (int i = 0; i < getDimensions(); i++) { Object o = getElement(i); if (isFirst) { isFirst = false; } else { sb.append(TO_STRING_SEPARATOR); } sb.append(this.baseType.toStringLiteral(o)); } sb.append(TO_STRING_END); return sb.toString(); }
@Override public String toStringLiteral(Object o, Format formatter) { StringBuilder buf = new StringBuilder(PArrayDataType.ARRAY_TYPE_SUFFIX + "["); PhoenixArray array = (PhoenixArray)o; PDataType baseType = PDataType.arrayBaseType(this); int len = array.getDimensions(); if (len != 0) { for (int i = 0; i < len; i++) { buf.append(baseType.toStringLiteral(array.getElement(i), null)); buf.append(','); } buf.setLength(buf.length() - 1); } buf.append(']'); return buf.toString(); } }
public static boolean arrayToString(ImmutableBytesWritable ptr, PhoenixArray array, String delimiter, String nullString, SortOrder sortOrder) { StringBuilder result = new StringBuilder(); boolean delimiterPending = false; for (int i = 0; i < array.getDimensions() - 1; i++) { Object element = array.getElement(i); if (element == null) { if (nullString != null) { result.append(nullString); } } else { result.append(element.toString()); delimiterPending = true; } if (nullString != null || (array.getElement(i + 1) != null && delimiterPending)) { result.append(delimiter); delimiterPending = false; } } Object element = array.getElement(array.getDimensions() - 1); if (element == null) { if (nullString != null) { result.append(nullString); } } else { result.append(element.toString()); } ptr.set(PVarchar.INSTANCE.toBytes(result.toString(), sortOrder)); return true; }
public static boolean arrayToString(ImmutableBytesWritable ptr, PhoenixArray array, String delimiter, String nullString, SortOrder sortOrder) { StringBuilder result = new StringBuilder(); boolean delimiterPending = false; for (int i = 0; i < array.getDimensions() - 1; i++) { Object element = array.getElement(i); if (element == null) { if (nullString != null) { result.append(nullString); } } else { result.append(element.toString()); delimiterPending = true; } if (nullString != null || (array.getElement(i + 1) != null && delimiterPending)) { result.append(delimiter); delimiterPending = false; } } Object element = array.getElement(array.getDimensions() - 1); if (element == null) { if (nullString != null) { result.append(nullString); } } else { result.append(element.toString()); } ptr.set(PVarchar.INSTANCE.toBytes(result.toString(), sortOrder)); return true; }
private void addFileEntry(StudyConfiguration studyConfiguration, Variant variant, StudyEntry studyEntry, String fileIdStr, PhoenixArray fileColumn, Map<String, List<String>> alternateFileMap) { int fileId = Integer.parseInt(fileIdStr); String alternate = normalizeNonRefAlternateCoordinate(variant, (String) (fileColumn.getElement(FILE_SEC_ALTS_IDX))); String fileName = studyConfiguration.getFileIds().inverse().get(fileId); String call = (String) (fileColumn.getElement(FILE_CALL_IDX)); if (!selectVariantElements.getFiles().get(studyConfiguration.getStudyId()).contains(fileId)) { String qual = (String) (fileColumn.getElement(FILE_QUAL_IDX)); if (qual != null) { attributes.put(StudyEntry.QUAL, qual); String filter = (String) (fileColumn.getElement(FILE_FILTER_IDX)); if (filter != null) { attributes.put(StudyEntry.FILTER, filter); break; String value = (String) (fileColumn.getElement(i)); if (value != null) { attributes.put(attribute, value);
@Override public boolean isSizeCompatible(ImmutableBytesWritable ptr, Object value, PDataType srcType, SortOrder sortOrder, Integer maxLength, Integer scale, Integer desiredMaxLength, Integer desiredScale) { if (value == null) return true; PhoenixArray pArr = (PhoenixArray)value; PDataType baseType = PDataType.fromTypeId(srcType.getSqlType() - PDataType.ARRAY_TYPE_BASE); // Since we only have a value and no byte[], use an empty length byte[] as otherwise // isSizeCompatible will attempt to interpret the array ptr as a ptr to an element. ImmutableBytesWritable elementPtr = new ImmutableBytesWritable(ByteUtil.EMPTY_BYTE_ARRAY); for (int i = 0; i < pArr.numElements; i++) { Object val = pArr.getElement(i); if (!baseType.isSizeCompatible(elementPtr, val, baseType, sortOrder, srcType.getMaxLength(val), scale, desiredMaxLength, desiredScale)) { return false; } } return true; }
@Override public boolean isSizeCompatible(ImmutableBytesWritable ptr, Object value, PDataType srcType, SortOrder sortOrder, Integer maxLength, Integer scale, Integer desiredMaxLength, Integer desiredScale) { if (value == null) return true; PhoenixArray pArr = (PhoenixArray)value; PDataType baseType = PDataType.fromTypeId(srcType.getSqlType() - PDataType.ARRAY_TYPE_BASE); // Since we only have a value and no byte[], use an empty length byte[] as otherwise // isSizeCompatible will attempt to interpret the array ptr as a ptr to an element. ImmutableBytesWritable elementPtr = new ImmutableBytesWritable(ByteUtil.EMPTY_BYTE_ARRAY); for (int i = 0; i < pArr.numElements; i++) { Object val = pArr.getElement(i); if (!baseType.isSizeCompatible(elementPtr, val, baseType, sortOrder, srcType.getMaxLength(val), scale, desiredMaxLength, desiredScale)) { return false; } } return true; }
Tuple t = TUPLE_FACTORY.newTuple(array.getDimensions());; for(int j = 0 ; j < array.getDimensions() ; j++) { t.set(j,array.getElement(j));