blob: f5a3ff7f40c53987e63209af0d7d210f52b7f26e [file] [log] [blame]
/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.apache.cocoon.components.flow.apples.samples;
import java.util.HashMap;
import java.util.Map;
import java.util.Random;
import org.apache.avalon.framework.logger.AbstractLogEnabled;
import org.apache.cocoon.ProcessingException;
import org.apache.cocoon.components.flow.apples.AppleController;
import org.apache.cocoon.components.flow.apples.AppleRequest;
import org.apache.cocoon.components.flow.apples.AppleResponse;
/**
* GuessGameApple shows an easy Apples implementation for a number guessing game.
*/
public class GuessGameApple extends AbstractLogEnabled implements AppleController {
private final int random = (new Random()).nextInt(10) + 1;
private int guesses = 0;
public String toString() {
return "GuessGameApple[ random=" + this.random + " | guesses=" + this.guesses + "]";
}
public void process(AppleRequest req, AppleResponse res) throws ProcessingException {
String hint = "No hints yet.";
String targetURI = "guess/guess.jx";
int newGuess = -1;
String newGuessString = req.getCocoonRequest().getParameter("guess");
if (newGuessString != null) {
newGuess = Integer.parseInt(newGuessString);
this.guesses++;
if (this.random == newGuess) {
targetURI = "guess/success.jx";
} else {
if (this.random < newGuess) {
hint = "Try lower.";
} else {
hint = "Try higher.";
}
}
}
getLogger().debug(toString());
Map bizdata = new HashMap();
bizdata.put("random" , "" + this.random);
bizdata.put("guesses", "" + this.guesses);
bizdata.put("hint" , hint);
res.sendPage(targetURI, bizdata);
}
}