Kyle-Falconer / Court-Scheduler

3 stars 2 forks source link

Shane can't run the program #25

Closed Kyle-Falconer closed 10 years ago

Kyle-Falconer commented 10 years ago

Here we can put all the information we know about the problem and try to find the solution.

First issue:

The config.ini that he sent us has a size of 0 bytes (!!). The configuration must be breaking somewhere.

Second issue:

When running his input file (and not his configuration), the output is:

Court Scheduler
============================================================
ERROR: Time 22:00 is after the end time.
ERROR: Time 23:59 is after the end time.
ERROR: Time 22:00 is after the end time.
ERROR: Time 23:59 is after the end time.
ERROR: Time 22:00 is after the end time.
ERROR: Time 23:59 is after the end time.
ERROR: Time 22:00 is after the end time.
ERROR: Time 23:59 is after the end time.
ERROR: Time 22:00 is after the end time.
ERROR: Time 23:59 is after the end time.
ERROR: Time 22:00 is after the end time.
ERROR: Time 23:59 is after the end time.
ERROR: Time 22:00 is after the end time.
ERROR: Time 23:59 is after the end time.
12:39:51.985 [main] INFO  o.d.c.k.b.impl.KieRepositoryImpl - KieModule was added:MemoryKieModule[ ReleaseId=org.default:artifact:1.0.0-SNAPSHOT]
12:39:52.123 [main] DEBUG o.drools.core.reteoo.ReteooRuleBase - Starting Engine in PHREAK mode
Input file location is at: C:/Users/Kyle/Downloads/2013 Fall Session for Program.xlsx
Output folder location is at: C:\Users\Kyle\Downloads\
Main output file location is at: C:\Users\Kyle\Downloads\output.xlsx
Fri Dec 06 12:39:54 CST 2013[INFO] Worksheet Name: 2013 Fall
Fri Dec 06 12:39:54 CST 2013[INFO] Worksheet has 463 lines of data.
Unknown constraint:wes
Unknown constraint:thomas
... (more unknown constraints on names) ...
Unknown constraint:dan
Unknown constraint:kevin

java.lang.StringIndexOutOfBoundsException: String index out of range: -1
        at java.lang.String.substring(Unknown Source)
        at courtscheduler.persistence.CourtScheduleIO.processRow(CourtScheduleIO.java:306)
        at courtscheduler.persistence.CourtScheduleIO.readXlsx(CourtScheduleIO.java:74)
        at courtscheduler.Main.main(Main.java:106)
Kyle-Falconer commented 10 years ago

Given the input file he provided in the email, I've noticed that there are several columns which are not in the template. Even after removing these columns, I get:

Court Scheduler
============================================================
ERROR: Time 22:00 is after the end time.
ERROR: Time 23:59 is after the end time.
ERROR: Time 22:00 is after the end time.
ERROR: Time 23:59 is after the end time.
ERROR: Time 22:00 is after the end time.
ERROR: Time 23:59 is after the end time.
ERROR: Time 22:00 is after the end time.
ERROR: Time 23:59 is after the end time.
ERROR: Time 22:00 is after the end time.
ERROR: Time 23:59 is after the end time.
ERROR: Time 22:00 is after the end time.
ERROR: Time 23:59 is after the end time.
ERROR: Time 22:00 is after the end time.
ERROR: Time 23:59 is after the end time.
12:42:09.501 [main] INFO  o.d.c.k.b.impl.KieRepositoryImpl - KieModule was added:MemoryKieModule[ ReleaseId=org.default:artifact:1.0.0-SNAPSHOT]
12:42:09.640 [main] DEBUG o.drools.core.reteoo.ReteooRuleBase - Starting Engine in PHREAK mode
Input file location is at: C:/Users/Kyle/Downloads/2013 Fall Session for Program.xlsx
Output folder location is at: C:\Users\Kyle\Downloads\
Main output file location is at: C:\Users\Kyle\Downloads\output.xlsx
Fri Dec 06 12:42:12 CST 2013[INFO] Worksheet Name: 2013 Fall
Fri Dec 06 12:42:12 CST 2013[INFO] Worksheet has 463 lines of data.
Unknown constraint:after 5:30
Unknown constraint:10/26/13
Unknown constraint:11/16/13

java.lang.IllegalArgumentException: Invalid format: "12/8/13 saturday" is malformed at " saturday"
        at org.joda.time.format.DateTimeFormatter.parseLocalDateTime(DateTimeFormatter.java:828)
        at org.joda.time.format.DateTimeFormatter.parseLocalDate(DateTimeFormatter.java:772)
        at org.joda.time.LocalDate.parse(LocalDate.java:179)
        at courtscheduler.domain.DateConstraint.findDateRange(DateConstraint.java:217)
        at courtscheduler.persistence.CourtScheduleIO.requestDate(CourtScheduleIO.java:484)
        at courtscheduler.persistence.CourtScheduleIO.parseDateConstraints(CourtScheduleIO.java:445)
        at courtscheduler.persistence.CourtScheduleIO.processRequestConstraints(CourtScheduleIO.java:375)
        at courtscheduler.persistence.CourtScheduleIO.processRow(CourtScheduleIO.java:320)
        at courtscheduler.persistence.CourtScheduleIO.readXlsx(CourtScheduleIO.java:74)
        at courtscheduler.Main.main(Main.java:106)
stardustspeedway commented 10 years ago

...The config file isn't generating correctly. The one he attached is entirely blank. Should we have him send us a spec for what he wants, and then write a config file for him as kind of a stopgap measure while we figure out what's going on with the GUI?

Kyle-Falconer commented 10 years ago

I also noticed he's trying to work on a network share. I don't know why that'd break the paths... I say for now, let's get him that temp config.ini. Can you do that? We should have had more useful error messages for things like this.

Remember that when he uses a different config, he needs to close the configuration utility when it opens so that it doesn't overwrite it.

chuck44 commented 10 years ago

I looked at the input he was trying to put through and there were several problems with it. This isn't what is causing it not to work for him, but it looks like the scheduler didn't get far enough for this to be an issue yet (but it would have at some point). It wasn't in the correct format and he made some mistakes writing his constraints. There was also another weird error when I was fixing his input so it could run. In the xlsx document I made, when the parser went through the team codes, it was finding a team code that was not there. The program threw a string index out of range error when searching for "." in the team code. This was happening after it had already parsed through all visible team codes so I don't know where it was finding the extra code. I'll push up the document that was having this error (2013 Fall Season.xlsx) and the file that does not have this error any more (Book3.xlsx). There's no visible changes in the two documents (I just copied all the info from the problem document and pasted it into a new document). I'll also push the config.ini file I'm using so you guys can see what I've been working with.

stardustspeedway commented 10 years ago

Yeah, the problem is that grade is an int, and he has grades like JH in it. I converted grade to a string-- I'll push that momentarily.

On Fri, Dec 6, 2013 at 2:45 PM, Charles Eswine notifications@github.comwrote:

I looked at the input he was trying to put through and there were several problems with it. This isn't what is causing it not to work for him, but it looks like the scheduler didn't get far enough for this to be an issue yet (but it would have at some point). It wasn't in the correct format and he made some mistakes writing his constraints. There was also another weird error when I was fixing his input so it could run. In the xlsx document I made, when the parser went through the team codes, it was finding a team code that was not there. The program threw a string index out of range error when searching for "." in the team code. This was happening after it had already parsed through all visible team codes so I don't know where it was finding the extra code. I'll push up the document that was having this error (2013 Fall Season.xlsx) and the file that does not have this error any more (Book3.xlsx). There's no visible changes in the two documents (I just copied all the info from the problem document and pasted it into a new document). I'll also push the config.ini file I'm using so you guys can see what I've been working with.

— Reply to this email directly or view it on GitHubhttps://github.com/netinept/Court-Scheduler/issues/25#issuecomment-30027861 .

stardustspeedway commented 10 years ago

Pushed. I'm working on 2013fall.xlsx, trying to fix all the issues in it... There are a lot, not in the least that he didn't have the constraints column in the right place.

On Fri, Dec 6, 2013 at 2:53 PM, Matthew Swinney sonicsatellite@gmail.comwrote:

Yeah, the problem is that grade is an int, and he has grades like JH in it. I converted grade to a string-- I'll push that momentarily.

On Fri, Dec 6, 2013 at 2:45 PM, Charles Eswine notifications@github.comwrote:

I looked at the input he was trying to put through and there were several problems with it. This isn't what is causing it not to work for him, but it looks like the scheduler didn't get far enough for this to be an issue yet (but it would have at some point). It wasn't in the correct format and he made some mistakes writing his constraints. There was also another weird error when I was fixing his input so it could run. In the xlsx document I made, when the parser went through the team codes, it was finding a team code that was not there. The program threw a string index out of range error when searching for "." in the team code. This was happening after it had already parsed through all visible team codes so I don't know where it was finding the extra code. I'll push up the document that was having this error (2013 Fall Season.xlsx) and the file that does not have this error any more (Book3.xlsx). There's no visible changes in the two documents (I just copied all the info from the problem document and pasted it into a new document). I'll also push the config.ini file I'm using so you guys can see what I've been working with.

— Reply to this email directly or view it on GitHubhttps://github.com/netinept/Court-Scheduler/issues/25#issuecomment-30027861 .

chuck44 commented 10 years ago

The grades have to be a number between 1-10 (doesn't really matter if its an int or string) so that's why stuff like JH or JV won't work. When getting primary and secondary dates it looks at the grade of a team and matches that up with a grade from the config file and all grades in the config file are from 1-10.

Kyle-Falconer commented 10 years ago

If this helps you to run the program while testing, I updated the wiki for how to use the (un-exe-ified) python file as the configuration utility.

https://github.com/netinept/Court-Scheduler/wiki/Using-IntelliJ

I also made the program write out any information received by the configuration utility to a log file configuration_log.txt so that the next time he tries to run it, we might be able to see more about what is going on. I'll package this all up into a zip, test, then upload for you guys to test.

Kyle-Falconer commented 10 years ago

What do you guys think about having him run something like this in a .bat or .cmd script and then give us the output of both log.txt and configure_log.txt ?

@echo off
echo Court Scheduler is running, please do not close this window
"Court Scheduler.exe" > "log.txt"
notepad log.txt
stardustspeedway commented 10 years ago

That sounds perfect-- test it and shoot it to him. Also, 23 minutes for the test run, final score 0 hard / -985460 soft. It's scheduled pretty much solid-- I wonder if that's because the schedule looks like it's supposed to start Oct 1, but he's starting it late in October?

On Fri, Dec 6, 2013 at 4:02 PM, Kyle Falconer notifications@github.comwrote:

What do you guys think about having him run something like this in a .bat or .cmd script and then give us the output of both log.txt and configure_log.txt ?

@echo off echo Court Scheduler is running, please do not close this window "Court Scheduler.exe" > "log.txt" notepad log.txt

— Reply to this email directly or view it on GitHubhttps://github.com/netinept/Court-Scheduler/issues/25#issuecomment-30033449 .

Kyle-Falconer commented 10 years ago

Before I do, can you sanity run it? The latest version, with the .cmd file is up.

stardustspeedway commented 10 years ago

You need one line telling him to enter the path of the file-- it won't autorun without input, just idle there waiting.

It's dangerous to go alone: take these.

On Fri, Dec 6, 2013 at 4:19 PM, Kyle Falconer notifications@github.comwrote:

Before I do, can you sanity run it? The latest version, with the .cmd file is up.

— Reply to this email directly or view it on GitHubhttps://github.com/netinept/Court-Scheduler/issues/25#issuecomment-30034633 .

Kyle-Falconer commented 10 years ago

isn't the input file name given by the config.ini?

stardustspeedway commented 10 years ago

Aha, so it is. In that case, just put this config and the 2013fall.xlsx book in the same folder as the EXE, quit the config when it pops up and bam, it'll run.

However, it's really tight on time, I think. I'm gonna run it with a little more space and see if it can optimize itself a little better.

On Fri, Dec 6, 2013 at 4:33 PM, Kyle Falconer notifications@github.comwrote:

isn't the input file name given by the config.ini?

— Reply to this email directly or view it on GitHubhttps://github.com/netinept/Court-Scheduler/issues/25#issuecomment-30035492 .

stardustspeedway commented 10 years ago

Shane just sent me this:

I had been clicking on the scheduler.exe to run it. I tried the run.cmd and here’s what I got. It didn’t really do anything either… http://gyazo.com/4c9f2803f4c9d3a9d2ef6684ef8d773a

Uh, guys? Any idea what could be causing it to just... not run?

Kyle-Falconer commented 10 years ago

It's the .cmd file; I thought that relative paths would work, but apparently that's also out of the question. He's going to have to run this on his local machine (I sent an email about it).

pkmccroskey commented 10 years ago

He probably thinks he has on his local computer but his my documents folder is on a share, probably a network drive. He should try moving the whole thing to a different directory like maybe right under C:

Sent from my iPhone

On Dec 9, 2013, at 3:28 PM, "Kyle Falconer" notifications@github.com wrote:

It's the .cmd file; I thought that relative paths would work, but apparently that's also out of the question. He's going to have to run this on his local machine (I sent an email about it).

— Reply to this email directly or view it on GitHub.

pkmccroskey commented 10 years ago

The other option would be for him to leave it where it is but to map the drive to it, then it would appear as if it was a local drive on his machine

Sent from my iPhone

On Dec 9, 2013, at 3:28 PM, "Kyle Falconer" notifications@github.com wrote:

It's the .cmd file; I thought that relative paths would work, but apparently that's also out of the question. He's going to have to run this on his local machine (I sent an email about it).

— Reply to this email directly or view it on GitHub.

Kyle-Falconer commented 10 years ago

Drive mapping is very possible but the problem with that is that we don't know the exact path, and if he tries to change the location of all this, then it will break again. The best solution is to have him run it on his local machine. I don't think he's ignorant of this being on a network drive.

Moving the folder to C:\ would work, but I don't like having things live on the drive root for a few reasons. It would be best if he put it in Program Files or in his My Documents folder (which I don't think is on the network share).

pkmccroskey commented 10 years ago

If you look at the command window in the screen shot he sent, it looks like his my documents is shared and part of a UNC path

Sent from my iPhone

On Dec 9, 2013, at 3:38 PM, "Kyle Falconer" notifications@github.com wrote:

Drive mapping is very possible but the problem with that is that we don't know the exact path, and if he tries to change the location of all this, then it will break again. The best solution is to have him run it on his local machine. I don't think he's ignorant of this being on a network drive.

Moving the folder to C:\ would work, but I don't like having things live on the drive root for a few reasons. It would be best if he put it in Program Files or in his My Documents folder (which I don't think is on the network share).

— Reply to this email directly or view it on GitHub.

Kyle-Falconer commented 10 years ago

No, the path he's using is \\Main\my documents shared\The Courts\Scheduler\Court Scheduler. In Windows XP, the My Documents is located in \Documents and Settings\$USER$\My Documents, (see this page).

Of course this is all just speculation. None of the screenshots I've seen have indicated that his primary My Documents folder is a network share. I'm considering offering to go over there and take a look at the machine myself to figure out what is going on and why we can get it to work on our computers, but not his.

Kyle-Falconer commented 10 years ago

I just got back from visiting Shane in his office and discovered that his main My Documents folder was not on the network share. The issue ended up being spaces in the file name. As a temporary fix, I moved the program folder to C:\ and ran it against an Excel file which didn't have any spaces in the name. After I did this, it was running properly. I plan on working on the project further to make sure that spaces are allowed in filenames.