import java.io.*;
import java.nio.file.*;


/**
 * An application that demonstrates the use of invocation chaining.
 *
 * @author  Prof. David Bernstein, James Madison University
 * @version 1.0
 */
public class InvocationChaining {
    /**
     * A method to hold the fragments.
     *
     * @param args  The command line arguments
     * @throws IOException if something goes wrong
     */
    @SuppressWarnings({"checkstyle:avoidstarimport",
                "checkstyle:avoidnestedblocks", "checkstyle:indentation"})
    public static void main(String[] args) throws IOException {
        String user   = "johndoe";
        String university = "jmu";
        {
//[sbintermediate
        StringBuilder sb = new StringBuilder();
        sb.append(user);
        sb.append("@");
        sb.append(university);
        sb.append(".edu");
//]sbintermediate
        System.out.println(sb.toString());
        }

        {
//[sbchain
        StringBuilder sb = new StringBuilder();
        sb.append(user).append("@").append(university).append(".edu");
//]sbchain
        System.out.println(sb.toString());
        }
        


        {
//[intermediate
        File   cwd    = new File(".");
        String path   = cwd.getCanonicalPath();
        int    length = path.length();
//]intermediate
        System.out.println(path + "\t" + length);
        }

        {
//[chain
        File   cwd    = new File(".");
        int    length = cwd.getCanonicalPath().length();
//]chain
        }

        {
//[robotunchained
        Robot bender = new Robot();
        bender.moveForward();
        bender.moveForward();
        bender.moveRight();
        bender.moveForward();
//]robotunchained
        System.out.println(bender.toString());
        }
        

        {
//[robotchained
        Robot bender = new Robot();
        bender.moveForward().moveForward().moveRight().moveForward();
//]robotchained
        System.out.println(bender.toString());
        }
    }
}

