3-Wege-mischen implementieren

Status
Nicht offen für weitere Antworten.

Ravebaby

Mitglied
Hallo zusammen,

mein Ziel ist es, ein 3-Wege-Mischen zu implementieren. Also möchte ich gerne 2 vorhandene Modelle (Model1 und Model2) mit Hilfe eines dritten Referenz-Models synchronisieren / mergen. Erst einmal möchte ich eine sog. "ActionList" anzeigen, die mir den Zustand der beiden zu synchronisierenden Modelle anzeigt und mir zudem die geplante Aktion anzeigt.
Wenn also ein Element im Referenz-Model "A" heißt, im Model1 "A" und im Model2 "B" soll die Oberfläche ein Umbenennen in "B" vorschlagen.

Ich denke, um diese 3 Modelle wirklich abgleichen zu können, muss ich erst einmal deren Inhalte sortieren und zwar nach dem, was eindeutig ist. In meinem Fall ist das der Name der einzelnen Elemente. Dazu wollte ich eine Art sortableModelAdapter für meine Models schreiben. Allerdings finde ich nur ein Comparable Interface. Gibt es denn da eine sinnvolle vorgehensweise um mein Vorhaben umzusetzen (bevor ich mich da nun blind und wild verlaufe ;o)

Danke schonmal für jede Antwort!!
Grüße Rave
 

Tellerrand

Bekanntes Mitglied
Na 3 Wege mischen = Bigmac, 3 toast 2 fleisch 1 gurkenscheibe = Mischen Impossible :autsch:
... keine Ahnung

Ich versteh dazu noch den Zusammenhang mit der Erklärung nicht ganz, in etwa was gemeint ist, aber Sinn und Zweck und etwas genauerer Kontext fehlt.
 

Ravebaby

Mitglied
Ach dann bin ich ja auch irgendwie froh ;o) Neulich hatte nur einer gemeint, dass 3-Wege-Mischen sei so alt und grundsätzlich, dass es jeder kenne... und dann hab ich mich nich getraut hier so viel unnützes Zeuch zu schreiben ;o)

Also das 3-Wege-Mischen wird z.B. auch für den Abgleich zwischen einem Palm und Outlook benutzt. Es ist ein Synchronistaionsmechanismus, der für die Sync 3 Instanzen eines Datenmodells benutzt.
Sprich ich möchte gerne 2 Modelle vergleichen (Model1 und Model2) und dafür ein drittes (Model3) zur Hilfe nehmen. Dieses dritte Modell enthält den Zustand der beiden anderen nach der letzten efolgreichen Synchronisation.
Das 3-Wege-Mischen gleicht dann die beiden modifizierten Modelle mit Model3 ab und geht standardmäßig folgendermaßen vor: Ist ein Element in Model1 und in Model3 vorhanden, nicht aber in Model2, ist ersichtlich, dass dieses Element bei der letzten Sync schon vorhanden war und folglich in Model2 gelöscht wurde. Deshalb schlägt das 3-Wege-Mischen auch ein Löschen in Model1 vor. Ist jedoch ein Element nur in Model1 vorhanden und weder in Model2 noch in Model3, kann man sehen, dass es bei der letzten Sync noch nicht da war --> also wurde es in Model1 eingefügt und der Mechanismus schlägt auch ein Einfügen in Model2 vor. Usw.... (ich hoffe, ich hab es irgendwie verständlich ausgedrückt...)

Nun zu meinem Problem:
Meine beiden Modelle und auch Model3 haben denselben Aufbau. Sie enthalten alle Attribute, Attribut Typen und Sichten, die wiederum Attribute enthalten. Z.B. hat ein Attribut ein Attribut "Namen", einen "Typ", einen "minimalen und maximalen Wert".
Eindeutig ist bei den jeweiligen Elementen der Name. Deshalb dachte ich, dass ich mir erst einmal die Attribute der 3 Modelle hernehme und jeweils nach Namen sortiere, damit ich dann auch abgleichen kann. Dies wollte ich über die Implementierung eines Sortable Intefaces in einem ModelAdapter tun. Allerdings habe ich nun nur ein Comparable gefunden... Das Comparable brauch ich vielleicht ja auch, weil ich dann irgendwie die jeweiligen Attribute des Attributes vergleichen muss.
Sprich ich weiß nicht so genau wo und wie ich nun wirklich anfangen soll und ob mein Vorhaben in Ordnung ist, oder ob es vielleicht schon eine gewisse Vorgehensweise bei so etwas gibt.
 

rik0

Mitglied
Ahh okay - jetzt verstehe ich....

Interessant wird es also, wenn ein Element in allen 3 Modellen verschieden ist, also in Model 1 und 2 geändert wurde - dann muss man sich für eine Version entscheiden bzw mergen.... :)

Geht's Dir jetzt darum, wie Du eine Liste von allen Elementen erstellst?

Also "adhoc" würde ich das so machen:


Code:
Element E (Name, Wert in ModelA, Wert in ModelB, Wert in ModelC)

Liste L;

Für jedes Element E in ModelA:
	- füge E und den zugehörigen ModelA-Wert in L ein.
	- wenn E in ModelB enthalten ist, speichere den ModelB-Wert von E in L.
	- wenn E in ModelC enthalten ist, speichere den ModelC-Wert von E in L.
	
Für jedes Element E in ModelB:
	- wenn E nicht in L enthalten ist:
			- füge E und den zugehörigen ModelB-Wert in L ein.
			- wenn E in Model C enthalten ist, speichere den ModelC-Wert von E in L.
			
Für jedes Element E in ModelC:
	- wenn E nicht in L enthalten ist:
			- füge E und den zugehörigen ModelC-Wert in L ein.
			
//jetzt hat man in der Liste also alle Elemente die in mindestens 1 Model vorkommen.

//jetzt das Zusammenführen:

Für jedes Element E in L:
	- wenn WertA = WertC != WertB:
		- WertA = WertB
		- WertC = WertB
		//...usw....
 

Ravebaby

Mitglied
Vielen Dank für die Antowort, aber nein, so möchte ich das nicht machen.
Mein Ziel ist es, eine Synch Oberfläche zu programmieren die auf der linken Seite die Werte der Elemente in Model1 und auf der rechten Seite die Werte in Model2 anzeigt. Dazwischen gibt es dann eine Spalte die die jeweilige Sync-Aktion vorschlägt. Also zB --> um den linken Wert in das rechte Model zu übernehmen und umgekehrt.
X, wenn das Element zB links nicht mehr vorhanden ist und auch rechts gelöscht werden soll.
Somit habe ich dann links und rechts einen Baum mit allen, neuen, modifizierten oder gelöschten Elementen (zumindest möchte ich das haben ;)
 

Tellerrand

Bekanntes Mitglied
Ravebaby hat gesagt.:
Neulich hatte nur einer gemeint, dass 3-Wege-Mischen sei so alt und grundsätzlich, dass es jeder kenne...
Also die Synchronisation die du beschreibst ist schon Grundwissen, aber der Begriff 3 Wege Mischen verwirrt einen dann doch.

Das Problem was ich habe ist, dass ich weder die Form deiner Klassen kenne, also in wie weit verzweigen sich diese (muss man quasi per Rekursion in die Tiefe gehen?), noch kenne ich die Art wie diese gehalten werden (Liste, Baum, etc).

Falls diese als einfache ungeordnete Liste vorhanden sind, dann gibt es da eine schlechte triviale Lösung.
1 HashMap füllen, ... Vergleichsschlüssel, z.B. der Name, auf ein Array Model[3] abbilden, oder noch besser über folgendes implementieren:
http://java.sun.com/j2se/1.4.2/docs/api/java/lang/Object.html#hashCode()
Und danach einfach die Liste durchgehen, also für jeden Punkt schauen wie das Array aussieht, bzw. welche Einträge vorhanden sind.

Nur wie gesagt, besser du setzt hier noch ein paar Klassen rein und zeigst in welcher Form die Modelle vorhanden sind.
 

Ravebaby

Mitglied
Also jedes Attribut oder AttributTyp ist eine Instanz einer Klasse.
Die Attribute eines Attributes wie Name, Typ, min und max Wert sind einfache Attribute einer Instanz von "Attribut".#
Sorry, das mit den Attributen der Attribute ist vielleicht ein etwas verwirrendes Beispiel...
Also dachte ich mir, ich schreib für alle möglichen Instanzen erst einmal ein sortable Interface. Also für die Attribute ein AttributesSortableModelAdapter der alle Attribute nach Namen sortiert. Dann brauch ich wahrscheinlich noch ein Comparable Interface oder so. Irgendwie muss ich ja herausfinden bei welchen Attributen sich überhaupt was geändert und und was genau... Und daraus möchte ich dann meine Synchronisationsliste anzeigen. Oh man, je länger ich drüber schreibe, desto mehr Angst bekomme ich davor :(
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
M Frameworks - mehre Wege zum Ziel? Java Basics - Anfänger-Themen 9
G Mit der Tiefensuche alle Wege finden Java Basics - Anfänger-Themen 2
B Perfektes Mischen Java Basics - Anfänger-Themen 15
X Best Practice Ein int Array richtig mischen Java Basics - Anfänger-Themen 20
D Sortiertes Array mischen ohne Duplikat Java Basics - Anfänger-Themen 5
W Arrays mischen und anhängen Java Basics - Anfänger-Themen 3
W Arrays zusammenhängen und mischen Java Basics - Anfänger-Themen 1
M String Array mischen Java Basics - Anfänger-Themen 3
E Erste Schritte Memorie zufällige Pärchen mischen Java Basics - Anfänger-Themen 6
T Datentypen gleichmäßiges mischen von 2 LinkedList Java Basics - Anfänger-Themen 3
P Mergesort || 2 SetLists mischen Java Basics - Anfänger-Themen 2
I Memory-Spiel Feld nur einmal mischen Java Basics - Anfänger-Themen 2
J ein Array per Zufall mischen?! Java Basics - Anfänger-Themen 8
E ArrayList mischen Java Basics - Anfänger-Themen 3
G Inhalte eines Arrays mischen Java Basics - Anfänger-Themen 3
Antoras Zahlen mischen und mit einer for-Schleife Summe berechnen Java Basics - Anfänger-Themen 12
P jsp tags und scriplets mischen dynamische werte an jsp tag Java Basics - Anfänger-Themen 2
K Hashtable mischen (shuffeln)? Java Basics - Anfänger-Themen 4
? Layouts Mischen Java Basics - Anfänger-Themen 5
0 Endlosschleife beim Integer Array mischen? Java Basics - Anfänger-Themen 3
A mischen von Karten Java Basics - Anfänger-Themen 4
H Vector mischen Java Basics - Anfänger-Themen 6
N Mischen und vergleichen von Arrays Java Basics - Anfänger-Themen 6
Maxq Klassen Actionen in Button implementieren Java Basics - Anfänger-Themen 6
A LinkedList implementieren Java Basics - Anfänger-Themen 32
_so_far_away_ Inventarisierungssystem brauche switch Cases und weiß nicht, wie ich e implementieren muss Java Basics - Anfänger-Themen 5
new_to_coding Rekursive Reihe implementieren Java Basics - Anfänger-Themen 1
HolyFUT Javax Websocket API implementieren Java Basics - Anfänger-Themen 14
J Interface Interface korrekt implementieren Java Basics - Anfänger-Themen 5
M Wie kann ich eine Methode aus einem Interface in eine Klasse implementieren, so dass sie ihre Funktion ausführt? Java Basics - Anfänger-Themen 7
P9cman Ampel in Java implementieren Java Basics - Anfänger-Themen 3
districon Generics implementieren Java Basics - Anfänger-Themen 2
W UML Diagramm implementieren Java Basics - Anfänger-Themen 2
tony241188 Implementieren Sie die Klasse Hersteller, welche die folgenden Elektrogeräte produziert Java Basics - Anfänger-Themen 3
R Taxistand Implementieren Java Basics - Anfänger-Themen 1
CptK Generics: Klassen die Interface implementieren, aber selbst nicht das Interface sind Java Basics - Anfänger-Themen 8
Gaudimagspam BMI in Java implementieren Java Basics - Anfänger-Themen 38
T Methode implementieren Java Basics - Anfänger-Themen 21
R Implementieren einer iterativen und rekursiven Klassenmethode. Java Basics - Anfänger-Themen 1
L Methode implementieren, Parameter die übergeben werden sind final Java Basics - Anfänger-Themen 4
J alternierendes Probing-Verfahren für Hash-Tabellen implementieren Java Basics - Anfänger-Themen 0
B UML-Klassendiagram get und set implementieren Java Basics - Anfänger-Themen 2
M Implementieren einer Datenstruktur, welche nur 5 Objekte speichert Java Basics - Anfänger-Themen 3
U Hashmap Iterator selbst implementieren Java Basics - Anfänger-Themen 10
E Klassen implementieren Java Basics - Anfänger-Themen 94
S Tokenizer selbst implementieren Java Basics - Anfänger-Themen 1
C Telefonliste mit interface implementieren Java Basics - Anfänger-Themen 30
L Klassen Kann eine Unterklasse einer abstrakten Klasse ein Interface implementieren? Java Basics - Anfänger-Themen 2
B Doppelt verkettete Liste implementieren Java Basics - Anfänger-Themen 8
M WindowStateListener selbst implementieren Java Basics - Anfänger-Themen 8
J Algorithmus für eine Reihe implementieren Java Basics - Anfänger-Themen 2
F Kindklassen sollen Ihre Methoden selbst implementieren Java Basics - Anfänger-Themen 5
pkm Interface Funktionales Interface lässt sich nicht implementieren. Java Basics - Anfänger-Themen 2
N Verkettete Liste implementieren Java Basics - Anfänger-Themen 5
N Stacks und Queues Implementieren Java Basics - Anfänger-Themen 2
R Listen richtig implementieren Java Basics - Anfänger-Themen 3
Shizmo Methoden Formel besser implementieren Java Basics - Anfänger-Themen 8
X Polynome implementieren Java Basics - Anfänger-Themen 3
O Methoden implementieren, Sichtbarkeiten, Brüche Java Basics - Anfänger-Themen 104
D Erste Schritte Weitere Befehle implementieren Java Basics - Anfänger-Themen 27
D Erste Schritte Befehl back implementieren Java Basics - Anfänger-Themen 18
B Formel in Java implementieren Java Basics - Anfänger-Themen 4
M Suchbaum implementieren Java Basics - Anfänger-Themen 8
S Implementieren zweier Klassen Java Basics - Anfänger-Themen 5
Hacer Interfaces implementieren Java Basics - Anfänger-Themen 7
C Zyklisch verkette Liste - Pop() methode implementieren Java Basics - Anfänger-Themen 2
N Eigene Stream Methoden implementieren Java Basics - Anfänger-Themen 3
L LinkedList Comparable < > MEHRFACH implementieren? Java Basics - Anfänger-Themen 3
K Klassen implementieren Java Basics - Anfänger-Themen 7
W Neue Klassenmethode implementieren.. Java Basics - Anfänger-Themen 6
U Datentypen Doppelt verkettete Liste implementieren Java Basics - Anfänger-Themen 13
C UML Diagramm in Java implementieren-Korrektur Java Basics - Anfänger-Themen 8
T Equal Methode implementieren Java Basics - Anfänger-Themen 22
C ZahlenMuster implementieren Java Basics - Anfänger-Themen 1
C Alte Klausuraufgabe - UML in Java implementieren Java Basics - Anfänger-Themen 1
D Erste Schritte spielfeld als Datenspeicher implementieren Java Basics - Anfänger-Themen 1
D spielfeld als Datenspeicher implementieren Java Basics - Anfänger-Themen 5
J Builder Pattern implementieren Java Basics - Anfänger-Themen 3
B Sortierte Liste implementieren Java Basics - Anfänger-Themen 3
L Liste mittels Stack implementieren Java Basics - Anfänger-Themen 0
K Iterator-Interface implementieren mit Exception Handlung Java Basics - Anfänger-Themen 1
D Weihnachtsbaum implementieren gescheitert. Java Basics - Anfänger-Themen 2
D Tannenbaum implementieren gescheitert Java Basics - Anfänger-Themen 1
D Interface Interfaces und abstrakte Klassen implementieren Java Basics - Anfänger-Themen 4
F ArrayListen auf anderer Klasse implementieren Java Basics - Anfänger-Themen 4
S Generische Methode soll Objekte als Parameter erlauben die bestimmtes Interface implementieren^ Java Basics - Anfänger-Themen 9
D Methoden Implementieren von einer Zoomfunktion innerhalb eines JPanels mit null-Layoutmanager Java Basics - Anfänger-Themen 1
G Erbklasse verpflichten Methode zu implementieren Java Basics - Anfänger-Themen 3
D Algorithmus zu gegebener Laufzeit implementieren Java Basics - Anfänger-Themen 1
G einfache Leet-Übersetzung implementieren und benutzen Java Basics - Anfänger-Themen 14
B Binärbaum mit java implementieren! Java Basics - Anfänger-Themen 5
C Klassendesign / Wann Interface implementieren und wann Klassen vererben? Java Basics - Anfänger-Themen 3
D Exception selbst Implementieren Java Basics - Anfänger-Themen 1
T QuickSort implementieren Java Basics - Anfänger-Themen 5
J Konstruktor implementieren, zahl 0 repräsentieren Java Basics - Anfänger-Themen 4
C Frage zum Kartenspiel implementieren Java Basics - Anfänger-Themen 9
shiroX OOP Java Funktion implementieren Java Basics - Anfänger-Themen 3
T Ampel implementieren Java Basics - Anfänger-Themen 12
S Interface Implementieren von Methoden aus einer Klasse in eine GUI Java Basics - Anfänger-Themen 6
H Methoden Implementieren "Drücken Sie eine beliebige Taste" Java Basics - Anfänger-Themen 5

Ähnliche Java Themen

Neue Themen


Oben