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.PopulationWriter;
022    
023    /**
024     * A Wrapper that transforms an {@link PopulationWriter
025     * PopulationWriter<double[]>} into an {@link PopulationWriter
026     * PopulationWriter<EsIndividual>}.
027     * 
028     * @author <a href="http://kumpe.de/christian/java">Christian Kumpe</a>
029     */
030    public final class EsPopulationWriterWrapper extends
031                    NeedsRandomWrapperBase<PopulationWriter<double[]>> implements
032                    PopulationWriter<EsIndividual> {
033            private static final long serialVersionUID = 1L;
034    
035            public EsPopulationWriterWrapper(final PopulationWriter<double[]> delegate) {
036                    super(delegate);
037            }
038    
039            @Override
040            public void write(final Collection<EsIndividual> population) {
041                    delegate.write(new UnmodifiableCollectionWrapper<double[], EsIndividual>(
042                                    population) {
043                            @Override
044                            protected double[] wrap(final EsIndividual delegateElement) {
045                                    return delegateElement.getIndividual();
046                            }
047                    });
048            }
049    }