Formatting
This commit is contained in:
		
							parent
							
								
									dae126f721
								
							
						
					
					
						commit
						66ff5c2efd
					
				
					 6 changed files with 242 additions and 224 deletions
				
			
		| 
						 | 
				
			
			@ -22,7 +22,8 @@ public class Main {
 | 
			
		|||
    private static File getRootFolder() {
 | 
			
		||||
        try {
 | 
			
		||||
            File root;
 | 
			
		||||
            String runningJarPath = Main.class.getProtectionDomain().getCodeSource().getLocation().toURI().getPath().replaceAll("\\\\", "/");
 | 
			
		||||
            String runningJarPath = Main.class.getProtectionDomain().getCodeSource().getLocation().toURI().getPath()
 | 
			
		||||
                    .replaceAll("\\\\", "/");
 | 
			
		||||
            int lastIndexOf = runningJarPath.lastIndexOf("/target/");
 | 
			
		||||
            if (lastIndexOf < 0) {
 | 
			
		||||
                root = new File("");
 | 
			
		||||
| 
						 | 
				
			
			@ -63,8 +64,8 @@ public class Main {
 | 
			
		|||
        Path tempPath = Files.createTempDirectory("tomcat-base-dir");
 | 
			
		||||
        tomcat.setBaseDir(tempPath.toString());
 | 
			
		||||
 | 
			
		||||
        //The port that we should run on can be set into an environment variable
 | 
			
		||||
        //Look for that variable and default to 8080 if it isn't there.
 | 
			
		||||
        // The port that we should run on can be set into an environment variable
 | 
			
		||||
        // Look for that variable and default to 8080 if it isn't there.
 | 
			
		||||
        String webPort = System.getenv("PORT");
 | 
			
		||||
        if (webPort == null || webPort.isEmpty()) {
 | 
			
		||||
            webPort = "8080";
 | 
			
		||||
| 
						 | 
				
			
			@ -79,7 +80,8 @@ public class Main {
 | 
			
		|||
        }
 | 
			
		||||
        StandardContext ctx = (StandardContext) tomcat.addWebapp("", webContentFolder.getAbsolutePath());
 | 
			
		||||
        ctx.setDocBase(webContentFolder.getAbsolutePath() + File.separator + "static");
 | 
			
		||||
        //Set execution independent of current thread context classloader (compatibility with exec:java mojo)
 | 
			
		||||
        // Set execution independent of current thread context classloader
 | 
			
		||||
        // (compatibility with exec:java mojo)
 | 
			
		||||
        ctx.setParentClassLoader(Main.class.getClassLoader());
 | 
			
		||||
 | 
			
		||||
        System.out.println("configuring app with basedir: " + webContentFolder.getAbsolutePath());
 | 
			
		||||
| 
						 | 
				
			
			@ -91,16 +93,19 @@ public class Main {
 | 
			
		|||
 | 
			
		||||
        WebResourceSet resourceSet;
 | 
			
		||||
        if (additionWebInfClassesFolder.exists()) {
 | 
			
		||||
            resourceSet = new DirResourceSet(resources, "/WEB-INF/classes", additionWebInfClassesFolder.getAbsolutePath(), "/");
 | 
			
		||||
            System.out.println("loading WEB-INF resources from as '" + additionWebInfClassesFolder.getAbsolutePath() + "'");
 | 
			
		||||
            resourceSet = new DirResourceSet(resources, "/WEB-INF/classes",
 | 
			
		||||
                    additionWebInfClassesFolder.getAbsolutePath(), "/");
 | 
			
		||||
            System.out.println(
 | 
			
		||||
                    "loading WEB-INF resources from as '" + additionWebInfClassesFolder.getAbsolutePath() + "'");
 | 
			
		||||
        } else {
 | 
			
		||||
            resourceSet = new EmptyResourceSet(resources);
 | 
			
		||||
        }
 | 
			
		||||
        resources.addPreResources(resourceSet);
 | 
			
		||||
        resources.addPreResources(new DirResourceSet(resources, "/WEB-INF/jsp", webContentFolder.getAbsolutePath() + File.separator + "jsp", "/"));
 | 
			
		||||
        resources.addPreResources(new DirResourceSet(resources, "/WEB-INF/jsp",
 | 
			
		||||
                webContentFolder.getAbsolutePath() + File.separator + "jsp", "/"));
 | 
			
		||||
        ctx.setResources(resources);
 | 
			
		||||
        tomcat.getConnector();
 | 
			
		||||
    
 | 
			
		||||
 | 
			
		||||
        tomcat.start();
 | 
			
		||||
        System.out.println("Listening to port " + webPort);
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -4,6 +4,7 @@ import java.util.List;
 | 
			
		|||
 | 
			
		||||
public class HelloJspViewModel {
 | 
			
		||||
    private final List<Integer> data;
 | 
			
		||||
 | 
			
		||||
    public HelloJspViewModel(List<Integer> data) {
 | 
			
		||||
        this.data = data;
 | 
			
		||||
    }
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -10,103 +10,111 @@ import javax.servlet.http.HttpSession;
 | 
			
		|||
import javax.servlet.http.HttpServletRequest;
 | 
			
		||||
import javax.servlet.http.HttpServletResponse;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Servlet implementation class Survey.
 | 
			
		||||
 */
 | 
			
		||||
@WebServlet("/Dump")
 | 
			
		||||
public class Dump extends HttpServlet {
 | 
			
		||||
	private static final long serialVersionUID = 1L;
 | 
			
		||||
	
 | 
			
		||||
	// Define states 
 | 
			
		||||
 | 
			
		||||
	// Define states
 | 
			
		||||
	private static final int NEED_NAME = 0;
 | 
			
		||||
	private static final int NEED_PROJECT_DATA = 2;
 | 
			
		||||
	
 | 
			
		||||
	private FormGenerator formGenerator = new FormGenerator(); 
 | 
			
		||||
	
 | 
			
		||||
		
 | 
			
		||||
    /**
 | 
			
		||||
     * Default constructor. 
 | 
			
		||||
     */
 | 
			
		||||
    public Dump() {
 | 
			
		||||
    }
 | 
			
		||||
    
 | 
			
		||||
    /*
 | 
			
		||||
     * Checks first if name includes characters (i.e. is longer than zero characters) and then 
 | 
			
		||||
     * if so if the name is possible to add to 
 | 
			
		||||
     * the database. It is not possible to add an already existing name to the database. 
 | 
			
		||||
     */
 | 
			
		||||
    boolean nameOk(Database db, String name){
 | 
			
		||||
    	boolean result = !name.equals("");
 | 
			
		||||
    	if (result) result = db.addName(name);
 | 
			
		||||
    	return result;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
	boolean answerOk(Database db, String answerOne, String answerTwo, String answerThree, String answerFour) {
 | 
			
		||||
		boolean result = !answerOne.equals("") && !answerTwo.equals("") && !answerThree.equals("") && !answerFour.equals("");
 | 
			
		||||
		if(result) result = db.addAnswer(answerFour, answerOne, answerTwo, answerThree, answerFour);
 | 
			
		||||
		return result;
 | 
			
		||||
	}
 | 
			
		||||
    
 | 
			
		||||
    /*
 | 
			
		||||
     * Checks if a value entered as answer is OK. Answers should be between 1 and 10.
 | 
			
		||||
     */
 | 
			
		||||
    boolean valueOk(int value){
 | 
			
		||||
    	return value > 0 && value <11;
 | 
			
		||||
    }
 | 
			
		||||
        
 | 
			
		||||
	protected boolean updateAnswers(String answerOne, String answerTwo) {
 | 
			
		||||
		return true;
 | 
			
		||||
	}	
 | 
			
		||||
	private FormGenerator formGenerator = new FormGenerator();
 | 
			
		||||
 | 
			
		||||
	/**
 | 
			
		||||
	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
 | 
			
		||||
	 * Default constructor.
 | 
			
		||||
	 */
 | 
			
		||||
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
 | 
			
		||||
		// Try with resources to create a connection, will ensure close is always called.
 | 
			
		||||
		try(Database db = new Database()) {
 | 
			
		||||
	public Dump() {
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	/*
 | 
			
		||||
	 * Checks first if name includes characters (i.e. is longer than zero
 | 
			
		||||
	 * characters) and then
 | 
			
		||||
	 * if so if the name is possible to add to
 | 
			
		||||
	 * the database. It is not possible to add an already existing name to the
 | 
			
		||||
	 * database.
 | 
			
		||||
	 */
 | 
			
		||||
	boolean nameOk(Database db, String name) {
 | 
			
		||||
		boolean result = !name.equals("");
 | 
			
		||||
		if (result)
 | 
			
		||||
			result = db.addName(name);
 | 
			
		||||
		return result;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	boolean answerOk(Database db, String answerOne, String answerTwo, String answerThree, String answerFour) {
 | 
			
		||||
		boolean result = !answerOne.equals("") && !answerTwo.equals("") && !answerThree.equals("")
 | 
			
		||||
				&& !answerFour.equals("");
 | 
			
		||||
		if (result)
 | 
			
		||||
			result = db.addAnswer(answerFour, answerOne, answerTwo, answerThree, answerFour);
 | 
			
		||||
		return result;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	/*
 | 
			
		||||
	 * Checks if a value entered as answer is OK. Answers should be between 1 and
 | 
			
		||||
	 * 10.
 | 
			
		||||
	 */
 | 
			
		||||
	boolean valueOk(int value) {
 | 
			
		||||
		return value > 0 && value < 11;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	protected boolean updateAnswers(String answerOne, String answerTwo) {
 | 
			
		||||
		return true;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	/**
 | 
			
		||||
	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse
 | 
			
		||||
	 *      response)
 | 
			
		||||
	 */
 | 
			
		||||
	protected void doGet(HttpServletRequest request, HttpServletResponse response)
 | 
			
		||||
			throws ServletException, IOException {
 | 
			
		||||
		// Try with resources to create a connection, will ensure close is always
 | 
			
		||||
		// called.
 | 
			
		||||
		try (Database db = new Database()) {
 | 
			
		||||
 | 
			
		||||
			// Get the session
 | 
			
		||||
			HttpSession session = request.getSession(true);
 | 
			
		||||
			
 | 
			
		||||
 | 
			
		||||
			int state = 0;
 | 
			
		||||
			String name;
 | 
			
		||||
			boolean sessionShouldBeEnded = false;
 | 
			
		||||
			
 | 
			
		||||
 | 
			
		||||
			// Decide which state the session is in
 | 
			
		||||
			if (session.isNew())
 | 
			
		||||
				state = NEED_NAME;
 | 
			
		||||
			else {
 | 
			
		||||
				state = (Integer) session.getAttribute("state");
 | 
			
		||||
			}
 | 
			
		||||
			
 | 
			
		||||
			// Get a writer, which will be used to write the next page for the user 
 | 
			
		||||
 | 
			
		||||
			// Get a writer, which will be used to write the next page for the user
 | 
			
		||||
			PrintWriter out = response.getWriter();
 | 
			
		||||
			
 | 
			
		||||
 | 
			
		||||
			// Start the page, print the HTML header and start the body part of the page
 | 
			
		||||
			out.println("<html>");
 | 
			
		||||
			out.println("<head><title> FANTASTIC WEB APPLICATION </title></head>");
 | 
			
		||||
			out.println("<body>");
 | 
			
		||||
			
 | 
			
		||||
 | 
			
		||||
			// Save the state in the session until next time doGet is requested
 | 
			
		||||
			session.setAttribute("state", state);
 | 
			
		||||
		
 | 
			
		||||
 | 
			
		||||
			// Print the end of the HTML-page
 | 
			
		||||
			out.println("</body></html>");
 | 
			
		||||
			
 | 
			
		||||
 | 
			
		||||
			if (sessionShouldBeEnded)
 | 
			
		||||
				session.invalidate();        		    
 | 
			
		||||
		} catch(SQLException ex) {
 | 
			
		||||
				session.invalidate();
 | 
			
		||||
		} catch (SQLException ex) {
 | 
			
		||||
			// If Database.close for any reason fails.
 | 
			
		||||
			throw new ServletException(ex);
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	/**
 | 
			
		||||
	 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
 | 
			
		||||
	 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse
 | 
			
		||||
	 *      response)
 | 
			
		||||
	 */
 | 
			
		||||
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
 | 
			
		||||
	protected void doPost(HttpServletRequest request, HttpServletResponse response)
 | 
			
		||||
			throws ServletException, IOException {
 | 
			
		||||
		doGet(request, response);
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,60 +1,59 @@
 | 
			
		|||
package servlet;
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * This class provides forms to be displayed to the user
 | 
			
		||||
 */
 | 
			
		||||
public class FormGenerator {
 | 
			
		||||
	
 | 
			
		||||
 | 
			
		||||
    private String formElement(String par) {
 | 
			
		||||
    	return '"' + par + '"';
 | 
			
		||||
    }
 | 
			
		||||
    
 | 
			
		||||
    
 | 
			
		||||
    /*
 | 
			
		||||
     * Form for requesting user name
 | 
			
		||||
     */
 | 
			
		||||
    public String nameRequestForm() {
 | 
			
		||||
    	String html = "Please enter your name";
 | 
			
		||||
    	html += "<p> <form name=" + formElement("input");
 | 
			
		||||
    	//html += " action=" + formElement(myURL); 
 | 
			
		||||
    	html += " method=" + formElement("get");
 | 
			
		||||
    	html += "<p> Name: <input type=" + formElement("text") + " name=" + formElement("user") + '>';
 | 
			
		||||
    	html += "<p> <input type=" + formElement("submit") + "value=" + formElement("Submit") + '>';
 | 
			
		||||
    	return html;
 | 
			
		||||
    }
 | 
			
		||||
	private String formElement(String par) {
 | 
			
		||||
		return '"' + par + '"';
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	/*
 | 
			
		||||
	 * Form for requesting user name
 | 
			
		||||
	 */
 | 
			
		||||
	public String nameRequestForm() {
 | 
			
		||||
		String html = "Please enter your name";
 | 
			
		||||
		html += "<p> <form name=" + formElement("input");
 | 
			
		||||
		// html += " action=" + formElement(myURL);
 | 
			
		||||
		html += " method=" + formElement("get");
 | 
			
		||||
		html += "<p> Name: <input type=" + formElement("text") + " name=" + formElement("user") + '>';
 | 
			
		||||
		html += "<p> <input type=" + formElement("submit") + "value=" + formElement("Submit") + '>';
 | 
			
		||||
		return html;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	public String projectDetailsRequestForm() {
 | 
			
		||||
		String[][] variables = {{"Project Name", "proj_name"}, {"Project Description", "proj_desc"}};
 | 
			
		||||
		String html = "<p>Please give us some information about your project";    	
 | 
			
		||||
		String[][] variables = { { "Project Name", "proj_name" }, { "Project Description", "proj_desc" } };
 | 
			
		||||
		String html = "<p>Please give us some information about your project";
 | 
			
		||||
		html += "<p> <form name=" + formElement("input");
 | 
			
		||||
		html += " method=" + formElement("get");
 | 
			
		||||
		for (int i=0; i<2; i++) {
 | 
			
		||||
		for (int i = 0; i < 2; i++) {
 | 
			
		||||
			html += "<p> " + variables[i][0];
 | 
			
		||||
			html += ": <input type="+ formElement("text") + "name =" + variables[i][1]  + '>';
 | 
			
		||||
			html += ": <input type=" + formElement("text") + "name =" + variables[i][1] + '>';
 | 
			
		||||
		}
 | 
			
		||||
		html += "<p> <input type=" + formElement("submit") + "value=" + formElement("Submit") + '>';
 | 
			
		||||
		return html;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	/*
 | 
			
		||||
	 * Form for requesting success with respect to four factors
 | 
			
		||||
	 */
 | 
			
		||||
	public String projectDataRequestForm() {
 | 
			
		||||
		String[][] variables = {
 | 
			
		||||
				{ "Met operational performance", "s11" },
 | 
			
		||||
				{ "Met technical performance", "s12" },
 | 
			
		||||
				{ "Met project schedule", "s13" },
 | 
			
		||||
				{ "Stayed on budget", "s14" } };
 | 
			
		||||
		String html = "<p>Please assess the importance of the following factors (1-10, where 1 is least important)";
 | 
			
		||||
		html += "<p> <form name=" + formElement("input2");
 | 
			
		||||
		html += " method=" + formElement("get");
 | 
			
		||||
		// html += " action=" + formElement(myURL);
 | 
			
		||||
		for (int i = 0; i < 4; i++) {
 | 
			
		||||
			html += "<p> " + variables[i][0];
 | 
			
		||||
			html += ": <input type=" + formElement("text") + "name =" + variables[i][1] + '>';
 | 
			
		||||
		}
 | 
			
		||||
		html += "<p> <input type=" + formElement("submit") + "value=" + formElement("Submit") + '>';
 | 
			
		||||
		return html;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
    /*
 | 
			
		||||
     * Form for requesting success with respect to four factors
 | 
			
		||||
     */
 | 
			
		||||
    public String projectDataRequestForm() {
 | 
			
		||||
    	String[][] variables = {
 | 
			
		||||
    			{"Met operational performance", "s11"},
 | 
			
		||||
                {"Met technical performance", "s12"},
 | 
			
		||||
                {"Met project schedule", "s13"},
 | 
			
		||||
                {"Stayed on budget", "s14"}};
 | 
			
		||||
    	String html = "<p>Please assess the importance of the following factors (1-10, where 1 is least important)";    	
 | 
			
		||||
    	html += "<p> <form name=" + formElement("input2");
 | 
			
		||||
    	html += " method=" + formElement("get");
 | 
			
		||||
    	//html += " action=" + formElement(myURL);
 | 
			
		||||
    	for (int i=0; i<4; i++) {
 | 
			
		||||
    		html += "<p> " + variables[i][0];
 | 
			
		||||
    		html += ": <input type="+ formElement("text") + "name =" + variables[i][1]  + '>';
 | 
			
		||||
    	}
 | 
			
		||||
    	html += "<p> <input type=" + formElement("submit") + "value=" + formElement("Submit") + '>';
 | 
			
		||||
    	return html;
 | 
			
		||||
    }
 | 
			
		||||
	
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -14,12 +14,12 @@ import java.util.*;
 | 
			
		|||
public class HelloJsp extends HttpServlet {
 | 
			
		||||
    @Override
 | 
			
		||||
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
 | 
			
		||||
        
 | 
			
		||||
 | 
			
		||||
        RequestDispatcher requestDispatcher = this.getServletContext().getRequestDispatcher("/WEB-INF/jsp/example.jsp");
 | 
			
		||||
        
 | 
			
		||||
 | 
			
		||||
        req.setAttribute("simple", "example");
 | 
			
		||||
        req.setAttribute("complex", new model.HelloJspViewModel(List.of(5,4,3,2,1)));
 | 
			
		||||
        
 | 
			
		||||
        req.setAttribute("complex", new model.HelloJspViewModel(List.of(5, 4, 3, 2, 1)));
 | 
			
		||||
 | 
			
		||||
        requestDispatcher.include(req, resp);
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -10,165 +10,170 @@ import javax.servlet.http.HttpSession;
 | 
			
		|||
import javax.servlet.http.HttpServletRequest;
 | 
			
		||||
import javax.servlet.http.HttpServletResponse;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Servlet implementation class Survey.
 | 
			
		||||
 */
 | 
			
		||||
@WebServlet("/Survey")
 | 
			
		||||
public class Survey extends HttpServlet {
 | 
			
		||||
	private static final long serialVersionUID = 1L;
 | 
			
		||||
	
 | 
			
		||||
	// Define states 
 | 
			
		||||
 | 
			
		||||
	// Define states
 | 
			
		||||
	private static final int NEED_NAME = 0;
 | 
			
		||||
	private static final int NEED_PROJECT_INFO = 1;
 | 
			
		||||
	private static final int NEED_PROJECT_DATA = 2;
 | 
			
		||||
	
 | 
			
		||||
	private FormGenerator formGenerator = new FormGenerator(); 
 | 
			
		||||
	
 | 
			
		||||
		
 | 
			
		||||
    /**
 | 
			
		||||
     * Default constructor. 
 | 
			
		||||
     */
 | 
			
		||||
    public Survey() {
 | 
			
		||||
    }
 | 
			
		||||
    
 | 
			
		||||
    /*
 | 
			
		||||
     * Checks first if name includes characters (i.e. is longer than zero characters) and then 
 | 
			
		||||
     * if so if the name is possible to add to 
 | 
			
		||||
     * the database. It is not possible to add an already existing name to the database. 
 | 
			
		||||
     */
 | 
			
		||||
    boolean nameOk(Database db, String name){
 | 
			
		||||
    	boolean result = !name.equals("");
 | 
			
		||||
    	if (result)
 | 
			
		||||
    		result = db.addName(name);
 | 
			
		||||
    	return result;
 | 
			
		||||
    }
 | 
			
		||||
    
 | 
			
		||||
    /*
 | 
			
		||||
     * Checks if a value entered as answer is OK. Answers should be between 1 and 10.
 | 
			
		||||
     */
 | 
			
		||||
    boolean valueOk(int value){
 | 
			
		||||
    	return value > 0 && value <11;
 | 
			
		||||
    }
 | 
			
		||||
        
 | 
			
		||||
 | 
			
		||||
	private FormGenerator formGenerator = new FormGenerator();
 | 
			
		||||
 | 
			
		||||
	/**
 | 
			
		||||
	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
 | 
			
		||||
	 * Default constructor.
 | 
			
		||||
	 */
 | 
			
		||||
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
 | 
			
		||||
		// Try with resources to create a connection, will ensure close is always called.
 | 
			
		||||
		try(Database db = new Database()) {
 | 
			
		||||
	public Survey() {
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	/*
 | 
			
		||||
	 * Checks first if name includes characters (i.e. is longer than zero
 | 
			
		||||
	 * characters) and then
 | 
			
		||||
	 * if so if the name is possible to add to
 | 
			
		||||
	 * the database. It is not possible to add an already existing name to the
 | 
			
		||||
	 * database.
 | 
			
		||||
	 */
 | 
			
		||||
	boolean nameOk(Database db, String name) {
 | 
			
		||||
		boolean result = !name.equals("");
 | 
			
		||||
		if (result)
 | 
			
		||||
			result = db.addName(name);
 | 
			
		||||
		return result;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	/*
 | 
			
		||||
	 * Checks if a value entered as answer is OK. Answers should be between 1 and
 | 
			
		||||
	 * 10.
 | 
			
		||||
	 */
 | 
			
		||||
	boolean valueOk(int value) {
 | 
			
		||||
		return value > 0 && value < 11;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	/**
 | 
			
		||||
	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse
 | 
			
		||||
	 *      response)
 | 
			
		||||
	 */
 | 
			
		||||
	protected void doGet(HttpServletRequest request, HttpServletResponse response)
 | 
			
		||||
			throws ServletException, IOException {
 | 
			
		||||
		// Try with resources to create a connection, will ensure close is always
 | 
			
		||||
		// called.
 | 
			
		||||
		try (Database db = new Database()) {
 | 
			
		||||
 | 
			
		||||
			// Get the session
 | 
			
		||||
			HttpSession session = request.getSession(true);
 | 
			
		||||
			
 | 
			
		||||
 | 
			
		||||
			int state = 0;
 | 
			
		||||
			String name;
 | 
			
		||||
			boolean sessionShouldBeEnded = false;
 | 
			
		||||
			
 | 
			
		||||
 | 
			
		||||
			// Decide which state the session is in
 | 
			
		||||
			if (session.isNew())
 | 
			
		||||
				state = NEED_NAME;
 | 
			
		||||
			else {
 | 
			
		||||
				state = (Integer) session.getAttribute("state");
 | 
			
		||||
			}
 | 
			
		||||
			
 | 
			
		||||
			// Get a writer, which will be used to write the next page for the user 
 | 
			
		||||
 | 
			
		||||
			// Get a writer, which will be used to write the next page for the user
 | 
			
		||||
			PrintWriter out = response.getWriter();
 | 
			
		||||
			
 | 
			
		||||
 | 
			
		||||
			// Start the page, print the HTML header and start the body part of the page
 | 
			
		||||
			out.println("<html>");
 | 
			
		||||
			out.println("<head><title> FANTASTIC WEB APPLICATION </title></head>");
 | 
			
		||||
			out.println("<body>");
 | 
			
		||||
			
 | 
			
		||||
			switch (state){
 | 
			
		||||
			case NEED_NAME: // First state: get user name
 | 
			
		||||
				name = request.getParameter("user"); // get the string that the user entered in the form
 | 
			
		||||
				if (name != null) {
 | 
			
		||||
					if (nameOk(db, name)) {
 | 
			
		||||
						session.setAttribute("name", name);  // save the name in the session
 | 
			
		||||
						state = NEED_PROJECT_INFO;
 | 
			
		||||
 | 
			
		||||
			switch (state) {
 | 
			
		||||
				case NEED_NAME: // First state: get user name
 | 
			
		||||
					name = request.getParameter("user"); // get the string that the user entered in the form
 | 
			
		||||
					if (name != null) {
 | 
			
		||||
						if (nameOk(db, name)) {
 | 
			
		||||
							session.setAttribute("name", name); // save the name in the session
 | 
			
		||||
							state = NEED_PROJECT_INFO;
 | 
			
		||||
							out.println(formGenerator.projectDetailsRequestForm());
 | 
			
		||||
						} else {
 | 
			
		||||
							out.println("That was not a valid name. Maybe it is already taken by someone else.");
 | 
			
		||||
							out.println(formGenerator.nameRequestForm());
 | 
			
		||||
						}
 | 
			
		||||
					} else { // name was null, probably because no form has been filled out yet. Display
 | 
			
		||||
								// form.
 | 
			
		||||
						out.println(formGenerator.nameRequestForm());
 | 
			
		||||
					}
 | 
			
		||||
					break;
 | 
			
		||||
				case NEED_PROJECT_INFO:
 | 
			
		||||
					name = (String) session.getAttribute("name");
 | 
			
		||||
					String description = request.getParameter("proj_desc");
 | 
			
		||||
					String proj_name = request.getParameter("proj_name");
 | 
			
		||||
					System.out.println("description: " + description);
 | 
			
		||||
					if (description != null) {
 | 
			
		||||
						state = NEED_PROJECT_DATA;
 | 
			
		||||
						db.addProjectDetails(proj_name, description);
 | 
			
		||||
						out.println(formGenerator.projectDataRequestForm());
 | 
			
		||||
					} else {
 | 
			
		||||
						out.println(formGenerator.projectDetailsRequestForm());
 | 
			
		||||
					}
 | 
			
		||||
					break;
 | 
			
		||||
				case NEED_PROJECT_DATA:
 | 
			
		||||
					int s11 = 0, s12 = 0, s13 = 0, s14 = 0;
 | 
			
		||||
					name = (String) session.getAttribute("name");
 | 
			
		||||
					String s11String = request.getParameter("s11");
 | 
			
		||||
					String s14String = request.getParameter("s14");
 | 
			
		||||
					String s12String = request.getParameter("s12");
 | 
			
		||||
					String s13String = request.getParameter("s13");
 | 
			
		||||
					if (s11String == null)
 | 
			
		||||
						out.println(formGenerator.projectDataRequestForm()); // first time
 | 
			
		||||
					else {
 | 
			
		||||
						out.println("That was not a valid name. Maybe it is already taken by someone else.");
 | 
			
		||||
						out.println(formGenerator.nameRequestForm());        			
 | 
			
		||||
					}
 | 
			
		||||
				}else{ // name was null, probably because no form has been filled out yet. Display form.
 | 
			
		||||
					out.println(formGenerator.nameRequestForm());
 | 
			
		||||
				}
 | 
			
		||||
				break;
 | 
			
		||||
			case NEED_PROJECT_INFO:
 | 
			
		||||
				name = (String) session.getAttribute("name");
 | 
			
		||||
				String description = request.getParameter("proj_desc");
 | 
			
		||||
				String proj_name = request.getParameter("proj_name");
 | 
			
		||||
				System.out.println("description: " + description);
 | 
			
		||||
				if (description != null) {
 | 
			
		||||
					state = NEED_PROJECT_DATA;
 | 
			
		||||
					db.addProjectDetails(proj_name, description);
 | 
			
		||||
					out.println(formGenerator.projectDataRequestForm());
 | 
			
		||||
				} else {
 | 
			
		||||
					out.println(formGenerator.projectDetailsRequestForm());
 | 
			
		||||
				}
 | 
			
		||||
				break;
 | 
			
		||||
			case NEED_PROJECT_DATA:
 | 
			
		||||
				int s11 = 0, s12 = 0, s13 = 0, s14 = 0;
 | 
			
		||||
				name = (String) session.getAttribute("name");
 | 
			
		||||
				String s11String = request.getParameter("s11");
 | 
			
		||||
				String s14String = request.getParameter("s14");
 | 
			
		||||
				String s12String = request.getParameter("s12");
 | 
			
		||||
				String s13String = request.getParameter("s13");
 | 
			
		||||
				if (s11String==null) 
 | 
			
		||||
					out.println(formGenerator.projectDataRequestForm()); // first time
 | 
			
		||||
				else {
 | 
			
		||||
					boolean valuesOk = true;
 | 
			
		||||
					try {
 | 
			
		||||
						s11 = Integer.parseInt(s11String);
 | 
			
		||||
						s12 = Integer.parseInt(s12String);
 | 
			
		||||
						s13 = Integer.parseInt(s13String);
 | 
			
		||||
						s14 = Integer.parseInt(s14String);
 | 
			
		||||
						boolean valuesOk = true;
 | 
			
		||||
						try {
 | 
			
		||||
							s11 = Integer.parseInt(s11String);
 | 
			
		||||
							s12 = Integer.parseInt(s12String);
 | 
			
		||||
							s13 = Integer.parseInt(s13String);
 | 
			
		||||
							s14 = Integer.parseInt(s14String);
 | 
			
		||||
 | 
			
		||||
						String str = s11String+s12String+s13String;
 | 
			
		||||
					} catch (NumberFormatException e) {
 | 
			
		||||
						valuesOk = false;
 | 
			
		||||
							String str = s11String + s12String + s13String;
 | 
			
		||||
						} catch (NumberFormatException e) {
 | 
			
		||||
							valuesOk = false;
 | 
			
		||||
						}
 | 
			
		||||
						valuesOk = valuesOk && valueOk(s11) && valueOk(s12) && valueOk(s13) && valueOk(s14);
 | 
			
		||||
 | 
			
		||||
						// display the next page
 | 
			
		||||
						if (valuesOk) {
 | 
			
		||||
							int sum = s11 + s12 + s13 + s14;
 | 
			
		||||
							db.addAnswer(name, s11String, s12String, s13String, s14String);
 | 
			
		||||
							// This is only to show that it is possible to do something with the values.
 | 
			
		||||
							// It is of course meaningless to calculate the sum.
 | 
			
		||||
							out.println("<p> Hello " + name);
 | 
			
		||||
							out.println("<p> The sum of the values you entered is " + sum);
 | 
			
		||||
							sessionShouldBeEnded = true;
 | 
			
		||||
						} else {
 | 
			
		||||
							out.println("The values you entered were not OK");
 | 
			
		||||
							out.println(formGenerator.projectDataRequestForm());
 | 
			
		||||
						}
 | 
			
		||||
					}
 | 
			
		||||
					valuesOk = valuesOk && valueOk(s11) && valueOk(s12) && valueOk(s13) && valueOk(s14);
 | 
			
		||||
					
 | 
			
		||||
					// display the next page
 | 
			
		||||
					if (valuesOk){
 | 
			
		||||
						int sum = s11 + s12 + s13 + s14;
 | 
			
		||||
						db.addAnswer(name, s11String, s12String, s13String, s14String);
 | 
			
		||||
						// This is only to show that it is possible to do something with the values. 
 | 
			
		||||
						// It is of course meaningless to calculate the sum. 
 | 
			
		||||
						out.println("<p> Hello " + name);
 | 
			
		||||
						out.println("<p> The sum of the values you entered is " + sum);
 | 
			
		||||
						sessionShouldBeEnded = true;
 | 
			
		||||
					} else { 
 | 
			
		||||
						out.println("The values you entered were not OK");
 | 
			
		||||
						out.println(formGenerator.projectDataRequestForm());          
 | 
			
		||||
					}
 | 
			
		||||
				}
 | 
			
		||||
				break;	        	
 | 
			
		||||
					break;
 | 
			
		||||
			}
 | 
			
		||||
			
 | 
			
		||||
 | 
			
		||||
			// Save the state in the session until next time doGet is requested
 | 
			
		||||
			session.setAttribute("state", state);
 | 
			
		||||
		
 | 
			
		||||
 | 
			
		||||
			// Print the end of the HTML-page
 | 
			
		||||
			out.println("</body></html>");
 | 
			
		||||
			
 | 
			
		||||
 | 
			
		||||
			if (sessionShouldBeEnded)
 | 
			
		||||
				session.invalidate();        		    
 | 
			
		||||
		} catch(SQLException ex) {
 | 
			
		||||
				session.invalidate();
 | 
			
		||||
		} catch (SQLException ex) {
 | 
			
		||||
			// If Database.close for any reason fails.
 | 
			
		||||
			throw new ServletException(ex);
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	/**
 | 
			
		||||
	 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
 | 
			
		||||
	 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse
 | 
			
		||||
	 *      response)
 | 
			
		||||
	 */
 | 
			
		||||
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
 | 
			
		||||
	protected void doPost(HttpServletRequest request, HttpServletResponse response)
 | 
			
		||||
			throws ServletException, IOException {
 | 
			
		||||
		doGet(request, response);
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue