Commit 31dcab90 authored by Uwe Peuker's avatar Uwe Peuker

Aktualisierung des Rahmenwerksspeichers passiert jetzt nicht mehr im...

Aktualisierung des Rahmenwerksspeichers passiert jetzt nicht mehr im Updater-Thread sondern in einem Job, fixes #21
parent 6f3455b4
......@@ -6,7 +6,8 @@ Produkt Rahmenwerk
## Noch nicht veröffentlicht
- derzeit keine Änderungen
- Wenn alte und neue Einstellungen leer waren, wurden diese potentiell in ein einer Endlosschleife aktualisiert
- Update der Einstellungen erfolgt in einem Hintergrundthread, weil potentiell ClientDavInterface#getData aufgerufen werden muss (Fixes #21)
## Version 3.5.0 - Release 2020-05-28
- Kompatibilität mit aktueller Eclipse-Version ( https://gitlab.nerz-ev.de/ERZ/RW_de.bsvrz.buv.rw/-/issues/12 )
......
# Rahmenwerk für eine Bedienoberfläche der NERZ-Software
Das Projekt enthält das Rahmenwerk auf Basis der Eclipse 2019-06.
Das Projekt enthält das Rahmenwerk auf Basis der Eclipse 2020-03.
## Updateseite
......
......@@ -2,7 +2,7 @@ Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: Basisbibliothek
Bundle-SymbolicName: de.bsvrz.buv.rw.basislib;singleton:=true
Bundle-Version: 3.5.0.qualifier
Bundle-Version: 3.5.1.qualifier
Bundle-ClassPath: .
Bundle-Activator: de.bsvrz.buv.rw.basislib.internal.RwBasisLibActivator
Bundle-Vendor: BitCtrl Systems GmbH, Swarco Traffic Systems GmbH
......
......@@ -2,7 +2,7 @@
<feature
id="de.bsvrz.buv.rw.rw.berechtigungen.feature"
label="%featureName"
version="3.5.0.qualifier"
version="3.5.1.qualifier"
provider-name="%featureProvider">
<description>
......
......@@ -2,7 +2,7 @@ Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: Standard-Rahmenwerk-Berechtigungen
Bundle-SymbolicName: de.bsvrz.buv.rw.rw.berechtigungen;singleton:=true
Bundle-Version: 3.5.0.qualifier
Bundle-Version: 3.5.1.qualifier
Bundle-Activator: de.bsvrz.buv.rw.rw.berechtigungen.RwBerechtigungen
Bundle-Vendor: BitCtrl Systems GmbH
Require-Bundle: org.eclipse.ui;bundle-version="3.109.0",
......
......@@ -2,7 +2,7 @@
<feature
id="de.bsvrz.buv.rw.rw.core.feature"
label="%featureName"
version="3.5.0.qualifier"
version="3.5.1.qualifier"
provider-name="%featureProvider">
<description>
......
......@@ -2,7 +2,7 @@
<feature
id="de.bsvrz.buv.rw.rw.einstellungen.feature"
label="%featureName"
version="3.5.0.qualifier"
version="3.5.1.qualifier"
provider-name="%featureProvider">
<description>
......
......@@ -2,7 +2,7 @@ Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: %Bundle-Name
Bundle-SymbolicName: de.bsvrz.buv.rw.rw.einstellungen;singleton:=true
Bundle-Version: 3.5.0.qualifier
Bundle-Version: 3.5.1.qualifier
Bundle-Activator: de.bsvrz.buv.rw.rw.einstellungen.RwEinstellungenActivator
Require-Bundle: org.eclipse.ui;bundle-version="3.109.0",
org.eclipse.core.runtime;bundle-version="3.14.0",
......
......@@ -36,6 +36,8 @@ import javax.xml.parsers.ParserConfigurationException;
import javax.xml.parsers.SAXParser;
import javax.xml.parsers.SAXParserFactory;
import org.eclipse.core.runtime.Status;
import org.eclipse.core.runtime.jobs.Job;
import org.xml.sax.InputSource;
import org.xml.sax.SAXException;
......@@ -143,11 +145,14 @@ class BenutzerNetzSpeicher extends NetzSpeicher implements ClientReceiverInterfa
@Override
public void update(ResultData[] results) {
for (final ResultData result : results) {
if (result.hasData()) {
liesEinstellungen(result);
Job.create("Update Rahmenwerks - Benutzerspeicher", (monitor) -> {
for (final ResultData result : results) {
if (result.hasData()) {
liesEinstellungen(result);
}
}
}
return Status.OK_STATUS;
}).schedule();;
}
@Override
......
......@@ -24,7 +24,7 @@
* Fax: +49-341-49067-15
* mailto: support@bitctrl.de
*
* Partly inspired by the original Rahmenwerk created by Dambach Werke GmbH.
* Partly inspired by the original Rahmenwerk created by Dambach Werke GmbH.
*/
package de.bsvrz.buv.rw.rw.einstellungen;
......@@ -40,6 +40,9 @@ import java.util.Queue;
import java.util.Set;
import java.util.concurrent.ConcurrentLinkedQueue;
import org.eclipse.core.runtime.Status;
import org.eclipse.core.runtime.jobs.Job;
import de.bsvrz.buv.rw.basislib.Rahmenwerk;
import de.bsvrz.buv.rw.basislib.dav.DavVerbindungsEvent;
import de.bsvrz.buv.rw.basislib.dav.DavVerbindungsListener;
......@@ -102,23 +105,30 @@ abstract class NetzSpeicher extends EinstellungsSpeicher implements ClientReceiv
@Override
public boolean equals(Object obj) {
if (this == obj)
if (this == obj) {
return true;
if (obj == null)
}
if (obj == null) {
return false;
if (getClass() != obj.getClass())
}
if (getClass() != obj.getClass()) {
return false;
}
final Anmeldung other = (Anmeldung) obj;
if (dataDesc == null) {
if (other.dataDesc != null)
if (other.dataDesc != null) {
return false;
} else if (!dataDesc.equals(other.dataDesc))
}
} else if (!dataDesc.equals(other.dataDesc)) {
return false;
}
if (systemObject == null) {
if (other.systemObject != null)
if (other.systemObject != null) {
return false;
} else if (!systemObject.equals(other.systemObject))
}
} else if (!systemObject.equals(other.systemObject)) {
return false;
}
return true;
}
}
......@@ -347,11 +357,14 @@ abstract class NetzSpeicher extends EinstellungsSpeicher implements ClientReceiv
@Override
public void update(ResultData[] results) {
for (final ResultData result : results) {
if (result.hasData()) {
liesEinstellungen(result);
Job.create("Update Rahmenwerks - Netzspeicher", monitor -> {
for (final ResultData result : results) {
if (result.hasData()) {
liesEinstellungen(result);
}
}
}
return Status.OK_STATUS;
}).schedule();;
}
protected final void liesEinstellungen(ResultData result) {
......@@ -366,6 +379,7 @@ abstract class NetzSpeicher extends EinstellungsSpeicher implements ClientReceiv
} else if (ATG_RAHMENWERK_EINSTELLUNGEN.equals(pid)) {
final Array einstellungen = result.getData().getArray("Einstellungen");
if (einstellungen.getLength() == 0) {
aktualisiereEinstellungen(getNeuesSpeicherObjekt(rahmenwerk));
} else {
ladeEinstellungen(result.getData());
......@@ -410,6 +424,17 @@ abstract class NetzSpeicher extends EinstellungsSpeicher implements ClientReceiv
protected abstract void ladeAlteEinstellungen(Data daten);
/**
* Aktualisiert die Einstellungen aus den alten Einstellungsparametern des
* Rahmenwerks.
*
* Die Funktion wird normalerweise nur aufgerufen, wenn die neuen Einstellungen
* leer sind. Wenn alten Einstellungen ebenfalls leer sind, werden diese nicht
* zurückgeschrieben, da es ansonsten zum zyklischen Aufruf der Funktion kommt.
*
* @param neuesObjekt das Objekt an dem die neuen Einstellungen gespeichert
* werden
*/
protected final void aktualisiereEinstellungen(SystemObject neuesObjekt) {
final ClientDavInterface davVerbindung = rahmenwerk.getDavVerbindung();
if (davVerbindung == null) {
......@@ -439,6 +464,10 @@ abstract class NetzSpeicher extends EinstellungsSpeicher implements ClientReceiv
final Data neueDaten = davVerbindung.createData(atg);
final Collection<Einstellung> einstellungen = getEinstellungen();
if (einstellungen.isEmpty()) {
return;
}
final Array array = neueDaten.getArray("Einstellungen");
array.setLength(einstellungen.size());
int idx = 0;
......
......@@ -2,7 +2,7 @@ Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: %Bundle-Name
Bundle-SymbolicName: de.bsvrz.buv.rw.rw;singleton:=true
Bundle-Version: 3.5.0.qualifier
Bundle-Version: 3.5.1.qualifier
Bundle-ClassPath: .,
de.bsvrz.buv.rw.rw.jar
Bundle-Activator: de.bsvrz.buv.rw.rw.RahmenwerkActivator
......
......@@ -17,7 +17,7 @@
</property>
<property
name="aboutText"
value="Rahmenwerk 3 (Eclipse 2020-03 basiert), Version 3.5.0&#x0A;&#x0A;Realisiert im Auftrag des Landes Baden-Württemberg,&#x0A;Regierungspräsidium Tübingen, Landesstelle für&#x0A;Straßentechnik durch BitCtrl Systems GmbH">
value="Rahmenwerk 3 (Eclipse 2020-03 basiert), Version 3.5.1&#x0A;&#x0A;Realisiert im Auftrag des Landes Baden-Württemberg,&#x0A;Regierungspräsidium Tübingen, Landesstelle für&#x0A;Straßentechnik durch BitCtrl Systems GmbH">
</property>
<property
name="windowImages"
......
......@@ -47,6 +47,7 @@ import javax.xml.parsers.ParserConfigurationException;
import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.core.runtime.IStatus;
import org.eclipse.core.runtime.Status;
import org.eclipse.core.runtime.jobs.Job;
import org.eclipse.e4.core.contexts.ContextInjectionFactory;
import org.eclipse.e4.core.contexts.IEclipseContext;
import org.eclipse.e4.core.di.annotations.Creatable;
......@@ -120,16 +121,21 @@ public class RwProcessor {
@Override
public void verbindungHergestellt(final DavVerbindungsEvent event) {
for (final MWindow modelWindow : application.getChildren()) {
final IWorkbenchWindow iWorkbenchWindow = modelWindow.getContext().get(IWorkbenchWindow.class);
setMainMenu(modelWindow, iWorkbenchWindow);
if (modelWindow instanceof MTrimmedWindow) {
final MTrimmedWindow trimmedWindow = (MTrimmedWindow) modelWindow;
setRwStatusLeiste(trimmedWindow, iWorkbenchWindow);
setRwSymbolLeiste(trimmedWindow, iWorkbenchWindow);
Job job = UIJob.create("Verbindung herstellen....", (monitor) -> {
for (final MWindow modelWindow : application.getChildren()) {
final IWorkbenchWindow iWorkbenchWindow = modelWindow.getContext().get(IWorkbenchWindow.class);
setMainMenu(modelWindow, iWorkbenchWindow);
if (modelWindow instanceof MTrimmedWindow) {
final MTrimmedWindow trimmedWindow = (MTrimmedWindow) modelWindow;
setRwStatusLeiste(trimmedWindow, iWorkbenchWindow);
setRwSymbolLeiste(trimmedWindow, iWorkbenchWindow);
}
modelWindow.setToBeRendered(true);
}
modelWindow.setToBeRendered(true);
}
return Status.OK_STATUS;
});
job.schedule();
}
@Override
......@@ -139,21 +145,22 @@ public class RwProcessor {
@Override
public void verbindungGetrennt(final DavVerbindungsEvent event) {
for (final MWindow modelWindow : application.getChildren()) {
final IWorkbenchWindow iWorkbenchWindow = modelWindow.getContext().get(IWorkbenchWindow.class);
setMainMenu(modelWindow, iWorkbenchWindow);
if (modelWindow instanceof MTrimmedWindow) {
final MTrimmedWindow trimmedWindow = (MTrimmedWindow) modelWindow;
setRwStatusLeiste(trimmedWindow, iWorkbenchWindow);
setRwSymbolLeiste(trimmedWindow, iWorkbenchWindow);
}
modelWindow.setToBeRendered(true);
}
final UIJob uiJob = new UIJob("Reconnect Dialog") {
final UIJob uiJob = new UIJob("Verbindung wurde getrennt...") {
@Override
public IStatus runInUIThread(final IProgressMonitor monitor) {
for (final MWindow modelWindow : application.getChildren()) {
final IWorkbenchWindow iWorkbenchWindow = modelWindow.getContext().get(IWorkbenchWindow.class);
setMainMenu(modelWindow, iWorkbenchWindow);
if (modelWindow instanceof MTrimmedWindow) {
final MTrimmedWindow trimmedWindow = (MTrimmedWindow) modelWindow;
setRwStatusLeiste(trimmedWindow, iWorkbenchWindow);
setRwSymbolLeiste(trimmedWindow, iWorkbenchWindow);
}
modelWindow.setToBeRendered(true);
}
final Dialog dialog = new ReconnectDialog(shell);
dialog.open();
return Status.OK_STATUS;
......@@ -242,21 +249,21 @@ public class RwProcessor {
private String ladeMenuXmlDefinition(String id) {
if( !getName(id).isEmpty()) {
if (!getName(id).isEmpty()) {
return null;
}
String argument = null;
if( id.startsWith(MenueEditor.PARAM_STRUCT_MENULEISTE)) {
if (id.startsWith(MenueEditor.PARAM_STRUCT_MENULEISTE)) {
argument = "-menueXmlDatei";
} else if( id.startsWith(StatusleisteEditor.PARAM_STRUCT_STATUSLEISTE)) {
} else if (id.startsWith(StatusleisteEditor.PARAM_STRUCT_STATUSLEISTE)) {
argument = "-statusXmlDatei";
}else if( id.startsWith(ToolbarEditor.PARAM_STRUCT_SYMBOLLEISTE)) {
} else if (id.startsWith(ToolbarEditor.PARAM_STRUCT_SYMBOLLEISTE)) {
argument = "-symbolXmlDatei";
} else {
return null;
}
final ArgumentList startParameter = RahmenwerkImpl.getInstanz().getStartParameter();
if (startParameter.hasArgument(argument)) {
final String fileName = startParameter.fetchArgument(argument).getValue();
......@@ -269,20 +276,20 @@ public class RwProcessor {
}
}
}
return null;
}
private static String getName(String id) {
int index = id.indexOf(":");
if( index < 0) {
if (index < 0) {
return "";
}
return id.substring(index + 1);
}
@Inject
@Optional
public void onPerspectiveClose(@UIEventTopic(UIEvents.ElementContainer.TOPIC_CHILDREN) final Event event,
......
......@@ -6,7 +6,7 @@
<parent>
<groupId>de.bsvrz.buv.rw</groupId>
<artifactId>de.bsvrz.buv.rw.tycho.master</artifactId>
<version>3.5.0</version>
<version>3.5.1</version>
<relativePath>../pom.xml</relativePath>
</parent>
<artifactId>de.bsvrz.buv.rw.tycho.product</artifactId>
......
<?xml version="1.0" encoding="UTF-8"?>
<?pde version="3.5"?>
<product name="Rahmenwerk 3.5" uid="de.bsvrz.buv.rw" id="de.bsvrz.buv.rw.rw.product" application="de.bsvrz.buv.rw.rw.application" version="3.5.0.qualifier" useFeatures="true" includeLaunchers="true">
<product name="Rahmenwerk 3.5" uid="de.bsvrz.buv.rw" id="de.bsvrz.buv.rw.rw.product" application="de.bsvrz.buv.rw.rw.application" version="3.5.1.qualifier" useFeatures="true" includeLaunchers="true">
<aboutInfo>
<image path="/de.bsvrz.buv.rw.rw/icons/wizban/bitctrl_wizard_default.png"/>
<text>
Rahmenwerk 3 (Eclipse 2020-03 basiert), Version 3.5.0
Rahmenwerk 3 (Eclipse 2020-03 basiert), Version 3.5.1
Realisiert im Auftrag des Landes Baden-Württemberg,
Regierungspräsidium Tübingen, Landesstelle für
......
......@@ -5,7 +5,7 @@
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<modelVersion>4.0.0</modelVersion>
<groupId>de.bsvrz.buv.rw</groupId>
<version>3.5.0</version>
<version>3.5.1</version>
<packaging>pom</packaging>
<name>Maven Build Rahmenwerk 3.x</name>
......
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