@@ -209,82 +209,68 @@ class PPMSSyncService (application: Application) extends Plugin {
209209 metadatas.getMetadataByAttachTo(ResourceRef (ResourceRef .space, aSpace.id)).foreach { metadata =>
210210 Logger .info(" Space " + aSpace.name + " metadata: " + metadata.content)
211211 if (metadata.content != None && projId == (metadata.content \ " projId" ).as[Int ] ) {
212- spaceInDb = aSpace
212+ spaceInDb = Some ( aSpace)
213213 }
214214 }
215215 } // end spaces for each
216216
217217 // var spaceList = allSpaces.filter(_space => _space.name == projName)
218218 // Logger.info("Found:" + spaceList.length + " spaces with given name")
219-
220- if (spaceInDb == None ) {
221- Logger .info(" >>>>>>> No space exists, create a new one <<<<<<" )
222- // create new space
223- var newSpace = ProjectSpace (name = projName, description = desc,
224- created = new Date , creator = getFirstAdmin.get.id,
225- homePage = List .empty, logoURL = None , bannerURL = None ,
226- collectionCount = 0 , datasetCount = 0 , userCount = 0 ,
227- metadata = List .empty,
228- resourceTimeToLive = SpaceConfig .getTimeToLive(),
229- isTimeToLiveEnabled = SpaceConfig .getIsTimeToLiveEnabled(),
230- status = SpaceStatus .PRIVATE .toString,
231- affiliatedSpaces = List .empty)
232- val addedSpace = spaces.insert(newSpace)
233- if (addedSpace == None ) {
234- Logger .error(" Failed to add space" )
235- return
219+ spaceInDb match {
220+ case Some (_aSpace) => {
221+ Logger .info(" >>>>>>>>>>>>>Space exists, update it<<<<<<<<<<<<<<<" )
222+ metadatas.getMetadataByAttachTo(ResourceRef (ResourceRef .space, _aSpace.id)).foreach { metadata =>
223+ Logger .info(" Space " + _aSpace.name + " metadata: " + metadata.content)
224+ if (metadata.content != None && rawDataStorage.equals( ((metadata.content \ " projStorage" ).as[String ]) ) ) {
225+ syncUsersInproject(projId, _aSpace)
226+ }
227+ }
236228 }
237- val addedSpaceUUID = UUIDConversions .stringToUUID(addedSpace.get)
238- events.addObjectEvent(getFirstAdmin, addedSpaceUUID, newSpace.name, " create_space" )
239- // metadata
240- val creator = SyncAgent (id= UUID .generate, serverUrl= Some (new URL (ppmsUrl)) )
241- val spaceMetadata : JsValue = JsObject (
242- Seq (
243- " projType" -> JsString (projType),
244- " projGroup" -> JsString (projGroup),
245- " projStorage" -> JsString (rawDataStorage),
246- " projId" -> JsNumber (projId)
229+ case None => {
230+ Logger .info(" >>>>>>> No space exists, create a new one <<<<<<" )
231+ // create new space
232+ var newSpace = ProjectSpace (name = projName, description = desc,
233+ created = new Date , creator = getFirstAdmin.get.id,
234+ homePage = List .empty, logoURL = None , bannerURL = None ,
235+ collectionCount = 0 , datasetCount = 0 , userCount = 0 ,
236+ metadata = List .empty,
237+ resourceTimeToLive = SpaceConfig .getTimeToLive(),
238+ isTimeToLiveEnabled = SpaceConfig .getIsTimeToLiveEnabled(),
239+ status = SpaceStatus .PRIVATE .toString,
240+ affiliatedSpaces = List .empty)
241+ val addedSpace = spaces.insert(newSpace)
242+ if (addedSpace == None ) {
243+ Logger .error(" Failed to add space" )
244+ return
245+ }
246+ val addedSpaceUUID = UUIDConversions .stringToUUID(addedSpace.get)
247+ events.addObjectEvent(getFirstAdmin, addedSpaceUUID, newSpace.name, " create_space" )
248+ // metadata
249+ val creator = SyncAgent (id= UUID .generate, serverUrl= Some (new URL (ppmsUrl)) )
250+ val spaceMetadata : JsValue = JsObject (
251+ Seq (
252+ " projType" -> JsString (projType),
253+ " projGroup" -> JsString (projGroup),
254+ " projStorage" -> JsString (rawDataStorage),
255+ " projId" -> JsNumber (projId)
256+ )
247257 )
248- )
249- // newSpace.metadata = List(Metadata(content=spaceMetadata, creator=creator, attachedTo=ResourceRef(ResourceRef.space, newSpace.id)))
250- // spaces.update(newSpace)
251- val newSpaceMetadata = Metadata (content= spaceMetadata, creator= creator, attachedTo= ResourceRef (ResourceRef .space, addedSpaceUUID))
252- metadatas.addMetadata(newSpaceMetadata)
253- // add admins first
254- users.getAdmins.foreach ( admin => spaces.addUser(admin.id , Role .Admin , newSpace.id) )
255- // go though users in this project
256- syncUsersInproject(projId, newSpace)
257- // metadata
258- val clowder_metadata = metadatas.getDefinitions()
259- clowder_metadata.foreach { md =>
260- val new_metadata = MetadataDefinition (spaceId = Some (newSpace.id), json = md.json)
261- metadatas.addDefinition(new_metadata)
262- }
263- } else {
264- Logger .info(" >>>>>>>>>>>>>Space exists, update it<<<<<<<<<<<<<<<" )
265- metadatas.getMetadataByAttachTo(ResourceRef (ResourceRef .space, spaceInDb.id)).foreach { metadata =>
266- Logger .info(" Space " + spaceInDb.name + " metadata: " + metadata.content)
267- if (metadata.content != None && rawDataStorage.equals( ((metadata.content \ " projStorage" ).as[String ]) ) ) {
268- syncUsersInproject(projId, spaceInDb)
258+ // newSpace.metadata = List(Metadata(content=spaceMetadata, creator=creator, attachedTo=ResourceRef(ResourceRef.space, newSpace.id)))
259+ // spaces.update(newSpace)
260+ val newSpaceMetadata = Metadata (content= spaceMetadata, creator= creator, attachedTo= ResourceRef (ResourceRef .space, addedSpaceUUID))
261+ metadatas.addMetadata(newSpaceMetadata)
262+ // add admins first
263+ users.getAdmins.foreach ( admin => spaces.addUser(admin.id , Role .Admin , newSpace.id) )
264+ // go though users in this project
265+ syncUsersInproject(projId, newSpace)
266+ // metadata
267+ val clowder_metadata = metadatas.getDefinitions()
268+ clowder_metadata.foreach { md =>
269+ val new_metadata = MetadataDefinition (spaceId = Some (newSpace.id), json = md.json)
270+ metadatas.addDefinition(new_metadata)
269271 }
270272 }
271- // go through the metadata of each space to make sure the collection is there
272- // spaceList.foreach{aSpace =>
273- // metadatas.getMetadataByAttachTo(ResourceRef(ResourceRef.space, aSpace.id)).foreach { metadata =>
274- // Logger.info("Space "+ aSpace.name + " metadata: " + metadata.content)
275- // if (metadata.content != None && rawDataStorage.equals( ((metadata.content \ "projStorage").as[String]) ) ) {
276- // syncUsersInproject(projId, aSpace)
277- // }
278- // }
279- // // aSpace.metadata.foreach{metadata =>
280- // // Logger.info("Space "+ aSpace.name + " metadata: " + metadata.content)
281- // // if (metadata.content != None && rawDataStorage.equals( ((metadata.content \ "projStorage").as[String]) ) ) {
282- // // // now update the space
283- // // syncUsersInproject(projId, aSpace)
284- // // }
285- // // } // end metadata for each
286- // } // end spaces for each
287- } // end space exists
273+ }
288274 }
289275
290276 /**
0 commit comments