@Override public void processAttribute(IEntity currentEntity, IEntity existingEntity, MetaField metaField) { MetaClass metaClass = currentEntity.getMetaClass(); Collection<MetaField> metaFields = metaClass.getFields(); for (MetaField field : metaFields) { String fieldName = field.getName(); if (CardinalityEnum.Many.equals(field.getCardinality()) && !metaClass.getIndexesOnField(fieldName).isEmpty()) { int indexedArraySize = currentEntity.getFieldValues(fieldName).size(); if (indexedArraySize > maxIndexedArraySize) { String errorMessage = String.format("Exceed max indexed array size on metafield %s of metaclass %s! Max is %d, Actual is %d", fieldName, metaClass.getName(), maxIndexedArraySize, indexedArraySize); throw new CmsDalException(DalErrCodeEnum.EXCEED_MAX_INDEXED_ARRAY_SIZE, errorMessage); } } } }
MetaField field = metaClass.getFieldByName(fieldName); boolean isRelation = DataTypeEnum.RELATIONSHIP.equals(field.getDataType()); boolean array = CardinalityEnum.Many.equals(field.getCardinality()); boolean hasFoundField = foundEntity.hasField(fieldName); List<?> givenValues = givenEntity.getFieldValues(fieldName);
boolean array = CardinalityEnum.Many.equals(field.getCardinality()); boolean isRelation = DataTypeEnum.RELATIONSHIP.equals(field.getDataType()); if (array) {
MetaField metaField = metaClass.getFieldByName(fieldName); if (metaField != null) { if (CardinalityEnum.One.equals(metaField.getCardinality())) {
@Override public void setFieldValues(String fieldName, List<?> value) { MetaField metaField = getMetaClass().getFieldByName(fieldName); CheckConditions.checkNotNull(metaField, "MetaClass %s does not have MetaField %s", getMetaClass().getName(),fieldName); DataTypeEnum dataType = metaField.getDataType(); CardinalityEnum cardinality = metaField.getCardinality(); IDataTypeHandler handler = JsonDataTypeHandlerFactory.getHandler(dataType); if (cardinality.equals(CardinalityEnum.One)) { Object obj = (value == null || value.isEmpty()) ? null : value.get(0); if (obj != null) { JsonNode node = (JsonNode) handler.write(this, obj, metaField); getNode().put(fieldName, node); } } else { ArrayNode arrayNode = JsonNodeFactory.instance.arrayNode(); if (value != null) { for (Object obj : value) { JsonNode node = (JsonNode) handler.write(this, obj, metaField); arrayNode.add(node); } } getNode().put(fieldName, arrayNode); } }
public final List<DBObject> buildUnwindQuery() { List<DBObject> results = null; for (GroupField groupField : grpFields.values()) { if (CardinalityEnum.Many.equals(groupField.getSearchFiled().getRootField().getCardinality())) { // build unwind object if find any group field cardinality=many if (results == null) { results = new ArrayList<DBObject>(); } DBObject unwind = new BasicDBObject(); unwind.put("$unwind", '$' + groupField.getSearchFiled().getFullDbName()); results.add(unwind); } } return results; }