Skip to content

Commit

Permalink
Refactorized profile edition
Browse files Browse the repository at this point in the history
  • Loading branch information
marpiec committed Apr 24, 2012
1 parent 4b02b90 commit c0a079f
Show file tree
Hide file tree
Showing 12 changed files with 102 additions and 85 deletions.
@@ -1,6 +1,7 @@
package pl.marpiec.socnet.web.page.editUserProfilePage

import component.{JobExperienceListPanel, PersonalSummaryPanel}
import jobExperienceListPanel.JobExperienceListPanel
import personalSummaryPanel.PersonalSummaryPanel
import pl.marpiec.socnet.database.UserProfileDatabase
import pl.marpiec.socnet.di.Factory
import pl.marpiec.socnet.model.UserProfile
Expand All @@ -16,12 +17,13 @@ import pl.marpiec.socnet.web.application.{SocnetRoles, SocnetSession}

class EditUserProfilePage extends SecureWebPage(SocnetRoles.USER) {

setVersioned(false)

val userProfileCommand: UserProfileCommand = Factory.userProfileCommand
val userProfileDatabase: UserProfileDatabase = Factory.userProfileDatabase
val session: SocnetSession = getSession.asInstanceOf[SocnetSession]


setVersioned(false)

val userProfileOption = userProfileDatabase.getUserProfileByUserId(session.user.id)
val userProfile = userProfileOption.getOrElse(createUserProfile)

Expand Down
@@ -1,4 +1,4 @@
package pl.marpiec.socnet.web.page.editUserProfilePage.component
package pl.marpiec.socnet.web.page.editUserProfilePage.addJobExperiencePanel

import pl.marpiec.socnet.model.userprofile.JobExperience
import org.apache.wicket.markup.html.panel.Panel
Expand All @@ -7,12 +7,11 @@ import org.apache.wicket.markup.html.WebMarkupContainer
import org.apache.wicket.ajax.markup.html.AjaxFallbackLink
import org.apache.wicket.ajax.AjaxRequestTarget
import org.apache.wicket.model.{CompoundPropertyModel, PropertyModel}
import pl.marpiec.socnet.service.userprofile.input.JobExperienceParam
import org.apache.wicket.markup.html.form.{TextArea, TextField, Form}
import org.apache.wicket.ajax.markup.html.form.AjaxButton
import pl.marpiec.socnet.di.Factory
import pl.marpiec.socnet.model.{UserProfile, User}
import pl.marpiec.socnet.web.wicket.SecureForm
import pl.marpiec.socnet.web.page.editUserProfilePage.model.JobExperienceFormModel
import pl.marpiec.socnet.web.wicket.{SecureAjaxButton, SecureForm}

/**
* ...
Expand All @@ -24,7 +23,6 @@ class JobExperiencePanel(id: String, val user: User, val userProfile: UserProfil

val userProfileCommand = Factory.userProfileCommand


var edit = false

setOutputMarkupId(true)
Expand Down Expand Up @@ -59,58 +57,47 @@ class JobExperiencePanel(id: String, val user: User, val userProfile: UserProfil

add(new SecureForm[JobExperienceFormModel]("experienceForm") {

val jobExperienceModel = new JobExperienceFormModel
jobExperienceModel.companyName = jobExperience.companyName
jobExperienceModel.position = jobExperience.position
jobExperienceModel.description = jobExperience.description
jobExperienceModel.id = jobExperience.id
override def onConfigure() {
setVisible(edit)
}

setModel(new CompoundPropertyModel[JobExperienceFormModel](jobExperienceModel))
val formModel = JobExperienceFormModel(jobExperience)

setModel(new CompoundPropertyModel[JobExperienceFormModel](formModel))

add(new TextField[String]("companyName"))
add(new TextField[String]("position"))
add(new TextArea[String]("description"))


add(new AjaxButton("cancelButton") {
def onSubmit(target: AjaxRequestTarget, form: Form[_]) {
add(new SecureAjaxButton("cancelButton") {
def onSecureSubmit(target: AjaxRequestTarget, form: Form[_]) {
val model = form.getModel.asInstanceOf[CompoundPropertyModel[JobExperienceFormModel]].getObject
model.companyName = jobExperience.companyName
model.position = jobExperience.position
model.description = jobExperience.description
model.id = null
JobExperienceFormModel.copy(model, jobExperience)
edit = false
target.add(JobExperiencePanel.this)
}

def onError(target: AjaxRequestTarget, form: Form[_]) {
throw new IllegalStateException("Problem processing AJAX request")
}
})

add(new AjaxButton("submitButton") {
def onSubmit(target: AjaxRequestTarget, form: Form[_]) {
add(new SecureAjaxButton("submitButton") {
def onSecureSubmit(target: AjaxRequestTarget, form: Form[_]) {

val model = form.getModel.asInstanceOf[CompoundPropertyModel[JobExperienceFormModel]].getObject
jobExperience.companyName = model.companyName
jobExperience.position = model.position
jobExperience.description = model.description
jobExperience.id = model.id

userProfileCommand.updateJobExperience(user.id, userProfile.id, userProfile.version, model)
//save changes
userProfileCommand.updateJobExperience(user.id, userProfile.id, userProfile.version, model.createJobExperienceParam)
//update display model
JobExperienceFormModel.copy(jobExperience, model)
//increment version for next updates
userProfile.incrementVersion

edit = false
target.add(JobExperiencePanel.this)
}

def onError(target: AjaxRequestTarget, form: Form[_]) {
throw new IllegalStateException("Problem processing AJAX request")
}
})

override def onConfigure() {
setVisible(edit)
}

});

}

This file was deleted.

@@ -1,20 +1,20 @@
package pl.marpiec.socnet.web.page.editUserProfilePage.component
package pl.marpiec.socnet.web.page.editUserProfilePage.jobExperienceListPanel

import org.apache.wicket.markup.html.panel.Panel
import collection.mutable.ListBuffer
import pl.marpiec.socnet.model.userprofile.JobExperience
import org.apache.wicket.markup.repeater.RepeatingView
import org.apache.wicket.markup.html.list.AbstractItem
import pl.marpiec.socnet.service.userprofile.input.JobExperienceParam
import org.apache.wicket.ajax.markup.html.AjaxLink
import org.apache.wicket.ajax.AjaxRequestTarget
import org.apache.wicket.markup.html.form.{TextArea, TextField, Form}
import org.apache.wicket.ajax.markup.html.form.AjaxButton
import org.apache.wicket.model.CompoundPropertyModel
import org.apache.wicket.MarkupContainer
import pl.marpiec.socnet.model.{UserProfile, User}
import pl.marpiec.socnet.di.Factory
import pl.marpiec.socnet.web.wicket.{SecureFormModel, SecureAjaxButton, SecureForm}
import pl.marpiec.socnet.web.wicket.{SecureAjaxButton, SecureForm}
import pl.marpiec.socnet.web.page.editUserProfilePage.addJobExperiencePanel.JobExperiencePanel
import pl.marpiec.socnet.web.page.editUserProfilePage.model.JobExperienceFormModel

/**
* ...
Expand All @@ -24,11 +24,10 @@ import pl.marpiec.socnet.web.wicket.{SecureFormModel, SecureAjaxButton, SecureFo
class JobExperienceListPanel(id: String, val user: User, val userProfile: UserProfile,
val jobExperience: ListBuffer[JobExperience]) extends Panel(id) {

setOutputMarkupId(true)

val userProfileCommand = Factory.userProfileCommand
val uidGenerator = Factory.uidGenerator

setOutputMarkupId(true)

val jobExperienceList: RepeatingView = new RepeatingView("repeating") {
for (experience <- jobExperience) {
Expand All @@ -54,18 +53,13 @@ class JobExperienceListPanel(id: String, val user: User, val userProfile: UserPr
add(new TextArea[String]("description"))


add(new AjaxButton("cancelButton") {
def onSubmit(target: AjaxRequestTarget, form: Form[_]) {
add(new SecureAjaxButton("cancelButton") {
def onSecureSubmit(target: AjaxRequestTarget, form: Form[_]) {
val model = form.getModel.asInstanceOf[CompoundPropertyModel[JobExperienceFormModel]].getObject
cleanModel(model)
model.clean()
newJobExperienceForm.setVisible(false)
showNewExperienceFormLink.setVisible(true)
target.add(JobExperienceListPanel.this)

}

def onError(target: AjaxRequestTarget, form: Form[_]) {
throw new IllegalStateException("Problem processing AJAX request")
}
})

Expand All @@ -82,31 +76,20 @@ class JobExperienceListPanel(id: String, val user: User, val userProfile: UserPr
experience.position = model.position
experience.id = newExperienceId

userProfileCommand.addJobExperience(user.id, userProfile.id, userProfile.version, model, newExperienceId)
userProfileCommand.addJobExperience(user.id, userProfile.id, userProfile.version, model.createJobExperienceParam, newExperienceId)
userProfile.incrementVersion

addExperienceToJobExperienceList(jobExperienceList, experience)

cleanModel(model)
model.clean()

newJobExperienceForm.setVisible(false)
showNewExperienceFormLink.setVisible(true)
target.add(JobExperienceListPanel.this)
}

def onError(target: AjaxRequestTarget, form: Form[_]) {
throw new IllegalStateException("Problem processing AJAX request")
}
})
}

def cleanModel(model: JobExperienceParam) {
model.companyName = ""
model.description = ""
model.position = ""
model.id = null
}


val showNewExperienceFormLink: AjaxLink[String] = new AjaxLink[String]("showNewExperienceFormLink") {
setOutputMarkupId(true)
Expand Down
@@ -0,0 +1,59 @@
package pl.marpiec.socnet.web.page.editUserProfilePage.model

import pl.marpiec.socnet.service.userprofile.input.JobExperienceParam
import pl.marpiec.socnet.web.wicket.SecureFormModel
import pl.marpiec.util.UID
import org.joda.time.LocalDate
import pl.marpiec.socnet.model.userprofile.JobExperience

/**
* ...
* @author Marcin Pieciukiewicz
*/

class JobExperienceFormModel extends SecureFormModel {

var id: UID = null
var companyName: String = ""
var position: String = ""
var description: String = ""

def createJobExperienceParam:JobExperienceParam = {
val param = new JobExperienceParam
param.id = this.id
param.companyName = this.companyName
param.position = this.position
param.description = this.description
param
}

def clean() {
id = null
companyName = ""
position = ""
description = ""
}
}

object JobExperienceFormModel {

def apply(param:JobExperience) = {
copy(new JobExperienceFormModel, param)
}

def copy(to:JobExperienceFormModel, from:JobExperience):JobExperienceFormModel = {
to.id = from.id
to.companyName = from.companyName
to.position = from.position
to.description = from.description
to
}

def copy(to:JobExperience, from:JobExperienceFormModel):JobExperience = {
to.id = from.id
to.companyName = from.companyName
to.position = from.position
to.description = from.description
to
}
}
@@ -1,4 +1,4 @@
package pl.marpiec.socnet.web.page.editUserProfilePage.component
package pl.marpiec.socnet.web.page.editUserProfilePage.model

import pl.marpiec.socnet.service.userprofile.input.PersonalSummary
import pl.marpiec.socnet.web.wicket.SecureFormModel
Expand Down
@@ -1,4 +1,4 @@
package pl.marpiec.socnet.web.page.editUserProfilePage.component
package pl.marpiec.socnet.web.page.editUserProfilePage.personalSummaryPanel

import org.apache.wicket.markup.html.panel.Panel
import org.apache.wicket.markup.html.WebMarkupContainer
Expand All @@ -13,6 +13,7 @@ import pl.marpiec.socnet.service.userprofile.input.PersonalSummary
import org.apache.wicket.markup.html.form.{TextArea, TextField, Form}
import org.apache.wicket.model.{PropertyModel, CompoundPropertyModel}
import pl.marpiec.socnet.web.wicket.{SecureAjaxButton, SecureForm}
import pl.marpiec.socnet.web.page.editUserProfilePage.model.PersonalSummaryFormModel

/**
* ...
Expand Down Expand Up @@ -86,11 +87,6 @@ class PersonalSummaryPanel(id: String, val user: User, val userProfile: UserProf
edit = false
target.add(PersonalSummaryPanel.this)
}

def onError(target: AjaxRequestTarget, form: Form[_]) {
throw new IllegalStateException("Problem processing AJAX request")
}

})

override def onConfigure() {
Expand Down
Expand Up @@ -26,4 +26,8 @@ abstract class SecureAjaxButton(id:String) extends AjaxButton(id) {
}

def onSecureSubmit(target: AjaxRequestTarget, form: Form[_])

def onError(target: AjaxRequestTarget, form: Form[_]) {
throw new IllegalStateException("Problem processing AJAX request")
}
}
Expand Up @@ -3,7 +3,6 @@ package pl.marpiec.socnet.web.wicket
import org.apache.wicket.markup.html.form.{HiddenField, Form}
import pl.marpiec.socnet.web.application.SocnetSession
import org.apache.wicket.model.CompoundPropertyModel
import pl.marpiec.socnet.web.page.editUserProfilePage.component.PersonalSummaryFormModel


/**
Expand Down

0 comments on commit c0a079f

Please sign in to comment.