BArrayIterator(BNewArray value) { this.array = value; this.length = value.size(); }
/** * Deep equality check for an array/tuple. * * @param lhsList The array/tuple on the left hand side * @param rhsList The array/tuple on the right hand side * @param checkedValues Structured value pairs already compared or being compared * @return True if the array/tuple values are equal, else false. */ private static boolean isEqual(BNewArray lhsList, BNewArray rhsList, List<ValuePair> checkedValues) { ValuePair compValuePair = new ValuePair(lhsList, rhsList); if (checkedValues.contains(compValuePair)) { return true; } checkedValues.add(compValuePair); if (lhsList.size() != rhsList.size()) { return false; } for (int i = 0; i < lhsList.size(); i++) { if (!isEqual(lhsList.getBValue(i), rhsList.getBValue(i), checkedValues)) { return false; } } return true; }
/** * Extract function arguments from the values sets. * @param valueSets user provided value sets * @return a list of function arguments */ private List<BValue[]> extractArguments(BValue[] valueSets) { List<BValue[]> argsList = new ArrayList<>(); for (BValue value : valueSets) { if (value instanceof BValueArray) { BValueArray array = (BValueArray) value; for (BIterator it = array.newIterator(); it.hasNext(); ) { BValue vals = it.getNext(); if (vals instanceof BNewArray) { BNewArray bNewArray = (BNewArray) vals; BValue[] args = new BValue[(int) bNewArray.size()]; for (int j = 0; j < bNewArray.size(); j++) { args[j] = bNewArray.getBValue(j); } argsList.add(args); } else { // cannot happen due to validations done at annotation processor } } } else { argsList.add(new BValue[]{value}); } } return argsList; }
return; } else if (entity instanceof BNewArray) { sf.longRegs[j] = ((BNewArray) entity).size(); return;
&& ((BArrayType) value.getType()).getElementType().getTag() != TypeTags.BYTE_TAG) && !Constants.SQLDataTypes.ARRAY.equalsIgnoreCase(sqlType)) { count = (int) ((BNewArray) value).size(); } else { count = 1;
&& ((BArrayType) value.getType()).getElementType().getTag() != TypeTags.BYTE_TAG) && !Constants.SQLDataTypes.ARRAY.equalsIgnoreCase(sqlType)) { int arrayLength = (int) ((BNewArray) value).size(); int typeTagOfArrayElement = ((BArrayType) value.getType()).getElementType().getTag(); for (int i = 0; i < arrayLength; i++) {
private String getStringValue(BValue bValue) { String bValueString; if (bValue == null) { bValueString = null; } else if (bValue instanceof BValueType || bValue instanceof BXML || bValue.getType().getTag() == TypeTags.JSON) { bValueString = bValue.stringValue(); } else if (bValue instanceof BNewArray) { BNewArray bArray = (BNewArray) bValue; bValueString = "Array[" + bArray.size() + "] "; bValueString = bValueString + bArray.stringValue(); } else if (bValue.getType().getTag() == TypeTags.MAP) { BMap bmap = (BMap) bValue; bValueString = "Map[" + bmap.size() + "] "; bValueString = bValueString + bmap.stringValue(); } else if (bValue.getType().getTag() == TypeTags.RECORD) { bValueString = "Record " + bValue.getType().getName() + " "; bValueString = bValueString + bValue.stringValue(); } else if (bValue.getType().getTag() == TypeTags.OBJECT) { bValueString = "Object " + bValue.getType().getName() + " "; bValueString = bValueString + ((BMap) bValue).absoluteStringValue(); } else { bValueString = "<Complex_Value>"; } return bValueString; }