All pastes #968472 Raw Edit

tankfarm.java

public text v1 · immutable
·published 2008-04-03 01:40 UTC
rendered paste body
*
 * TankFarmException.java
 *
 * Version:
 *    $Id$
 *
 * Revisions:
 *    $Log$
 */

import java.io.Serializable;

/**
 * This class defines the object to be thrown by a TankFarm object when it 
 * detects a constructor error.
 *
 * @author         Ryan Modica
 */

public class TankFarmException{

    // Constructor for the TankFarmException class
    public TankFarmException( String message ) {
        super();
    }
} // TankFarmException


/*
 * TankFarm.java
 * 
 * Version: 
 *     $Id: TankFarm.java,v 1.1 2007/08/16 19:10:01 vcss232 Exp rpm5732 $
 * 
 * Revisions: 
 *     $Log: TankFarm.java,v $
 *     Revision 1.1  2007/08/16 19:10:01  vcss232
 *     Initial revision
 *
 */

import java.lang.*;

/**
 * A tank farm is a collection of tanks each having a different capacity.  
 * The number of tanks and size of each one are provided as parameters to the
 * tank farm constructor.  Tanks are maintained in the array tanks.  The id
 * for a tank corresponds to the array index for the tank.
 *
 * @author 	Jim Vallino
 *
 */

public class TankFarm extends TankFarmException{
    private Tank[] tanks;  // the actual tank farm
    
    /**
     * Create a tank farm with the specified number of tanks having
     * the capacities specified in the cap parameter.
     *
     * @param howMany Number of tanks in tank farm
     * @param cap     Array of capacities for each tank in tank farm
     *
     * @exception TankFarmException Thrown if the number of tanks in the
     *                              tank farm (i.e., the parameter howMany)
     *                              is less than 1.
     *                              Exception message field is:
     *                              "TankFarm constructor received 0 or 
     *                              negative count."
     * @exception TankCreateException Thrown by the Tank constructor if an
     *                                invalid capacity is requested for a 
     *                                tank.  If the TankFarm receives this 
     *                                exception the constructor will print the
     *                                exception message field to stderr and 
     *                                rethrow the exception.
     */

    public TankFarm( int howMany, int cap[] ) throws TankFarmException {
        // throw exception
        if( howMany < 1 ) {
            throw new TankFarmException( "TankFarm constructor received 0 or" +
                                         " received negative count." );
        }

	// Allocate the actual array of tanks.
	tanks = new Tank[ howMany ];

	// Initialize the tank array with new tanks.	
	    for ( int i = 0; i < howMany; i++ ) {
		tanks[ i ] = new Tank( i, cap[ i ] );
	    }
    }

    /**
     * Request to add material to a tank in the tank farm.
     * <p>
     * The operation of adding material to the specified tank is performed by
     * the tank farm object.  TankWarningExceptions are handled by printing
     * the exception message to stderr. Other exceptions are allowed to pass up
     * the call stack.
     *
     * @param id Tank id for the tank in which new material will be added
     * @param in Number of units of material to add to tank
     *
     * @exception TankOverflowException Passed up the call stack if thrown
     *            by Tank object.
     */

    public void addMaterial( int id, int in ) throws TankOverflowException {
	    tanks[ id ].fill( in );

            // throw exception
            if( id > in ){
                throw new TankOverflowException();
            }
    }
    
    /**
     * Request to remove material from a tank in the tank farm.
     * <p>
     * The operation of removing material from the specified tank is performed 
     * by the tank farm object.  TankWarningExceptions are handled by printing
     * the exception message to stderr.
     *
     * @param id Tank id for the tank from which material will be removed
     * @param out Number of units of material to remove from the tank
     */

    public void removeMaterial( int id, int out ) {
	    
	tanks[ id ].empty( out );

    }

    /**
     * Accessor function for tank level.
     *
     * @param id Id of the tank whose level will be returned.  No check is
     *           made that the parameter is valid.
     *
     * @return returns the current level of the tank.
     */

    public int getTankLevel( int id ) {
	return tanks[ id ].getCurrent();
    }

    /**
     * Accessor function for tank state.
     *
     * @param id Id of the tank whose state will be returned.  No check is
     *           made that the parameter is valid.
     *
     * @return returns the current state of the tank.
     */

    public int getTankState( int id ) {
	return tanks[ id ].getState();
    }
    
    public static void main( String[] args ) {
        TankFarm test = new TankFarm( 4, 6 );
    }
} // TankFarm
/*
 * TankFarm.java
 * 
 * Version: 
 *     $Id: TankFarm.java,v 1.1 2007/08/16 19:10:01 vcss232 Exp rpm5732 $
 * 
 * Revisions: 
 *     $Log: TankFarm.java,v $
 *     Revision 1.1  2007/08/16 19:10:01  vcss232
 *     Initial revision
 *
 */

import java.lang.*;

/**
 * A tank farm is a collection of tanks each having a different capacity.  
 * The number of tanks and size of each one are provided as parameters to the
 * tank farm constructor.  Tanks are maintained in the array tanks.  The id
 * for a tank corresponds to the array index for the tank.
 *
 * @author 	Jim Vallino
 *
 */

public class TankFarm extends TankFarmException{
    private Tank[] tanks;  // the actual tank farm
    
    /**
     * Create a tank farm with the specified number of tanks having
     * the capacities specified in the cap parameter.
     *
     * @param howMany Number of tanks in tank farm
     * @param cap     Array of capacities for each tank in tank farm
     *
     * @exception TankFarmException Thrown if the number of tanks in the
     *                              tank farm (i.e., the parameter howMany)
     *                              is less than 1.
     *                              Exception message field is:
     *                              "TankFarm constructor received 0 or 
     *                              negative count."
     * @exception TankCreateException Thrown by the Tank constructor if an
     *                                invalid capacity is requested for a 
     *                                tank.  If the TankFarm receives this 
     *                                exception the constructor will print the
     *                                exception message field to stderr and 
     *                                rethrow the exception.
     */

    public TankFarm( int howMany, int cap[] ) throws TankFarmException {
        // throw exception
        if( howMany < 1 ) {
            throw new TankFarmException( "TankFarm constructor received 0 or" +
                                         " received negative count." );
        }

	// Allocate the actual array of tanks.
	tanks = new Tank[ howMany ];

	// Initialize the tank array with new tanks.	
	    for ( int i = 0; i < howMany; i++ ) {
		tanks[ i ] = new Tank( i, cap[ i ] );
	    }
    }

    /**
     * Request to add material to a tank in the tank farm.
     * <p>
     * The operation of adding material to the specified tank is performed by
     * the tank farm object.  TankWarningExceptions are handled by printing
     * the exception message to stderr. Other exceptions are allowed to pass up
     * the call stack.
     *
     * @param id Tank id for the tank in which new material will be added
     * @param in Number of units of material to add to tank
     *
     * @exception TankOverflowException Passed up the call stack if thrown
     *            by Tank object.
     */

    public void addMaterial( int id, int in ) throws TankOverflowException {
	    tanks[ id ].fill( in );

            // throw exception
            if( id > in ){
                throw new TankOverflowException();
            }
    }
    
    /**
     * Request to remove material from a tank in the tank farm.
     * <p>
     * The operation of removing material from the specified tank is performed 
     * by the tank farm object.  TankWarningExceptions are handled by printing
     * the exception message to stderr.
     *
     * @param id Tank id for the tank from which material will be removed
     * @param out Number of units of material to remove from the tank
     */

    public void removeMaterial( int id, int out ) {
	    
	tanks[ id ].empty( out );

    }

    /**
     * Accessor function for tank level.
     *
     * @param id Id of the tank whose level will be returned.  No check is
     *           made that the parameter is valid.
     *
     * @return returns the current level of the tank.
     */

    public int getTankLevel( int id ) {
	return tanks[ id ].getCurrent();
    }

    /**
     * Accessor function for tank state.
     *
     * @param id Id of the tank whose state will be returned.  No check is
     *           made that the parameter is valid.
     *
     * @return returns the current state of the tank.
     */

    public int getTankState( int id ) {
	return tanks[ id ].getState();
    }
    
    public static void main( String[] args ) {
        TankFarm test = new TankFarm( 4, 6 );
    }
} // TankFarm