001package com.hammurapi.extract;
002
003import java.util.Collections;
004import java.util.Set;
005import java.util.TreeSet;
006import java.util.concurrent.TimeUnit;
007
008/**
009 * Base class for extractors.
010 * @author Pavel Vlasov
011 *
012 * @param <T>
013 * @param <V>
014 * @param <C>
015 */
016public abstract class AbstractExtractor<T, V, C> extends ExtractorBase<T, V, C> {           
017
018        private Set<Integer> parameterIndices;
019        private boolean contextDependent;
020        
021        public AbstractExtractor(double initialCost, TimeUnit costUnit, boolean contextDependent, int... parameterIndices) {
022                super(initialCost, costUnit);
023                Set<Integer> pi = new TreeSet<Integer>();
024                for (int idx:parameterIndices) {
025                        pi.add(idx);
026                }
027                this.parameterIndices=Collections.unmodifiableSet(pi);
028                this.contextDependent=contextDependent;
029        }
030
031        @Override
032        public Set<Integer> parameterIndices() {
033                return parameterIndices;
034        }
035
036        @Override
037        public boolean isContextDependent() {
038                return contextDependent;
039        }
040
041}