/*
 * Najpierw odpalamy skrypt Transakcje.sql
 * 
 */

import java.sql.*;

public class Transakcje
{
	static void zmienPensje( int pracownik, double nowaPensja ) throws ClassNotFoundException
	{
		Connection connection=null;
		boolean success = false;
		try
		{
            Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
            connection = DriverManager.getConnection("jdbc:sqlserver://localhost:1433;databaseName=KursBD;user=sa;password=sql2005");
			connection.setAutoCommit( false );
			Statement stmt = connection.createStatement();
			stmt.executeUpdate( "update pracownik set pensja="+nowaPensja+" where pracownikid="+pracownik );
			ResultSet rs = stmt.executeQuery( "select dzialid, sum(pensja) suma from pracownik where dzialid=(select max(dzialid) from pracownik where pracownikid="+pracownik+") group by dzialid" );
			rs.next();
			int dzial = rs.getInt( "dzialid" );
			double budzet = rs.getDouble( "suma" );
			// Poprawiamy na dzial2 i sprawdzamy, czy wycofanie zadziałało
			stmt.executeUpdate( "update dzial set budzet="+budzet+" where dzialid="+dzial );
			success = true;
		}
		catch (SQLException sqle)
		{ 
			sqle.printStackTrace();
		}
		finally
		{
			if ( connection != null )
			{
				if ( success )
				{
					try { connection.commit(); }
					catch( SQLException e )
					{
						try { connection.rollback(); }
						catch ( Exception e2 ) { e2.printStackTrace(); }						
					}
				}
				else
				{
					try { connection.rollback(); }
					catch ( Exception e ) { e.printStackTrace(); }						
				}
			}
			try { connection.close(); }
			catch ( Exception e ) { e.printStackTrace(); }
		}		
	}
	public static void main(String[] args) throws ClassNotFoundException
	{
		zmienPensje( 1, 1500.00 );
	}

}
