Skip to content

Commit dd67ebf

Browse files
Merge pull request #990 from digitalservicebund/remove-update-of-target-norms
Stop updating target norms when updating a norm
2 parents 8da55d0 + a549c78 commit dd67ebf

File tree

13 files changed

+29
-1546
lines changed

13 files changed

+29
-1546
lines changed

backend/src/main/java/de/bund/digitalservice/ris/norms/application/port/input/CreateZf0UseCase.java

Lines changed: 0 additions & 31 deletions
This file was deleted.

backend/src/main/java/de/bund/digitalservice/ris/norms/application/port/input/UpdatePassiveModificationsUseCase.java

Lines changed: 0 additions & 30 deletions
This file was deleted.

backend/src/main/java/de/bund/digitalservice/ris/norms/application/service/AnnouncementService.java

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -34,41 +34,41 @@ public class AnnouncementService
3434
private final LoadAnnouncementByNormEliPort loadAnnouncementByNormEliPort;
3535
private final LoadNormPort loadNormPort;
3636
private final LoadNormByGuidPort loadNormByGuidPort;
37-
private final CreateZf0Service createZf0Service;
3837
private final UpdateOrSaveAnnouncementPort updateOrSaveAnnouncementPort;
3938
private final BillToActService billToActService;
4039
private final LdmlDeValidator ldmlDeValidator;
4140
private final DeleteAnnouncementByNormEliPort deleteAnnouncementByNormEliPort;
4241
private final DeleteNormPort deleteNormPort;
4342
private final ReferenceService referenceService;
4443
private final UpdateOrSaveNormPort updateOrSaveNormPort;
44+
private final CreateNewVersionOfNormService createNewVersionOfNormService;
4545

4646
public AnnouncementService(
4747
LoadAllAnnouncementsPort loadAllAnnouncementsPort,
4848
LoadAnnouncementByNormEliPort loadAnnouncementByNormEliPort,
4949
LoadNormPort loadNormPort,
5050
LoadNormByGuidPort loadNormByGuidPort,
51-
CreateZf0Service createZf0Service,
5251
UpdateOrSaveAnnouncementPort updateOrSaveAnnouncementPort,
5352
BillToActService billToActService,
5453
LdmlDeValidator ldmlDeValidator,
5554
DeleteAnnouncementByNormEliPort deleteAnnouncementByNormEliPort,
5655
DeleteNormPort deleteNormPort,
5756
ReferenceService referenceService,
58-
UpdateOrSaveNormPort updateOrSaveNormPort
57+
UpdateOrSaveNormPort updateOrSaveNormPort,
58+
CreateNewVersionOfNormService createNewVersionOfNormService
5959
) {
6060
this.loadAllAnnouncementsPort = loadAllAnnouncementsPort;
6161
this.loadAnnouncementByNormEliPort = loadAnnouncementByNormEliPort;
6262
this.loadNormPort = loadNormPort;
6363
this.loadNormByGuidPort = loadNormByGuidPort;
64-
this.createZf0Service = createZf0Service;
6564
this.updateOrSaveAnnouncementPort = updateOrSaveAnnouncementPort;
6665
this.billToActService = billToActService;
6766
this.ldmlDeValidator = ldmlDeValidator;
6867
this.deleteAnnouncementByNormEliPort = deleteAnnouncementByNormEliPort;
6968
this.deleteNormPort = deleteNormPort;
7069
this.referenceService = referenceService;
7170
this.updateOrSaveNormPort = updateOrSaveNormPort;
71+
this.createNewVersionOfNormService = createNewVersionOfNormService;
7272
}
7373

7474
@Override
@@ -246,9 +246,10 @@ private void runPreProcessing(
246246
activeModDestinationElis.forEach(eli ->
247247
loadNormPort
248248
.loadNorm(new LoadNormPort.Command(eli.asNormEli()))
249-
.ifPresent(targetNorm ->
250-
createZf0Service.createZf0(new CreateZf0UseCase.Query(norm, targetNorm, true))
251-
)
249+
.ifPresent(targetNorm -> {
250+
var newManifestation = createNewVersionOfNormService.createNewManifestation(targetNorm);
251+
updateOrSaveNormPort.updateOrSave(new UpdateOrSaveNormPort.Command(newManifestation));
252+
})
252253
);
253254
// 3. Reference recognition
254255
referenceService.findAndCreateReferences(norm);

backend/src/main/java/de/bund/digitalservice/ris/norms/application/service/CreateZf0Service.java

Lines changed: 0 additions & 54 deletions
This file was deleted.

backend/src/main/java/de/bund/digitalservice/ris/norms/application/service/NormService.java

Lines changed: 14 additions & 61 deletions
Original file line numberDiff line numberDiff line change
@@ -8,13 +8,10 @@
88
import de.bund.digitalservice.ris.norms.application.port.output.LoadRegelungstextPort;
99
import de.bund.digitalservice.ris.norms.application.port.output.UpdateNormPort;
1010
import de.bund.digitalservice.ris.norms.domain.entity.*;
11-
import de.bund.digitalservice.ris.norms.domain.entity.eli.DokumentExpressionEli;
1211
import de.bund.digitalservice.ris.norms.domain.entity.eli.NormExpressionEli;
1312
import de.bund.digitalservice.ris.norms.utils.EidConsistencyGuardian;
1413
import de.bund.digitalservice.ris.norms.utils.XmlMapper;
1514
import java.util.*;
16-
import java.util.stream.Collectors;
17-
import java.util.stream.Stream;
1815
import org.springframework.stereotype.Service;
1916

2017
/**
@@ -32,18 +29,15 @@ public class NormService
3229

3330
private final LoadNormPort loadNormPort;
3431
private final UpdateNormPort updateNormPort;
35-
private final UpdateNormService updateNormService;
3632
private final LoadRegelungstextPort loadRegelungstextPort;
3733

3834
public NormService(
3935
LoadNormPort loadNormPort,
4036
UpdateNormPort updateNormPort,
41-
UpdateNormService updateNormService,
4237
LoadRegelungstextPort loadRegelungstextPort
4338
) {
4439
this.loadNormPort = loadNormPort;
4540
this.updateNormPort = updateNormPort;
46-
this.updateNormService = updateNormService;
4741
this.loadRegelungstextPort = loadRegelungstextPort;
4842
}
4943

@@ -103,66 +97,25 @@ public String updateRegelungstextXml(UpdateRegelungstextXmlUseCase.Query query)
10397
}
10498

10599
/**
106-
* It not only saves a {@link Norm} but makes sure that all Eids are consistent and if it is an amending norm makes sure
107-
* that all target norms have a passive modification for every active modification in the amending norm.
100+
* It not only saves a {@link Norm} but makes sure that all Eids are consistent.
108101
*
109102
* @param normToBeUpdated the norm which shall be saved
110103
* @return An {@link Map} containing the updated and saved {@link Norm}
111104
* @throws NormNotFoundException if the norm cannot be found
112105
*/
113106
public Map<NormExpressionEli, Norm> updateNorm(Norm normToBeUpdated) {
114-
// Collect all target norms' ELI without duplications
115-
Set<NormExpressionEli> allTargetLawsEli = normToBeUpdated
116-
.getRegelungstext1()
117-
.getMeta()
118-
.getAnalysis()
119-
.map(analysis -> analysis.getActiveModifications().stream())
120-
.orElse(Stream.empty())
121-
.map(TextualMod::getDestinationHref)
122-
.flatMap(Optional::stream)
123-
.map(Href::getExpressionEli)
124-
.flatMap(Optional::stream)
125-
.map(DokumentExpressionEli::asNormEli)
126-
.collect(Collectors.toSet());
127-
128-
// Load all target norms
129-
Map<NormExpressionEli, Norm> zf0s = allTargetLawsEli
130-
.stream()
131-
.map(expressionEli -> {
132-
Norm zf0 = loadNorm(new LoadNormUseCase.Query(expressionEli));
133-
return new AbstractMap.SimpleImmutableEntry<>(expressionEli, zf0);
134-
})
135-
.collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue));
136-
137-
// Update passive modifications for each target norm
138-
zf0s.forEach((eli, zf0) ->
139-
updateNormService.updateOnePassiveModification(
140-
new UpdatePassiveModificationsUseCase.Query(zf0, normToBeUpdated, eli)
141-
)
142-
);
143-
144-
// Add the norm to be updated to the map of updated norms
145-
Map<NormExpressionEli, Norm> updatedNorms = new HashMap<>(zf0s);
146-
updatedNorms.put(normToBeUpdated.getExpressionEli(), normToBeUpdated);
147-
148-
return updatedNorms
149-
.entrySet()
150-
.stream()
151-
.map(entry -> {
152-
Norm norm = entry.getValue();
153-
norm
154-
.getRegelungstexte()
155-
.forEach(regelungstext -> {
156-
EidConsistencyGuardian.eliminateDeadReferences(regelungstext.getDocument());
157-
EidConsistencyGuardian.correctEids(regelungstext.getDocument());
158-
});
159-
160-
Norm savedNorm = updateNormPort
161-
.updateNorm(new UpdateNormPort.Command(norm))
162-
.orElseThrow(() -> new NormNotFoundException(norm.getManifestationEli().toString()));
163-
164-
return new AbstractMap.SimpleImmutableEntry<>(entry.getKey(), savedNorm);
165-
})
166-
.collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue));
107+
normToBeUpdated
108+
.getDokumente()
109+
.forEach(dokument -> {
110+
EidConsistencyGuardian.eliminateDeadReferences(dokument.getDocument());
111+
EidConsistencyGuardian.correctEids(dokument.getDocument());
112+
});
113+
114+
Norm savedNorm = updateNormPort
115+
.updateNorm(new UpdateNormPort.Command(normToBeUpdated))
116+
.orElseThrow(() -> new NormNotFoundException(normToBeUpdated.getManifestationEli().toString())
117+
);
118+
119+
return Map.of(normToBeUpdated.getExpressionEli(), savedNorm);
167120
}
168121
}

0 commit comments

Comments
 (0)