Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
85 commits
Select commit Hold shift + click to select a range
f13241c
Worked a bit on the build.gradle file, making it a bit easier to work…
Matt-Crow Oct 12, 2020
d6812b0
cleaned up gitignore
Matt-Crow Oct 12, 2020
c3b94d4
going to try the apache cli again later, but I have a meeting soon
Matt-Crow Oct 12, 2020
93f16d6
preparing to branch the data package to support new usages for the pr…
Matt-Crow Oct 13, 2020
1723485
split autocadelement into quasi-abstract and concrete parts
Matt-Crow Oct 13, 2020
d537c31
split autocadelementextractor
Matt-Crow Oct 13, 2020
db222b9
split autocadexport
Matt-Crow Oct 13, 2020
41404de
split excel parser. At some point, I'll have to choose where I want t…
Matt-Crow Oct 13, 2020
a9d92c3
refactoring grading is proving outright gory. Doesn't work yet
Matt-Crow Oct 13, 2020
ebd16e3
looks like I have the bulk of the splitting done, just need to do som…
Matt-Crow Oct 13, 2020
c99dc53
I still have lots of cleanup to do with fixing parameterization and c…
Matt-Crow Oct 13, 2020
422ea76
It looks like generics are just making this more difficult. I'll work…
Matt-Crow Oct 14, 2020
7d96711
added gradeable data type class. This should help clean up some of th…
Matt-Crow Oct 14, 2020
d7681b3
it's really messy right about now, but I'm making progress
Matt-Crow Oct 14, 2020
bd3ce1b
It looks to me like I'll have to gerenerate GUI pages after making se…
Matt-Crow Oct 14, 2020
f64509a
it's broken now, but I can't fix it right now. Tomarrow
Matt-Crow Oct 14, 2020
187413b
renamed some classes to make them more concise
Matt-Crow Oct 15, 2020
711207c
looks like abstractgradingcriteria is good for now
Matt-Crow Oct 15, 2020
8d4e3f6
looks like abstract element criteria is fixed
Matt-Crow Oct 15, 2020
26ff091
There we go! Now it all works! Need to clean up some generics stuff t…
Matt-Crow Oct 15, 2020
e652591
grader now properly gives a zero on all grading criteria which don't …
Matt-Crow Oct 15, 2020
072bd62
Looks like I'll have to redo some of excel parser to make it work for…
Matt-Crow Oct 15, 2020
333a0a4
By some miracle, the survey data parsing and grading works. Excel par…
Matt-Crow Oct 15, 2020
0501b87
looks like grade coords works, I'll just need some way of stopping th…
Matt-Crow Oct 15, 2020
64c7ff4
need to change extractors a bit so they aren't as prone to null pointers
Matt-Crow Oct 16, 2020
7470660
getting wierd NPE even though I'm pretty sure everything is set. Will…
Matt-Crow Oct 16, 2020
2b902ab
OK, so the NPE was because I was trying to get a column, the hashmap …
Matt-Crow Oct 16, 2020
ab03040
moved some functionality from application to data
Matt-Crow Oct 16, 2020
b3b881f
Well, that's all until next Thursday: I've got midterms to worry abou…
Matt-Crow Oct 16, 2020
708ddb9
updating GUI to update its data upon switching pages. Having a bug wh…
Matt-Crow Oct 22, 2020
9e83e12
I'll need to make the choose files page try and parse the files
Matt-Crow Oct 22, 2020
16d6918
there we go! managed to clean up criteria selection quite a bit
Matt-Crow Oct 22, 2020
8798352
fixed a bug where files would not be reparsed upon changing the data …
Matt-Crow Oct 22, 2020
4358b48
Looks like everything works, so I'll do a bit of cleanup and document…
Matt-Crow Oct 23, 2020
1feeddf
added package info for the data package
Matt-Crow Oct 23, 2020
9e99799
now that is one densely documented class! Time to start wrapping up f…
Matt-Crow Oct 23, 2020
6f28f0b
forgot I already released 1.99
Matt-Crow Oct 23, 2020
0102c0d
let's see if threshold works
Matt-Crow Oct 27, 2020
7ffe701
for some reason, the parser keeps reading the angle column from rotat…
Matt-Crow Oct 27, 2020
a87abe6
number formatter having trouble with formatting doubles...
Matt-Crow Oct 27, 2020
15989b8
for some reason, no matter what I do, the decimal formatter will not …
Matt-Crow Oct 27, 2020
8c4048d
Fixed problems with JFormattedTextField not accepting any input. It l…
Matt-Crow Oct 28, 2020
8d11135
Criteria threshold input works, on to the next task
Matt-Crow Oct 28, 2020
b6bbad6
it looks like the threshold works, I just thought I saw some oddities…
Matt-Crow Oct 28, 2020
5e51351
Looks like using regex in required headers helps, but I'll need to ex…
Matt-Crow Oct 28, 2020
96d7828
can now extract multiple exports from one file. Just need to implemen…
Matt-Crow Oct 28, 2020
895f4de
added support for multiple sheets per workbook
Matt-Crow Oct 28, 2020
cac9ee9
wouldn't you know it; Apache also has a CSV parser library as well!
Matt-Crow Oct 29, 2020
af5a569
actually, I'm not sure how much I need to move down into the Abstract…
Matt-Crow Oct 29, 2020
c9e8911
Yeah, I'll need to go a bit more abstract here
Matt-Crow Oct 29, 2020
7b9155e
somehow, this all still works, but I have a lot of clean up to do
Matt-Crow Oct 29, 2020
232d10b
refactored the data package to split between CSV and Excel
Matt-Crow Oct 29, 2020
e604c23
Well, ExcelParser still works, but I have a lot of clean up to do wit…
Matt-Crow Oct 29, 2020
69c8bd7
CsvParser isn't picking up any files, so I'll look into that
Matt-Crow Oct 30, 2020
9b61eff
Ah, I'd forgotten to update the file locator to find more than just E…
Matt-Crow Oct 30, 2020
99c279e
begin refactoring the parsers to make more sense
Matt-Crow Oct 30, 2020
edae3e0
Working on moving similar code from subclasses to AbstractTableParser
Matt-Crow Oct 30, 2020
2aa16ff
There we go! ForEachRowIn is much better than old methods, but I stil…
Matt-Crow Oct 30, 2020
00d1a87
much cleaner now, but I still have more I can do. Will work on end of…
Matt-Crow Oct 30, 2020
4f2b0ec
cleaned up parsing multiple sheets. Next, clean up single sheet parse
Matt-Crow Nov 2, 2020
2922290
done cleaning up for now, but I still need to make sure CSV parser works
Matt-Crow Nov 2, 2020
e9ed792
CSV parser can't extract records because it isn't given a header map.…
Matt-Crow Nov 2, 2020
985b124
Fixed the CSV parser problem: By default, the Apache CSVParser assume…
Matt-Crow Nov 2, 2020
0264edb
Fixed a logical error in AbstractElementCriteria where it takes the a…
Matt-Crow Nov 2, 2020
ef9f9f7
Fixed an error where the program attempted to match ungradable rows.
Matt-Crow Nov 2, 2020
8e9d0e6
Grader is still whining about unchecked conversions, but I'm pretty c…
Matt-Crow Nov 2, 2020
7132373
Headerless CSV now works! Will work on cleaning up the data package a…
Matt-Crow Nov 3, 2020
9644767
Updated documentation slightly. Next, will attempt to merge record co…
Matt-Crow Nov 3, 2020
05335a3
Looks like it works for everything but the regex data. Tons of cleanu…
Matt-Crow Nov 3, 2020
1b21492
fixed regex bug, now for cleanup
Matt-Crow Nov 3, 2020
6a2ab29
removed data converter classes, as their functions are now handled by…
Matt-Crow Nov 3, 2020
565f0de
Now that is some nice documentation if I do say so myself! Still need…
Matt-Crow Nov 3, 2020
647c433
Done with data package for this version. On to grading
Matt-Crow Nov 4, 2020
1ee1fe9
the file locator now only locates files that the current data type ca…
Matt-Crow Nov 4, 2020
cb9ec00
Working on making Grader more clear in what exactly it's doing
Matt-Crow Nov 4, 2020
c605577
Now explicitely adds column criteria as with others, instead of the b…
Matt-Crow Nov 4, 2020
427a37b
cleaned up DrawingCheckerData a bit
Matt-Crow Nov 4, 2020
8a990f8
not sure if I want to go this route with the drawingcheckerattributes
Matt-Crow Nov 4, 2020
6a57de7
done documenting drawingcheckerdata. I don't think I want to do separ…
Matt-Crow Nov 5, 2020
838cf4a
removed all the gnarly generic type notation from DrawingCheckerData.…
Matt-Crow Nov 5, 2020
f7bf938
criteria selection list is now alphabetized and scrolls faster
Matt-Crow Nov 5, 2020
24e3390
cleaned up the grading criteria a bit
Matt-Crow Nov 5, 2020
81ce5cc
And with that, I may very well be done for this week. I'll get on rel…
Matt-Crow Nov 5, 2020
68d1b6a
forgot to check this off
Matt-Crow Nov 5, 2020
7f23220
Merge pull request #3 from IronHeart7334/indev
Matt-Crow Nov 6, 2020
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 7 additions & 5 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,9 +1,11 @@
# Ignored directories
.gradle/
.nb-gradle/

# https://stackoverflow.com/questions/5533050/gitignore-exclude-folder-but-include-specific-subfolder
/build/*
!/build/libs/

# Ignored files
.nb-gradle-properties
/build/classes/*
/build/tmp/*
/build/docs/*
/build/distributions/*
!/build/libs/*
gradle.properties
26 changes: 18 additions & 8 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
# AutoCAD Drawing Checker
A simple, extendable Java program used to compare Excel exports from AutoCAD.
A simple, extendable Java program used to compare Excel and CSV files

## Project Summary
Instructors and teachers in college classes are expected to teach their students by giving lectures and providing learning resources.
Expand All @@ -10,6 +10,11 @@ Fortunately, computers are very good at doing tedious processes with objective s
This program is meant to compare data exports from AutoCAD to each other, grading them based upon how similar they both are.
These AutoCAD exports are in either XLS or XLSX format, which is easily parse-able by the Apache POI Library.

This application also supports a wider variety of files, including:
* any Excel file with headers in the first row
* CSV data with or without headers
* GPS survey data (see an example under src/main/resources/exports

## Required Software
* Users need only ensure they have [Java](https://java.com/en/) installed on their computer to run the application.
* Developers wishing to change this application for their own use will need [Gradle](https://gradle.org/) installed to build the application.
Expand All @@ -20,15 +25,19 @@ This file is a self-contained application, so you can move it wherever you want
it doesn't rely on the other project files to run. Simply double-click the JAR file to run it.

### Steps
* Step 1: Choosing instructor and student files. The first page of the application has you choose at least 2 files:
* Step 1: choose the file format. This tells the program the format of the data you will provide, and determines which criteria it can grade.
* Step 2: Choosing instructor and student files. You will choose at least 2 files:
the instructor file, and 1 or more student files. The instructor file is what the student files will be graded on:
The more similar their file is to the instructor file, the higher their grade will be. When selecting student files, you have several options:
* Choose 1 or more Excel files
* Choose 1 or more folders. Note that the program locates all Excel files under this folder, so it's OK if it has other files in there, the program will just ignore them.
* Choose 1 or more Excel or CSV files
* Choose 1 or more folders. Note that the program locates all relevant files under this folder, so it's OK if it has other files in there, the program will just ignore them.
* A combination of the above.
Also of interest: you can drag and drop files into the two selectors instead of clicking the button.
* Step 2: Choosing Grading Criteria. You can choose what the program grades students on by toggling these check boxes on or off. Regardless of what you select, the program will still grade every column in the instructor file.
* Step 3: Running the Autograder. (Don't forget to click 'Run'!) Once the program is done grading, it will ask you where you want to save the grading report. Simply choose a folder, and the program will automatically name the file for you.
* Step 3: Choosing Grading Criteria. You can choose what the program grades students on by toggling these check boxes on or off.
* Step 4: Running the Autograder. The program will automatically run the grader when you get to the last page.
Once the program is done grading, it will ask you where you want to save the grading report.
Simply choose a folder, and the program will automatically name the file for you.
If you forget to save the file, just click "Run" to rerun the autograder.

### Troubleshooting
If anything goes wrong, and you are unsure what to do about it, you'll want to click Log -> Save Log in the program menu bar along the top.
Expand All @@ -37,13 +46,14 @@ You can contact Matt if you need help, and you provide him with the Log file you
## Matt's To Do List
* see AutoCADElementMatcher
* Should we match rows for each comparison, or for the export as a whole? (wait on this)
* Given double X and double Y, don't do "X == Y", instead do "Math.abs(X - Y) < threshold"
* Look into Federal Section 508
* https://www.epa.gov/accessibility/what-section-508
* https://www.section508.gov/
* https://www.section508.gov/create
* https://www.access-board.gov/guidelines-and-standards/communications-and-it/about-the-ict-refresh/final-rule/text-of-the-standards-and-guidelines

* maybe just add a check for AbstractGradingCriteria.canGradeDataType(...)

## Helpful Links
* [Apache CLI](https://commons.apache.org/proper/commons-cli/javadocs/api-release/index.html)
* [CSV Library](https://javadoc.io/doc/org.apache.commons/commons-csv/latest/index.html)
* [Excel Library](https://poi.apache.org/apidocs/4.1/)
31 changes: 25 additions & 6 deletions build.gradle
Original file line number Diff line number Diff line change
@@ -1,5 +1,15 @@
apply plugin: 'java'
apply plugin: 'application'
plugins { // Double quotes evaluate some expressions a-la backticks in JS. Sounds like I should use single quotes by default
id 'java'
id 'application'
}

/*
* Needs this specific name to work with the application
* plugin. Change this property to set the main class for
* running and Jar-ing
*/
mainClassName = 'autocadDrawingChecker.start.Main'
version = '2.5'

sourceCompatibility = '1.8'
[compileJava, compileTestJava]*.options*.encoding = 'UTF-8'
Expand All @@ -12,16 +22,16 @@ sourceCompatibility = '1.8'
// prefer. In this case NetBeans will not add these tasks but you may rely on
// your own implementation.
if (!hasProperty('mainClass')) {
ext.mainClass = 'autocadDrawingChecker.start.Main'
ext.mainClass = mainClassName
}

mainClassName = 'autocadDrawingChecker.start.Main' // need this for the application plugin

jar {
//need to manually set main class, otherwise, it just compiles the JAR as a library
manifest {
attributes(
'Main-Class': 'autocadDrawingChecker.start.Main'
'Main-Class': mainClassName,
'Implementation-Title': project.name,
'Implementation-Version': project.version
)
}

Expand All @@ -39,6 +49,10 @@ jar {
exclude 'META-INF/*.RSA', 'META-INF/*.SF','META-INF/*.DSA'
}

tasks.withType(JavaCompile) {
options.compilerArgs << '-Xlint:unchecked'
}

repositories {
mavenCentral()
// You may define additional repositories, or even remove "mavenCentral()".
Expand All @@ -52,6 +66,11 @@ dependencies {
// http://www.gradle.org/docs/current/userguide/dependency_management.html#sec:how_to_declare_your_dependencies
testCompile group: 'junit', name: 'junit', version: '4.10'

compile group: 'commons-cli', name: 'commons-cli', version: '1.4'

// https://mvnrepository.com/artifact/org.apache.commons/commons-csv
compile group: 'org.apache.commons', name: 'commons-csv', version: '1.8'

// https://mvnrepository.com/artifact/org.apache.poi/poi
compile group: 'org.apache.poi', name: 'poi', version: '4.1.2'

Expand Down
Binary file not shown.
188 changes: 0 additions & 188 deletions build/scripts/AutoCADDrawingChecker

This file was deleted.

Loading