// @topic S-0314-12-01-10 Java composite design pattern
// @brief Program demonstarting Java composite pattern

package composite;

public class AppMain {

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
    // Initialize four ellipses
    ShapeEllipse ellipse1 = new ShapeEllipse();
    ShapeEllipse ellipse2 = new ShapeEllipse();
    ShapeEllipse ellipse3 = new ShapeEllipse();
    ShapeEllipse ellipse4 = new ShapeEllipse();

    // Initialize three composite shapes
    ShapeComposite composite1 = new ShapeComposite();
    ShapeComposite composite2 = new ShapeComposite();
    ShapeComposite composite3 = new ShapeComposite();

    // Composes the shapes
    composite2.add(ellipse1);
    composite2.add(ellipse2);
    composite2.add(ellipse3);

    composite3.add(ellipse4);

    composite1.add(composite2);
    composite1.add(composite3);

    // Prints the complete shape (four times the string "ShapeEllipse")
    composite1.print();
    }
}