I thought I was going to need the rest of my term to finish this one but here I am! Thank you to all my rubber duckies, testers, and Java gurus who took me in and made sure I didn't chase down too many rabbit holes.
This class is kind of a mess because it was overhauled a little earlier this year so some students are using one schema and the rest have the updated version. That made it easier to complete but a lot of the old tips and info is not relevant so it's easy to get confused when everyone else is talking about something that no longer applies. Even the intro video goes over things in the old version.
Beginners: start with the webinars! You need to set up MySQL to connect the WGU database and then with your java program. There are no handy text guides though I may work on making one after graduation (I'll update this post once I make it). Setting everything up properly was among the more painful parts of the program for me.
I generally find lectures too slow to watch at normal speed so I recorded them in OBS while catching up on some reading and then took a weekend to go through the webinars on my YouTube account (you will not find them there, they were set to private and I deleted them when I'm done). This allowed me to watch them on my iPad at whatever speed I wanted (often 2x). We're not allowed to share webinars because they are considered school property so if you do put them on YouTube for viewing purposes, set them to private because the school doesn't take kindly to non-WGU students getting a hold of their materials.
Here are a list of webinars. If you are not a WGU student, you will not be able to see them. Sorry!
- Getting Started with MySQL Workbench: https://wgu.adobeconnect.com/phy95zef9d9d/
- JDBC (Java Database Connectivity): https://wgu.adobeconnect.com/pvom9qkr9xxn/
- Connector download - https://dev.mysql.com/downloads/file/?id=480091
- Java and MySQL Interactivity: https://wgu.adobeconnect.com/pg0j5gbae75p/
- Localization and Resource Bundles: https://wgu.adobeconnect.com/p1cpn083veat/
- Date and Time Utility Classes: https://wgu.adobeconnect.com/plqiqvw32s3h/
- Lambda Expressions: https://wgu.adobeconnect.com/pkmaqjbxi03a/
- File Input/Output: https://wgu.adobeconnect.com/pnm24wtxpb83/
- ObservableList Controls: https://wgu.adobeconnect.com/pycbm8bttaol/
This was my reading list and reference guide, many from other slack students plus a few by me. Students were just adding their own sources at the end of the list so when I got to it, I cleaned out the dead links and categorized them so I can find them easier. I say this to make sure it stays that way, lol.
Program Design
- https://alvinalexander.com/ooa-ood/java-model-view-controller-mvc-example-1 MVC example and explanation
- https://krazytech.com/programs/a-login-application-in-java-using-model-view-controllermvc-design-pattern (MVC example using a login application)
Data Access
Sample Codes for JDBC
Java Topics
- http://www.lionblogger.com/java-application-mysql-database/ Jave and MySQL (creating a login)
- http://code.makery.ch/blog/javafx-8-date-picker/ - Date Picker
- http://code.makery.ch/blog/javafx-dialogs-official/ - Exceptions, confirmations, etc.
- http://hmkcode.com/java-mysql/ - Sample program using Java and MySQL
And here are some notes I collected from different parts of chatter plus a few notes from me
- Run the conversion script first (convertToNewDB_ver2.sql), then run the insertion script (dataForNewDB_ver2.sql).
- You do not have to make a custom calendar for the ‘view calendar by month and week’ requirement; you can use a Table View and fill it with appointment the data with the option to sort by month and week
- Make sure that your project includes the JDBC file in the project folder so when you zip the folder to submit it the file will be in there.
- When submitting make sure that you build specific exception controls for each control on the form. For example it is not good enough to say "Invalid Customer Information". It needs to say "Invalid Phone Number" or whatever control is wrong on the form.
- 15-minute alert requirement: have the program check if there is an appointment in within 15 minutes of successful login and show an alert for it/them. Set the 'test' account to see the alerts for all users.
- Everything time Related goes into the DB as UTC. There's code in the repo to help do this, learning how to grab the local time now and turning it into UTC time should be a static method that you can use at any point.
- The assignment doesn’t explicitly require a paper but you need one to tell the graders where everything is. Copy the rubric and in each section, identify where in the script the requirement can be found and/or how you fulfilled the requirement. For example, in Section J, identify where the log file will be saved and where this part of the code can be found. For the lambda requirement, list the name of the script and line number.
- CREATE VIEW is allowed (I used them to add customer names to my appointment tables).
Database notes:
- Some of the primary keys in the tables aren't set to auto increment. Use ALTER TABLE foo MODIFY COLUMN id INT NOT NULL AUTO_INCREMENT; to change it while you're setting up (one less thing to worry about). There is a script that supposedly does it but it didn't work for me so I did it by hand which took a few minutes.
- Countries and Cities are static and are given in the rubric so adding those should be part of your database setup
- I added users and customers to the database while setting up because I wanted to be able to test my functions once they were available. I probably went overboard but I wanted to be sure things worked properly.
Time Zone Applications:
Make friends with Timestamp, DateTimeFormatter, LocalDateTime, ZonedDateTime, ZoneId, and ZonedDateTime. If you want to be fancy, you can check out LocalTime, parseInt, and split to turn the 24H time into 12H; this will require some string splicing which I was fortunate to have played with in DSA2. Don't forget to test both AM and PM if you go this route, those parts can mask certain bugs that the graders will gladly find for you, lol. Take this part step-by-step, utilize println statements (coupled with a //TODO to delete them so they're easy to find and comment out when you're done). Read the time stuff in the book, it is probably the most helpful section in there.
Buchalka's Java Masterclass - https://www.udemy.com/java-the-complete-java-developer-course
I'm glad I took the time to go through this one. There were a lot of programming concepts I was just using without fully understanding how it worked. I still don't 'fully' understand it all but it did clear up a lot of cobwebs. If you're not ready for the project after you watch the webinars, these will be worth your time. You can always skip to the parts you know you need work on if you can actually pinpoint your weaknesses.
My Experience:
I spent a week playing with the examples in the webinars and setting up my program environment and design. I also set up the proper folders and scripts so by the time I started watching the webinars, I would throw in rubric notes or maybe a link to a resource. I set up the database before getting around to the programming since that's the one thing I do have experience with. I wrote up the queries I imagined I would need and saved them for a rainy day. Then I played with GUI components to decide how I wanted everything to look (this changed as I actually implemented them and figured out more efficient ways to do it, but putting it together got me organizing my thoughts and work flow early on).
With Software I, I was able to breeze through the beginning part and struggled at the end. I had the opposite experience with this project. I was so slow in the beginning I thought I might need the rest of my term to get through this course. But as I chipped away at each requirement, progress began to cascade. At one point I thought I was going to finish by the end of the week and I ended up submitting by that Tuesday evening.
This course is really hefty and worth all 6 CU's! The requirements read as short but there is so much involved in getting through each one. You're also coordinating the database with java and scene builder and at times it felt like a game of pick-up-sticks. For the most part, you can go through the sections by order of the rubric, at least at first. Customers took the longest, almost two weeks. Then I managed to crush through Appointments over a weekend. Reports were done in an evening. Then I spent a few days adding validations and polishing up some of the code.
I didn't want to stop when I did, but there were so many other features I wanted to implement that I figure I'd better save it for when I'm not paying $600 a month for the privilege of staying longer than I needed to. So I have a list of things I want to implement after graduation. I think I did a nifty job for a beginner programmer, almost GitHub worthy. My paper is in the slack google drive. It doesn't give anything away, just a lot of screen shots and names of my files with line numbers when applicable. It's a great example on how to format all papers at WGU (using rubric headers and filling in the blanks).
Here's another slack invite in case you've never made it to the end of any of my posts before now or want to see my paper (join then use the !googledrive command to get a link). Yes I'm there and will respond to messages, though there are a few days during the week in which I only log in long enough to answer messages and catch up on anything I've been tagged in. - https://join.slack.com/t/wguit/signup?x=x-33472218180-427664703120
I have 2 classes left (Introduction to Artificial Intelligence and Capstone).