Want to read Slashdot from your mobile device? Point it at m.slashdot.org and keep reading!

 



Forgot your password?
typodupeerror
×
Java

Journal robi2106's Journal: I submitted a request for a Source Forge Project 6

Wow, I haven't been posting much lately? Probably because I am so dang busy with married life, and my job. Speaking of my job......

So I finally got around to reading about how to open up a SF.net project. I picked all the necessary info and submitted my project description. The project is something that I have been working on with a coworker of mine as a learning project for our job. Nothing too fancy. It is a web-based shopping cart using Java, WebWork, Hibernate, and MySQL.

The project is in the approval process , but if approved will be called JaWaH-Shopping (Java and Webwork and Hibernate.... see aren't I clever). Feel free to take a look when / if the project is approved. We make HEAVY use of factory methods to hide the implementation details. I am starting to like factory methods more and more despite them being hard to wrap my head around at first.

Right now the project isn't fancy, but it does have a fair amount of features. There are 6 DB tables (completedOrders, orderStatus, items, orderedItems, shippingOptions, and CreditCards), 130 source code & config files covering: 6 DB directory interfaces, 6 DB repository interfaces (yes we separate them just to be completely confusing) and therefore 6 hibernate directories and 6 hibernate repositories, 6 persistence factories to choose the persistence dir / rep (currently only have the hibernate dir & reps), shipping calculator & factory, and 13 POJOS (plain 'ol java objects), an assorted dozen or so java action classes for webwork to play with, and a dozen or so xml & config files for hibernate & webwork. The amazing part is that it works, though we have only been running it inside of the OC4J J2EE provided with JDeveloper. One of my tasks this week is to get it functional in a tomcat install, even though that is not what we use for our production J2EE environment.

The project does have a few library dependencies: An in house Persistence manager (need to figure out legality of release for the code), Hibernate 2.1, MySQL Connecter (provided by JDeveloper), WebWork 2.2, Commons Logging (jdeveloper package), the JSP runtime, webwork taglib 2.2, Jdeveloper Commons Collections, JDeveloper's Log4J (logging), JDeveloper Commons Lang 2.1, some in house webwork extensions, an in house message framework (not sure if it is actually used right now), Jasper Reports 1.1 (not used yet), and Jdevelopers JUnit support library. So far the in house packages will need to be left out of the source forge project until I can get them released. Who knows, they may not be needed at all with a few changes to the app.

The functionality map roughly follows below:

  • v1.0 - Create Orders and store orders in DB table (completedOrders table) from items manually populated in DB (items table)
    - Store instance of item being purchased (orderItems table) so price is locked in at time of order
  • v2.0 - AdminInterface package separated from ShoppingCart package. - Item admin interface; create new items & edit existing items.
  • v2.5 - Item sales reporting; reports on sales per item & total sales per item (% # sales, % $ sales, etc).
  • v3.0 - Shipping Options admin interface; shippingOptions table; Create new shipping options & modify existing options
    - Shipping Calculator factory, shipping calculator interface, simple graduated shipping calculator implementation
    - Order Status admin Interface; create new order status steps (orderStatus table) (aka step 1 - received / 2 - charged / 3 - shipped)
    - ShoppingCartValidator; all text input passed through validator object; validator checks for properly formatted phone numbers, credit card numbers, exp date, security #, zip codes, and text
  • v4.0 - Order time date stamp (added column to completedOrders table)
    - Order Status valid flag added to Order Status admin interface
    - Order status added and init to default first valid step (column added to completedOrders table, new hibernate queries)
    - view Completed Orders list; paged in groups of 10
    - view order details from completed orders list
  • v5.0 - Shipping Options selection added to Checkout process
    - All options have pre-calculated total if choosen
    - Warehouse interface: orders not on the final process step can have their order status step changed
  • v6.0 - Item Valid / discontinued column added to DB (shippingOptions table) and added to admin interface
    - Only valid items displayed for Shopping Cart interface
    - Shipping Options valid column added to DB (shippingOptions table) and added to admin interface
    - Only valid shipping options displayed by Checkout process
    - Item Inventory column added to DB (shippingOptions table) and added to admin interface (NOTE: not used anywhere yet)
  • v7.0 - Credit Card table added (CreditCards)
    - Credit Card Admin interface added
    - Valid Credit Cards displayed in drop down box for Shopping Cart
    - JavaDoc comments occasionally added to existing code

The functionality currently in the works or planned is as follows

  • v8.0 - Customer order status interface. Might require adding email address to checkout process (and another column to completedOrders table). Customer can lookup order status by email. Add email address to ShoppingCartValidator
  • v9.0 - Track item inventory; A purchase would automatically decrement inventory to show a demand for item; admin / warehouse interface would need to fill that order. Inventory can show negative quantity indicating backordered items. Shopping cart would need to display backordered items with warning.
    - Add Inventory interface which can only change the inventory quantity
  • v10.0 - Persist customers; another DB table referenced by foreign key in the completedOrders table, a customer authentication interface, a directory / repository / factory / action or two and a few POJOs
  • v11.0 - Persist customer credit card information; another DB table referenced by foreign key in the completedOrders table, a directory / repository / factory / action or two and a POJO
  • v12.0 - Use tomcat instead of only JDev's OC4J
  • v13.0 - ?????
  • Profit!

So now that you see most of the design / roadmap, any comments? Any one want to see the code even if there isn't a source forge project? Questions / comments / feuds with our frameworks of choice or other oddball design choices (What the heck are all these factory methods and repositories & directories!??!). All this java programming reminded me that Josh never did do the unread.org thing. I wonder how hard that would be knowing what I know now? Of course I would want to just add everything to a zillion tables in the DB and would probably make a royal mess out of that project precisely because I do not have any experience on the architecture end of things. What little design there is to this project is from the general information given us by our boss as well as the general edict to "go forth and by fruitful and multiply thy functionality. Oh and keep busy till the background investigations clear so we can show you production code."

jason

This discussion has been archived. No new comments can be posted.

I submitted a request for a Source Forge Project

Comments Filter:
  • Have you considered code.google.com? No approval process. Maybe a little less functionality, but still a nice setup. I don't know what improvements might be coming either.
    • Ahhhh. I didn't know that code.google.com/hosting existed. So it is a source code sharing respository with group level access, etc like SF? Interesting. Thanks for the tip.

      (yoink)

      Ok now I have a google project as well.

      jason
      • by FroMan ( 111520 )
        As far as I can tell, it is only for open source projects (and only a select few licenses). There are three levels of access allowed. First is administrative (creator of the project), second is developer, and third is anyone else.
        • well the jawah-shopping project exists there..... now I just need to figure out how the heck to upload the code. I am getting the nifty Subversion windows shell extension, but google seems to want cmd line access which is not available in the win32 shell version. Looks like I have lots of reading ahead of me.

          jason
          • by FroMan ( 111520 )
            My suggestion:

            Step one, check out the tree. Copy source into new checkout point. Check in. You lose historical data, but it gets it in quick and easy.
            • The lose of historical data would be important if I had any. The project has not lived in any CVS-ish repository yet so there is none to worry about losing. I guess I just need to perform the initial check in.

              jason

A fail-safe circuit will destroy others. -- Klipstein

Working...