Hello guys,

I have a many-to-many relationship between two mappers called, Users  
and Devices.

There is also an API that receives and XML message that contains one  
user and one device.

The API could create the Device and User with the relationship or it  
could create only the relationship in case the users and/or device  
already exists.

The problem I have is that the API creates the User and the Device,  
but the not the relationship. This is the code that saves the records  
(just a test for a now):

def addUser(req: Req): LiftResponse = {

         var tempUserName = ""
         var tempDeviceName = ""
         var deviceAlreadyExists = false

         val newUser = new User
         val newDevice = new Device
         req.xml match {
             case Full(<person>{parameters @_*}</person>) => {
                     for(parameter <- parameters){ parameter match {
                             case <userName>{userName}</userName> =>  
tempUserName = userName.text
                             case <firstName>{firstName}</firstName>  
=> newUser.firstName(firstName.text)
                             case <lastName>{lastName}</lastName> =>  
newUser.lastName(lastName.text)
                             case <password>{password}</password> =>  
newUser.password(password.text)
                             case <email>{email}</email> =>  
newUser.email(email.text)
                             case <createdon>{createdOn}</createdon>  
=> newUser.createdOn(new java.util.Date(createdOn.text))
                             case <updatedon>{updatedOn}</updatedon>  
=> newUser.updatedOn(new java.util.Date(updatedOn.text))
                             case <device>{deviceName}</device> =>  
tempDeviceName = deviceName.text
                             case _ =>
                         }
                     }
                     try {
                         Device.find(By 
(Device.deviceName,tempDeviceName)) match {
                             case Full(deviceRequested) =>
                                 deviceAlreadyExists = true
                             case _ => {
                                     newDevice.deviceName 
(tempDeviceName)
                                     newDevice.createdBy(tempUserName)
                                     newDevice.createdOn 
(newUser.createdOn)
                                     newDevice.updatedBy(tempUserName)
                                     newDevice.updatedOn 
(newUser.updatedOn)
                                     newDevice.save
                                 }
                         }
                         User.find(By(User.userName, tempUserName))  
match {
                             case Full(userRequested) =>
                                 CreatedResponse(wrapXmlBody 
(<operation id="addPerson" success="1"></operation>), "text/xml")
                             case _ => {
                                     newUser.userName(tempUserName)
                                     newUser.createdBy(tempUserName)
                                     newUser.updatedBy(tempUserName)
                                     newUser.devices.clear
                                     newUser.validated(true)
                                     newUser.devices += newDevice
                                     newUser.save
                                     CreatedResponse(wrapXmlBody 
(<operation id="addPerson" success="0"></operation>), "text/xml")
                                 }
                         }
                     }
                     catch {
                         case e => Log.error("Could not add person/ 
device", e); BadResponse()
                     }
                 }
             case _ => Log.error("Request was malformed "+req.view);  
BadResponse()
         }
     }

The field "devices" is the MappedManyToMany field within the User  
mapper.

What am I doing wrong?

Thanks in advance,

GA


--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"Lift" group.
To post to this group, send email to liftweb@googlegroups.com
To unsubscribe from this group, send email to 
liftweb+unsubscr...@googlegroups.com
For more options, visit this group at 
http://groups.google.com/group/liftweb?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to