// if current is a block the next line MUST BE the corresponding sha or error
import java.io.*;
import java.util.*;
public class Sha1Missing
{
public static void main( String[] args ) throws IOException
{
long start = System.currentTimeMillis();
commandLineParameterCheck( args );
BufferedReader br = null;
int prevblocknumber = -1;
int currentblocknumber = -1;
try {
br = new BufferedReader( new FileReader( args[0] ) );
String prevlinebuffer = br.readLine();
String currentlinebuffer = br.readLine();
prevblocknumber = -1;
currentblocknumber = -1;
while( currentlinebuffer != null && prevlinebuffer != null )
{
prevblocknumber = getBlockNumber( prevlinebuffer );
currentblocknumber = getBlockNumber( currentlinebuffer );
if( currentblocknumber != -1 && prevblocknumber != -1 )
{
if( !prevlinebuffer.contains( "sha1") && !currentlinebuffer.contains( "sha1") )
{
System.out.println( "PREV: " + prevlinebuffer );
System.out.println( "CURR: " + currentlinebuffer );
}
}
prevlinebuffer = currentlinebuffer;
currentlinebuffer = br.readLine();
}
}catch( Exception e )
{ e.printStackTrace();
}
finally
{ br.close();
}
long end = System.currentTimeMillis();
long duration = end - start;
System.out.println( "Completed in " + duration + " ms" );
} //end main
private static boolean sha1Exists( int originalblocknumber , String filename )
{
boolean result = false;
int blocknumber = -1;
if( filename != null && originalblocknumber != -1 )
{
blocknumber = getBlockNumber( filename );
System.out.println( "in sha1 exists: " + filename );
System.out.println( originalblocknumber + " vs " + blocknumber );
if( originalblocknumber == blocknumber && filename.endsWith( "sha1") )
{
result = true;
}
}
return result;
} //end sha1Exists()
private static int getBlockNumber( String filename )
{
StringTokenizer st = null;
String token = null;
int blocknumber = -1;
if( filename != null )
{
st = new StringTokenizer( filename , "." );
if( st.countTokens() > 1 )
{
token = st.nextToken();
token = st.nextToken(); //blocknumber is the 2nd token
if( !token.isEmpty() && isIntNumber( token ) )
{ blocknumber = Integer.parseInt( token );
}
}
}
return blocknumber;
} //end isBlock()
private static boolean isIntNumber( String number )
{
try{
Integer.parseInt( number );
} catch( NumberFormatException nfe )
{ return false;
}
return true;
}
private static void commandLineParameterCheck( String[] args )
{
if( args.length != 1 || args[0].isEmpty() )
{
System.out.println( args.length + " does not equal the 1 required arguments.");
System.out.println( "version 0.3: java -jar filescan.jar filename" );
System.exit( 1 );
}
}
} //end class