package org.adoptopenjdk.lambda.tutorial.exercise1;
/*
* #%L
* lambda-tutorial
* %%
* Copyright (C) 2013 Adopt OpenJDK
* %%
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as
* published by the Free Software Foundation, either version 2 of the
* License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public
* License along with this program. If not, see
* <http://www.gnu.org/licenses/gpl-2.0.html>.
* #L%
*/
import java.util.List;
/**
* A collection of functions which should be filled out to make tests pass.
*
* Each method should use a single call to shapes.forEach.
*
* Lambda Tutorial -- Adopt Open JDK
* @author Graham Allan grundlefleck at gmail dot com
*/
public class Shapes {
/**
* Changes the color of all the given <code>shapes</code>, setting to <code>newColor</code>.
*
* Example:
* given a list containing [BLUE shape, GREEN shape, BLACK shape]
* when this method is called with that list and the color RED
* then the list will contain [RED shape, RED shape, RED shape]
*
* @param shapes - shapes to color in
* @param newColor - the new color
*
* @see Shape#setColor(Color)
*/
public static void colorAll(List<Shape> shapes, Color newColor) {
// [your code here]
}
/**
* Creates a String representation of all the given <code>shapes</code>, appending to the given
* <code>stringBuilder</code>.
*
* Uses Shape#toString to create the String representation of each shape.
*
* Example:
* given a list containing [BLUE shape, GREEN shape, BLACK shape]
* when this method is called with that list and an empty StringBuilder
* then the StringBuilder's toString method will return "[a BLUE shape][a GREEN shape][a BLACK shape]"
*
* @param shapes - shapes to work over
* @param stringBuilder - string builder to append to
*
* @see Shape#toString()
*/
public static void makeStringOfAllColors(List<Shape> shapes, StringBuilder stringBuilder) {
// [your code here]
}
/**
* Changes the color of each given shape to newColor, appending a String representation of the color of all the
* shapes, as they were before they were changed.
*
* Example:
* given a list containing [BLUE shape, GREEN shape, BLACK shape]
* when this method is called with that list, the color RED, and an empty StringBuilder
* then the list will contain [RED shape, RED shape, RED shape]
* and the StringBuilder's toString method will return "[a BLUE shape][a GREEN shape][a BLACK shape]"
*
* This operation is performed in one pass over the <code>shapes</code> List. Note that syntactically a
* lambda is similar to an ordinary Java code block. Therefore multiple statements separated by ; are
* perfectly legal e.g. {@code (x -> { x.doSomething(); y.doSomethingElse(); }); }
*
* @param shapes - shapes to change color of
* @param newColor - new color
* @param stringBuilder - string builder to append to
*
* @see Shape#setColor(Color)
* @see Shape#toString()
*/
public static void changeColorAndMakeStringOfOldColors(List<Shape> shapes, Color newColor, StringBuilder stringBuilder) {
// [your code here]
}
}