Line 1: |
Line 1: |
| '''Part 1''' of the [[MeeshQuest]] project: | | '''Part 1''' of the [[MeeshQuest]] project: |
− | * Due Date: Monday June 14 + 24 hour grace period + ε | + | * Due Date: Either the date on the submit server or the date on the project spec, whichever is later |
− | * All part 1 files can be found [http://www.cs.umd.edu/users/meesh/420/part1/ here] | + | * All part 1 files can be found [https://www.cs.umd.edu/users/meesh/420/ProjectBook/part1/ here] |
− | * The official spec is [http://www.cs.umd.edu/users/meesh/420/part1/p12/ here]. Current version: Draft 1.2 | + | * The official spec is [https://www.cs.umd.edu/users/meesh/420/ProjectBook/part1/p11/ here] with name p1x, for the largest value of x in that directory. |
− | * Spec errata: [[Spec 1.1 Errata]] (errata left out of 1.2 spec still apply)
| + | * As always, the spec will freeze 1 week (5 days summer) prior to the due date. |
− | * As always, the spec will freeze 1 week prior to the due date. | |
| * [[Part 1 Test Files | Test Files]] | | * [[Part 1 Test Files | Test Files]] |
| | | |
Line 15: |
Line 14: |
| | | |
| == Data structures == | | == Data structures == |
− | # Data Dictionary ([http://java.sun.com/j2se/1.5.0/docs/api/java/util/TreeMap.html TreeMap] and [http://java.sun.com/j2se/1.5.0/docs/api/java/util/TreeSet.html TreeSet] for part 1) | + | #Data Dictionary ([http://java.sun.com/j2se/1.6.0/docs/api/java/util/TreeMap.html TreeMap] and [http://java.sun.com/j2se/1.6.0/docs/api/java/util/TreeSet.html TreeSet] for part 1) |
− | #* Related commands: | + | #*Related commands: |
| #** [[createCity]] | | #** [[createCity]] |
− | #** [[deleteCity]]
| |
| #** [[listCities]] | | #** [[listCities]] |
− | #** [[clearAll]]
| |
− | # Spatial Map ([[PR Quadtree]] for part 1)
| |
− | #* Related commands:
| |
− | #** [[deleteCity]] (if the city is mapped)
| |
− | #** [[mapCity]]
| |
− | #** [[unmapCity]]
| |
− | #** [[rangeCities]]
| |
− | #** [[nearestCity]]
| |
− | #** [[saveMap]]
| |
| #** [[clearAll]] | | #** [[clearAll]] |
| | | |
| == Commands == | | == Commands == |
− | The operations you will need to support can be gleaned from the [http://www.cs.umd.edu/users/meesh/420/part1/p12/node21.html input specification]: | + | The operations you will need to support can be gleaned from the spec: |
| | | |
− | * [[createCity]] and [[deleteCity]]: You will need to be able to register cities with and remove them from the data dictionary. No two cities can have the same coordinates or name. | + | * [[createCity]]: You will need to be able to register cities with the data dictionary. No two cities can have the same coordinates or name. |
− | * [[mapCity]] and [[unmapCity]]: These take a city that's already registered in the data dictionary and add it to or remove it from the spatial data structure. | + | * [[clearAll]]: Clears all of the data structures, removing all elements. |
| * [[listCities]]: Output a sorted (XML) list of cities in the data dictionary. | | * [[listCities]]: Output a sorted (XML) list of cities in the data dictionary. |
− | * [[rangeCities]]: This searches the spatial data structure for all cities within a given radius of a given point.
| |
− | * [[nearestCity]]: This finds the nearest city to a given point in the spatial map.
| |
− | * [[printPRQuadtree]]: This outputs an XML (textual) representation of the spatial map.
| |
− | * [[saveMap]]: This outputs a visual representation (an image) of the spatial data structure. See [http://wam.umd.edu/~bzoller/cmsc420/doc/cmsc420/drawing/CanvasPlus.html CanvasPlus].
| |
− | * [[clearAll]]: Clears all of the data structures, removing all elements.
| |
| | | |
| == Output == | | == Output == |
| | | |
− | The conventions in the spec can be found [http://www.cs.umd.edu/users/meesh/420/part1/p12/node17.html here] | + | The general conventions in the spec can be found [https://www.cs.umd.edu/users/meesh/420/ProjectBook/part1/p11/node20.html here] and the more specific directions for each commands can be found [https://www.cs.umd.edu/users/meesh/420/ProjectBook/part1/p11/node22.html here] |
− | * <[[success]]>: This is when your parser has sucessfully parsed and finished a command. | + | * '''<success>''': This is when your parser has successfully parsed and finished a command. |
− | * <[[error]]>: When an error occurs after attempting to run a command | + | * '''<error>''': When an error occurs after attempting to run a command |
− | * <[[fatal error]]>: There is a problem with the entire document | + | * '''<fatalError>''': There is a problem with the entire document |
− | * <[[undefined error]]>: Defalut error, when we aren't sure exactly what happened | + | * '''<undefinedError>''': Default error, when we aren't sure exactly what happened |
− | * <[[city]]>: The spec says it should be sorted and in the <output> tag but I am not sure how this works... explain if you do please
| + | |
| + | By the end, your output will be XML that minimally looks like this: |
| + | |
| + | <results> |
| + | <success ... /> |
| + | <success ... /> |
| + | <success ... /> |
| + | <error ... /> |
| + | <success ... /> |
| + | ... |
| + | <success ... /> |
| + | </results> |
| | | |
| == Testing == | | == Testing == |
− | Your code will be run from the <code>public static void main(String[])</code> method of the <code>Main</code> class in the default package. It will read in its input from stdin and write its output to stdout. | + | Your code will be run from the <code>public static void main(String[])</code> method of the <code>Meeshquest</code> class in a package named "cmsc420.meeshquest.part1". It will read in its input from stdin and write its output to stdout. |
| | | |
| You can see exactly how your code will be tested by examining the public tests. For some example student-generated tests, see [[Part 1 Test Files | Test Files]]. | | You can see exactly how your code will be tested by examining the public tests. For some example student-generated tests, see [[Part 1 Test Files | Test Files]]. |