Skip to content

Instantly share code, notes, and snippets.

@philipschwarz
Created July 19, 2014 20:53
Show Gist options
  • Save philipschwarz/6871f6e8579baf62d823 to your computer and use it in GitHub Desktop.
Save philipschwarz/6871f6e8579baf62d823 to your computer and use it in GitHub Desktop.
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