org.hibernate.tool.hbm2ddl.SingleLineSqlCommandExtractor Maven / Gradle / Ivy
package org.hibernate.tool.hbm2ddl;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.Reader;
import java.util.LinkedList;
import java.util.List;
import org.hibernate.internal.util.StringHelper;
/**
* Class responsible for extracting SQL statements from import script. Treads each line as a complete SQL statement.
* Comment lines shall start with {@code --}, {@code //} or {@code /*} character sequence.
*
* @author Lukasz Antoniak (lukasz dot antoniak at gmail dot com)
*/
public class SingleLineSqlCommandExtractor implements ImportSqlCommandExtractor {
@Override
public String[] extractCommands(Reader reader) {
BufferedReader bufferedReader = new BufferedReader( reader );
List statementList = new LinkedList();
try {
for ( String sql = bufferedReader.readLine(); sql != null; sql = bufferedReader.readLine() ) {
String trimmedSql = sql.trim();
if ( StringHelper.isEmpty( trimmedSql ) || isComment( trimmedSql ) ) {
continue;
}
if ( trimmedSql.endsWith( ";" ) ) {
trimmedSql = trimmedSql.substring( 0, trimmedSql.length() - 1 );
}
statementList.add( trimmedSql );
}
return statementList.toArray( new String[statementList.size()] );
}
catch ( IOException e ) {
throw new ImportScriptException( "Error during import script parsing.", e );
}
}
private boolean isComment(final String line) {
return line.startsWith( "--" ) || line.startsWith( "//" ) || line.startsWith( "/*" );
}
}