package it.fdev.unisaconnect.data;
import java.io.IOException;
import java.util.ArrayList;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
public class StaffDB {
// private static final String DB_UPDATE_URL = "http://idw.altervista.org/img_prof/latest.xml";
private static final String DB_STAFF_DATE = "2014.09.17-14.25.11"; //First used: V40
private static final String DB_STAFF_NAME = "uc_staff-" + DB_STAFF_DATE + ".db";
private SQLiteDatabase dbStaff;
public StaffDB(Context context) throws IOException {
new DatabaseHelper(context, DB_STAFF_NAME);
dbStaff = SQLiteDatabase.openDatabase(context.getDatabasePath(DB_STAFF_NAME).getAbsolutePath()
, null, SQLiteDatabase.OPEN_READONLY + SQLiteDatabase.NO_LOCALIZED_COLLATORS);
}
// public ArrayList<StaffMemberSummary> getStaffSummaryByName(String name) {
// String staffTableName = "staff";
// String[] cols = new String[]{"matricola", "fullname", "img_small_url"};
// String where = "fullname LIKE ?";
// String[] args = new String[]{"%"+name+"%"};
// String orderBy = "fullname";
//
// ArrayList<StaffMemberSummary> staffList = new ArrayList<StaffMemberSummary>();
// Cursor results = dbStaff.query(staffTableName, cols, where, args, null, null, orderBy);
// results.moveToFirst();
// while(!results.isAfterLast()) {
// staffList.add(new StaffMemberSummary(results.getString(0),results.getString(1),results.getString(2)));
// results.moveToNext();
// }
// results.close();
// return staffList;
// }
public ArrayList<StaffMemberSummary> searchStaffNameByWords(String words) {
ArrayList<StaffMemberSummary> staffList = new ArrayList<StaffMemberSummary>();
String[] wordsArray = words.split(" ");
if (wordsArray.length <= 0) {
return staffList;
}
String staffTableName = "staff";
String[] cols = new String[]{"matricola", "fullname", "email", "img_small_url"};
String where = "fullname LIKE ";
String[] args = new String[wordsArray.length];
for (int i=0; i<wordsArray.length-1; i++) {
where += "? AND fullname LIKE ";
args[i] = "%"+wordsArray[i]+"%";
}
where += "?";
args[wordsArray.length-1] = "%"+wordsArray[wordsArray.length-1]+"%";
String orderBy = "fullname";
Cursor results = dbStaff.query(staffTableName, cols, where, args, null, null, orderBy);
results.moveToFirst();
while(!results.isAfterLast()) {
String matricola = results.getString(0);
String fullname = results.getString(1);
// String role = results.getString(2);
String email = results.getString(2);
String imgSmallUrl = results.getString(3);
StaffMemberSummary member = new StaffMemberSummary(matricola, fullname, email, imgSmallUrl);
staffList.add(member);
results.moveToNext();
}
results.close();
return staffList;
}
public StaffMember getStaffMember(String id) {
String staffTableName = "staff";
String[] cols = new String[]{"matricola", "fullname", "img_big_url", "img_small_url", "role",
"department", "map_info", "email", "website", "ricevimento", "latitudine", "longitudine"};
String where = "matricola=?";
String[] args = new String[]{id};
String orderBy = "fullname";
Cursor results = dbStaff.query(staffTableName, cols, where, args, null, null, orderBy);
if(results.getCount()<=0) {
results.close();
return null;
}
results.moveToFirst();
String matricola = results.getString(0);
String fullname = results.getString(1);
String imgBigUrl = results.getString(2);
String imgSmallUrl = results.getString(3);
String role = results.getString(4);
String department = results.getString(5);
String mapInfo = results.getString(6);
String email = results.getString(7);
String website = results.getString(8);
String ricevimento = results.getString(9);
Double latitudine = results.getDouble(10);
Double longitudine = results.getDouble(11);
ArrayList<String> phoneList = getPhone(matricola);
ArrayList<String> faxList = getFax(matricola);
StaffMember member = new StaffMember(matricola, fullname, imgBigUrl, imgSmallUrl, role,
department, mapInfo, phoneList, faxList, email, website, ricevimento, latitudine, longitudine);
results.close();
return member;
}
private ArrayList<String> getPhone(String matricola) {
String phoneTableName = "phonenum";
String[] cols = new String[]{"number"};
String where = "staff_matricola=?";
String[] args = new String[]{matricola};
ArrayList<String> phoneList = new ArrayList<String>();
Cursor results = dbStaff.query(phoneTableName, cols, where, args, null, null, null);
if(results.getCount()<=0) {
results.close();
return phoneList;
}
results.moveToFirst();
while(!results.isAfterLast()) {
phoneList.add(results.getString(0));
results.moveToNext();
}
results.close();
return phoneList;
}
private ArrayList<String> getFax(String matricola) {
String faxTableName = "faxnum";
String[] cols = new String[]{"number"};
String where = "staff_matricola=?";
String[] args = new String[]{matricola};
ArrayList<String> faxList = new ArrayList<String>();
Cursor results = dbStaff.query(faxTableName, cols, where, args, null, null, null);
if(results.getCount()<=0) {
results.close();
return faxList;
}
results.moveToFirst();
while(!results.isAfterLast()) {
faxList.add(results.getString(0));
results.moveToNext();
}
results.close();
return faxList;
}
public void close() {
dbStaff.close();
}
// private void checkDBUpdate() {
// try {
// Response response = Jsoup.connect(DB_UPDATE_URL).timeout(30000).execute();
// Document document = response.parse();
// Element root = document.getElementsByTag("db").first();
// String version = root.attr("version");
// String dbUrl = root.attr("url");
//
// } catch(Exception e) {
//
// }
// }
}