I've made a strange method with multiples conditionals, creating a lot of Lists and I was wondering if I could write it in a better and more legible way.
def findRooms(room:Room) = {
...
if(room.id != null && !room.id.isEmpty)
query+=("_id" -> room.id)
if(room.members != null && room.members.length > 0){
val emails = scala.collection.mutable.MutableList[String]()
val phones = scala.collection.mutable.MutableList[String]()
val forwardUris = scala.collection.mutable.MutableList[String]()
for(member <- room.members){
if(member.email != null && member.email != None)
emails+=member.email.get
if(member.forwardUrl != null && member.forwardUrl != None)
forwardUris+=member.forwardUrl.get
if(member.phoneNumber != null && member.phoneNumber != None)
phones+=member.phoneNumber.get
}
if(emails.size > 0)
query+=("members.user.email" -> MongoDBObject("$all" -> emails))
if(phones.size > 0)
query+=("members.user.phoneNumber" -> MongoDBObject("$all" -> phones))
if(forwardUris.size > 0)
query+=("members.user.forwardUrl" -> MongoDBObject("$all" -> forwardUris))
}
if(room.tags != null && room.tags.length > 0){
val tags = scala.collection.mutable.MutableList[String]()
for(tag <- room.tags){
tags+=tag
}
if(tags.size > 0){
query+=("tags" -> MongoDBObject("$in" -> tags))
}
}
...
}