Hallo,
ich habe folgende zwei Klassen:
- Namespace
- QueryObject
Ein Namespace kann mehrere QueryObjects haben.
Um das besser zu klären:
Ich habe zwei. Objekte:

"Datebase View" = Klasse Namespace
"Customer"= Klasse Quey Object
-> In gelb ist jeweils der uniqueName
-> uniqueNameCombined setzt sich aus dem Namespace und dem Namen des QueryObjects zusammen:
Datebase View ->[Datebase View]
Customer ->[Datebase View].[Customer]
Es wird eine Funktion innerhalb dem setUniqueName aufgerufen, welches den UniqueNameCombined erstellt. Beim Customer ist das eine Kombination aus dem UniqueName des Objekts und der Referenz auf den Namespace (Feld: refNamespace)
Das funktioniert ja auch soweit alles.
Nun habe ich aber ein Problem, wenn sich der Name z.B. von "Database View" ändert. Zu "Database View2".
Was ich nun haben möchte ist, dass alle referenzierte Objekte zu diesem Objekt (in dem Fall der Namespace) ebenfalls automatisch den UniqueNameCombined anpassen.
Also Customer wird nun zu:
Customer ->[Datebase View2].[Customer]
Aktuell bleibt der UniqueNameCombined vom Customer aber immer noch auf [Datebase View].[Customer].
Kann hier jemand helfen?
ich habe folgende zwei Klassen:
- Namespace
- QueryObject
Ein Namespace kann mehrere QueryObjects haben.
Java:
@XmlAccessorType(XmlAccessType.FIELD)
public class Namespace implements DataQueryObjectInterface {
// Eindeutiger Name
private String uniqueName;
// Eindeutiger Name
@XmlAttribute
@XmlID
private String uniqueNameCombined;
private List<QueryObject> queryObjectList;
// Getter + Setter
public String getUniqueName() {
return uniqueName;
}
public void setUniqueName(String uniqueName) {
// Generate
this.uniqueNameCombined = generateUniqueName(this);
this.uniqueName = uniqueName;
}
Java:
@XmlAccessorType(XmlAccessType.FIELD)
public class QueryObject implements DataQueryObjectInterface {
// Eindeutiger Name
private String uniqueName;
// Eindeutiger Name
@XmlAttribute
@XmlID
private String uniqueNameCombined;
// Referenzierter Namespace
@XmlElement(name = "refNamespace")
@XmlIDREF
private Namespace refNamespace;
/**
* Unique Name erstellen
*
* @param queryObject
* @return
*/
public String generateUniqueName(DataQueryObjectInterface dataQueryObjectInterface) {
StringBuilder s = new StringBuilder();
// Namespace
if (queryObject.getRefNamespace() != null) {
s.append(ConstantsReporting.START_PLACEHOLDER);
s.append(queryObject.getRefNamespace().getUniqueName());
s.append(ConstantsReporting.END_PLACEHOLDER);
s.append(ConstantsReporting.DIVIDER_PLACEHOLDER);
}
// QueryObject
s.append(ConstantsReporting.START_PLACEHOLDER);
s.append(queryObject.getUniqueName());
s.append(ConstantsReporting.END_PLACEHOLDER);
return s.toString();
}
// Getter + Setter
public String getUniqueName() {
return uniqueName;
}
public void setUniqueName(String uniqueName) {
// Generate
this.uniqueNameCombined = generateUniqueName(this);
this.uniqueName = uniqueName;
}
public String getUniqueNameCombined() {
this.uniqueNameCombined = generateUniqueName(this);
return uniqueNameCombined;
}
public void setUniqueNameCombined(String uniqueNameCombined) {
uniqueNameCombined = generateUniqueName(this);
this.uniqueNameCombined = uniqueNameCombined;
}
Um das besser zu klären:
Ich habe zwei. Objekte:

"Datebase View" = Klasse Namespace
"Customer"= Klasse Quey Object
-> In gelb ist jeweils der uniqueName
-> uniqueNameCombined setzt sich aus dem Namespace und dem Namen des QueryObjects zusammen:
Datebase View ->[Datebase View]
Customer ->[Datebase View].[Customer]
Es wird eine Funktion innerhalb dem setUniqueName aufgerufen, welches den UniqueNameCombined erstellt. Beim Customer ist das eine Kombination aus dem UniqueName des Objekts und der Referenz auf den Namespace (Feld: refNamespace)
Das funktioniert ja auch soweit alles.
Nun habe ich aber ein Problem, wenn sich der Name z.B. von "Database View" ändert. Zu "Database View2".
Was ich nun haben möchte ist, dass alle referenzierte Objekte zu diesem Objekt (in dem Fall der Namespace) ebenfalls automatisch den UniqueNameCombined anpassen.
Also Customer wird nun zu:
Customer ->[Datebase View2].[Customer]
Aktuell bleibt der UniqueNameCombined vom Customer aber immer noch auf [Datebase View].[Customer].
Kann hier jemand helfen?