mirror of
				https://github.com/fooflington/wordsearch.git
				synced 2025-10-30 04:18:32 +00:00 
			
		
		
		
	working webapp
This commit is contained in:
		
							
								
								
									
										3
									
								
								uk/org/mafoo/wordsearch/Direction.java
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										3
									
								
								uk/org/mafoo/wordsearch/Direction.java
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,3 @@ | ||||
| package uk.org.mafoo.wordsearch; | ||||
|  | ||||
| enum Direction { N, NE, E, SE, S, SW, W, NW; }; | ||||
| @@ -1,8 +1,9 @@ | ||||
| package uk.org.mafoo.wordsearch; | ||||
|  | ||||
| import java.io.*; | ||||
| import java.util.*; | ||||
|  | ||||
| class GridFactory { | ||||
| public class GridFactory { | ||||
|  | ||||
| 	static Random rnd = new Random(); | ||||
| 	static final int MAX_TRIES = 500; | ||||
| @@ -46,105 +47,19 @@ class GridFactory { | ||||
| 		return chars[drng.getDistributedRandomNumber()]; | ||||
| 	} | ||||
|  | ||||
| 	public static void main(String[] args) { | ||||
| 	public static void main(String[] args) throws IOException { | ||||
| 		// Test invocation | ||||
| 		char[][] g = makeGrid(new String[] { | ||||
| 			"Aberdeenshire",  | ||||
| 			"Anglesey",  | ||||
| 			"Angus",  | ||||
| 			"Antrim",  | ||||
| 			"Argyll",  | ||||
| 			"Armagh",  | ||||
| 			"Ayrshire",  | ||||
| 			"Banffshire",  | ||||
| 			"Bedfordshire",  | ||||
| 			"Berkshire",  | ||||
| 			"Berwickshire",  | ||||
| 			"Brecknockshire",  | ||||
| 			"Buckinghamshire",  | ||||
| 			"Buteshire",  | ||||
| 			"Caernarfonshire",  | ||||
| 			"Caithness",  | ||||
| 			"Cambridgeshire",  | ||||
| 			"Cardiganshire",  | ||||
| 			"Carmarthenshire",  | ||||
| 			"Cheshire",  | ||||
| 			"Clackmannanshire",  | ||||
| 			"Cornwall",  | ||||
| 			"Cromartyshire",  | ||||
| 			"Cumberland",  | ||||
| 			"Denbighshire",  | ||||
| 			"Derbyshire",  | ||||
| 			"Devon",  | ||||
| 			"Dorset",  | ||||
| 			"Down",  | ||||
| 			"Dumbartonshire",  | ||||
| 			"Dumfriesshire",  | ||||
| 			"Durham",  | ||||
| 			"East Lothian",  | ||||
| 			"Essex",  | ||||
| 			"Fermanagh",  | ||||
| 			"Fife",  | ||||
| 			"Flintshire",  | ||||
| 			"Glamorgan",  | ||||
| 			"Gloucestershire",  | ||||
| 			"Hampshire",  | ||||
| 			"Herefordshire",  | ||||
| 			"Hertfordshire",  | ||||
| 			"Huntingdonshire",  | ||||
| 			"Invernessshire",  | ||||
| 			"Kent",  | ||||
| 			"Kincardineshire",  | ||||
| 			"Kirkcudbrightshire",  | ||||
| 			"Lanarkshire",  | ||||
| 			"Lancashire",  | ||||
| 			"Leicestershire",  | ||||
| 			"Lincolnshire",  | ||||
| 			"Londonderry",  | ||||
| 			"Merionethshire",  | ||||
| 			"Middlesex",  | ||||
| 			"Midlothian",  | ||||
| 			"Monmouthshire",  | ||||
| 			"Montgomeryshire",  | ||||
| 			"Morayshire",  | ||||
| 			"Nairnshire",  | ||||
| 			"Norfolk",  | ||||
| 			"Northamptonshire",  | ||||
| 			"Northumberland",  | ||||
| 			"Nottinghamshire",  | ||||
| 			"Orkney",  | ||||
| 			"Oxfordshire",  | ||||
| 			"Peeblesshire",  | ||||
| 			"Pembrokeshire",  | ||||
| 			"Perthshire",  | ||||
| 			"Radnorshire",  | ||||
| 			"Renfrewshire",  | ||||
| 			"Rossshire",  | ||||
| 			"Roxburghshire",  | ||||
| 			"Rutland",  | ||||
| 			"Selkirkshire",  | ||||
| 			"Shetland",  | ||||
| 			"Shropshire",  | ||||
| 			"Somerset",  | ||||
| 			"Staffordshire",  | ||||
| 			"Stirlingshire",  | ||||
| 			"Suffolk",  | ||||
| 			"Surrey",  | ||||
| 			"Sussex",  | ||||
| 			"Sutherland",  | ||||
| 			"Tyrone",  | ||||
| 			"Warwickshire",  | ||||
| 			"West Lothian",  | ||||
| 			"Westmorland",  | ||||
| 			"Wigtownshire",  | ||||
| 			"Wiltshire",  | ||||
| 			"Worcestershire",  | ||||
| 			"Yorkshire",  | ||||
| 		}, Integer.parseInt(args[0]), Integer.parseInt(args[1])); | ||||
| 		BufferedReader in = new BufferedReader(new InputStreamReader(System.in)); | ||||
| 		String s; | ||||
| 		List<String> words = new ArrayList<String>(); | ||||
|  | ||||
| 		while ((s = in.readLine()) != null && s.length() != 0) { | ||||
| 			words.add(s); | ||||
| 		} | ||||
| 		char[][] g = makeGrid(words, Integer.parseInt(args[0]), Integer.parseInt(args[1])); | ||||
| 		dump2d(g); | ||||
| 	} | ||||
|  | ||||
| 	private enum Direction { N, NE, E, SE, S, SW, W, NW; }; | ||||
| 	private static Direction[] directions = new Direction[] { Direction.N, Direction.NE, Direction.E, Direction.SE, Direction.S, Direction.SW, Direction.W, Direction.NW }; | ||||
| 	private static Direction getDirection() { | ||||
| 		return directions[rnd.nextInt(directions.length-1)]; | ||||
| @@ -236,7 +151,7 @@ class GridFactory { | ||||
| 		return x; | ||||
| 	} | ||||
|  | ||||
| 	public static char[][] makeGrid(String[] words, int height, int width) { | ||||
| 	public static char[][] makeGrid(List<String> words, int height, int width) { | ||||
| 		char[][] grid = new char[height][width]; | ||||
|  | ||||
| 		// Place words at random? | ||||
| @@ -252,6 +167,8 @@ class GridFactory { | ||||
| 					} | ||||
| 					tries++; | ||||
| 					// System.out.println("[" + word + "] Crossed over... retrying"); | ||||
| 				} finally { | ||||
| 					// Nothing | ||||
| 				} | ||||
| 			} | ||||
| 		} | ||||
|   | ||||
							
								
								
									
										13
									
								
								war/WEB-INF/web.xml
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										13
									
								
								war/WEB-INF/web.xml
									
									
									
									
									
										Executable file
									
								
							| @@ -0,0 +1,13 @@ | ||||
| <?xml version="1.0" encoding="ISO-8859-1" ?> | ||||
|  | ||||
| <web-app xmlns="http://java.sun.com/xml/ns/j2ee" | ||||
|     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" | ||||
|     xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd" | ||||
|     version="2.4"> | ||||
|  | ||||
|     <display-name>Wordsearch creator</display-name> | ||||
|     <description> | ||||
| 	Wordsearch building app | ||||
|     </description> | ||||
|  | ||||
| </web-app>  | ||||
							
								
								
									
										52
									
								
								war/build.jsp
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										52
									
								
								war/build.jsp
									
									
									
									
									
										Executable file
									
								
							| @@ -0,0 +1,52 @@ | ||||
| <html> | ||||
| <head> | ||||
| 	<title>Wordsearch builder</title> | ||||
| 	<style> | ||||
| 	table, th, td { | ||||
| 		border: 1px solid black; | ||||
| 		border-collapse: collapse; | ||||
| 		padding: 2px 4px; | ||||
| 	} | ||||
| 	</style> | ||||
| </head> | ||||
| <%@ page import="uk.org.mafoo.wordsearch.*" %> | ||||
| <%@ page import="java.util.*" %> | ||||
| <%@ page errorPage="error.jsp" %> | ||||
| <% | ||||
|  | ||||
| 	int height = Integer.parseInt(request.getParameter("height")); | ||||
| 	int width  = Integer.parseInt(request.getParameter("width")); | ||||
|  | ||||
| 	if (request.getParameter("words").length() > 2048) { throw new Exception("Input too large"); } | ||||
|  | ||||
| 	List<String> words = new ArrayList<String>(); | ||||
| 	for ( String line : request.getParameter("words").split("\r\n")) { | ||||
| 		words.add(line.trim()); | ||||
| 	} | ||||
|   	 | ||||
|   	char[][] grid = GridFactory.makeGrid(words, height, width); | ||||
| %> | ||||
| <body> | ||||
| <h1>Wordsearch builder</h1> | ||||
| <h2>Words</h2> | ||||
| <ul> | ||||
| <% for (String word : words) { %> | ||||
|    <li><%= word.trim() %></li> | ||||
| <% } %> | ||||
| </ul> | ||||
|  | ||||
| <h2>Grid</h2> | ||||
| <table style="font-family: monospace;"> | ||||
| <% for(char[] row : grid) { %> | ||||
| 	<tr> | ||||
| 		<% for(char c : row) { %> | ||||
| 		<td><%= c %></td> | ||||
| 		<% } %> | ||||
| 	</tr> | ||||
| <% } %> | ||||
| </table> | ||||
| <footer> | ||||
| 	Generated | ||||
| </footer> | ||||
| </body> | ||||
| </html> | ||||
							
								
								
									
										6
									
								
								war/error.jsp
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										6
									
								
								war/error.jsp
									
									
									
									
									
										Executable file
									
								
							| @@ -0,0 +1,6 @@ | ||||
| <HTML> | ||||
| <BODY> | ||||
| <%@ page isErrorPage="true" %> | ||||
| Error: <%= exception %> | ||||
| </BODY> | ||||
| </HTML> | ||||
							
								
								
									
										26
									
								
								war/index.jsp
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										26
									
								
								war/index.jsp
									
									
									
									
									
										Executable file
									
								
							| @@ -0,0 +1,26 @@ | ||||
| <html> | ||||
| <head><title>Wordsearch builder</title></head> | ||||
| <body> | ||||
| <h1>Wordsearch builder</h1> | ||||
| <h2>Words</h2> | ||||
| <form action="build.jsp"> | ||||
| 	<textarea name="words" rows="10"> | ||||
| Kitchen | ||||
| Lounge | ||||
| Study | ||||
| Ballroom | ||||
| Conservatory | ||||
| Billiard Room | ||||
| Library | ||||
| Hall | ||||
| Dining Room | ||||
| 	</textarea> | ||||
| 	<br /> | ||||
| 	<input type="number" name="height" min="3" max="50" value="5" /> | ||||
| 	<input type="number" name="width" min="3" max="50" value="5" /> | ||||
| 	<input type="submit" value="Build!" /> | ||||
| </form> | ||||
|  | ||||
|  | ||||
| </body> | ||||
| </html> | ||||
		Reference in New Issue
	
	Block a user