Package com.cognifide.sling.query.selector

Source Code of com.cognifide.sling.query.selector.Selector

package com.cognifide.sling.query.selector;

import java.util.Collections;
import java.util.Iterator;
import java.util.List;

import org.apache.commons.lang.StringUtils;
import org.apache.sling.api.resource.Resource;

import com.cognifide.sling.query.api.ResourcePredicate;
import com.cognifide.sling.query.api.SearchStrategy;
import com.cognifide.sling.query.api.function.IteratorToIteratorFunction;
import com.cognifide.sling.query.predicate.FunctionPredicate;
import com.cognifide.sling.query.selector.parser.SelectorParser;
import com.cognifide.sling.query.selector.parser.SelectorSegment;

public class Selector implements IteratorToIteratorFunction {

  private final List<SelectorSegment> segments;

  public Selector(String selectorString, SearchStrategy strategy) {
    if (StringUtils.isBlank(selectorString)) {
      segments = Collections.emptyList();
    } else {
      segments = SelectorParser.parse(selectorString, strategy).getSegments();
    }
  }

  @Override
  public Iterator<Resource> apply(Iterator<Resource> input) {
    Iterator<Resource> iterator = input;
    for (SelectorSegment segment : segments) {
      iterator = segment.apply(iterator);
    }
    return iterator;
  }

  public ResourcePredicate asPredicate() {
    return new FunctionPredicate(this);
  }
}
TOP

Related Classes of com.cognifide.sling.query.selector.Selector

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.