Created
July 19, 2014 20:53
-
-
Save philipschwarz/6871f6e8579baf62d823 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
public ArrayList eseguiAnalisi() { | |
ArrayList listaSegnalazioni = new ArrayList(); | |
List domande = null; | |
Domanda domanda = null; | |
List risposte = null; | |
DAOReques req = new DAOReques(); | |
DAOArea ar = new DAOArea(); | |
ar.setIdQuestionario(getIdQuestionario()); | |
boolean quizDomandaNonForzata = false; // warning 7 | |
try { | |
//set Aree e | |
if (getArea()==1){ | |
List aree = ar.getAree(); | |
Area area = null; | |
for (int i=0; i<aree.size(); i++){ | |
area = (Area) aree.get(i); | |
domande = req.getDomande(getIdQuestionario(),area.getIdArea()); | |
if (domande != null){ | |
for (int j=0; j<domande.size(); j++){ | |
domanda = (Domanda) domande.get(j); | |
risposte = req.getRisposteDomanda(getIdQuestionario(),domanda.getIdDomanda()); | |
if (risposte != null) | |
domanda.setRisposte(risposte); | |
area.setDomandeArea(domande); | |
} | |
} | |
} | |
if (aree!=null) | |
setAreeDomande(aree); | |
}//else{ | |
// set ListaDomande | |
domande = req.getDomande(getIdQuestionario()); | |
for (int i=0; i<domande.size(); i++){ | |
domanda = (Domanda) domande.get(i); | |
risposte = req.getRisposteDomanda(getIdQuestionario(),domanda.getIdDomanda()); | |
if (risposte != null) | |
domanda.setRisposte(risposte); | |
} | |
if (domande!=null) | |
setDomande(domande); | |
//} | |
} catch (DAOException de) { | |
de.printStackTrace(); | |
} | |
if (getDomande()==null || getDomande().size()==0){ | |
Segnalazione segn = new Segnalazione(); | |
segn.setTipoSegnalazione(Segnalazione.ERROR); | |
segn.setDescrSegnalazione("Non sono state definite domande per il questionario."); | |
listaSegnalazioni.add(segn); | |
} | |
// W1 | |
if (!(getDataPubblicazione()==null)) { | |
Segnalazione segn = new Segnalazione(); | |
segn.setTipoSegnalazione(Segnalazione.WARNING); | |
segn.setDescrSegnalazione("Questionario già pubblicato in data [" + getDataPubblicazione() + "]"); | |
listaSegnalazioni.add(segn); | |
if (!(getDataCessazione()==null) && !getDataCessazione().equals("")) { | |
SimpleDateFormat sdf = new SimpleDateFormat("dd-MM-yyyy"); | |
java.util.Date dataCessazione = null; | |
try { | |
dataCessazione = sdf.parse(getDataCessazione()); | |
} catch (ParseException pe) { | |
} | |
java.util.Date date = new java.util.Date(); | |
if (dataCessazione.before(date)) { | |
segn = new Segnalazione(); | |
segn.setTipoSegnalazione(Segnalazione.WARNING); | |
segn.setDescrSegnalazione("Questionario già cessato in data [" + getDataCessazione() + "]"); | |
listaSegnalazioni.add(segn); | |
} else { | |
segn = new Segnalazione(); | |
segn.setTipoSegnalazione(Segnalazione.WARNING); | |
segn.setDescrSegnalazione("Cessazione questionario prevista per il [" | |
+ getDataCessazione() + "]"); | |
listaSegnalazioni.add(segn); | |
} | |
} | |
} | |
/*if (hasAree()>0&&(!(getDomande()==null))) { | |
Segnalazione segn = new Segnalazione(); | |
segn.setTipoSegnalazione(Segnalazione.WARNING); | |
segn.setDescrSegnalazione("Si é scelto di suddividere il questionario per aree, | |
ma si sono definite domande non appartenenti ad alcuna area."); | |
listaSegnalazioni.add(segn); | |
}*/ | |
// W3 | |
int[] tipiRisp = new int[5]; | |
int tipiDiRisp=0; | |
//if (!(getDomande()==null)) { | |
if (hasAree()==0) { | |
if (getDomande()!=null) { | |
for (int i=0; i<getDomande().size(); i++) { | |
Domanda dom = (Domanda)getDomande().get(i); | |
try { | |
Risposta ris = ((Risposta)dom.getRisposte().get(0)); | |
tipiRisp[ris.getIdTipoRisposta()]++; | |
if (ris.getIdTipoRisposta()>0) { | |
if ( (ris.getComponenteRisposta()==null || ris.getComponenteRisposta().size()==0) && | |
ris.getTabDiSistema()==null ) { | |
// ERROR 4 | |
Segnalazione segn = new Segnalazione(); | |
segn.setTipoSegnalazione(Segnalazione.ERROR); | |
segn.setDescrSegnalazione("La domanda [" + | |
dom.getTesto() + "] dell'area [non specificata] non ha sufficienti componenti di | |
risposta definiti."); | |
listaSegnalazioni.add(segn); | |
} | |
chiusuraRamo(listaSegnalazioni,ris,dom,"non specificata"); | |
if (ris.getIdTipoRisposta()==3) { | |
if (ris.getScalaFrequenza()== null) { | |
Segnalazione segn = new Segnalazione(); | |
segn.setTipoSegnalazione(Segnalazione.ERROR); | |
segn.setDescrSegnalazione("La domanda [" + | |
dom.getTesto() + "] dell'area [non specificata] non ha una scala di frequenza | |
definita."); | |
listaSegnalazioni.add(segn); | |
} else { | |
int scala = ris.getScalaFrequenza().size(); | |
if (scala <2) { | |
// ERROR 6 | |
Segnalazione segn = new Segnalazione(); | |
segn.setTipoSegnalazione(Segnalazione.ERROR); | |
segn.setDescrSegnalazione("La domanda [" + | |
dom.getTesto() + "] dell'area [non specificata] non ha una scala di frequenza | |
correttamente definita."); | |
listaSegnalazioni.add(segn); | |
} else if (scala > 9) { | |
// WARNING 5 | |
Segnalazione segn = new Segnalazione(); | |
segn.setTipoSegnalazione(Segnalazione.WARNING); | |
segn.setDescrSegnalazione("La domanda [" + | |
dom.getTesto() + "] dell'area [non specificata] ha una scala di frequenza troppo | |
dettagliata. Si consiglia di ridurre il numero di scelte possibili."); | |
listaSegnalazioni.add(segn); | |
} | |
if (!(scala % 2 == 0)) { | |
Segnalazione segn = new Segnalazione(); | |
segn.setTipoSegnalazione(Segnalazione.WARNING); | |
segn.setDescrSegnalazione("La domanda [" + | |
dom.getTesto() + "] dell'area [non specificata] ha una scala di frequenza che consente | |
la scelta intermedia. In questo caso si consente all'intervistato di non prendere una | |
posizione preponderante."); | |
listaSegnalazioni.add(segn); | |
} | |
} | |
} | |
} | |
if (ris.getIdTipoRisposta()==1){ | |
// ERROR 5 | |
filtroSenzaDestinazione(listaSegnalazioni,ris,dom, | |
"non specificata"); | |
} | |
if (isTestQuiz()){ | |
if (ris.getIdTipoRisposta()!=0) { | |
esisteRispostaCorretta(listaSegnalazioni, ris, dom, | |
"non specificata"); | |
} | |
if (ris.getIdTipoRisposta()!=1) { | |
// WARNING 7 | |
if (!quizDomandaNonForzata){ | |
Segnalazione segn = new Segnalazione(); | |
segn.setTipoSegnalazione(Segnalazione.WARNING); | |
segn.setDescrSegnalazione("Il questionario di tipo | |
Test/Quiz comprende domande di tipo diverso da: Chiusa a scelta forzata."); | |
listaSegnalazioni.add(segn); | |
quizDomandaNonForzata = true; | |
} | |
} | |
// if (isTestQuiz()) non deve avere risposte con dati da tabella | |
rispDatiDaTabella(listaSegnalazioni,ris,dom, | |
"non specificata") ; | |
} | |
} catch (Exception e) { | |
Segnalazione segn = new Segnalazione(); | |
segn.setTipoSegnalazione(Segnalazione.ERROR); | |
segn.setDescrSegnalazione("La domanda [" + dom.getTesto() + "] | |
dell'area [non specificata] non ha risposte abbinate."); | |
listaSegnalazioni.add(segn); | |
} | |
} | |
} | |
// Controllo esito | |
for (int i=0; i<tipiRisp.length; i++) { | |
if (tipiRisp[i] > 0) tipiDiRisp++; | |
} | |
if (tipiDiRisp>1) { | |
// WARNING 3 | |
Segnalazione segn = new Segnalazione(); | |
segn.setTipoSegnalazione(Segnalazione.WARNING); | |
segn.setDescrSegnalazione("L'area [non specificata] contiene | |
risposte di tipo non omogeneo. Si consiglia di utilizzare all'interno della | |
stessa area tipologia di risposte il più possibile omogenee."); | |
listaSegnalazioni.add(segn); | |
} | |
} else if (!(getAreeDomande()==null)) { | |
for (int j=0; j<getAreeDomande().size(); j++) { | |
Area singArea = (Area)getAreeDomande().get(j); | |
tipiRisp = new int[5]; | |
for (int i=0; i<singArea.getDomandeArea().size(); i++) { | |
Domanda dom = (Domanda)singArea.getDomandeArea().get(i); | |
try { | |
Risposta ris = ((Risposta)dom.getRisposte().get(0)); | |
tipiRisp[ris.getIdTipoRisposta()]++; | |
// Controllo componenti di risposta | |
if (ris.getIdTipoRisposta()>0) { | |
if ((ris.getComponenteRisposta()==null || ris.getComponenteRisposta().size()==0) | |
&& ris.getTabDiSistema()==null ) { | |
// ERROR 4 | |
Segnalazione segn = new Segnalazione(); | |
segn.setTipoSegnalazione(Segnalazione.ERROR); | |
segn.setDescrSegnalazione("La domanda [" + | |
dom.getTesto() + "] dell'area [" + singArea.getDescrizione() + "] non ha sufficienti | |
componenti di risposta definiti."); | |
listaSegnalazioni.add(segn); | |
} | |
chiusuraRamo(listaSegnalazioni,ris,dom, singArea.getDescrizione()); | |
if (ris.getIdTipoRisposta()==3) { | |
// Controllo Scale di frequenza | |
if (ris.getScalaFrequenza()== null) { | |
// ERROR 6 | |
Segnalazione segn = new Segnalazione(); | |
segn.setTipoSegnalazione(Segnalazione.ERROR); | |
segn.setDescrSegnalazione("La domanda [" + | |
dom.getTesto() + "] dell'area [" + singArea.getDescrizione() + "] | |
non ha una scala di frequenza definita."); | |
listaSegnalazioni.add(segn); | |
} else { | |
int scala = ris.getScalaFrequenza().size(); | |
if (scala <2) { | |
// ERROR 6 | |
Segnalazione segn = new Segnalazione(); | |
segn.setTipoSegnalazione(Segnalazione.ERROR); | |
segn.setDescrSegnalazione("La domanda [" + | |
dom.getTesto() + "] dell'area [" + singArea.getDescrizione() + "] | |
non ha una scala di frequenza correttamente definita."); | |
listaSegnalazioni.add(segn); | |
} else if (scala > 9) { | |
// WARNING 5 | |
Segnalazione segn = new Segnalazione(); | |
segn.setTipoSegnalazione(Segnalazione.WARNING); | |
segn.setDescrSegnalazione("La domanda [" + | |
dom.getTesto() + "] dell'area [" + singArea.getDescrizione() + "] ha una scala di | |
frequenza troppo dettagliata. Si consiglia di ridurre il numero di scelte possibili."); | |
listaSegnalazioni.add(segn); | |
} | |
if (!(scala % 2 == 0)) { | |
// WARNING 4 | |
Segnalazione segn = new Segnalazione(); | |
segn.setTipoSegnalazione(Segnalazione.WARNING); | |
segn.setDescrSegnalazione("La domanda [" + | |
dom.getTesto() + "] dell'area [" + singArea.getDescrizione() + "] ha una scala di | |
frequenza che consente la scelta intermedia. In questo caso si consente all'intervistato | |
di non prendere una posizione preponderante."); | |
listaSegnalazioni.add(segn); | |
} | |
} | |
} | |
} | |
if (ris.getIdTipoRisposta()==1){ | |
// ERROR 5 | |
filtroSenzaDestinazione(listaSegnalazioni,ris,dom, singArea.getDescrizione()); | |
} | |
// ERROR 3 | |
if (isTestQuiz()){ | |
if (ris.getIdTipoRisposta()!=0) { | |
esisteRispostaCorretta(listaSegnalazioni, ris, dom, singArea.getDescrizione()); | |
} | |
if (ris.getIdTipoRisposta()!=1) { | |
// WARNING 7 | |
if (!quizDomandaNonForzata){ | |
Segnalazione segn = new Segnalazione(); | |
segn.setTipoSegnalazione(Segnalazione.WARNING); | |
segn.setDescrSegnalazione("Il questionario di tipo | |
Test/Quiz comprende domande di tipo diverso da: Chiusa a scelta forzata."); | |
listaSegnalazioni.add(segn); | |
quizDomandaNonForzata = true; | |
} | |
} | |
rispDatiDaTabella(listaSegnalazioni,ris,dom, singArea.getDescrizione()) ; | |
} | |
} catch (Exception e) { | |
Segnalazione segn = new Segnalazione(); | |
segn.setTipoSegnalazione(Segnalazione.ERROR); | |
segn.setDescrSegnalazione("La domanda [" + dom.getTesto() + "] | |
dell'area [" + singArea.getDescrizione() + "] non ha risposte abbinate."); | |
listaSegnalazioni.add(segn); | |
} | |
} | |
tipiDiRisp=0; | |
for (int i=0; i<tipiRisp.length; i++) { | |
if (tipiRisp[i] > 0) tipiDiRisp++; | |
} | |
if (tipiDiRisp>1) { | |
// WARNING 3 | |
Segnalazione segn = new Segnalazione(); | |
segn.setTipoSegnalazione(Segnalazione.WARNING); | |
segn.setDescrSegnalazione("L'area [" + singArea.getDescrizione() + | |
"] contiene risposte di tipo non omogeneo. Si consiglia di utilizzare all'interno della | |
stessa area tipologia di risposte il più possibile omogenee."); | |
listaSegnalazioni.add(segn); | |
} | |
} | |
Domanda dom = null; | |
boolean domandeSenzaArea = false; | |
for (int i=0; i<domande.size(); i++ ){ | |
dom = (Domanda)domande.get(i); | |
if(dom.getIdArea()==null || "".equals(dom.getIdArea().trim())){ | |
domandeSenzaArea = true; | |
try { | |
Risposta ris = ((Risposta)dom.getRisposte().get(0)); | |
tipiRisp[ris.getIdTipoRisposta()]++; | |
// (only for per type CHIUSA A SCELTA FORZATA, | |
// but I check everything the same. ) | |
if (ris.getIdTipoRisposta()>0) { | |
if ( (ris.getComponenteRisposta()==null || | |
ris.getComponenteRisposta().size()==0) | |
&& ris.getTabDiSistema()==null ) { | |
// ERROR 4 | |
Segnalazione segn = new Segnalazione(); | |
segn.setTipoSegnalazione(Segnalazione.ERROR); | |
segn.setDescrSegnalazione("La domanda [" + | |
dom.getTesto() + "] dell'area [non specificata] non ha sufficienti componenti di | |
risposta definiti."); | |
listaSegnalazioni.add(segn); | |
} | |
//ERROR 9 | |
chiusuraRamo(listaSegnalazioni,ris,dom, "non specificata"); | |
if (ris.getIdTipoRisposta()==3) { | |
if (ris.getScalaFrequenza()== null) { | |
// ERROR 6 | |
Segnalazione segn = new Segnalazione(); | |
segn.setTipoSegnalazione(Segnalazione.ERROR); | |
segn.setDescrSegnalazione("La domanda [" + | |
dom.getTesto() + "] dell'area [non specificata] non ha una scala di frequenza | |
definita."); | |
listaSegnalazioni.add(segn); | |
} else { | |
int scala = ris.getScalaFrequenza().size(); | |
if (scala <2) { | |
// ERROR 6 | |
Segnalazione segn = new Segnalazione(); | |
segn.setTipoSegnalazione(Segnalazione.ERROR); | |
segn.setDescrSegnalazione("La domanda [" + | |
dom.getTesto() + "] dell'area [non specificata] non ha una scala di frequenza | |
correttamente definita."); | |
listaSegnalazioni.add(segn); | |
} else if (scala > 9) { | |
// WARNING 5 | |
Segnalazione segn = new Segnalazione(); | |
segn.setTipoSegnalazione(Segnalazione.WARNING); | |
segn.setDescrSegnalazione("La domanda [" + | |
dom.getTesto() + "] dell'area [non specificata] ha una scala di frequenza troppo | |
dettagliata. Si consiglia di ridurre il numero di scelte possibili."); | |
listaSegnalazioni.add(segn); | |
} | |
if (!(scala % 2 == 0)) { | |
// WARNING 4 | |
Segnalazione segn = new Segnalazione(); | |
segn.setTipoSegnalazione(Segnalazione.WARNING); | |
segn.setDescrSegnalazione("La domanda [" + | |
dom.getTesto() + "] dell'area [non specificata] ha una scala di frequenza che consente | |
la scelta intermedia. In questo caso si consente all'intervistato di non prendere una | |
posizione preponderante."); | |
listaSegnalazioni.add(segn); | |
} | |
} | |
} | |
} | |
if (ris.getIdTipoRisposta()==1){ | |
// ERROR 5 | |
filtroSenzaDestinazione(listaSegnalazioni,ris,dom, | |
"non specificata"); | |
} | |
// ERROR 3 | |
if (isTestQuiz()){ | |
if (ris.getIdTipoRisposta()!=0) { | |
esisteRispostaCorretta(listaSegnalazioni, ris, dom, | |
"non specificata"); | |
} | |
if (ris.getIdTipoRisposta()!=1) { | |
// WARNING 7 | |
if (!quizDomandaNonForzata){ | |
Segnalazione segn = new Segnalazione(); | |
segn.setTipoSegnalazione(Segnalazione.WARNING); | |
segn.setDescrSegnalazione( | |
"Il questionario di tipo Test/Quiz comprende domande di tipo diverso da: Chiusa a scelta forzata."); | |
listaSegnalazioni.add(segn); | |
quizDomandaNonForzata = true; | |
} | |
} | |
rispDatiDaTabella(listaSegnalazioni,ris,dom, | |
"non specificata") ; | |
} | |
} catch (Exception e) { | |
// ERROR 2 | |
Segnalazione segn = new Segnalazione(); | |
segn.setTipoSegnalazione(Segnalazione.ERROR); | |
segn.setDescrSegnalazione("La domanda [" + dom.getTesto() + | |
"] dell'area [non specificata] non ha risposte abbinate."); | |
listaSegnalazioni.add(segn); | |
} | |
} | |
} | |
if (domandeSenzaArea){ | |
// WARNING 2 | |
Segnalazione segn = new Segnalazione(); | |
segn.setTipoSegnalazione(Segnalazione.WARNING); | |
segn.setDescrSegnalazione("Si é scelto di suddividere il questionario | |
per aree, ma si sono definite domande non appartenenti ad alcuna area."); | |
listaSegnalazioni.add(segn); | |
} | |
} else { | |
//ERROR 1 | |
Segnalazione segn = new Segnalazione(); | |
segn.setTipoSegnalazione(Segnalazione.ERROR); | |
segn.setDescrSegnalazione("Non sono state definite domande per il | |
questionario."); | |
listaSegnalazioni.add(segn); | |
} | |
// W6 | |
if (isTestQuiz()) { | |
if (getSogliaSuperamento()== 0){ | |
// WARNING 6 | |
Segnalazione segn = new Segnalazione(); | |
segn.setTipoSegnalazione(Segnalazione.WARNING); | |
segn.setDescrSegnalazione("Il test/quiz non ha una soglia di | |
superamento correttamente definita."); | |
listaSegnalazioni.add(segn); | |
} | |
} | |
return listaSegnalazioni; | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment