import cop3530.Set;
import cop3530.BogusSet;
import java.util.Comparator;

class Rectangle
{
    public Rectangle( int len, int wid )
    {
        length = len;
        width = wid;
    }
    
    public String toString( )
    {
        return "Rectangle " + length + "*" + width;
    }
    
    public int getLength( )
    {
        return length;
    }
    
    public int getWidth( )
    {
        return width;
    }
    
    private int length;
    private int width;
}

class OrderRectangleByArea implements Comparator<Rectangle>
{
    public int compare( Rectangle lhs, Rectangle rhs )
    {
        return  lhs.getLength( ) * lhs.getWidth( )
                -
                rhs.getLength( ) * rhs.getWidth( );
    }
}

class OrderRectangleByPerimeter implements Comparator<Rectangle>
{
    public int compare( Rectangle lhs, Rectangle rhs )
    {
        return  lhs.getLength( ) + lhs.getWidth( )
                -
                rhs.getLength( ) - rhs.getWidth( );
    }
}

class CaseInsensitiveString implements Comparator<String>
{
    public int compare( String lhs, String rhs )
    {
        return lhs.compareToIgnoreCase( rhs );
    }
}

class Assign1
{
    public static void main( String [ ] args )
    {
        Set<String> s1 = new BogusSet<String>( );    // Store strings
        Set<Integer> s2 = new BogusSet<Integer>( );    // Store Integer
        Set<Rectangle> s3 =
                new BogusSet<Rectangle>( new OrderRectangleByArea( ) ); 
        Set<Rectangle> s4 =
                new BogusSet<Rectangle>( new OrderRectangleByPerimeter( ) ); 
        Set<String> s5 = new BogusSet<String>( new CaseInsensitiveString( ) );
        
        s1.add( "hello" );
        s1.add( "world" );
        s1.add( "Zebra" );
        
        for( int i = 0; i < 20; i++ )
            s2.add( 30 - i );
        
        s3.add( new Rectangle( 4, 60  ) );
        s3.add( new Rectangle( 20, 20 ) );
        
        
        s4.add( new Rectangle( 4, 60  ) );
        s4.add( new Rectangle( 20, 20 ) );
        
        s5.add( "world" );
        s5.add( "Zebra" );
        s5.add( "hello" );
        
        System.out.println( "s1: " + s1 );
        System.out.println( "s2: " + s2 );
        System.out.println( "s3: " + s3 );
        System.out.println( "s4: " + s4 );
        System.out.println( "s5: " + s5 );
    }
}