ZooIndexController.java
package edu.nwmissouri.zoo04lab;
import java.io.ByteArrayOutputStream;
import java.io.PrintStream;
import java.util.Map;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
/**
* Controller that handles the default request ("/").
*
* Use the new Java 15 text blocks to provide our menu. Thymeleaf:
* https://spring.io/guides/gs/serving-web-content/
*
* @author Denise Case
*/
@Controller
public class ZooIndexController {
private static final String GREETING_MESSAGE = "Welcome to our 542 Zoo!";
private static final String GOODBYE_MESSAGE = "Thank you for visiting our zoo!";
private static final int NUMBER_ANIMAL_TYPES = 60;
/**
* The @GetMapping annotation ensures that HTTP GET requests to / are mapped
* to the index() method.Example:
* https://spring.io/guides/gs/serving-web-content/
*
*
* @param idParam - the id provided in the URL
* @param model - the model that holds information from controller to view
* @return
*/
@GetMapping(path = "/")
public String index(
@RequestParam(name = "id", required = false, defaultValue = "0") String idParam,
Model model) {
model.addAttribute("id", idParam);
model.addAttribute("name", "World");
model.addAttribute("greeting", GREETING_MESSAGE);
model.addAttribute("animalMap", ZooBuildSwitch.getAllAnimalMap());
model.addAttribute("customAnimalGroup", getCustomAnimalGroup(idParam));
// associated with index.hmtl in src/main/resources/templates
return "index";
}
/**
* Map GET request to "/about" to about().
*
* @return filename from src/main/resources/templates folder
*/
@GetMapping(path = "/about")
public String about() {
return "about";
}
private String getCustomAnimalGroup(String id) {
// Create a stream to hold the output
var newStream = new ByteArrayOutputStream();
var newPrintStream = new PrintStream(newStream);
// IMPORTANT: Save the old System.out!
PrintStream old = System.out;
// Tell Java to use your special stream
System.setOut(newPrintStream);
var intID = Integer.parseInt(id);
switch (intID) {
case 1 -> {
AardvarkGroup.create();
AardvarkGroup.run();
}
case 2 -> {
AbyssinianGroup.create();
AbyssinianGroup.run();
}
case 3 -> {
ArvicolinaeGroup.create();
ArvicolinaeGroup.run();
}
case 4 -> {
AspGroup.create();
AspGroup.run();
}
case 5 -> {
BearcatGroup.create();
BearcatGroup.run();
}
case 6 -> {
BengalTigerGroup.create();
BengalTigerGroup.run();
}
case 7 -> {
BlackJaguarGroup.create();
BlackJaguarGroup.run();
}
case 8 -> {
BlackPantherGroup.create();
BlackPantherGroup.run();
}
case 9 -> {
BrachiosaurusGroup.create();
BrachiosaurusGroup.run();
}
case 10 -> {
BuffaloGroup.create();
BuffaloGroup.run();
}
case 11 -> {
CatGroup.create();
CatGroup.run();
}
case 12 -> {
CheetahGroup.create();
CheetahGroup.run();
}
case 13 -> {
CongoLionGroup.create();
CongoLionGroup.run();
}
case 14 -> {
CowGroup.create();
CowGroup.run();
}
case 15 -> {
CrocodileGroup.create();
CrocodileGroup.run();
}
case 16 -> {
DalmatianGroup.create();
DalmatianGroup.run();
}
case 17 -> {
DeerGroup.create();
DeerGroup.run();
}
case 18 -> {
DinosaurGroup.create();
DinosaurGroup.run();
}
case 19 -> {
DuckGroup.create();
DuckGroup.run();
}
case 20 -> {
ElephantBirdGroup.create();
ElephantBirdGroup.run();
}
case 21 -> {
ElephantGroup.create();
ElephantGroup.run();
}
case 22 -> {
EmuGroup.create();
EmuGroup.run();
}
case 23 -> {
FerociousTigerGroup.create();
FerociousTigerGroup.run();
}
case 24 -> {
FloppyGroup.create();
FloppyGroup.run();
}
case 25 -> {
FrogGroup.create();
FrogGroup.run();
}
case 26 -> {
GerenukGroup.create();
GerenukGroup.run();
}
case 27 -> {
GiraffeGroup.create();
GiraffeGroup.run();
}
case 28 -> {
GlyptodonGroup.create();
GlyptodonGroup.run();
}
case 29 -> {
GoatGroup.create();
GoatGroup.run();
}
case 30 -> {
GriffinGroup.create();
GriffinGroup.run();
}
case 31 -> {
HarpSealGroup.create();
HarpSealGroup.run();
}
case 32 -> {
HippopotamusGroup.create();
HippopotamusGroup.run();
}
case 33 -> {
KangarooGroup.create();
KangarooGroup.run();
}
case 34 -> {
KangaroovGroup.create();
KangaroovGroup.run();
}
case 35 -> {
KoalaGroup.create();
KoalaGroup.run();
}
case 36 -> {
LigerGroup.create();
LigerGroup.run();
}
case 37 -> {
LionessGroup.create();
LionessGroup.run();
}
case 38 -> {
LionGroup.create();
LionGroup.run();
}
case 39 -> {
MightyLionGroup.create();
MightyLionGroup.run();
}
case 40 -> {
MuleDeerGroup.create();
MuleDeerGroup.run();
}
case 41 -> {
OkapiGroup.create();
OkapiGroup.run();
}
case 42 -> {
PandaGroup.create();
PandaGroup.run();
}
case 43 -> {
PantheraGroup.create();
PantheraGroup.run();
}
case 44 -> {
PolarBearGroup.create();
PolarBearGroup.run();
}
case 45 -> {
ProngHornGroup.create();
ProngHornGroup.run();
}
case 46 -> {
PumaGroup.create();
PumaGroup.run();
}
case 47 -> {
RabbitGroup.create();
RabbitGroup.run();
}
case 48 -> {
RelayHorseGroup.create();
RelayHorseGroup.run();
}
case 49 -> {
RoaringLionGroup.create();
RoaringLionGroup.run();
}
case 50 -> {
ShoebillGroup.create();
ShoebillGroup.run();
}
case 51 -> {
SiberianTigerGroup.create();
SiberianTigerGroup.run();
}
case 52 -> {
SquirrelGroup.create();
SquirrelGroup.run();
}
case 53 -> {
StagGroup.create();
StagGroup.run();
}
case 54 -> {
StringRayGroup.create();
StringRayGroup.run();
}
case 55 -> {
SunBearGroup.create();
SunBearGroup.run();
}
case 56 -> {
TauntingTigerGroup.create();
TauntingTigerGroup.run();
}
case 57 -> {
UnicornGroup.create();
UnicornGroup.run();
}
case 58 -> {
WalrusGroup.create();
WalrusGroup.run();
}
case 59 -> {
XraytetraGroup.create();
XraytetraGroup.run();
}
case 60 -> {
YukonMooseGroup.create();
YukonMooseGroup.run();
}
default -> {
}
}
// Put things back
System.out.flush();
System.setOut(old);
String stringOutput = newStream.toString();
return stringOutput;
}
}