package uni.projecte.dataLayer.RemoteDBManager.objects;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import uni.projecte.controler.RemoteDBControler;
import uni.projecte.dataLayer.RemoteDBManager.RemoteDBFilumList;
import android.content.Context;
public class DataBaseHandler {
private RemoteDBControler rmDbControler;
private Context baseContext;
private ArrayList<String> filumsListIds;
private HashMap<String, RemoteDBFilumList> filumLists;
private String filum="";
public DataBaseHandler(Context baseContext,String filum){
this.baseContext=baseContext;
this.filum=filum;
rmDbControler=new RemoteDBControler(baseContext);
filumsListIds=new ArrayList<String>();
filumLists=new HashMap<String, RemoteDBFilumList>();
filumsListIds=rmDbControler.getAvailableFilumsIds(filum);
fillFilumList();
}
public void fillFilumList(){
Iterator<String> it=filumsListIds.iterator();
while(it.hasNext()){
String filumId=it.next();
RemoteDBFilumList rl=rmDbControler.getAvailableDbByFilum(filumId);
filumLists.put(filumId, rl);
}
}
public String getFilumAtPostion(int i){
return filumsListIds.get(i);
}
public RemoteDB getDataBase(int i, int j){
String filumId=filumsListIds.get(i);
return filumLists.get(filumId).getDB(j);
}
public void moveDownDBFilum(int order, String filum){
RemoteDB rmDBCurrent=filumLists.get(filum).getDB(order);
rmDBCurrent.setOrder(order+1);
RemoteDB rmDBNext=filumLists.get(filum).getDB(order+1);
rmDBNext.setOrder(order);
filumLists.get(filum).remove(rmDBCurrent);
filumLists.get(filum).add(order+1,rmDBCurrent);
/*
* Update DBs
*
*/
rmDbControler.updateDbFilumOrder(rmDBCurrent.getDbId(),order+1);
rmDbControler.updateDbFilumOrder(rmDBNext.getDbId(),order);
}
public void moveUpDBFilum(int order, String filum){
RemoteDB rmDBCurrent=filumLists.get(filum).getDB(order);
rmDBCurrent.setOrder(order-1);
RemoteDB rmDBPrev=filumLists.get(filum).getDB(order-1);
rmDBPrev.setOrder(order);
filumLists.get(filum).remove(rmDBCurrent);
filumLists.get(filum).add(order-1,rmDBCurrent);
/*
* Update DBs
*
*/
rmDbControler.updateDbFilumOrder(rmDBCurrent.getDbId(),order-1);
rmDbControler.updateDbFilumOrder(rmDBPrev.getDbId(),order);
}
public int getDataBaseCount(int i){
String filumId=filumsListIds.get(i);
return filumLists.get(filumId).getDBCount();
}
public int getFilumCount(){
return filumsListIds.size();
}
public boolean changeDBFilumState(int id) {
return rmDbControler.changeDBFilumState(id);
}
}