@@ -8,6 +8,7 @@ import util.{SpaceConfig, PPMSUtils}
88import play .api .Play ._
99import play .api .{ Plugin , Logger , Application }
1010import play .libs .Akka
11+ import scala .collection .mutable .ListBuffer
1112import scala .collection .mutable .Map
1213import scala .concurrent .duration ._
1314import play .api .libs .concurrent .Execution .Implicits ._
@@ -350,14 +351,29 @@ class PPMSSyncService (application: Application) extends Plugin {
350351 }
351352 // get projects
352353 var numProjects = 0
354+ val sharedProjects = new ListBuffer [Int ]()
353355 ppmsCoreids.foreach { ppmsCoreid =>
354356 val projectsJsonArr = PPMSUtils .getPPMSProjects(ppmsUrl, ppmsPumaApiKey, ppmsGetProjectAction, ppmsCoreid)
355357 numProjects += projectsJsonArr.value.size
356- projectsJsonArr.value.foreach { projectInfo =>
357- val projId = (projectInfo \ " ProjectRef" ).as[Int ]
358+ projectsJsonArr.value.foreach { ppmsProjectInfo =>
359+ var projectInfo = ppmsProjectInfo
360+ val projId = (ppmsProjectInfo \ " ProjectRef" ).as[Int ]
361+ val coreId = (ppmsProjectInfo \ " CoreFacilityRef" ).as[Int ]
358362 if ( projId >= startingProjectId ) {
359- val projectXtraProfileArr = PPMSUtils .getPPMSExtraProjectProfile(ppmsUrl, ppmsApi2Key, projId, ppmsGetXtraProjectProfileAction)
360- projectXtraProfileArr.value.foreach(syncProject(projectInfo, _))
363+ var addProject = true
364+ if ( coreId == 0 ) {
365+ Logger .info(" Shared project: " + projId)
366+ addProject = ! sharedProjects.contains(projId)
367+ if ( addProject ) {
368+ Logger .info(" Shared project: " + projId + " - using core id: " + ppmsCoreid)
369+ projectInfo = ppmsProjectInfo.asInstanceOf [JsObject ] + (" CoreFacilityRef" -> JsString (ppmsCoreid))
370+ sharedProjects += projId
371+ }
372+ }
373+ if ( addProject ) {
374+ val projectXtraProfileArr = PPMSUtils .getPPMSExtraProjectProfile(ppmsUrl, ppmsApi2Key, projId, ppmsGetXtraProjectProfileAction)
375+ projectXtraProfileArr.value.foreach(syncProject(projectInfo, _))
376+ }
361377 }
362378 }
363379 }
0 commit comments