Commit 573f68d8 authored by Uwe Peuker's avatar Uwe Peuker

Bugfixes beim Speichern von Stauobjekten

- beim Start der SWE werden nur noch Netze verwaltet, in denen die Menge
der
  Staus durch die aktuelle AOE beschrieben werden kann
- ein Fehler bei Sichern der Stauobjekte in der Menge des
VerkehrsmodellNetz
  führt nicht mehr zum Abbruch des Sicherungsvorgangs
parent 7745eb72
......@@ -3,7 +3,10 @@ Versionsverlauf
## [Noch nicht veröffentlicht]
- derzeit keine Änderungen
- beim Start der SWE werden nur noch Netze verwaltet, in denen die Menge der
Staus durch die aktuelle AOE beschrieben werden kann
- ein Fehler bei Sichern der Stauobjekte in der Menge des VerkehrsmodellNetz
führt nicht mehr zum Abbruch des Sicherungsvorgangs
## [Version 2.0.1]
......
......@@ -203,7 +203,10 @@ public final class StauverlaufsAnalyse extends TimerTask
for (final SystemObject objekt : connection.getDataModel()
.getType(VerkehrsModellTypen.VERKEHRSMODELLNETZ.getPid()).getElements()) {
StauverlaufsAnalyse.logger.config("Lade Netzobjekt: " + objekt);
netzObjekte.add((VerkehrModellNetz) ObjektFactory.getInstanz().getModellobjekt(objekt));
VerkehrModellNetz netz = (VerkehrModellNetz) ObjektFactory.getInstanz().getModellobjekt(objekt);
if (netz.isSchreibbar(connection.getLocalConfigurationAuthority())) {
netzObjekte.add(netz);
}
}
} else {
for (final String pid : netzPids) {
......@@ -213,14 +216,26 @@ public final class StauverlaufsAnalyse extends TimerTask
"Initialisiere alle Netze des Konfigurationsbereichs: " + pidObj.getNameOrPidOrId());
for (final SystemObject caObj : Konfigurationsbereich.getObjekte((ConfigurationArea) pidObj,
VerkehrsModellTypen.VERKEHRSMODELLNETZ.getPid())) {
netzObjekte.add((VerkehrModellNetz) ObjektFactory.getInstanz().getModellobjekt(caObj));
VerkehrModellNetz netz = (VerkehrModellNetz) ObjektFactory.getInstanz().getModellobjekt(caObj);
if (netz.isSchreibbar(connection.getLocalConfigurationAuthority())) {
netzObjekte.add(netz);
}
}
} else {
StauverlaufsAnalyse.logger.config("Initialisiere das Netz: " + pidObj.getNameOrPidOrId());
netzObjekte.add((VerkehrModellNetz) ObjektFactory.getInstanz().getModellobjekt(pidObj));
VerkehrModellNetz netz = (VerkehrModellNetz) ObjektFactory.getInstanz().getModellobjekt(pidObj);
if (netz.isSchreibbar(connection.getLocalConfigurationAuthority())) {
netzObjekte.add(netz);
}
}
}
}
if (netzObjekte.isEmpty()) {
StauverlaufsAnalyse.logger.error("Es sind keine gültigen Objekte vom Typ VerkehrsmodellNetz verfügbar!");
System.exit(-1);
}
final Class<?> sobClass = Class.forName(sobName);
final Class<?> prognoseClass = Class.forName(prognoseName);
......
......@@ -886,8 +886,7 @@ public class Stau implements IStau, ClientSenderInterface {
}
if (obj == null) {
throw new IllegalStateException(
"Für das zu sicherende Stauobjekt besteht kein Systemobjekt in der Datenverteilerkonfiguration");
return;
}
final Data data = applikation.getDav().createData(eigenschaftenDesc.getAttributeGroup());
......
......@@ -32,6 +32,8 @@ import java.util.List;
import javax.swing.event.EventListenerList;
import de.bsvrz.dav.daf.main.Data;
import de.bsvrz.dav.daf.main.config.ConfigurationAuthority;
import de.bsvrz.dav.daf.main.config.ConfigurationChangeException;
import de.bsvrz.dav.daf.main.config.ConfigurationObject;
import de.bsvrz.dav.daf.main.config.MutableSet;
......@@ -286,4 +288,27 @@ public class VerkehrModellNetz extends Netz implements MutableSetChangeListener
aktualisiereStaus(addedObjects, removedObjects);
}
}
public boolean isSchreibbar(ConfigurationAuthority aoe) {
if (stauMenge == null) {
LOGGER.warning(getPid() + " hat keine gültige Staumenge");
return false;
}
Data data = stauMenge.getConfigurationData(stauMenge.getDataModel().getAttributeGroup("atg.dynamischeMenge"));
if (data == null) {
LOGGER.warning("Die Konfigurationsdaten der Staumenge des Netzes '" + getPid()
+ "' konnten nicht abgerufen werden");
return false;
}
String mengenVerwalterPid = data.getTextValue("verwaltung").getText();
if (!aoe.getPid().equals(mengenVerwalterPid)) {
LOGGER.warning("Die Staumenge des Netzes '" + getPid() + "' kann von der AOE '" + aoe.getPid()
+ "' nicht beschrieben werden, Verwalter ist '" + mengenVerwalterPid + "'");
return false;
}
return true;
}
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment