/*
 * Created on Sep 29, 2004
 *
 * TODO To change the template for this generated file go to
 * Window - Preferences - Java - Code Style - Code Templates
 */
package org.apache.jmeter.config;

import java.io.IOException;
import java.util.HashMap;
import java.util.Map;

import org.apache.jmeter.config.ConfigTestElement;
import org.apache.jmeter.engine.event.LoopIterationEvent;
import org.apache.jmeter.engine.event.LoopIterationListener;
import org.apache.jmeter.services.FileServer;
import org.apache.jmeter.testbeans.TestBean;
import org.apache.jorphan.logging.LoggingManager;
import org.apache.jorphan.util.JOrphanUtils;
import org.apache.log.Logger;

/**
 * @author mstover
 *
 * TODO To change the template for this generated type comment go to
 * Window - Preferences - Java - Code Style - Code Templates
 */
public class CSVDataSet extends ConfigTestElement implements TestBean, LoopIterationListener
{
    private static Logger log = LoggingManager.getLoggerForClass();
    static final public long serialVersionUID = 1;
    
    transient String filename;
    transient String variableNames;
    transient private String[] vars;
    

    /* (non-Javadoc)
     * @see org.apache.jmeter.engine.event.LoopIterationListener#iterationStart(org.apache.jmeter.engine.event.LoopIterationEvent)
     */
    public void iterationStart(LoopIterationEvent iterEvent)
    {
        FileServer server = FileServer.getFileServer();
        if(vars == null)
        {
            server.reserveFile(getFilename());
            vars = JOrphanUtils.split(getVariableNames(),",");
        }
        try
        {
            String[] lineValues = JOrphanUtils.split(server.readLine(getFilename()),",");
	        for(int a = 0;a < vars.length && a < lineValues.length;a++)
	        {
	            this.getThreadContext().getVariables().put(vars[a],lineValues[a]);
	        }
        }
        catch(IOException e)
        {
            log.error("Failed to read file: " + getFilename());
        }
    }

    /**
     * @return Returns the filename.
     */
    public String getFilename()
    {
        return filename;
    }
    /**
     * @param filename The filename to set.
     */
    public void setFilename(String filename)
    {
        this.filename = filename;
    }
    /**
     * @return Returns the variableNames.
     */
    public String getVariableNames()
    {
        return variableNames;
    }
    /**
     * @param variableNames The variableNames to set.
     */
    public void setVariableNames(String variableNames)
    {
        this.variableNames = variableNames;
    }
}

@@ -4,159 +4,622 @@
  * C
-reated on Sep 29, 2004%0A *%0A * TODO To change the template for this generated file go to%0A * Window - Preferences - Java - Code Style - Code Templates%0A */
+opyright 2004-2005 The Apache Software Foundation.%0A *%0A * Licensed under the Apache License, Version 2.0 (the %22License%22);%0A * you may not use this file except in compliance with the License.%0A * You may obtain a copy of the License at%0A *%0A *   http://www.apache.org/licenses/LICENSE-2.0%0A *%0A * Unless required by applicable law or agreed to in writing, software%0A * distributed under the License is distributed on an %22AS IS%22 BASIS,%0A * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.%0A * See the License for the specific language governing permissions and%0A * limitations under the License.%0A * %0A*/%0A
 %0Apac
@@ -681,56 +681,8 @@
 ion;
-%0Aimport java.util.HashMap;%0Aimport java.util.Map;
 %0A%0Aim

Add ASF Lic V2; remove unused imports