Tuesday, August 10, 2010

Typical web application developement activities

Objective :

The prime motives behind daily incremental backup of web project ( say for example : ccm user app ) Eclipse workspace during a web application development are

- To incrementally add functionality
- To keep the build always successful.
- Track the various technological solutions behind implementation.


I shall use the terminology Sprint[1] cycle against the date terminology to go in
chronological order.

SPRINT [0]
- Requirements Document is ready and communication with customer on way.


SPRINT [1]

- Get use to the JEMT ( Java/JEE , Eclipse IDE , MySQL DB, Tomcat Web/App Server ) Skills
- Setup and configuration of local development box.
- Come up with a Skeletal application.
- Primary page navigation working. ( i.e hook JSP with their servlets )


SPRINT [2]

- Fine tune login page, authentication against DB. ( Until AXL dependency is solved by another developer )
- Database schema seeding , Use of MySql Browser to have some frequent queries at your finger tips for testing.
- Java servlet classes for primary use case handling into the workspace.
- Helper beans in separate packages -  a) DB connection b)  Mailer Bean

SPRINT [3]

- Design document in parallel to be drafting for better elaboration.
- Sequence diagram drafted online
- JSTL technology ; View Bean iteration ; Combo box fetching DID details done.
- Reports using same JSTL technology.

SPRINT [4]

- Properties file for application creation. Reading it during login and populate in helper-Bean - MyAppProperties
- MailServlet alone tested and properties file reading also successful.
- DB operations for various prime use flows done. JDBC technology used.
- Tested application as whole till now.


SPRINT [5]

- Look and feel ; to be in left controls ; header and center region done. Frameset / DIV HTML technology.
- Integrate Javascript for some client side validations.
- Range DID inputs done. i.e bulk insertion of rows not violating the primary constraint.
- Migration solution done. POI technology for xls sheet + Self executing jar with in built help done.
- Testing and deploy  ( Bundling of dependent jars with web application ) scenario till now.
- Deploy guide steps in parallel.

SPRINT [6]

- Location code values to be read from properties file done. Important datastructure LinkedHashMap usage
- Generic resource messages JSP + Message bundle integrated.
- Various boundary cases simulated and tested.
- Helper beans in dedicated packages - for AXL system integration done.
- Additional reports use cases done and tested to aid the customer.
- Comprehensive error/message reporting.
SPRINT [7]

- Migration to CCM 6.1 ; AXL issues hit during the stuff. Good in one sense that we were able to catch in-house
  rather than at production site
- Pre-conditions and Post conditions check for AXL external system interaction done.
- Implemented logging using Log4J. Improves traceability and troubleshooting down the line.
- Testing against target platform CCM 5.1 done. ( Setup and licensing issues in-house to be dealt with )

SPRINT [8]
- Implemented pagination. Refined UI.
- Deployment guide drafted and done.
- Testplan created for basic sanity purpose.

SPRINT [9]
- Customer demo . Deployment on production
- Defect fixing mode and enter into maintenance mode.

A lot of time goes in googling for some basic information. If you can index these pages for reference, it would help in quick development and troubleshoot.

Reference links

JDBC Example with MySQL Working with sessions Display Data from Database in JSP The Ultimate JSP Tabs! E-Surfer's Weblog: Thinking,feeling in JAVA, J2EE, XML, Web Services development JSP - jstl-standard-1.1.2.jar - Jakarta Standard 1.1 Taglib - Standard Simple Web Application using Servlet How to authenticate in a webapplication using jsp and servlet | s2sgateway All Classes (POI API Documentation) on Apache Servlet and JSP development with Eclipse WTP HTML Forms tag lib JSP, on click , forward to new JSP - Google Search Server-side Java: Understanding JavaServer Pages Model 2 architecture - JavaWorld Servlet form processing example, Handling HTML form submission using Servlet, form servlet Step by step J2EE web development tutorials,Servlet tutorials How to use jsp page to display data from a database table - DevX.com Forums JSP Standard Tag Library (JSTL) c:forEach Tag Retrieve data from database by using sql tag of JSTL SQL library InformIT: Using HTML Forms with Servlets > The FORM Element Javascript Date Validation 'Re: Tomcat 4.1.24 :Cannot forward after response has been committed' - MARC JSTL SQL query taking parameters JavaScript Form Validation : quick and easy! Dynamically add button,textbox,input,radio elements in html form using JavaScript | ViralPatel.net  JSP Syntax  WTP Tomcat FAQ - Eclipsepedia An ordered HashMap in Java — Possibility and Probability Documentation - Cisco Developer Community All versions AXL APIs Client-side HTML table pagination with JavaScript - NewInstance JSP Controls Tag Library AJAX MODE 

Sample structure 
Folder PATH listing for volume System
Volume serial number is 0006EEA4 4E36:2815
C:.
|   .classpath
|   .project
|   project_structure.txt
|  
+---.settings
|       .jsdtscope
|       org.eclipse.jdt.core.prefs
|       org.eclipse.wst.common.component
|       org.eclipse.wst.common.project.facet.core.xml
|       org.eclipse.wst.jsdt.ui.superType.container
|       org.eclipse.wst.jsdt.ui.superType.name
|      
+---build
|   \---classes
|       |   AddDIDServlet.class
|       |   AddUserServlet.class
|       |   DeleteUserServlet.class
|       |   HomeServlet.class
|       |   Login.class
|       |   POIExcelReader.class
|       |   SearchUserServlet.class
|       |   ViewDIDServlet.class
|       |   ViewUserServlet.class
|       |  
|       \---ccmusers
|           \---util
|                   AXLBean$MyTrustManager.class
|                   AXLBean.class
|                   CCMMessageBundle.class
|                   DBConnection.class
|                   LocationBean.class
|                   MailerBean.class
|                   MyAppProperties.class
|                   TableData.class
|                   users_data.class
|                  
+---notes
|       code_snippets.txt
|       customer_input_feedback.txt
|       deploy_steps.txt
|       important_solutions.txt
|       meetings_and_discussions.txt
|       migration_notes.txt
|       resources.txt
|       sample_sql_queries_dev_n_test_status.txt
|      
+---src
|   |   AddDIDServlet.java
|   |   AddUserServlet.java
|   |   DeleteUserServlet.java
|   |   HomeServlet.java
|   |   Login.java
|   |   POIExcelReader.java
|   |   SearchUserServlet.java
|   |   ViewDIDServlet.java
|   |   ViewUserServlet.java
|   |  
|   \---ccmusers
|       \---util
|               AXLBean.java
|               CCMMessageBundle.java
|               DBConnection.java
|               LocationBean.java
|               MailerBean.java
|               MyAppProperties.java
|               TableData.java
|               users_data.java
|              
+---util_scripts
|       ccmusers_v1.sql
|       ccmusers_v2.sql
|      
\---WebContent
    |   adddidpage.jsp
    |   adduserpage.jsp
    |   content.jsp
    |   deleteuserpage.jsp
    |   footer.jsp
    |   gen_validatorv31.js
    |   header.jsp
    |   home.jsp
    |   invalid.jsp
    |   leftcontrols.jsp
    |   login.jsp
    |   message_n_error_display.jsp
    |   paging.js
    |   searched_results.jsp
    |   searched_users.jsp
    |   searchuserpage.jsp
    |   testpagination.jsp
    |   viewdid_info.jsp
    |   viewuser_info.jsp
    |  
    +---images
    |       cal.gif
    |       ccd_application_logo.gif
    |       header.gif
    |       home_icon.gif
    |       line.gif
    |      
    +---META-INF
    |       MANIFEST.MF
    |      
    \---WEB-INF
        |   ccmuserapp.properties
        |   web.xml
        |  
        +---lib
        |       activation.jar
        |       jstl.jar
        |       mail.jar
        |       mysql-connector-java-5.1.13-bin.jar
        |       standard.jar
        |      
        \---tld
                c.tld
                sql.tld
               
Hope this helps in getting the basic framework ready.

Followers