Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Project

...

Team

...

  • Student:

...

  • Robert

...

  • Qin

...

  • Zhengquan

...

Project Description

Problem Statement: Separation of processing logic from presentation layer at the Web UI component in the DSpace application layer.

Problem Elaboration: Although the DSpace three-tier architecture follows the model-view-controller

...

(MVC)

...

architecture,

...

with

...

most

...

of

...

the

...

logic

...

encapsulated

...

in

...

the

...

logic

...

layer,

...

there

...

is

...

still

...

a

...

fair

...

amount

...

of

...

processing

...

logic

...

involved

...

in

...

the

...

Web

...

UI

...

component

...

at

...

the

...

application

...

layer.

...

For

...

example,

...

in

...

the

...

"full.jsp"

...

file

...

under

...

the

...

browse

...

folder

...

of

...

DSpace

...

JSP-UI,

...

there

...

is

...

a

...

thick

...

chunk

...

of

...

scriplet

...

logic

...

embedded

...

from

...

lines

...

30

...

to

...

164.

...

Solution: *

...

The

...

current

...

proposal

...

is

...

to

...

adopt

...

the

...

*Spring

...

Web

...

MVC

...

framework

...

as

...

a

...

means

...

to

...

enforce

...

the

...

MVC

...

framework

...

architecture

...

and

...

the

...

use

...

of

...

the

...

Freemarker

...

template

...

engine

...

as

...

a

...

means

...

to

...

enforce

...

the

...

amount

...

of

...

logic

...

at

...

the

...

presentation

...

layer.

...

Freemarker

...

offers

...

an

...

alternative

...

to

...

JSP

...

and

...

JSTL

...

tags

...

in

...

reducing

...

scriplet

...

logic

...

via

...

the

...

use

...

of

...

more

...

data

...

model

...

flexibility,

...

providing

...

the

...

use

...

of

...

customized

...

template

...

snippets

...

via

...

#macro

...

definitions

...

and

...

etc...

...

Freemarker

...

provides

...

a

...

lethal

...

combination

...

with

...

the

...

Spring

...

MVC

...

framework

...

in

...

reducing

...

presentation

...

layer

...

logic

...

by

...

the

...

following

...

breakdown

...

of

...

goals:

...

Breakdown

...

of

...

goals

...

within

...

Spring

...

MVC

...

framework

...

Views:

...

Freemarker

...

restricts

...

dynamic

...

content

...

display

...

to

...

the

...

use

...

of

...

Expression

...

Languages

...

variables.

...

${output}

...

and

...

certain

...

logic

...

processing

...

via

...

the

...

use

...

of

...

its

...

unique

...

syntax

...

that

...

are

...

ignored

...

by

...

the

...

web

...

browser.

...

Eg:

...

#if,

...

#assign

...

tags.

...

Dispatcher

...

Servlet:

...

Dispatcher

...

servlets

...

act

...

as

...

the

...

"front

...

gate"

...

role

...

in

...

identifying

...

urls,

...

and

...

delegating

...

the

...

appropriate

...

controller

...

class

...

to

...

handle

...

the

...

request

...

via

...

bean

...

tags

...

definitions.

...

Controller

...

classes:

...

To

...

handle

...

request

...

urls

...

from

...

the

...

dispatcher

...

servlet,

...

delegate

...

the

...

appropriate

...

method/class

...

method

...

calls

...

via

...

the

...

use

...

of

...

request/response

...

annotations,

...

correspond

...

in

...

parsing

...

data

...

values

...

to

...

the

...

model

...

component

...

for

...

logic

...

processing,

...

and

...

delegating

...

the

...

appropriate

...

response

...

views.

...

The

...

full

...

path

...

url

...

of

...

the

...

views

...

will

...

be

...

automatically

...

resolved

...

by

...

the

...

dispatcher

...

servlet

...

by

...

gearing

...

it

...

with

...

the

...

appropriate

...

prefix

...

and

...

suffix.

...

Model

...

and

...

View:

...

Represents

...

a

...

Class

...

to

...

represent

...

a

...

model

...

and

...

view

...

returned

...

by

...

a

...

handler

...

used

...

by

...

a

...

DispatcherServlet.

...

The

...

view

...

can

...

take

...

the

...

form

...

of

...

a

...

reference

...

to

...

a

...

View

...

object,

...

or

...

a

...

String

...

view

...

name

...

which

...

will

...

need

...

to

...

be

...

resolved

...

by

...

a

...

ViewResolver

...

object.

...

The

...

model

...

is

...

a

...

Map,

...

allowing

...

the

...

use

...

of

...

multiple

...

data

...

objects

...

keyed

...

by

...

name.

...

These

...

keys

...

will

...

be

...

utilize

...

by

...

the

...

#assign

...

syntax

...

of

...

Freemarker

...

to

...

provide

...

dynamic

...

content

...

for

...

views.

...

Model:

...

To

...

ensure

...

that

...

complex

...

logic

...

algorithms

...

computation

...

is

...

handled

...

entirely

...

at

...

the

...

business

...

logic

...

layer.

...

For

...

example,

...

session

...

beans,

...

web

...

services.

...

Project

...

Timeline

...

Before

...

April

...

20:

...

  • Installation

...

  • of

...

  • DSpace

...

  • with

...

  • netbeans

...

  • Initiate

...

  • contact

...

  • with

...

  • the

...

  • Mentor

...

  • to

...

  • confirm

...

  • the

...

  • specific

...

  • milestones

...

  • required

...

  • in

...

  • the

...

  • project

...

  • development

...

  • Initiate

...

  • contact

...

  • with

...

  • the

...

  • Mentor

...

  • on

...

  • the

...

  • specific

...

  • skill

...

  • sets

...

  • required

...

  • for

...

  • this

...

  • project

...

  • To

...

  • code

...

  • a

...

  • complete

...

  • Spring

...

  • Web

...

  • MVC

...

  • application

...

  • with

...

  • Netbeans
  • To read up the DSpace API documentation

April 20 – May 23 (Before the official coding time):

  • To remain in contact with the mentor via email and IRC and to clarify existing doubts in the process of learning and discovery about DSpace.
  • Continue reading up on DSpace API documentation, especially the specific required components
  • To re-model previous enterprise applications based on the Spring MVC framework
  • Using of FreeMarker engine for presentation layer code generation
  • Understanding the webmvc module
  • Understanding GIT functionalities to commit code to GitHub. 

May 23 – June 18 (Official coding period starts):

  • Understanding the project objectives of the first phase deliverables
  • Understanding webmvc module
  • Coding on the first phase deliverables
  • Assisting in webmvc system documentation
  • Weekly pull request to commit forked copy from robertqin/webmvc to dspace/webmvc
  • Recoding all logic from the JSP (Method call handlers) into relevant Servlets and applying the use of the Freemarker syntax.
  • System documentation
  • Reporting of any system bugs and errors on https://jira.duraspace.org/browse/DWMVC

...

  • Weekly scrum with mentor on progress statuses including clarification on any existing doubts

June 18 – July 5:

  • Progressive unit testing on the previous milestone deliverable
  • Post implementation review of the previous milestone deliverable
  • Coding on the next mile stone deliverable
  • Weekly pull request to commit forked copy from robertqin/webmvc to dspace/webmvc
  • Assisting in webmvc system documentation
  • System documentation
  • Reporting of any system bugs and errors on https://jira.duraspace.org/browse/DWMVC

...

  • Weekly scrum with mentor on progress statuses including clarification on any existing doubts

JULY 6th MID TERM EVALUATION

July 6 – July 15:

  • To prepare a presentation report to update developers on the developed functionalities, exceptions and bugs encountered
  • Make further changes in the code to improve the Functionality, Exception handling, Bug Removal.
  • Weekly pull request to commit forked copy from robertqin/webmvc to dspace/webmvc
  • To maintain contact with the developers and to update them on the progress
  • Consultation with the mentor on the next phase of milestones deliverables
  • Assisting in webmvc system documentation
  • Coding on the second phase deliverable
  • Phase 2 system documentation

July 15 – July 25:

  • To be in constant touch with the developers and to let them know about our progress.
  • Progressive unit testing on the previous milestone deliverable
  • Post implementation review of the previous milestone deliverable
  • Coding on the next mile stone deliverable
  • Assisting in webmvc system documentation
  • Most of the time will be consumed for rigorous testing and bug fixes. 
  • Coding on phase three deliverables
  • Phase 3 system documentation

July 25 – July 31:

  • Post implementation review

A Buffer of two weeks has been kept for any unpredictable delay.

NOTE: Require webmvc documentation and update dspace 1.7.0 API library.