当前位置: 首页>>代码示例>>Java>>正文


Java CompositeType.getTotalFields方法代码示例

本文整理汇总了Java中org.apache.flink.api.common.typeutils.CompositeType.getTotalFields方法的典型用法代码示例。如果您正苦于以下问题:Java CompositeType.getTotalFields方法的具体用法?Java CompositeType.getTotalFields怎么用?Java CompositeType.getTotalFields使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在org.apache.flink.api.common.typeutils.CompositeType的用法示例。


在下文中一共展示了CompositeType.getTotalFields方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Java代码示例。

示例1: getFlatFields

import org.apache.flink.api.common.typeutils.CompositeType; //导入方法依赖的package包/类
@Override
@PublicEvolving
public void getFlatFields(String fieldExpression, int offset, List<FlatFieldDescriptor> result) {

	Matcher matcher = PATTERN_NESTED_FIELDS_WILDCARD.matcher(fieldExpression);
	if(!matcher.matches()) {
		throw new InvalidFieldReferenceException("Invalid POJO field reference \""+fieldExpression+"\".");
	}

	String field = matcher.group(0);
	if(field.equals(ExpressionKeys.SELECT_ALL_CHAR) || field.equals(ExpressionKeys.SELECT_ALL_CHAR_SCALA)) {
		// handle select all
		int keyPosition = 0;
		for(PojoField pField : fields) {
			if(pField.getTypeInformation() instanceof CompositeType) {
				CompositeType<?> cType = (CompositeType<?>)pField.getTypeInformation();
				cType.getFlatFields(String.valueOf(ExpressionKeys.SELECT_ALL_CHAR), offset + keyPosition, result);
				keyPosition += cType.getTotalFields()-1;
			} else {
				result.add(
					new NamedFlatFieldDescriptor(
						pField.getField().getName(),
						offset + keyPosition,
						pField.getTypeInformation()));
			}
			keyPosition++;
		}
		return;
	} else {
		field = matcher.group(1);
	}

	// get field
	int fieldPos = -1;
	TypeInformation<?> fieldType = null;
	for (int i = 0; i < fields.length; i++) {
		if (fields[i].getField().getName().equals(field)) {
			fieldPos = i;
			fieldType = fields[i].getTypeInformation();
			break;
		}
	}
	if (fieldPos == -1) {
		throw new InvalidFieldReferenceException("Unable to find field \""+field+"\" in type "+this+".");
	}
	String tail = matcher.group(3);
	if(tail == null) {
		if(fieldType instanceof CompositeType) {
			// forward offset
			for(int i=0; i<fieldPos; i++) {
				offset += this.getTypeAt(i).getTotalFields();
			}
			// add all fields of composite type
			((CompositeType<?>) fieldType).getFlatFields("*", offset, result);
		} else {
			// we found the field to add
			// compute flat field position by adding skipped fields
			int flatFieldPos = offset;
			for(int i=0; i<fieldPos; i++) {
				flatFieldPos += this.getTypeAt(i).getTotalFields();
			}
			result.add(new FlatFieldDescriptor(flatFieldPos, fieldType));
		}
	} else {
		if(fieldType instanceof CompositeType<?>) {
			// forward offset
			for(int i=0; i<fieldPos; i++) {
				offset += this.getTypeAt(i).getTotalFields();
			}
			((CompositeType<?>) fieldType).getFlatFields(tail, offset, result);
		} else {
			throw new InvalidFieldReferenceException("Nested field expression \""+tail+"\" not possible on atomic type "+fieldType+".");
		}
	}
}
 
开发者ID:axbaretto,项目名称:flink,代码行数:76,代码来源:PojoTypeInfo.java

示例2: getFlatFields

import org.apache.flink.api.common.typeutils.CompositeType; //导入方法依赖的package包/类
@Override
public void getFlatFields(String fieldExpression, int offset, List<FlatFieldDescriptor> result) {
	Matcher matcher = PATTERN_NESTED_FIELDS_WILDCARD.matcher(fieldExpression);

	if (!matcher.matches()) {
		throw new InvalidFieldReferenceException(
			"Invalid tuple field reference \"" + fieldExpression + "\".");
	}

	String field = matcher.group(0);

	if ((field.equals(ExpressionKeys.SELECT_ALL_CHAR)) ||
		(field.equals(ExpressionKeys.SELECT_ALL_CHAR_SCALA))) {
		// handle select all
		int keyPosition = 0;
		for (TypeInformation<?> fType : types) {
			if (fType instanceof CompositeType) {
				CompositeType<?> cType = (CompositeType<?>) fType;
				cType.getFlatFields(ExpressionKeys.SELECT_ALL_CHAR, offset + keyPosition, result);
				keyPosition += cType.getTotalFields() - 1;
			} else {
				result.add(new FlatFieldDescriptor(offset + keyPosition, fType));
			}
			keyPosition++;
		}
	} else {
		field = matcher.group(1);

		Matcher intFieldMatcher = PATTERN_INT_FIELD.matcher(field);
		int fieldIndex;
		if (intFieldMatcher.matches()) {
			// field expression is an integer
			fieldIndex = Integer.valueOf(field);
		} else {
			fieldIndex = this.getFieldIndex(field);
		}
		// fetch the field type will throw exception if the index is illegal
		TypeInformation<?> fieldType = this.getTypeAt(fieldIndex);
		// compute the offset,
		for (int i = 0; i < fieldIndex; i++) {
			offset += this.getTypeAt(i).getTotalFields();
		}

		String tail = matcher.group(3);

		if (tail == null) {
			// expression hasn't nested field
			if (fieldType instanceof CompositeType) {
				((CompositeType) fieldType).getFlatFields("*", offset, result);
			} else {
				result.add(new FlatFieldDescriptor(offset, fieldType));
			}
		} else {
			// expression has nested field
			if (fieldType instanceof CompositeType) {
				((CompositeType) fieldType).getFlatFields(tail, offset, result);
			} else {
				throw new InvalidFieldReferenceException(
					"Nested field expression \"" + tail + "\" not possible on atomic type " + fieldType + ".");
			}
		}
	}
}
 
开发者ID:axbaretto,项目名称:flink,代码行数:64,代码来源:RowTypeInfo.java

示例3: getFlatFields

import org.apache.flink.api.common.typeutils.CompositeType; //导入方法依赖的package包/类
@Override
public void getFlatFields(String fieldExpression, int offset, List<FlatFieldDescriptor> result) {

	Matcher matcher = PATTERN_NESTED_FIELDS_WILDCARD.matcher(fieldExpression);
	if (!matcher.matches()) {
		throw new InvalidFieldReferenceException("Invalid tuple field reference \""+fieldExpression+"\".");
	}

	String field = matcher.group(0);
	if (field.equals(ExpressionKeys.SELECT_ALL_CHAR) || field.equals(ExpressionKeys.SELECT_ALL_CHAR_SCALA)) {
		// handle select all
		int keyPosition = 0;
		for (TypeInformation<?> type : types) {
			if (type instanceof CompositeType) {
				CompositeType<?> cType = (CompositeType<?>) type;
				cType.getFlatFields(String.valueOf(ExpressionKeys.SELECT_ALL_CHAR), offset + keyPosition, result);
				keyPosition += cType.getTotalFields() - 1;
			} else {
				result.add(new FlatFieldDescriptor(offset + keyPosition, type));
			}
			keyPosition++;
		}
	} else {
		String fieldStr = matcher.group(1);
		Matcher fieldMatcher = PATTERN_FIELD.matcher(fieldStr);

		if (!fieldMatcher.matches()) {
			throw new RuntimeException("Invalid matcher pattern");
		}

		field = fieldMatcher.group(2);
		int fieldPos = Integer.valueOf(field);

		if (fieldPos >= this.getArity()) {
			throw new InvalidFieldReferenceException("Tuple field expression \"" + fieldStr + "\" out of bounds of " + this.toString() + ".");
		}
		TypeInformation<?> fieldType = this.getTypeAt(fieldPos);
		String tail = matcher.group(5);
		if (tail == null) {
			if (fieldType instanceof CompositeType) {
				// forward offsets
				for (int i = 0; i < fieldPos; i++) {
					offset += this.getTypeAt(i).getTotalFields();
				}
				// add all fields of composite type
				((CompositeType<?>) fieldType).getFlatFields("*", offset, result);
			} else {
				// we found the field to add
				// compute flat field position by adding skipped fields
				int flatFieldPos = offset;
				for (int i = 0; i < fieldPos; i++) {
					flatFieldPos += this.getTypeAt(i).getTotalFields();
				}
				result.add(new FlatFieldDescriptor(flatFieldPos, fieldType));
			}
		} else {
			if (fieldType instanceof CompositeType<?>) {
				// forward offset
				for (int i = 0; i < fieldPos; i++) {
					offset += this.getTypeAt(i).getTotalFields();
				}
				((CompositeType<?>) fieldType).getFlatFields(tail, offset, result);
			} else {
				throw new InvalidFieldReferenceException("Nested field expression \"" + tail + "\" not possible on atomic type " + fieldType + ".");
			}
		}
	}
}
 
开发者ID:axbaretto,项目名称:flink,代码行数:69,代码来源:TupleTypeInfoBase.java


注:本文中的org.apache.flink.api.common.typeutils.CompositeType.getTotalFields方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。