gebe mir den ersten eltern knoten

tanzverfuehrung

Bekanntes Mitglied
hallo!also mein problem ist eigentlich das ich das richtige eltern teil nicht bekomme!
ich soll zwischen absoluten und relativen pfad unterscheiden.
realtive kann ich schon den eltern teil zurück geben und auch den kinder namen(knoten)
, beim absoluten pfad geht immoment nur den knoten zurück geben aber nicht das mir das eltern teil zurück gegeben wird.
also ich soll das eltern teil vom knoten ermitteln und dann von dem wieder das elternteil zu ermitteln bis es kein elternteil mehr gibt ,dann ist es die wurzel!

dann zum absoluten pfad umwandeln und so wie mit relativen pfad fortführen!


mein code errstmal!
Java:
	@Override
	public Preferences node(String pathName) {
		

		if (pathName.isEmpty())
			return this;
		int index = pathName.indexOf("/");
		
		
if(index == 0){			//absoluter Pfad
	Preferences parent = parent();
	while (parent != null) {		//solange es eltern gibt
	if(parent.parent() ==  null)
		break;
	parent = parent.parent();		
	}	
				
	//zum relativen pfad machen zur weiter verarbeitung
	pathName = pathName.substring(index+1);
	
}
index = pathName.indexOf("/");

		if (index < 0) { // Wenn der index < 0 ist wurde kein Slash mehr
							// gefunden
			Preferences p = getOrCreateNode(pathName);
			// und im pathName steht das letzte Element
			return p;
		}
		String[] split = pathName.split("/", 2);	
		
		Preferences node1 = node(split[0]);
		Preferences node2 = node1.node(split[1]);
		return node2;
	}

	/**
	 * Prüft ob ein Pfad vorhanden ist, wenn kein pfad vorhanden ist, erzeuge
	 * ihn und gebe ihn zurück!
	 * 
	 * @param
	 * @return value, der gegebene oder erzeugte Pfad
	 */
	private Preferences getOrCreateNode(String nodeName) {

		SimplePreferences value = nodeMap.get(nodeName); // prüfen ob knoten
														// vorhanden ist
		
		if (value == null) { // knoten nicht vorhanden
			value = new SimplePreferences(nodeName,this); // knoten erzeugen
			nodeMap.put(nodeName, value);
		}
		return value;
	}

	@Override
	public String name() {
		return name;
	}
	
	/**
	 * Liefert den Eltern-Knoten zurück, oder null falls es sich bei diesem
	 * Knoten um einen Wurzel-Knoten handelt.
	 */
	@Override
	public Preferences parent() {
		return parent;
	}
so mein problem ist das ich bei dieser zeile
Java:
	Preferences parent = parent();
immer NULL rauskommt.und somit nicht in meine schleife geht!

wie kriege ich also den richtigen eltern teil
 
wenn ich jetzt versuche eine eigene methode getParent zu erstellen

Java:
public String getParent(String pathname){
	Preferences parent = pathname.parent();
	
	return pathname;

}
dann geht das nicht weil

The method parent() is undefined for the type String

wie mache ich das am besten!?????
 
wenn ich jetzt versuche eine eigene methode getParent zu erstellen

Java:
public String getParent(String pathname){
	Preferences parent = pathname.parent();
	
	return pathname;

}
dann geht das nicht weil

The method parent() is undefined for the type String

wie mache ich das am besten!?????

Dein String "pathname" besitzt nicht die Methode .parent();
Das sagt die Fehlermeldung.

Code:
abstract  Preferences 	parent()
          Returns the parent of this preference node, or null if this is the root.
 
ja also mir wurde zwar nicht wirklich geholfen,
aber ich habe es dann doch irgendwie hin bekommen:toll::applaus:
hier ein code ausschnitt
meine getNode Methode habe ich in getRoot umgenannt

Java:
/**
	 * Methode überprüft ob es ein absoluter Pfad oder ein relativer Pfad ist
	 * und gibt den letzten Knoten(node) zurück
	 * 
	 * @param pathName
	 *            , der Pfad Name
	 * @return lastNode , den letzten Knoten des Pfades
	 */
	@Override
	public Preferences node(String pathName) {

		if (pathName.isEmpty())
			return this;
		int index = pathName.indexOf("/");

		if (index == 0) { // absoluter Pfad
			getRoot(this);
			// zum relativen pfad machen zur weiter verarbeitung
			pathName = pathName.substring(index + 1);
		}

		index = pathName.indexOf("/");

		if (index < 0) { // Wenn der index < 0 ist wurde kein Slash mehr
							// gefunden, dann ist es der letzte Knoten
			Preferences lastNode = getOrCreateNode(pathName);
			return lastNode;
		}
		// wir in ein Array gesplittet mit der größe 2
		String[] split = pathName.split("/", 2);

		Preferences node1 = node(split[0]);
		Preferences node2 = node1.node(split[1]);
		return node2;
	}

	/**
	 * Methode prüft solange bis sie keine Eltern mehr findet und gibt die
	 * Wurzel des Pfades zurück.
	 * 
	 * @param actual
	 * @return rootNode, der Wurzel Knoten des Pfades
	 * 
	 */
	public static Preferences getRoot(Preferences actual) {
		Preferences rootNode = actual.parent();
		if (rootNode == null)
			rootNode = actual;

		while (rootNode != null) {
			if (rootNode.parent() == null)
				break;
			rootNode = rootNode.parent();
		}
		return rootNode;
	}

	/**
	 * Prüft ob ein Pfad vorhanden ist, wenn kein pfad vorhanden ist, erzeuge
	 * ihn und gebe ihn zurück!
	 * 
	 * @param nodeName
	 *            , der übergebende Knoten Name
	 * @return value, der gegebene oder erzeugte Pfad
	 */
	private Preferences getOrCreateNode(String nodeName) {

		SimplePreferences value = nodeMap.get(nodeName); // prüfen ob knoten
															// vorhanden ist

		if (value == null) { // knoten nicht vorhanden
			value = new SimplePreferences(nodeName, this); // knoten erzeugen
			nodeMap.put(nodeName, value);
		}
		return value;
	}
 

Neue Themen


Zurück
Oben