示例#1
0
 @SuppressWarnings("unchecked")
 private void addSearchResult(IEntity entity, ISearchField projectField) {
   String fieldName = projectField.getFieldName();
   if (isRelationshipField(projectField)) {
     // CMS-3430 : treat a projection of relationship field as
     // project on the reference oid
     List<IEntity> projectFieldValues = (List<IEntity>) entity.getFieldValues(fieldName);
     for (IEntity e : projectFieldValues) {
       rootProjections.add(e.getId());
     }
   } else {
     rootProjections.addAll(projectField.getSearchValue(entity));
   }
 }
示例#2
0
  @Override
  @SuppressWarnings("unchecked")
  public void processReference(IEntity currentEntity, MetaRelationship metaRelationship) {
    ParseQueryNode oldPrevQueryNode = prevQueryNode;
    ParseQueryNode oldCurrQueryNode = currQueryNode;

    String relationName = metaRelationship.getName();
    List<ParseQueryNode> nextNodes = currQueryNode.getNextQueryNode(metaRelationship);

    for (ParseQueryNode nextNode : nextNodes) {
      prevQueryNode = currQueryNode;
      currQueryNode = nextNode;

      List<IEntity> relationEntityList = (List<IEntity>) currentEntity.getFieldValues(relationName);
      for (IEntity entity : relationEntityList) {
        entity.traverse(this);
      }

      prevQueryNode = oldPrevQueryNode;
      currQueryNode = oldCurrQueryNode;
    }
  }