/*
*
* * Copyright (C) 2012 Ignacio Gonzalez Sainz
* *
* * Holy Week Guide: An android application with the itineraries, images and all information of the brotherhoods Spain's holy week
* *
* * 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.
* *
* * Ignacio Gonzalez Sainz
* * Cádiz (Spain)
* * ignacio.glez.s@gmail.com
* *
*
*/
package com.ignaciogs.semanasanta;
import android.content.Context;
import android.util.Log;
import org.xml.sax.InputSource;
import org.xml.sax.XMLReader;
import javax.xml.parsers.SAXParser;
import javax.xml.parsers.SAXParserFactory;
import java.io.InputStream;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.GregorianCalendar;
import java.util.List;
public class DataManager {
private static DataManager INSTANCE = null;
private List<Cofradia> cofradiasList = new ArrayList<Cofradia>();
private List<String> daysOfWeeksList = new ArrayList<String>();
private int horaFinMadrugada = 7;
private String fileDataCofradias = "data/cadiz.xml";
private boolean isFirstSunday = true;
public static DataManager getInstance() {
if (INSTANCE == null) {
INSTANCE = new DataManager();
}
return INSTANCE;
}
public void loadDataCofradias(Context context) {
try {
cofradiasList.clear();
SAXParserFactory spf = SAXParserFactory.newInstance();
SAXParser sp = spf.newSAXParser();
XMLReader xr = sp.getXMLReader();
HandlerXMLCofradias gwh = new HandlerXMLCofradias();
xr.setContentHandler(gwh);
InputStream is = context.getAssets().open(fileDataCofradias);
xr.parse(new InputSource(is));
} catch (Exception e) {
Log.d("semanasanta", e.getMessage());
e.printStackTrace();
}
}
public String getNameDayFromDate(String fecha, String horaSalida, Context context, boolean isFirstSunday) {
String dia = "";
GregorianCalendar gc = (GregorianCalendar) GregorianCalendar.getInstance();
SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");
try {
gc.setTime(sdf.parse(fecha));
String desc = context .getString(R.string.text_santo);
int dayOfWeek = gc.get(Calendar.DAY_OF_WEEK);
if (dayOfWeek == 1) { //Domingo de ramos o resureccion
desc = "";
// if (isFirstSunday) { // Domingo de ramos
// desc = context.getString(R.string.ramos);
// } else { //Domingo de resurreccion
// desc = context.getString(R.string.resureccion);
// }
} else if (dayOfWeek == 7) { //Sabado
desc = "";
// if (isFirstSunday) {
// desc = context.getString(R.string.pasion);
// } else {
// desc = context.getString(R.string.text_santo);
// }
}
if ( Integer.valueOf(horaSalida.substring(0, 2)) > horaFinMadrugada ) {
SimpleDateFormat sdfDia = new SimpleDateFormat("EEEE '" + desc + ", ' dd ' de ' MMMM ");
dia = sdfDia.format(gc.getTime());
} else {
SimpleDateFormat sdfDia = new SimpleDateFormat("EEEE '" + desc +
" " + context.getString(R.string.text_madruga) + ", ' dd ' de ' MMMM ");
dia = sdfDia.format(gc.getTime());
}
dia = dia.substring(0,1).toUpperCase() + dia.substring(1);
} catch (ParseException e) {
e.printStackTrace();
}
return dia;
}
public void loadDaysOfWeeks(Context context) {
daysOfWeeksList.clear();
Boolean isPrimerDomingo = true;
for (Cofradia cofradia : cofradiasList) {
if ( ! cofradia.getFecha_salida().equals("")) {
String dia = getNameDayFromDate(cofradia.getFecha_salida(), cofradia.getHoraSalida(), context, isPrimerDomingo);
if ( ! daysOfWeeksList.contains(dia)) {
daysOfWeeksList.add(dia);
}
}
}
}
public String getFileDataCofradias() {
return fileDataCofradias;
}
public void setFileDataCofradias(String fileDataCofradias) {
this.fileDataCofradias = fileDataCofradias;
}
public List<Cofradia> getCofradiasList() {
return cofradiasList;
}
public List<String> getDaysOfWeeksList() {
return daysOfWeeksList;
}
public int getHoraFinMadrugada() {
return horaFinMadrugada;
}
public void setHoraFinMadrugada(int horaFinMadrugada) {
this.horaFinMadrugada = horaFinMadrugada;
}
}