Survey
* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project
* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project
Transforming the e-Concordiensis Edward Maas Senior Capstone Design Project Advisor: Professor Cass About the Project Client: Concordiensis ( School Newspaper ) Website: http://concordy.union.edu Project: created a robust electronic publishing infrastructure. Transformed From: HTML & PDF Articles Technology Used Custom Content Management System Open Source JAVA Tools: Model-View-Controller for the Web Object / Relational Persistence and Query Service Struts (http://struts.apache.org/ ) Hibernate (http://www.hibernate.org/ ) Image Manipulation Image Conversion (TIFF-to-PNG) Tiff2png tool (http://www.libpng.org/pub/png/apps/tiff2png.html) Image Scaling JMagick (http://www.yeo.id.au/jmagick/) How it works? Browser (Mozilla, IE, Firefox, Safari) Model View (JSP) 2 4 5 Controller 2 Relational Database (MySQL 4.1) 3 STRUTS Presentation ( jsp includes & tiles ) Object 2 Relational (Hibernate) Java Server (tomcat) 1 Request Business Logic Data Access (hibernate) View Response How Struts is Used! Created Forms (model) AddArticleForm, LoginForm, etc <form-bean name="LoginForm" type="org.apache.struts.validator.DynaValidatorForm"> <form-property name="username" type="java.lang.String" /> <form-property name="password" type="java.lang.String" /> </form-bean> Wrote classes to process forms edu.union.struts.LoginForm.java: // Get Username & Password from form String username = (String)(newLoginForm.get("username")); String password = (String)(newLoginForm.get("password")); // Check to make sure they’re in the database & passwords are correct Staff authUser = (Staff)smanager.getBySignInCredentials(username, password); //On Login Success return (mapping.findForward("success")); Hibernate Call Struts Usage Continued… Create Action Mappings (controller) Validation & Forwards <action path="/admin/LoginForm" type="edu.union.struts.LoginForm" name="LoginForm" scope="request" validate="true" input="/Login.jsp"> <forward name="success" path="/AdminIndex.jsp" /> </action> Failure is defined globally <global-forwards> <forward name="failure" path="/admin/Login.do" /> <forward name="login" path="/admin/Login.do" /> </global-forwards> Data Organization (relational) ER Diagram How Hibernate Works! Define HBM XML config, Struts uses one too! Defines correspondence between tables and classes Defines Keys / Relationships Create Value Object Classes public Integer getId() { return this.Id; } public void setId(Integer Id) { this.Id = Id; } Data Organization Section.java Edition.java {Date, Volume, Publish} Sports News Arts Sets Represent Multi-valued Relationships Update can be made with a single action Features {Title } Images Articles { AuthorName Headline Content } Staff Hibernate Data Pseudo Diagram { Filename Height Width } Hibernate In Action! Create Queries (HQL) List users = session.find( "from Staff as staff where " + "staff.username = ? and staff.password = ?", new Object[] { uUsername, uPassword }, new Type[] { Hibernate.STRING, Hibernate.STRING }); Integrate within Controller (Struts) Staff authUser = (Staff) smanager.getBySignInCredentials(username, password); Presentation Layer ! JSP Templates (Green) Struts & Standard JSP Tags for form elements (Black) Custom Java Tags (Yellow) Custom Layout Tag: StoryTag.java AssignPhoto Form Struts at work – CheckImages.jsp Putting it All Together! Code written primarily on Linux Revisions tracked with cvs Build & Deployment Process: Apache Ant Java Container: Jakarta Tomcat 5.x Next Steps & Neat Additions! Present Finished Product to Concordy Editors for beta testing Deploy Database and Application on VU Performance Test under actual traffic! Add Editing features to data in the Content Manager Fix Access Control Lists Create RSS Syndication Feeds More cross browser/ machine layout & GUI Questions ?