Commit 4cfe851e authored by Christian Kniss's avatar Christian Kniss
Browse files

Merge branch 'develop' into 'master'

Develop

See merge request ERZ/RW_de.bsvrz.buv.rw!7
parents f12dd084 12ead12f
......@@ -4,26 +4,28 @@
Produkt Rahmenwerk
==================
Version 3.3.0
## Noch nicht veröffentlicht
## Version 3.3.0
- Rahmenwerk basiert auf Eclipse PHOTON
- Offizielle Updateseiten für das RW3 wurden auf "Websites mit verfügbarer Software" eingetragen:
- https://nerz-ev.de/releases/UpdateSeite_BuV-PlugIn-NERZ-Gesamt_RW3.3_Releases/
- https://nerz-ev.de/snapshots/UpdateSeite_BuV-PlugIn-NERZ-Gesamt_RW3.3_Snapshots/
Version 3.1.0
## Version 3.1.0
- Datenverteiler 3.9.2
Version 3.0.0
## Version 3.0.0
- Update auf Eclipse Neon und Datenverteiler 3.8
Version 2.2.0 vom 06.07.2016:
## Version 2.2.0 vom 06.07.2016:
- Umstellung auf UTF-8 und Java 8
Version 2.1.0 vom 06.11.2014:
## Version 2.1.0 vom 06.11.2014:
- Umstellung auf Babel-Version 0.12.0
......@@ -31,7 +33,15 @@ Version 2.1.0 vom 06.11.2014:
Feature: de.bsvrz.buv.rw.rw.core
================================
Version 2.0.11 vom 23.07.2014:
## Version 3.3.1 vom 05.11.2018:
- Um zu Prüfen, ob die alte oder neue Benutzer und Rechteverwaltung verwendet wird,
wird im Onlinebetrieb zuerst der Wert der Attributegruppe
"atg.datenverteilerrechteprüfung" ausgewertet. Nur wenn dieser nicht ermittelbar ist
oder auf dem Wert "deaktiviert" steht wird auf den Kommandozeilenparameter
"rechtePrüfung" zurückgegriffen.
## Version 2.0.11 vom 23.07.2014:
- Eine potentielle Blockierung beim Beenden der Datenverteilerverbindung wurde behoben.
Diese konnte Auftreten, wenn Listener die über den Verbindungsabbruch benachrichtigt
......@@ -39,12 +49,12 @@ Version 2.0.11 vom 23.07.2014:
- Die Drag and Drop-Operationen für das Erstellen von Submenüs innerhalb des Menüeditors
wurden optimiert.
Version 2.0.10 vom 17.07.2014:
## Version 2.0.10 vom 17.07.2014:
- die DateTime-Komponente in der Rahmenwerk-Basislib visualisiert den
Enabled/Disabled-Zustand korrekt
Version 2.0.9 vom 16.07.2014:
## Version 2.0.9 vom 16.07.2014:
- Das Versenden von Daten über den Urlasserdialog konnte unter bestimmten Umständen
fehlschlagen, wenn eine neue Datenverteilerverbindung für den "nicht angemeldeten"
......@@ -53,40 +63,40 @@ Version 2.0.9 vom 16.07.2014:
Umständen zu einer SWT-Exception kommen, wenn das Rahmenwerk-Info-Statuszeilenelements
in die Statuszeile eingebaut war.
Version 2.0.8 vom 16.05.2014:
## Version 2.0.8 vom 16.05.2014:
- die Rahmenwerk-Info-Statuszeilenelement kann jetzt auch die Nutzerklasse(n) des aktuell
angemeldeten Benutzers anzeigen (Schlüsselwort {userclass}).
Version 2.0.7 vom 13.05.2014:
## Version 2.0.7 vom 13.05.2014:
- die Kette zur Benachrichtigung Über das Beenden einer Datenverteilerverbindung konnte
von einem falsch implementierten Listener unterbrochen werden.
Version 2.0.6 vom 29.04.2014:
## Version 2.0.6 vom 29.04.2014:
- ein Nutzer, der kein Administrator ist, kann auch die netzwerkweiten Menüs laden,
um sie zu bearbeiten und dann unter seinem Name abzulegen.
Version 2.0.5 vom 22.04.2014:
## Version 2.0.5 vom 22.04.2014:
- beim Schließen des Rahmenwerks mit eingeblendeter Intro-Seite wurde beim Neustart die
minimierte Perspektive-Bar nicht wieder hergestellt.
Version 2.0.4 vom 14.04.2014:
## Version 2.0.4 vom 14.04.2014:
- Für die Speicherung der Dialoge in der Rahmenwerk-Basislib kann jetzt optional auch die
Größe abgelegt und wiederhergestellt werden.
- Im Menüeditor wird die ID des im Menü ausgewählten Kommandos angezeigt.
Version 2.0.3 vom 09.04.2014:
## Version 2.0.3 vom 09.04.2014:
- Die Rahmenwerk-Applikation greift bei der Initialisierung nicht mehr auf das Branding-Plugin
zurück, dass unter Umständen nicht definiert wurde oder keinen Bundlekontext liefern kann.
- Beim Beenden der Datenverteilerverbindung wird ein Dialog mit einer entsprechenden Meldung
und zum potentiellen Neuanmelden angezeigt.
Version 2.0.2 vom 17.03.2014:
## Version 2.0.2 vom 17.03.2014:
- das Rahmenwerk konnte nicht gestartet werden, wenn ein falsches/ungültiges Oberflächenobjekt
über die Kommandozeile angegeben wurde.
......@@ -100,37 +110,58 @@ Version 2.0.1 vom 28.02.2014:
Feature: de.bsvrz.buv.rw.rw.einstellungen
=========================================
Version 1.0.2 vom 30.07.2014:
## Version 3.3.1 vom 26.10.2018:
Die netzwerkweiten Rahmenwerkeinstellungen für das System und für die Nutzer
werden am Oberflächenobjekt in einer neuen Attributgruppe und am Benutzer
gespeichert.
Voraussetzung dafür sind die Konfigurationsbereiche des 'kv.kappich'
kb.systemModellGlobal in Version 39 und 'kb.tmBuVGlobal' in Version 6.
Wenn die Konfigurationsbereiche nicht vorhanden sind verhält sich die Verwaltung
der Einstellungen wie bisher.
Wurden die Konfigurationsbereiche aktiviert, werden die Einstellungen aus den alten Attributgruppen bei Bedarf in die neuen übertragen, d.h.
die systemweiten Einstellungen und die Einstellungen des angemeldeten Nutzers oder eines
Nutzers für den Einstellungen geschrieben werden sollen (beispielsweise beim Speichern
eine Nutzermenüs für einen Dritten). Die Einstellungen werden dann ausschließlich aus der neuen Attributgruppe gelesen und dort gespeichert.
Die 'alten' Einstellungen bleiben bestehen, falls ein Nutzer mit einem nicht aktualisierten
Rahmenwerk auf das System zugreift. Ein Synchronisation mit den neuen Attributgruppen erfolgt
aber nicht mehr, falls der neue Parameterdatensatz bereits Einstellungen enthält!!!
## Version 1.0.2 vom 30.07.2014:
- Wenn Einstellungen nicht gespeichert werden konnten, wird jetzt eine entsprechender
Fehlerdialog angezeigt.
Version 1.0.1 vom 28.02.2014:
## Version 1.0.1 vom 28.02.2014:
- Logging wurde optimiert.
Feature: de.bsvrz.buv.rw.rw.berechtigungen
==========================================
Version 1.1.4 vom 30.07.2014:
## Version 1.1.4 vom 30.07.2014:
- der Berechtigungseditor und die Ansicht mit den aktuellen Berechtigungen wurden um
einen Toolbar-Button zum Aus- bzw. Einklappen des Baumes erweitert
- der Berechtigungseditor fragt vor dem Schließen nach, wenn ungespeicherte Änderungen
vorliegen.
Version 1.1.3 vom 19.06.2014:
## Version 1.1.3 vom 19.06.2014:
- nicht auflösbare Referenzen auf Berechtigungsklassen eines Nutzers führten zu einer
IllegalStateException.
Version 1.1.2 vom 02.04.2014:
## Version 1.1.2 vom 02.04.2014:
- die Online-Hilfe wurde ergänzt.
- Berechtigungsklassen werden jetzt alphabetisch sortiert.
- die Tastaturbedienung wurde optimiert
Version 1.1.1 vom 28.02.2014:
## Version 1.1.1 vom 28.02.2014:
- Logging wurde optimiert
- Icons für die Berechtigungsperspektive und das Kommando zum Öffnen der Perspektive ergänzt.
......@@ -138,7 +169,7 @@ Version 1.1.1 vom 28.02.2014:
Feature: de.bsvrz.buv.rw.migrationssupport
==========================================
Version 2.0.1 vom 28.02.2014:
## Version 2.0.1 vom 28.02.2014:
- Logging wurde optimiert.
......
......@@ -74,6 +74,14 @@ Das Rahmenwerk ist auch mit Java 9/10 ausführbar, dazu sollte in der Datei "rah
ergänzt werden, da einige Plugins Pakete verwenden, die in neueren Java-Versionen als Modul explizit eingebunden werden müssen.
## Weitergehende Artikel zum RW
Weitere Informationen zu speziellen Einstellungen etc. sind auf
- https://github.com/bitctrl/bsvrz-rahmenwerk-doc/blob/master/articles/rw2-info.md
dokumentiert.
## Kontakt
BitCtrl Systems GmbH<br>
......
......@@ -25,16 +25,10 @@
<arguments>
</arguments>
</buildCommand>
<buildCommand>
<name>net.sf.eclipsecs.core.CheckstyleBuilder</name>
<arguments>
</arguments>
</buildCommand>
</buildSpec>
<natures>
<nature>org.eclipse.m2e.core.maven2Nature</nature>
<nature>org.eclipse.pde.PluginNature</nature>
<nature>org.eclipse.jdt.core.javanature</nature>
<nature>net.sf.eclipsecs.core.CheckstyleNature</nature>
</natures>
</projectDescription>
......@@ -37,6 +37,14 @@ import java.io.IOException;
* @author BitCtrl Systems GmbH, Uwe Peuker
*/
public interface Einstellung {
/**
* liefert den Typ der Einstellung als Zeichenkette (Klassenname).
*
* @return den Klassenname
*/
String getType();
/**
* liefert die Einstellung als serialisierte Zeichenkette.
*
......@@ -53,4 +61,11 @@ public interface Einstellung {
* ausgeführt werden
*/
Object getObject() throws IOException;
/**
* liefert den Key für die Suche nach der Einstellung.
*
* @return den Key
*/
String getId();
}
......@@ -36,15 +36,11 @@ import java.io.Serializable;
*
* @author BitCtrl Systems GmbH, Uwe Peuker
*/
public class EinstellungsAdresse implements Serializable {
public class EinstellungsAdresse {
/** ID für Serialisierung. */
private static final long serialVersionUID = 1L;
private final String typ;
private final String id;
private final String pid;
private final EinstellungOwnerType ownerType;
private final EinstellungLocation location;
private final SpeicherKey key;
/**
* Konstruktor.
......@@ -59,7 +55,13 @@ public class EinstellungsAdresse implements Serializable {
*/
public EinstellungsAdresse(final String typ, final String id,
final SpeicherKey key) {
this(typ, id, key.getOwnerType(), key.getPid(), key.getLocation());
if (typ == null) {
this.typ = String.class.getName();
} else {
this.typ = typ;
}
this.id = id;
this.key = key;
}
/**
......@@ -80,18 +82,9 @@ public class EinstellungsAdresse implements Serializable {
public EinstellungsAdresse(final String typ, final String id,
final EinstellungOwnerType ownerType, final String pid,
final EinstellungLocation location) {
super();
if (typ == null) {
this.typ = String.class.getName();
} else {
this.typ = typ;
}
this.id = id;
this.ownerType = ownerType;
this.pid = pid;
this.location = location;
this(typ, id, SpeicherKey.of(ownerType, location, pid));
}
/**
* liefert den Name des Typs des Einstellungsobjekts.
*
......@@ -116,7 +109,7 @@ public class EinstellungsAdresse implements Serializable {
* @return den Typ
*/
public EinstellungOwnerType getOwnerType() {
return ownerType;
return key.getOwnerType();
}
/**
......@@ -125,7 +118,7 @@ public class EinstellungsAdresse implements Serializable {
* @return den Ort
*/
public EinstellungLocation getLocation() {
return location;
return key.getLocation();
}
/**
......@@ -135,6 +128,10 @@ public class EinstellungsAdresse implements Serializable {
* @return die PID oder <code>null</code>
*/
public String getPid() {
return pid;
return key.getPid();
}
public SpeicherKey getKey() {
return key;
}
}
......@@ -40,8 +40,16 @@ import de.bsvrz.buv.rw.basislib.internal.RahmenwerkService;
*
* @author BitCtrl Systems GmbH, Uwe Peuker
*/
public final class SpeicherKey {
public final class SpeicherKey {
public static SpeicherKey of(EinstellungOwnerType ownerType, EinstellungLocation location, String pid) {
return new SpeicherKey(ownerType, location, pid);
}
public static SpeicherKey of(EinstellungOwnerType ownerType, EinstellungLocation location) {
return new SpeicherKey(ownerType, location, null);
}
private final EinstellungOwnerType ownerType;
private final EinstellungLocation location;
private final String pid;
......@@ -56,7 +64,10 @@ public final class SpeicherKey {
* soll
* @param pid
* die PID für die Speicherung von Nutzereinstellungen
*
* @deprecated Zum Erzeugen con Instanzen sollte die statische Methode {@link #of(EinstellungOwnerType, EinstellungLocation, String)} verwendet werden
*/
@Deprecated
public SpeicherKey(final EinstellungOwnerType ownerType,
final EinstellungLocation location, final String pid) {
this.ownerType = ownerType;
......@@ -72,24 +83,14 @@ public final class SpeicherKey {
* @param location
* der logische Ort, an dem die Einstellung gespeichert werden
* soll
* @deprecated Zum Erzeugen con Instanzen sollte die statische Methode {@link #of(EinstellungOwnerType, EinstellungLocation)} verwendet werden
*/
@Deprecated
public SpeicherKey(final EinstellungOwnerType ownertype,
final EinstellungLocation location) {
this(ownertype, location, null);
}
/**
* Konstruktor, erzeugt einen Schlüssel aus der übergebenen
* Einstellungsadresse, die neben der logsichen Zuordnung der Einstellung
* zuützlich Informationen zu einer konkreten Einstellung enthält.
*
* @param adresse
* die {@link EinstellungsAdresse}
*/
public SpeicherKey(final EinstellungsAdresse adresse) {
this(adresse.getOwnerType(), adresse.getLocation(), adresse.getPid());
}
@Override
public int hashCode() {
final int prime = 31;
......@@ -126,17 +127,6 @@ public final class SpeicherKey {
return location == EinstellungLocation.LOKAL;
}
/**
* liefert den Besitzertyp für den der Schlüssel gültig ist.
*
* @return den Typ
* @deprecated Namen vereinheitlicht, ersetzt durh {@link #getOwnerType()}
*/
@Deprecated
public EinstellungOwnerType getOwnertype() {
return ownerType;
}
/**
* liefert den Besitzertyp für den der Schlüssel gültig ist.
*
......@@ -299,5 +289,4 @@ public final class SpeicherKey {
return new SpeicherKey(EinstellungOwnerType.SYSTEM,
EinstellungLocation.LOKAL);
}
}
......@@ -2,7 +2,7 @@
<feature
id="de.bsvrz.buv.rw.rw.core.feature"
label="%featureName"
version="3.3.0.qualifier"
version="3.3.1.qualifier"
provider-name="%featureProvider">
<description>
......
<document xmlns="http://maven.apache.org/changes/1.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/changes/1.0.0 http://maven.apache.org/xsd/changes-1.0.0.xsd">
<properties>
<title>Versionsgeschichte für das Feature Rahmenwerk Einstellungen
</title>
<author email="info@bitctrl.de">BitCtrl Systems GmbH</author>
</properties>
<body>
<release version="3.1.0" >
<action type="update" date="12.09.2017">Kernsoftware 3.9.2</action>
</release>
<release version="3.0.0" >
<action type="update" date="02.09.2016">Platform-Update auf Eclipse Neon</action>
</release>
<release version="1.3.2" date="01.09.2016">
<action type="fix">Potentielle NPE beim Einlesen der Einstellungen
</action>
</release>
<release version="1.3.1" date="11.08.2016">
<action type="fix">Es erfolgt eine Benachrichtigung, wenn Einstellungen komplett gelöscht wurden
</action>
</release>
<release version="1.3.0" date="09.08.2016">
<action type="update">Beim Entfernen von Einstellungen können die
Urlasserinformationen übergeben werden
</action>
</release>
<release version="1.2.0" date="06.07.2016">
<action type="update">Umstellung auf UTF-8 und Java 8</action>
<action type="fix">Einlesen von Einstellungen mit von String abweichenden Typen konnte fehlschlagen</action>
</release>
<release version="1.0.2" date="30.07.2014">
<action type="update">Fehlermeldung, wenn Einstellungen nicht gespeichert werden konnten.</action>
</release>
<release version="1.0.1" date="28.02.2014">
<action type="update">Logging wurde optimiert.</action>
</release>
</body>
<document xmlns="http://maven.apache.org/changes/1.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/changes/1.0.0 http://maven.apache.org/xsd/changes-1.0.0.xsd">
<properties>
<title>Versionsgeschichte für das Feature Rahmenwerk Einstellungen
</title>
<author email="info@bitctrl.de">BitCtrl Systems GmbH</author>
</properties>
<body>
<release version="3.1.1" >
<action type="update" date="26.10.2018">Umstellung auf neue Einstellungsspeicherung</action>
</release>
<release version="3.1.0" >
<action type="update" date="12.09.2017">Kernsoftware 3.9.2</action>
</release>
<release version="3.0.0" >
<action type="update" date="02.09.2016">Platform-Update auf Eclipse Neon</action>
</release>
<release version="1.3.2" date="01.09.2016">
<action type="fix">Potentielle NPE beim Einlesen der Einstellungen
</action>
</release>
<release version="1.3.1" date="11.08.2016">
<action type="fix">Es erfolgt eine Benachrichtigung, wenn Einstellungen komplett gelöscht wurden
</action>
</release>
<release version="1.3.0" date="09.08.2016">
<action type="update">Beim Entfernen von Einstellungen können die
Urlasserinformationen übergeben werden
</action>
</release>
<release version="1.2.0" date="06.07.2016">
<action type="update">Umstellung auf UTF-8 und Java 8</action>
<action type="fix">Einlesen von Einstellungen mit von String abweichenden Typen konnte fehlschlagen</action>
</release>
<release version="1.0.2" date="30.07.2014">
<action type="update">Fehlermeldung, wenn Einstellungen nicht gespeichert werden konnten.</action>
</release>
<release version="1.0.1" date="28.02.2014">
<action type="update">Logging wurde optimiert.</action>
</release>
</body>
</document>
\ No newline at end of file
......@@ -2,7 +2,7 @@
<feature
id="de.bsvrz.buv.rw.rw.einstellungen.feature"
label="%featureName"
version="3.3.0.qualifier"
version="3.3.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.3.0.qualifier
Bundle-Version: 3.3.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",
......
......@@ -29,40 +29,196 @@
package de.bsvrz.buv.rw.rw.einstellungen;
import de.bsvrz.dav.daf.main.DataNotSubscribedException;
import de.bsvrz.dav.daf.main.SendSubscriptionNotConfirmed;
import java.io.IOException;
import java.io.StringReader;
import javax.xml.parsers.ParserConfigurationException;
import javax.xml.parsers.SAXParser;
import javax.xml.parsers.SAXParserFactory;
import org.xml.sax.InputSource;
import org.xml.sax.SAXException;
import de.bsvrz.buv.rw.basislib.Rahmenwerk;
import de.bsvrz.buv.rw.basislib.einstellungen.EinstellungLocation;
import de.bsvrz.buv.rw.basislib.einstellungen.EinstellungOwnerType;
import de.bsvrz.buv.rw.basislib.einstellungen.SpeicherKey;
import de.bsvrz.dav.daf.main.ClientDavInterface;
import de.bsvrz.dav.daf.main.ClientReceiverInterface;
import de.bsvrz.dav.daf.main.Data;
import de.bsvrz.dav.daf.main.Data.TextArray;
import de.bsvrz.dav.daf.main.Data.TextValue;
import de.bsvrz.dav.daf.main.DataDescription;
import de.bsvrz.dav.daf.main.ResultData;
import de.bsvrz.dav.daf.main.config.AttributeGroup;
import de.bsvrz.dav.daf.main.config.DataModel;
import de.bsvrz.dav.daf.main.config.SystemObject;
import de.bsvrz.puk.param.lib.daten.UrlasserInfo;
import de.bsvrz.sys.funclib.debug.Debug;
/**
* Netzweiter (Datenverteiler)-Einstellungsspeicher für einen Benutzer.
*
* @author BitCtrl Systems GmbH, Uwe Peuker
*/
class BenutzerNetzSpeicher extends EinstellungsSpeicher {
class BenutzerNetzSpeicher extends NetzSpeicher implements ClientReceiverInterface {
private static final int MAX_LINE_LENGTH = 15000;
private static final String ATG_BENUTZER_EINSTELLUNGEN_OBERFLAECHE_NETZWEIT = "atg.benutzerEinstellungenOberflächeNetzweit";
private static Debug LOGGER = Debug.getLogger();
private final String pid;
private final EinstellungenSpeichermanager manager;
BenutzerNetzSpeicher(final String pid, final EinstellungenSpeichermanager manager) {
BenutzerNetzSpeicher(final String pid, final Rahmenwerk rahmenwerk) {
super(rahmenwerk);
this.pid = pid;
this.manager = manager;
init();
}
protected void sichereAlteEinstellungen(Rahmenwerk rahmenwerk, String data, UrlasserInfo info) {
ClientDavInterface davVerbindung = rahmenwerk.getDavVerbindung();
if (!davVerbindung.isConnected() || !davVerbindung.isLoggedIn()) {
return;
}
DataModel dataModel = davVerbindung.getDataModel();
final SystemObject benutzerToSave = dataModel.getObject(pid);
if (benutzerToSave == null) {
LOGGER.error("Der Benutzer mit der PID: " + pid + " existiert nicht in der aktuellen Konfiguration!");
return;
}
AttributeGroup alteEinstellungsAtg = dataModel.getAttributeGroup(getAtgPidAlteEinstellungen());
final ResultData benutzerDaten = davVerbindung.getData(rahmenwerk.getOberflaechenObject(),
new DataDescription(alteEinstellungsAtg, getSollAsp()), 0);
final Data neueDaten;
if ((benutzerDaten != null) && (benutzerDaten.getData() != null)) {
neueDaten = benutzerDaten.getData().createModifiableCopy();
} else {
neueDaten = davVerbindung.createData(alteEinstellungsAtg);
}
final Data.Array benutzerArray = neueDaten.getArray("Benutzereinstellungen");
int dataIdx;
for (dataIdx = 0; dataIdx < benutzerArray.getLength(); dataIdx++) {
final SystemObject benutzer = benutzerArray.getItem(dataIdx).getReferenceValue("benutzer")
.getSystemObject();
if (benutzerToSave.equals(benutzer)) {
break;