/*
* Copyright 2015 Hauke Oldsen
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package de.gebatzens.sia.data;
import android.content.Context;
import android.util.JsonReader;
import android.util.JsonWriter;
import android.util.Log;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import de.gebatzens.sia.SIAApp;
import de.gebatzens.sia.fragment.RemoteDataFragment;
public class Mensa extends ArrayList<Mensa.MensaItem> implements RemoteDataFragment.RemoteData {
public Throwable throwable;
@Override
public Throwable getThrowable() {
return throwable;
}
@Override
public boolean isEmpty() {
boolean b = true;
for(MensaItem item : this)
if(!item.isPast())
b = false;
return b;
}
public void save() {
try {
OutputStream out = SIAApp.SIA_APP.openFileOutput("mensa", Context.MODE_PRIVATE);
JsonWriter writer = new JsonWriter(new OutputStreamWriter(out));
writer.setIndent(" ");
writer.beginArray();
for(MensaItem s : this) {
writer.beginObject();
writer.name("id").value(s.id);
writer.name("date").value(s.date);
writer.name("meal").value(s.meal);
writer.name("garnish").value(s.garnish);
writer.name("dessert").value(s.dessert);
writer.name("vegetarian").value(s.vegetarian);
writer.name("image").value(s.image);
writer.endObject();
}
writer.endArray();
writer.close();
} catch(Exception e) {
e.printStackTrace();
}
}
public boolean load() {
clear();
try {
InputStream in = SIAApp.SIA_APP.openFileInput("mensa");
JsonReader reader = new JsonReader(new InputStreamReader(in));
reader.beginArray();
while(reader.hasNext()) {
reader.beginObject();
MensaItem item = new MensaItem();
while(reader.hasNext()) {
String name = reader.nextName();
switch (name) {
case "id":
item.id = reader.nextString();
break;
case "date":
item.date = reader.nextString();
break;
case "meal":
item.meal = reader.nextString();
break;
case "garnish":
item.garnish = reader.nextString();
break;
case "dessert":
item.dessert = reader.nextString();
break;
case "vegetarian":
item.vegetarian = reader.nextString();
break;
case "image":
item.image = reader.nextString();
break;
default:
reader.skipValue();
break;
}
}
reader.endObject();
add(item);
}
reader.endArray();
reader.close();
} catch(Exception e) {
Log.w("ggvp", "Mensa file does not exist");
return false;
}
return true;
}
private static Date getDate(String date) throws ParseException {
DateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
return sdf.parse(date);
}
public static class MensaItem {
public String id;
public String date;
public String meal;
public String garnish;
public String dessert;
public String vegetarian;
public String image;
public boolean isPast() {
Date d = new Date();
Calendar c = Calendar.getInstance();
c.setTime(d);
c.add(Calendar.DAY_OF_YEAR, -1);
Date dt = c.getTime();
try {
if(getDate(this.date).before(dt)) {
return true;
}
} catch (ParseException e) {
e.printStackTrace();
}
return false;
}
@Override
public boolean equals(Object o) {
if(!(o instanceof MensaItem))
return false;
MensaItem m = (MensaItem) o;
return m.id.equals(id) && m.date.equals(date) && m.meal.equals(meal) && m.garnish.equals(garnish) &&
m.dessert.equals(dessert) && m.vegetarian.equals(vegetarian) && m.image.equals(image);
}
}
}