001package com.hammurapi.extract; 002 003import java.util.concurrent.TimeUnit; 004 005/** 006 * Base class for composite extractors like +, *, / operations. 007 * @author Pavel Vlasov. 008 * 009 * @param <T> 010 * @param <V> 011 */ 012public abstract class CompositeExtractorBase<T, V, C> extends ExtractorBase<T, V, C> { 013 014 protected Extractor<T, V, C>[] operands; 015 016 public CompositeExtractorBase(double initialCost, TimeUnit costUnit, Extractor<T, V, C>... operands) { 017 super(initialCost, costUnit); 018 this.operands = operands; 019 } 020 021 @Override 022 public double getCost() { 023 if (cost==-1 && costUnit==null) { 024 double ret = 0; 025 for (Extractor<T,V,C> e : operands) { 026 ret+=e.getCost(); 027 } 028 return ret; 029 } 030 return super.getCost(); 031 } 032 033}