package com.ricebridge.csvman.test;
import com.ricebridge.csvman.*;
import org.jostraca.util.*;
import java.util.*;
public class PerformanceTestFileMaker {
public static final void main( String[] pArgs ) throws Exception {
CsvManager cm = new CsvManager();
RandomValueLineProvider rvlp = new RandomValueLineProvider( 10 );
cm.save( PerformanceTest.getCsvFile("p10"), rvlp );
System.out.println( "10" );
rvlp = new RandomValueLineProvider( 100 );
cm.save( PerformanceTest.getCsvFile("p100"), rvlp );
System.out.println( "100" );
rvlp = new RandomValueLineProvider( 1000 );
cm.save( PerformanceTest.getCsvFile("p1000"), rvlp );
System.out.println( "1000" );
rvlp = new RandomValueLineProvider( 10000 );
cm.save( PerformanceTest.getCsvFile("p10000"), rvlp );
System.out.println( "10000" );
rvlp = new RandomValueLineProvider( 100000 );
cm.save( PerformanceTest.getCsvFile("p100000"), rvlp );
System.out.println( "100000" );
rvlp = new RandomValueLineProvider( 1000000 );
cm.save( PerformanceTest.getCsvFile("p1000000"), rvlp );
System.out.println( "1000000" );
}
public static class RandomValueLineProvider extends CustomLineProvider {
private Random iRandom = new Random();
private int iNumLines = 0;
private int iLineIndex = 0;
private int iNumFields = 6;
public RandomValueLineProvider( int pNumLines ) {
iNumLines = pNumLines;
}
protected void startProcessImpl() {
iLineIndex = 0;
}
protected void endProcessImpl() {
}
protected boolean hasNextLineImpl() {
return iLineIndex < iNumLines;
}
protected String[] nextLineImpl() {
String[] line = new String[iNumFields];
for( int fI = 0; fI < iNumFields; fI++ ) {
line[fI] = makeField(fI);
}
iLineIndex++;
return line;
}
public static final char[] sChars = new char[] {
'\'',' ','!','"','&','$','%','(',')','*','+',',','-','.','/','0','1','2','3','4','5','6','7','8','9',':',';',
'<','>','@','A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W',
'X','Y','Z','[','\\',']','^','_','a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s',
't','u','v','w','x','y','z','{','|','}','`'
};
protected char makeRandomChar() {
int c = iRandom.nextInt( sChars.length );
return sChars[c];
}
protected String makeRandomString() {
int nc = iRandom.nextInt( sChars.length );
StringBuffer sb = new StringBuffer();
for( int cI = 0; cI < nc; cI++ ) {
sb.append( makeRandomChar() );
}
return sb.toString();
}
protected String handleQuote( String pValue ) {
if( -1 != pValue.indexOf( "\"" ) || -1 != pValue.indexOf( "," ) ) {
return TextUtil.replace( pValue, "\"", "\"\"" );
}
else {
return pValue;
}
}
protected String makeField( int pFieldIndex ) {
pFieldIndex++;
if( 1 == pFieldIndex ) {
return handleQuote(String.valueOf(makeRandomChar()));
}
else if( 2 == pFieldIndex ) {
return String.valueOf( iRandom.nextInt() );
}
else if( 3 == pFieldIndex ) {
return String.valueOf( iRandom.nextLong() );
}
else if( 4 == pFieldIndex ) {
return String.valueOf( iRandom.nextDouble() );
}
else if( 5 == pFieldIndex ) {
return String.valueOf( new Date( iRandom.nextLong() ) );
}
else if( 6 == pFieldIndex ) {
return handleQuote( makeRandomString() );
}
else {
return "";
}
}
}
}