package regexgolf2.startup;
import java.util.Random;
import com.google.java.contract.Ensures;
import regexgolf2.model.Challenge;
import regexgolf2.model.Requirement;
public class ChallengeFactory
{
@Ensures("result != null")
public static Challenge getTestChallenge()
{
Challenge challenge = new Challenge();
challenge.setName("Test-Challenge 1");
challenge.addRequirement(new Requirement(true, "Haus"));
challenge.addRequirement(new Requirement(true, "Baum"));
challenge.addRequirement(new Requirement(false, "Auto"));
challenge.addRequirement(new Requirement(false, "Tier"));
return challenge;
}
@Ensures("result != null")
public static Challenge getIPChallenge()
{
Challenge challenge = new Challenge();
challenge.setName("IP-Challenge");
challenge.addRequirement(new Requirement(true, "1.2.3.4"));
challenge.addRequirement(new Requirement(true, "192.168.1.1"));
challenge.addRequirement(new Requirement(true, "81.80.79.78"));
challenge.addRequirement(new Requirement(false, "300.0.0.0"));
challenge.addRequirement(new Requirement(false, "256.0.0.256"));
challenge.addRequirement(new Requirement(false, "12.13.14.15.16"));
challenge.addRequirement(new Requirement(false, "12.13.14.1545"));
return challenge;
}
@Ensures("result != null")
public static Challenge getTestChallenge2()
{
Challenge challenge = new Challenge();
challenge.setName("Test-Challenge 2");
challenge.addRequirement(new Requirement(true, "Fenster"));
challenge.addRequirement(new Requirement(true, "Dach"));
challenge.addRequirement(new Requirement(false, "Tisch"));
challenge.addRequirement(new Requirement(false, "Giesskanne"));
return challenge;
}
@Ensures("result != null")
public static Challenge getRandomChallenge()
{
int random = new Random().nextInt();
random = Math.abs(random);
return getChallenge(random);
}
@Ensures("result != null")
public static Challenge getChallenge(int number)
{
Challenge result;
switch(number % 3)
{
case 0 : result = getTestChallenge(); break;
case 1 : result = getIPChallenge(); break;
case 2 : result = getTestChallenge2(); break;
default : result = new Challenge(); break;
}
return result;
}
}