sebb        2003/10/30 11:03:11

  Modified:    src/functions/org/apache/jmeter/functions
                        StringFromFile.java
  Log:
  Add file sequence handling
  
  Revision  Changes    Path
  1.12      +62 -9     
jakarta-jmeter/src/functions/org/apache/jmeter/functions/StringFromFile.java
  
  Index: StringFromFile.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-jmeter/src/functions/org/apache/jmeter/functions/StringFromFile.java,v
  retrieving revision 1.11
  retrieving revision 1.12
  diff -u -r1.11 -r1.12
  --- StringFromFile.java       19 Oct 2003 22:36:30 -0000      1.11
  +++ StringFromFile.java       30 Oct 2003 19:03:11 -0000      1.12
  @@ -59,6 +59,7 @@
   import java.io.FileReader;
   import java.io.IOException;
   import java.io.Serializable;
  +import java.text.DecimalFormat;
   import java.util.Collection;
   import java.util.LinkedList;
   import java.util.List;
  @@ -97,7 +98,7 @@
    */
   public class StringFromFile extends AbstractFunction implements Serializable
   {
  -    private static Logger log = LoggingManager.getLoggerForClass();
  +     private static Logger log = LoggingManager.getLoggerForClass();
   
       private static final List desc = new LinkedList();
       private static final String KEY = "_StringFromFile";//$NON-NLS-1$
  @@ -108,7 +109,14 @@
       static {
           
desc.add(JMeterUtils.getResString("string_from_file_file_name"));//$NON-NLS-1$
           desc.add(JMeterUtils.getResString("function_name_param"));//$NON-NLS-1$
  +             
desc.add(JMeterUtils.getResString("string_from_file_seq_start"));//$NON-NLS-1$
  +             
desc.add(JMeterUtils.getResString("string_from_file_seq_final"));//$NON-NLS-1$
       }
  +     private static final int MIN_PARAM_COUNT = 1;
  +     private static final int PARAM_NAME = 2;
  +     private static final int PARAM_START = 3;
  +     private static final int PARAM_END = 4;
  +     private static final int MAX_PARAM_COUNT = 4;
   
       private String myValue = ERR_IND;
       private String myName = "StringFromFile_";//$NON-NLS-1$ - Name to store the 
value in
  @@ -161,10 +169,45 @@
                }
       }
   
  +    private int myStart = 0;
  +    private int myCurrent = 0;
  +     private int myEnd = 0;
  +     
       private void openFile()
       {
                String tn = Thread.currentThread().getName();
           fileName = ((CompoundVariable) values[0]).execute();
  +
  +             if (values.length >= PARAM_START)
  +             {
  +                     String tmp = ((CompoundVariable) 
values[PARAM_START-1]).execute();
  +                     myStart = Integer.valueOf(tmp).intValue();
  +                     // Have we use myCurrent yet?
  +                     if (myCurrent == 0) myCurrent=myStart;
  +             }
  +
  +             if (values.length >= PARAM_END)
  +             {
  +                     String tmp = ((CompoundVariable) 
values[PARAM_END-1]).execute();
  +                     myEnd = Integer.valueOf(tmp).intValue();
  +             }
  +
  +             if (values.length >= PARAM_START)
  +             {
  +                     log.info("Start ="+myStart+" Current = "+myCurrent+" End 
="+myEnd);//$NON-NLS-1$
  +                     if (values.length >= PARAM_END){
  +                             if (myCurrent > myEnd){
  +                                     log.info("No more files to process, 
"+myCurrent+" > "+myEnd);//$NON-NLS-1$
  +                                     myBread=null;
  +                                     return;
  +                             }
  +                     }
  +                     log.info("Using format "+fileName);
  +                     DecimalFormat myFormatter = new DecimalFormat(fileName);
  +                     fileName = myFormatter.format(myCurrent);
  +                     myCurrent++;// for next time
  +        }
  +
                log.info(tn + " opening file " + fileName);//$NON-NLS-1$
           try
           {
  @@ -189,9 +232,9 @@
   
           JMeterVariables vars = getVariables();
   
  -        if (values.length >= 2)
  +        if (values.length >= PARAM_NAME)
           {
  -            myName = ((CompoundVariable) values[1]).execute();
  +            myName = ((CompoundVariable) values[PARAM_NAME-1]).execute();
           }
   
           myValue = ERR_IND;
  @@ -230,12 +273,22 @@
                                String tn = Thread.currentThread().getName();
                   log.error(tn + " error reading file " + e.toString());//$NON-NLS-1$
               }
  +        } else { // File was not opened successfully
  +             if (values.length >= PARAM_END){// Are we processing a file sequence?
  +                     log.info("Detected end of sequence.");
  +                     throw new RuntimeException("Stop Thread");//TODO there has to 
be a better way...
  +             }
           }
   
  -        vars.put(myName, myValue);
  -
  -        log.debug(this +"::StringFromFile.execute() name:" + myName + " value:" + 
myValue);//$NON-NLS-1$
  -
  +        if (myName.length() > 0){
  +                     vars.put(myName, myValue);
  +        }
  +        
  +        if (log.isDebugEnabled()){
  +            log.debug(this +"::StringFromFile.execute() name:" //$NON-NLS-1$ 
  +                 + myName + " value:" + myValue);//$NON-NLS-1$
  +        }
  +        
           return myValue;
   
       }
  @@ -255,7 +308,7 @@
   
           values = parameters.toArray();
   
  -        if ((values.length > 2) || (values.length < 1))
  +        if ((values.length > MAX_PARAM_COUNT) || (values.length < MIN_PARAM_COUNT))
           {
               throw new InvalidVariableException("Wrong number of 
parameters");//$NON-NLS-1$
           }
  
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to