package com.cellasoft.univrapp.model;
import com.cellasoft.univrapp.R;
import com.cellasoft.univrapp.UnivrReaderFactory;
import com.cellasoft.univrapp.reader.UnivrReader;
import com.cellasoft.univrapp.utils.LecturersHandler;
import com.cellasoft.univrapp.utils.Lists;
import com.cellasoft.univrapp.widget.ContactItemInterface;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class Department {
public boolean updating = false;
public String name;
public String url;
public String domain;
public int dest;
public int logo_from_resource;
private Object synRoot = new Object();
public Department() {
this.dest = 0;
}
public Department(String name) {
this.name = name;
this.dest = Departments.DIP_DEST.get(name);
this.domain = Departments.DIP_DOMAIN.get(name);
this.url = Departments.URL.get(name);
this.logo_from_resource = Departments.LOGO.get(name);
}
public Department(Department department) {
this.name = department.name;
this.dest = department.dest;
this.domain = department.domain;
this.url = department.url;
this.logo_from_resource = department.logo_from_resource;
}
public static Department getUniversityByDest(int dest) {
Department department;
switch (dest) {
case Departments.DEST_DIP_BIOTECNOLOGIE:
department = new Department(Departments.DIP_BIOTECNOLOGIE);
break;
case Departments.DEST_DIP_CHIRURGIA:
department = new Department(Departments.DIP_CHIRURGIA);
break;
case Departments.DEST_DIP_ECONOMIA_AZIENDALE:
department = new Department(Departments.DIP_ECONOMIA_AZIENDALE);
break;
case Departments.DEST_DIP_FILOL_LET_LING:
department = new Department(Departments.DIP_FILOL_LET_LING);
break;
case Departments.DEST_DIP_FILOS_PEDA_PSICO:
department = new Department(Departments.DIP_FILOS_PEDA_PSICO);
break;
case Departments.DEST_DIP_INFORMATICA:
department = new Department(Departments.DIP_INFORMATICA);
break;
case Departments.DEST_DIP_LING_LETTERE:
department = new Department(Departments.DIP_LING_LETTERE);
break;
case Departments.DEST_DIP_MEDICINA:
department = new Department(Departments.DIP_MEDICINA);
break;
case Departments.DEST_DIP_PATO_DIAGN:
department = new Department(Departments.DIP_PATO_DIAGN);
break;
case Departments.DEST_DIP_SANITA_MEDI_COM:
department = new Department(Departments.DIP_SANITA_MEDI_COM);
break;
case Departments.DEST_DIP_SCIENZE_DELLA_VITA:
department = new Department(Departments.DIP_SCIENZE_DELLA_VITA);
break;
case Departments.DEST_DIP_SCIENZE_ECON:
department = new Department(Departments.DIP_SCIENZE_ECON);
break;
case Departments.DEST_DIP_SCIENZE_GIURIDICHE:
department = new Department(Departments.DIP_SCIENZE_GIURIDICHE);
break;
case Departments.DEST_DIP_SCIENZE_NEUROLOGICHE:
department = new Department(Departments.DIP_SCIENZE_NEUROLOGICHE);
break;
case Departments.DEST_DIP_TEMPO_IMMAGINE:
department = new Department(Departments.DIP_TEMPO_IMMAGINE);
break;
default:
department = new Department();
break;
}
return department;
}
public static List<Department> getAllUniversity() {
List<Department> universities = Lists.newArrayList();
universities
.add(getUniversityByDest(Departments.DEST_DIP_BIOTECNOLOGIE));
universities.add(getUniversityByDest(Departments.DEST_DIP_CHIRURGIA));
universities
.add(getUniversityByDest(Departments.DEST_DIP_ECONOMIA_AZIENDALE));
universities
.add(getUniversityByDest(Departments.DEST_DIP_FILOL_LET_LING));
universities
.add(getUniversityByDest(Departments.DEST_DIP_FILOS_PEDA_PSICO));
universities.add(getUniversityByDest(Departments.DEST_DIP_INFORMATICA));
universities
.add(getUniversityByDest(Departments.DEST_DIP_LING_LETTERE));
universities.add(getUniversityByDest(Departments.DEST_DIP_MEDICINA));
universities.add(getUniversityByDest(Departments.DEST_DIP_PATO_DIAGN));
universities
.add(getUniversityByDest(Departments.DEST_DIP_SANITA_MEDI_COM));
universities
.add(getUniversityByDest(Departments.DEST_DIP_SCIENZE_DELLA_VITA));
universities
.add(getUniversityByDest(Departments.DEST_DIP_SCIENZE_ECON));
universities
.add(getUniversityByDest(Departments.DEST_DIP_SCIENZE_GIURIDICHE));
universities
.add(getUniversityByDest(Departments.DEST_DIP_SCIENZE_NEUROLOGICHE));
universities
.add(getUniversityByDest(Departments.DEST_DIP_TEMPO_IMMAGINE));
return universities;
}
public List<ContactItemInterface> update() {
synchronized (synRoot) {
if (updating)
return null;
updating = true;
}
List<ContactItemInterface> lecturers = updateLecturers();
List<ContactItemInterface> newItems = saveLecturers(lecturers);
synchronized (synRoot) {
updating = false;
}
return newItems;
}
private List<ContactItemInterface> updateLecturers() {
List<ContactItemInterface> lecturers = Lists.newArrayList();
try {
UnivrReader reader = UnivrReaderFactory.getUnivrReader();
lecturers = reader.executeGetJSON(this, new LecturersHandler());
} catch (Exception e) {
// LOGE("ERROR", e.getMessage());
}
return lecturers;
}
private List<ContactItemInterface> saveLecturers(
List<ContactItemInterface> lecturers) {
List<ContactItemInterface> newItems = Lists.newArrayList();
if (lecturers != null && !lecturers.isEmpty()) {
for (ContactItemInterface lecturer : lecturers) {
if (((Lecturer) lecturer).save()) {
newItems.add(lecturer);
}
}
}
return newItems;
}
public static final class Departments {
// Univeristes RSS post data
public static final String RSS_POST_DATA = "/?ent=avviso&rss=0&dest=";
// Universites name
public static final String DIP_INFORMATICA = "Informatica";
public static final String DIP_BIOTECNOLOGIE = "Biotecnologie";
public static final String DIP_CHIRURGIA = "Chirurgia";
public static final String DIP_ECONOMIA_AZIENDALE = "Economia Aziendale";
public static final String DIP_FILOL_LET_LING = "Filologia, Letteratura e Linguistica";
public static final String DIP_FILOS_PEDA_PSICO = "Filosofia, Pedagogia e Psicologia";
public static final String DIP_LING_LETTERE = "Lingue e Letterature Straniere";
public static final String DIP_MEDICINA = "Medicina";
public static final String DIP_PATO_DIAGN = "Patologia e Diagnostica";
public static final String DIP_SANITA_MEDI_COM = "Sanità Pubblica e Medicina di Comunità";
public static final String DIP_SCIENZE_ECON = "Scienze Economiche";
public static final String DIP_SCIENZE_DELLA_VITA = "Scienze della Vita e della Riproduzione";
public static final String DIP_SCIENZE_GIURIDICHE = "Scienze Giuridiche";
public static final String DIP_SCIENZE_NEUROLOGICHE = "Scienze Neurologiche e del Movimento";
public static final String DIP_TEMPO_IMMAGINE = "Tempo, Spazio, Immagine, Società";
public static final int DEST_DIP_INFORMATICA = 165;
public static final int DEST_DIP_BIOTECNOLOGIE = 171;
public static final int DEST_DIP_CHIRURGIA = 212;
public static final int DEST_DIP_ECONOMIA_AZIENDALE = 179;
public static final int DEST_DIP_FILOL_LET_LING = 237;
public static final int DEST_DIP_FILOS_PEDA_PSICO = 222;
public static final int DEST_DIP_LING_LETTERE = 227;
public static final int DEST_DIP_MEDICINA = 207;
public static final int DEST_DIP_PATO_DIAGN = 194;
public static final int DEST_DIP_SANITA_MEDI_COM = 217;
public static final int DEST_DIP_SCIENZE_ECON = 175;
public static final int DEST_DIP_SCIENZE_DELLA_VITA = 189;
public static final int DEST_DIP_SCIENZE_GIURIDICHE = 184;
public static final int DEST_DIP_SCIENZE_NEUROLOGICHE = 200;
public static final int DEST_DIP_TEMPO_IMMAGINE = 232;
public static final Map<String, String> DIP_DOMAIN;
static {
DIP_DOMAIN = new HashMap<String, String>();
DIP_DOMAIN.put(DIP_INFORMATICA, "http://www.di.univr.it");
DIP_DOMAIN.put(DIP_BIOTECNOLOGIE, "http://www.dbt.univr.it");
DIP_DOMAIN.put(DIP_CHIRURGIA, "http://www.dc.univr.it");
DIP_DOMAIN.put(DIP_ECONOMIA_AZIENDALE, "http://www.dea.univr.it");
DIP_DOMAIN.put(DIP_FILOL_LET_LING, "http://www.dfll.univr.it");
DIP_DOMAIN.put(DIP_FILOS_PEDA_PSICO, "http://www.dfpp.univr.it");
DIP_DOMAIN.put(DIP_LING_LETTERE, "http://www.dlls.univr.it");
DIP_DOMAIN.put(DIP_MEDICINA, "http://www.dm.univr.it");
DIP_DOMAIN.put(DIP_PATO_DIAGN, "http://www.dpd.univr.it");
DIP_DOMAIN.put(DIP_SANITA_MEDI_COM, "http://www.dspmc.univr.it");
DIP_DOMAIN.put(DIP_SCIENZE_ECON, "http://www.dse.univr.it");
DIP_DOMAIN.put(DIP_SCIENZE_DELLA_VITA, "http://www.dsvr.univr.it");
DIP_DOMAIN.put(DIP_SCIENZE_GIURIDICHE, "http://www.dsg.univr.it");
DIP_DOMAIN
.put(DIP_SCIENZE_NEUROLOGICHE, "http://www.dsnm.univr.it");
DIP_DOMAIN.put(DIP_TEMPO_IMMAGINE, "http://www.dtesis.univr.it");
}
public static final Map<String, Integer> DIP_DEST;
static {
DIP_DEST = new HashMap<String, Integer>();
DIP_DEST.put(DIP_INFORMATICA, DEST_DIP_INFORMATICA);
DIP_DEST.put(DIP_BIOTECNOLOGIE, DEST_DIP_BIOTECNOLOGIE);
DIP_DEST.put(DIP_CHIRURGIA, DEST_DIP_CHIRURGIA);
DIP_DEST.put(DIP_ECONOMIA_AZIENDALE, DEST_DIP_ECONOMIA_AZIENDALE);
DIP_DEST.put(DIP_FILOL_LET_LING, DEST_DIP_FILOL_LET_LING);
DIP_DEST.put(DIP_FILOS_PEDA_PSICO, DEST_DIP_FILOS_PEDA_PSICO);
DIP_DEST.put(DIP_LING_LETTERE, DEST_DIP_LING_LETTERE);
DIP_DEST.put(DIP_MEDICINA, DEST_DIP_MEDICINA);
DIP_DEST.put(DIP_PATO_DIAGN, DEST_DIP_PATO_DIAGN);
DIP_DEST.put(DIP_SANITA_MEDI_COM, DEST_DIP_SANITA_MEDI_COM);
DIP_DEST.put(DIP_SCIENZE_ECON, DEST_DIP_SCIENZE_ECON);
DIP_DEST.put(DIP_SCIENZE_DELLA_VITA, DEST_DIP_SCIENZE_DELLA_VITA);
DIP_DEST.put(DIP_SCIENZE_GIURIDICHE, DEST_DIP_SCIENZE_GIURIDICHE);
DIP_DEST.put(DIP_SCIENZE_NEUROLOGICHE,
DEST_DIP_SCIENZE_NEUROLOGICHE);
DIP_DEST.put(DIP_TEMPO_IMMAGINE, DEST_DIP_TEMPO_IMMAGINE);
}
public static final Map<String, Integer> LOGO;
static {
LOGO = new HashMap<String, Integer>();
LOGO.put(DIP_BIOTECNOLOGIE, R.drawable.logo_bio);
LOGO.put(DIP_CHIRURGIA, R.drawable.univr);
LOGO.put(DIP_ECONOMIA_AZIENDALE, R.drawable.univr);
LOGO.put(DIP_FILOL_LET_LING, R.drawable.univr);
LOGO.put(DIP_FILOS_PEDA_PSICO, R.drawable.univr);
LOGO.put(DIP_INFORMATICA, R.drawable.logo_info);
LOGO.put(DIP_LING_LETTERE, R.drawable.univr);
LOGO.put(DIP_MEDICINA, R.drawable.univr);
LOGO.put(DIP_PATO_DIAGN, R.drawable.univr);
LOGO.put(DIP_SANITA_MEDI_COM, R.drawable.univr);
LOGO.put(DIP_SCIENZE_DELLA_VITA, R.drawable.univr);
LOGO.put(DIP_SCIENZE_ECON, R.drawable.logo_eco);
LOGO.put(DIP_SCIENZE_GIURIDICHE, R.drawable.univr);
LOGO.put(DIP_SCIENZE_NEUROLOGICHE, R.drawable.logo_neuro);
LOGO.put(DIP_TEMPO_IMMAGINE, R.drawable.univr);
}
public static final Map<String, String> URL;
static {
URL = new HashMap<String, String>();
URL.put(DIP_BIOTECNOLOGIE, DIP_DOMAIN.get(DIP_BIOTECNOLOGIE)
+ RSS_POST_DATA + DEST_DIP_BIOTECNOLOGIE);
URL.put(DIP_CHIRURGIA, DIP_DOMAIN.get(DIP_CHIRURGIA)
+ RSS_POST_DATA + DEST_DIP_CHIRURGIA);
URL.put(DIP_ECONOMIA_AZIENDALE,
DIP_DOMAIN.get(DIP_ECONOMIA_AZIENDALE) + RSS_POST_DATA
+ DEST_DIP_ECONOMIA_AZIENDALE);
URL.put(DIP_FILOL_LET_LING, DIP_DOMAIN.get(DIP_FILOL_LET_LING)
+ RSS_POST_DATA + DEST_DIP_FILOL_LET_LING);
URL.put(DIP_FILOS_PEDA_PSICO, DIP_DOMAIN.get(DIP_FILOS_PEDA_PSICO)
+ RSS_POST_DATA + DEST_DIP_FILOS_PEDA_PSICO);
URL.put(DIP_INFORMATICA, DIP_DOMAIN.get(DIP_INFORMATICA)
+ RSS_POST_DATA + DEST_DIP_INFORMATICA);
URL.put(DIP_LING_LETTERE, DIP_DOMAIN.get(DIP_LING_LETTERE)
+ RSS_POST_DATA + DEST_DIP_LING_LETTERE);
URL.put(DIP_MEDICINA, DIP_DOMAIN.get(DIP_MEDICINA) + RSS_POST_DATA
+ DEST_DIP_MEDICINA);
URL.put(DIP_PATO_DIAGN, DIP_DOMAIN.get(DIP_PATO_DIAGN)
+ RSS_POST_DATA + DEST_DIP_PATO_DIAGN);
URL.put(DIP_SANITA_MEDI_COM, DIP_DOMAIN.get(DIP_SANITA_MEDI_COM)
+ RSS_POST_DATA + DEST_DIP_SANITA_MEDI_COM);
URL.put(DIP_SCIENZE_DELLA_VITA,
DIP_DOMAIN.get(DIP_SCIENZE_DELLA_VITA) + RSS_POST_DATA
+ DEST_DIP_SCIENZE_DELLA_VITA);
URL.put(DIP_SCIENZE_ECON, DIP_DOMAIN.get(DIP_SCIENZE_ECON)
+ RSS_POST_DATA + DEST_DIP_SCIENZE_ECON);
URL.put(DIP_SCIENZE_GIURIDICHE,
DIP_DOMAIN.get(DIP_SCIENZE_GIURIDICHE) + RSS_POST_DATA
+ DEST_DIP_SCIENZE_GIURIDICHE);
URL.put(DIP_SCIENZE_NEUROLOGICHE,
DIP_DOMAIN.get(DIP_SCIENZE_NEUROLOGICHE) + RSS_POST_DATA
+ DEST_DIP_SCIENZE_NEUROLOGICHE);
URL.put(DIP_TEMPO_IMMAGINE, DIP_DOMAIN.get(DIP_TEMPO_IMMAGINE)
+ RSS_POST_DATA + DEST_DIP_TEMPO_IMMAGINE);
}
static String dip_requestURL = "/?ent=persona&grp=2";
static String dip_lecturer_url = "/?ent=persona&id=";
}
}