001    /*
002     * Copyright 2011 Christian Kumpe http://kumpe.de/christian/java
003     *
004     * Licensed under the Apache License, Version 2.0 (the "License");
005     * you may not use this file except in compliance with the License.
006     * You may obtain a copy of the License at
007     *
008     *     http://www.apache.org/licenses/LICENSE-2.0
009     *
010     * Unless required by applicable law or agreed to in writing, software
011     * distributed under the License is distributed on an "AS IS" BASIS,
012     * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
013     * See the License for the specific language governing permissions and
014     * limitations under the License.
015     */
016    package de.kumpe.hadooptimizer.impl;
017    
018    import java.util.Collection;
019    
020    import de.kumpe.hadooptimizer.EsIndividual;
021    import de.kumpe.hadooptimizer.PopulationReader;
022    
023    /**
024     * A Wrapper that transforms an {@link PopulationReader
025     * PopulationReader<double[]>} into an {@link PopulationReader
026     * PopulationReader<EsIndividual>}.
027     * 
028     * @author <a href="http://kumpe.de/christian/java">Christian Kumpe</a>
029     */
030    public final class EsPopulationReaderWrapper extends
031                    NeedsRandomWrapperBase<PopulationReader<double[]>> implements
032                    PopulationReader<EsIndividual> {
033            private static final long serialVersionUID = 1L;
034    
035            public EsPopulationReaderWrapper(final PopulationReader<double[]> delegate) {
036                    super(delegate);
037            }
038    
039            @Override
040            public Collection<EsIndividual> read() {
041                    return new UnmodifiableCollectionWrapper<EsIndividual, double[]>(
042                                    delegate.read()) {
043                            @Override
044                            protected EsIndividual wrap(final double[] delegateElement) {
045                                    return new EsIndividual(delegateElement);
046                            }
047                    };
048            }
049    }