Commit 8323c297 authored by jcechace's avatar jcechace
Browse files

Cute grammar nazi adjustments

parent cacaa828
...@@ -8,9 +8,9 @@ Homework assignment no. 3, CSV ...@@ -8,9 +8,9 @@ Homework assignment no. 3, CSV
General information General information
------------------- -------------------
In this assignment you will create a CSV parsing library. In this assignment you will create a CSV parsing library.
Unlike many advanced libraries which allow parsing and mapping CSV data directly to java objects (POJOs), Unlike many advanced libraries which allow parsing and mapping CSV data directly to Java objects (POJOs),
our library will rely on collections, and the only supported data type will be ``String``. our library will rely on collections, and the only supported data type will be ``String``.
Even so this will be a useful library as data conversion can be easily deferred and sometimes Even so, this will be a useful library as data conversion can be easily deferred and sometimes
all you need is a simple dynamic solution. all you need is a simple dynamic solution.
Given a CSV data set Given a CSV data set
...@@ -20,10 +20,10 @@ atomicNumber, symbol, name, standardState, groupBlock, yearDiscovered ...@@ -20,10 +20,10 @@ atomicNumber, symbol, name, standardState, groupBlock, yearDiscovered
2, He , Helium,gas,noble gas,1868 2, He , Helium,gas,noble gas,1868
``` ```
Our library will support two types of parsing depending on whether we want to use the first line as header. Our library will support two types of parsing depending on whether we want to use the first line as a header.
For plain (headerless) data sets, each line will be converted into ``List<String>`` and thus the entire data set For plain (headerless) data sets, each line will be converted into ``List<String>`` and thus the entire data set
can be converted into ``List<List<String>``. For the example above our parser will yield can be converted into ``List<List<String>``. With the example above, our parser will yield
``` ```
[ [
[atomicNumber, symbol, name, standardState, groupBlock, yearDiscovered], [atomicNumber, symbol, name, standardState, groupBlock, yearDiscovered],
...@@ -32,9 +32,9 @@ can be converted into ``List<List<String>``. For the example above our parser wi ...@@ -32,9 +32,9 @@ can be converted into ``List<List<String>``. For the example above our parser wi
] ]
``` ```
For data sets with header, each line will be converted into ``Map<String, String>`` with For data sets with a header, each line will be converted into ``Map<String, String>`` with
column names are used as keys. Thus the entire data set can be converted into ``List<Map<String, String>``. column names used as keys. Thus the entire data set can be converted into ``List<Map<String, String>>``.
For the example above our parser will yield With the example above, our parser will yield
``` ```
[ [
{ {
...@@ -57,35 +57,35 @@ For the example above our parser will yield ...@@ -57,35 +57,35 @@ For the example above our parser will yield
``` ```
### Evaluation ### Evaluation
Beside functional correctness this assignment is focused on object-oriented design and understanding how IO works in java. Beside functional correctness, this assignment is focused on object-oriented design and understanding how IO works in Java.
This means that the way you structure your program will be an important part of its evaluation. This means that the way you structure your program will be an important part of its evaluation.
On the other hand the given set of tests is not trying to provide an elaborate test coverage and **incorrect behaviour in corner-cases should not have a large impact on the evaluation**. On the other hand, the given set of tests is not trying to provide an elaborate test coverage and **incorrect behaviour in corner-cases should not have a large impact on the evaluation**.
*Note that all this is at your seminar teacher's discretion.* *Note that all this is at your seminar teacher's discretion.*
The maximum number of points for this assignment is **15**. The maximum number of points for this assignment is **15**.
- **11 points** for passing the tests (attached tests do not guarantee a 100% correctness). - **11 points** for passing the tests (attached tests do not guarantee 100% correctness).
- **4 points** for correct and clean implementation (evaluated by your class teacher). - **4 points** for correct and clean implementation (evaluated by your class teacher).
### Preconditions ### Preconditions
To successfully implement this assignment you need to know the following To successfully implement this assignment you need to know the following
1. Understadning of OOP in Java 1. Understanding of OOP in Java
2. Working with collections 2. Working with collections
3. Basic knowledge of Generic types 3. Basic knowledge of generic types
4. Understanding of IO in java (pakcages ``java.io`` and ``java.nio``) 4. Understanding of IO in Java (packages ``java.io`` and ``java.nio``)
### Project structure ### Project structure
The structure of project provided as a base for your implementation should meet the following criteria. The structure of the project provided as a base for your implementation should meet the following criteria.
1. Package ```cz.muni.fi.pb162.hw03.csv``` contains classes and interfaces provided as part of the assignment. 1. Package ```cz.muni.fi.pb162.hw03.csv``` contains classes and interfaces provided as a part of the assignment.
- **Do not modify or add any classes or subpackages into this package.** - **Do not modify or add any classes or subpackages into this package.**
2. Package ```cz.muni.fi.pb162.hw03.csv.impl``` should contain your implementation. 2. Package ```cz.muni.fi.pb162.hw03.csv.impl``` should contain your implementation.
- **Anything outside this package will be ignored during evaluation.** - **Anything outside this package will be ignored during evaluation.**
### Names in this document ### Names in this document
Unless fully classified name is provided, all class names are relative to package ```cz.muni.fi.pb162.hw03.csv``` or ```cz.muni.fi.pb162.hw03.csv.impl``` for classes implemented as part of your solution. Unless fully classified name is provided, all class names are relative to the package ```cz.muni.fi.pb162.hw03.csv``` or ```cz.muni.fi.pb162.hw03.csv.impl``` for classes implemented as a part of your solution.
### Compiling the project ### Compiling the project
...@@ -95,23 +95,23 @@ The project can be compiled and packaged in the same way you already know ...@@ -95,23 +95,23 @@ The project can be compiled and packaged in the same way you already know
$ mvn clean install $ mvn clean install
``` ```
The only difference is, that unlike with seminar project, this time checks for missing documentation and style violation will produce an error. The only difference is that unlike with seminar project, this time checks for missing documentation and style violation will produce an error.
You can temporarily disable this behavior when running this command. You can disable this behavior by running this command temporarily.
```bash ```bash
$ mvn clean install -Dcheckstyle.fail=false $ mvn clean install -Dcheckstyle.fail=false
``` ```
You can consult your seminar teacher to help you set the ```checkstyle.fail``` property in your IDE (or just google it). You can consult your seminar teacher on setting the ```checkstyle.fail``` property in your IDE (or just google it).
### Submitting the assignment ### Submitting the assignment
The procedure to submit your solution may differ based on your seminar group. However generally it should be OK to submit ```target/homework02-2021-1.0-SNAPSHOT-sources.jar``` to the homework vault. The procedure to submit your solution may differ based on your seminar group. However, in general, it should be OK to submit ```target/homework03-2021-1.0-SNAPSHOT-sources.jar``` to the homework vault.
## Implementation notes ## Implementation notes
Generally speaking there are no mandatory requirements on the structure of your code other than what is enforced by provided interfaces Generally speaking, there are no mandatory requirements on the structure of your code other than what is enforced by provided interfaces
* Provided tests should give you a good idea about the inteded use of this library * Provided tests should give you a good idea about the intended use of this library
* Think about how IO streams are structured in java, ``CsvReader`` is essentially another layer. * Think about how IO streams are structured in Java, ``CsvReader`` is essentially another layer.
* Read JavaDoc carefully * Read JavaDoc carefully
Example library usage Example library usage
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment