Datenspeicherstruktur für einen Essenplan

theXs

Grünschnabel
Hallo,
ich habe vor kurzer Zeit mit Java und dem gesamten OOP Block angefangen, schon fleissig in ein paar Büchern geblättert und wollte mein angelesenes Wissen jetzt mal in die Tat umsetzen, aber leider wurde ich dabei abrupt gestoppt.

Zu meinem Problem: Ich habe einen Html-Parser geschrieben der einen Essenplan von einer Homepageeinliest. Diesen Reintext will ich jetzt in einer Klassenstruktur unterbringen und anschliessend in ein XML ausgeben.

Während das erste und das letzte Problem kein wirklich großes Ding ( bisher ) sind, stellt mich die Klassenstruktur vor Rätsel.

Also wie sieht so ein Essenplan aus?

montag
theke 1
gericht bla
theke 2
blubber
dubber
theke 3
noch ein gericht
noch was leckeres
dienstag
theke 2
sdfjkdsf
Bio Theke
Senfei ..

Das ganze wiederholt sich bis Samstag, wie euch bestimmt aufgefallen ist, müssen sich die Thekennamen nicht unbedingt wiederholen - und an verschiedenen Tagen können verschiedene Theken offen haben ( Bio Theke vs. Theke 1 ).

Nun zu meiner Überlegung, ich wollte verschiedene Klassen erstellen um die Daten effizient halten und auslesen zu können.

Bisher habe ich 2 Klassen:
Theke und Meal

Code:
import java.util.HashSet;
import java.util.Iterator;
import java.util.Set;

public class Theke {
	private String name = "";
	private day weekday;
	//private ArrayList<meal> meallist = new ArrayList<meal>();
	private Set<meal> mealset = new HashSet<meal>(10);
	
	public Theke( String thekenname, String weekday)
	{
		this.name = thekenname;
		this.weekday = day.valueOf(weekday);
	}
	public void setMeal (String mealname, Double price)
	{
		// Array List of Type Meal
		mealset.add( new meal( mealname, price));
		//meallist.add(new meal( mealname, price ));
	}
	public String getMeal ()
	{		
		String strMeals = "";
		// .. need to fill it again ... whee
		Iterator<meal> meals = mealset.iterator();
		while(meals.hasNext())
			strMeals += meals.next().getName()+",";
		return strMeals;
	}	
	public String getName() {
		return name;
	}
	public Boolean hasName()
	{
		return name.isEmpty();
	}
	public void setName(String name) {
		this.name = name;
	}
    public boolean equals(Object o) {
    	return o instanceof Theke ? this.name.toLowerCase().equals(((Theke) o).name.toLowerCase()) : false;
	}
	public int hashCode() {
	       return this.name.toLowerCase().hashCode();
	}	
}

und
Code:
public class meal {
	private String name = "";
	private Double price = 0.0;
	
	public meal( String name, Double price)
	{
		// sets the name and price of the meal
		this.name = name;
		this.price = price;
	}
	
	public Double getPrice() {
		return price;
	}

	public void setPrice(Double price) {
		this.price = price;
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}
}

Code:
		// add elements to the List
		List<Counter> theke = new ArrayList<Counter>();
		theke.add(new Counter("Theke 1",day.Montag));
		theke.add(new Counter("Theke 1",day.Dienstag));		

		// iterates through the ArrayList in impossible mission to find a dataset in the ArrayList
		// which contains a certain COUNTER to a certain date ... till now with hardcoded strings ..
		Boolean iWantToBelieve = false;
		for(Counter item: theke)
		{
			// receives the weekday
			String tmpWeekday = item.getWeekday().toString();
			String tmpCounters = item.getName();
			
			if(!(tmpWeekday.equals("Montag") && tmpCounters.equals("Theke 1") ) )
			{
				iWantToBelieve = false;
			}
			else
			{
				iWantToBelieve = true;
				break;
			}		
		}		
		System.out.println(iWantToBelieve.toString());
Habe das adden zur List nun implementieren können

Jetzt muss ich gucken wie ich eine direkte Referenz aus der for Schleife zurückliefern kann um ein Objekt hinzufügen zu können

Also, ich bin soweit das ich zu jeder Theke sehr viele Essen speichern kann - das Ziel ist also erfüllt, ich kann auch neue Theken erstellen etc. Doch leider kann ich das nicht für einen Wochentag steuern.

Also bisher habe ich eine ArrayList vom Typ Theke / oder ein Set vom Typ Theke ( um keine doppelten Theken zu haben ). But that doesn't quite cut it ... .

Hat einer von euch eine Idee? Ich verzweifle langsam an dem Problem :-/.

Überlegt habe ich das ich noch ein KLasse Tag erstellen kann und das diese dann wiederrum ein Set/Arraylist mit den verschiedenen Theken enthält... .
 
Zuletzt bearbeitet:
Zurück