From 84d183a65fd09a3fe3adde9ff88d56cd87e6448c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kai=20B=C3=B6rnert?= Date: Tue, 4 Dec 2018 16:07:29 +0100 Subject: [PATCH] fixed MDI further --- .../server/masterdata/MasterDataImporter.java | 9 ++++---- .../ImportMasterDataOperation.java | 21 ++++++++++++++++++- 2 files changed, 25 insertions(+), 5 deletions(-) diff --git a/java/com.sap.sailing.server/src/com/sap/sailing/server/masterdata/MasterDataImporter.java b/java/com.sap.sailing.server/src/com/sap/sailing/server/masterdata/MasterDataImporter.java index eab0dcd4684..7f36a2a5655 100644 --- a/java/com.sap.sailing.server/src/com/sap/sailing/server/masterdata/MasterDataImporter.java +++ b/java/com.sap.sailing.server/src/com/sap/sailing/server/masterdata/MasterDataImporter.java @@ -7,6 +7,7 @@ import java.util.List; import java.util.UUID; import java.util.logging.Logger; +import com.sap.sailing.domain.base.Boat; import com.sap.sailing.domain.base.Competitor; import com.sap.sailing.domain.base.CompetitorAndBoatStore; import com.sap.sailing.domain.base.DomainFactory; @@ -29,7 +30,7 @@ import com.sap.sse.util.ObjectInputStreamResolvingAgainstCache; import com.sap.sse.util.ObjectInputStreamResolvingAgainstCache.ResolveListener; public class MasterDataImporter { - private final static Logger LOG = Logger.getLogger(MasterDataImporter.class.getName()); + private final static Logger logger = Logger.getLogger(MasterDataImporter.class.getName()); private final DomainFactory baseDomainFactory; private final RacingEventService racingEventService; private final User user; @@ -52,9 +53,9 @@ public class MasterDataImporter { .createObjectInputStreamResolvingAgainstThisFactory(inputStream, new ResolveListener() { @Override public void onNewObject(Object result) { - if (result instanceof WithQualifiedObjectIdentifier) { + if (result instanceof Boat || result instanceof Competitor) { QualifiedObjectIdentifier id = ((WithQualifiedObjectIdentifier) result).getIdentifier(); - LOG.info("Adopting " + id + " from Masterdataimport"); + logger.info("Adopting " + id + " from Masterdataimport"); racingEventService.getSecurityService().setOwnershipIfNotSet(id, user, tenant); } } @@ -105,7 +106,7 @@ public class MasterDataImporter { UUID importOperationId, boolean override) { MasterDataImportObjectCreationCountImpl creationCount = new MasterDataImportObjectCreationCountImpl(); ImportMasterDataOperation op = new ImportMasterDataOperation(topLevelMasterData, importOperationId, override, - creationCount); + creationCount, user, tenant); creationCount = racingEventService.apply(op); return creationCount; } diff --git a/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/ImportMasterDataOperation.java b/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/ImportMasterDataOperation.java index aa217fe5dba..5d90d71ca4e 100755 --- a/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/ImportMasterDataOperation.java +++ b/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/ImportMasterDataOperation.java @@ -68,6 +68,9 @@ import com.sap.sse.common.Timed; import com.sap.sse.common.Util; import com.sap.sse.concurrent.LockUtil; import com.sap.sse.security.SecurityService; +import com.sap.sse.security.shared.QualifiedObjectIdentifier; +import com.sap.sse.security.shared.impl.User; +import com.sap.sse.security.shared.impl.UserGroup; public class ImportMasterDataOperation extends AbstractRacingEventServiceOperation { @@ -88,13 +91,20 @@ public class ImportMasterDataOperation extends private DataImportProgress progress; + private User user; + + private UserGroup tenant; + public ImportMasterDataOperation(TopLevelMasterData topLevelMasterData, UUID importOperationId, boolean override, - MasterDataImportObjectCreationCountImpl existingCreationCount) { + MasterDataImportObjectCreationCountImpl existingCreationCount, User user, UserGroup tenant) { + this.creationCount = new MasterDataImportObjectCreationCountImpl(); this.creationCount.add(existingCreationCount); this.masterData = topLevelMasterData; this.override = override; this.importOperationId = importOperationId; + this.user = user; + this.tenant = tenant; } @Override @@ -266,6 +276,7 @@ public class ImportMasterDataOperation extends toState.addLeaderboard(leaderboard); storeRaceLogEvents(leaderboard, toState.getMongoObjectFactory(), toState.getDomainObjectFactory(), override); storeRegattaLogEvents(leaderboard, toState.getMongoObjectFactory(), toState.getDomainObjectFactory(), override); + ensureOwnership(leaderboard.getIdentifier(), securityService); creationCount.addOneLeaderboard(leaderboard.getName()); relinkTrackedRacesIfPossible(toState, leaderboard); toState.updateStoredLeaderboard(leaderboard); @@ -283,6 +294,7 @@ public class ImportMasterDataOperation extends if (existingLeaderboardGroup == null) { toState.addLeaderboardGroupWithoutReplication(leaderboardGroup); creationCount.addOneLeaderboardGroup(leaderboardGroup.getName()); + ensureOwnership(leaderboardGroup.getIdentifier(), securityService); } else { logger.info(String.format("Leaderboard Group with name %1$s already exists and hasn't been overridden.", leaderboardGroup.getName())); @@ -529,6 +541,7 @@ public class ImportMasterDataOperation extends } } regatta.getRegattaLog().lockForRead(); + ensureOwnership(regatta.getIdentifier(), securityService); creationCount.addOneRegatta(regatta.getId().toString()); } } @@ -549,6 +562,7 @@ public class ImportMasterDataOperation extends } if (existingEvent == null) { toState.addEventWithoutReplication(event); + ensureOwnership(event.getIdentifier(), securityService); creationCount.addOneEvent(event.getId().toString()); } else { logger.info(String.format("Event with name %1$s already exists and hasn't been overridden.", @@ -557,6 +571,11 @@ public class ImportMasterDataOperation extends } } + private void ensureOwnership(QualifiedObjectIdentifier identifier, SecurityService securityService) { + logger.info("Adopting " + identifier + " from Masterdataimport"); + securityService.setOwnershipIfNotSet(identifier, user, tenant); + } + @Override public RacingEventServiceOperation transformClientOp(RacingEventServiceOperation serverOp) { // TODO Auto-generated method stub