Salvatore La Manna
4 anni fa
65 ha cambiato i file con 1149 aggiunte e 1863 eliminazioni
File binario non mostrato.
File diff soppresso perché troppo grande
Load Diff
File diff soppresso perché troppo grande
Load Diff
File diff soppresso perché troppo grande
Load Diff
@ -1,119 +1,122 @@ |
|||||||
package it.tref.liferay.portos.bo.shared.util; |
package it.tref.liferay.portos.bo.shared.util; |
||||||
|
|
||||||
|
|
||||||
import java.util.Arrays; |
import java.util.Arrays; |
||||||
import java.util.List; |
import java.util.List; |
||||||
import java.util.regex.Pattern; |
import java.util.regex.Pattern; |
||||||
|
|
||||||
public class TipoSoggettoUtil { |
public class TipoSoggettoUtil { |
||||||
|
|
||||||
public static final String COLLAUDATORE = "01"; |
public static final String TITOLARE_DIGITALE = "00"; |
||||||
public static final String COMMITTENTE = "02"; |
public static final String COLLAUDATORE = "01"; |
||||||
public static final String DIRETTORE_LAVORI = "03"; |
public static final String COMMITTENTE = "02"; |
||||||
public static final String DITTA = "04"; |
public static final String DIRETTORE_LAVORI = "03"; |
||||||
public static final String GEOLOGO = "05"; |
public static final String DITTA = "04"; |
||||||
public static final String PROGETTISTA = "06"; |
public static final String GEOLOGO = "05"; |
||||||
|
public static final String PROGETTISTA = "06"; |
||||||
|
public static final String ARCHEOLOGO = "07"; |
||||||
|
|
||||||
public static final String JSON_CODICE_FISCALE = "codiceFiscale"; |
public static final String JSON_CODICE_FISCALE = "codiceFiscale"; |
||||||
public static final String JSON_CODICE_RUOLO = "codiceRuolo"; |
public static final String JSON_CODICE_RUOLO = "codiceRuolo"; |
||||||
|
|
||||||
public static List<String> getAllSubjects() { |
public static List<String> getAllSubjects() { |
||||||
return Arrays.asList(TipoSoggettoUtil.COMMITTENTE, TipoSoggettoUtil.DITTA, TipoSoggettoUtil.PROGETTISTA, |
return Arrays.asList(TipoSoggettoUtil.COMMITTENTE, TipoSoggettoUtil.DITTA, |
||||||
TipoSoggettoUtil.DIRETTORE_LAVORI, TipoSoggettoUtil.GEOLOGO, TipoSoggettoUtil.COLLAUDATORE); |
TipoSoggettoUtil.PROGETTISTA, TipoSoggettoUtil.DIRETTORE_LAVORI, TipoSoggettoUtil.GEOLOGO, |
||||||
} |
TipoSoggettoUtil.COLLAUDATORE); |
||||||
|
} |
||||||
|
|
||||||
public static boolean validaCodiceFiscale(String codiceFiscale, boolean ultimoCarattere) { |
public static boolean validaCodiceFiscale(String codiceFiscale, boolean ultimoCarattere) { |
||||||
// conversione della stringa in caratteri maiuscoli
|
// conversione della stringa in caratteri maiuscoli
|
||||||
try { |
try { |
||||||
String cf = codiceFiscale.toUpperCase().replaceAll(" ", ""); |
String cf = codiceFiscale.toUpperCase().replaceAll(" ", ""); |
||||||
/* |
/* |
||||||
* verifica della lunghezza del codice fiscale |
* verifica della lunghezza del codice fiscale |
||||||
*/ |
*/ |
||||||
if (cf.length() == 16) { |
if (cf.length() == 16) { |
||||||
|
|
||||||
String cfMask = |
String cfMask = "^[a-zA-Z]{6}[0-9lmnpqrstuvLMNPQRSTUV]{2}[abcdehlmprstABCDEHLMPRST]{1}[0-9lmnpqrstuvLMNPQRSTUV]{2}([a-zA-Z]{1}[0-9lmnpqrstuvLMNPQRSTUV]{3})[a-zA-Z]{1}$"; |
||||||
"^[a-zA-Z]{6}[0-9lmnpqrstuvLMNPQRSTUV]{2}[abcdehlmprstABCDEHLMPRST]{1}[0-9lmnpqrstuvLMNPQRSTUV]{2}([a-zA-Z]{1}[0-9lmnpqrstuvLMNPQRSTUV]{3})[a-zA-Z]{1}$"; |
if (!Pattern.matches(cfMask, codiceFiscale)) |
||||||
if (!Pattern.matches(cfMask, codiceFiscale)) |
return false; |
||||||
return false; |
/* |
||||||
/* |
* creazione della matrice con i caratteri dell'alfabeto |
||||||
* creazione della matrice con i caratteri dell'alfabeto |
*/ |
||||||
*/ |
char[] Carattere = { 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', |
||||||
char[] Carattere = |
'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', '0', '1', '2', '3', '4', |
||||||
{'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', |
'5', '6', '7', '8', '9' }; |
||||||
'V', 'W', 'X', 'Y', 'Z', '0', '1', '2', '3', '4', '5', '6', '7', '8', '9'}; |
/* |
||||||
/* |
* creazione della matrice con i valori attribuiti ai caratteri |
||||||
* creazione della matrice con i valori attribuiti ai caratteri dispari, corrispondenti alla |
* dispari, corrispondenti alla matrice di caratteri |
||||||
* matrice di caratteri |
*/ |
||||||
*/ |
int[] ValoriDispari = { 1, 0, 5, 7, 9, 13, 15, 17, 19, 21, 2, 4, 18, 20, 11, 3, 6, 8, 12, 14, |
||||||
int[] ValoriDispari = |
16, 10, 22, 25, 24, 23, 1, 0, 5, 7, 9, 13, 15, 17, 19, 21 }; |
||||||
{1, 0, 5, 7, 9, 13, 15, 17, 19, 21, 2, 4, 18, 20, 11, 3, 6, 8, 12, 14, 16, 10, 22, 25, 24, 23, 1, 0, 5, 7, |
/* |
||||||
9, 13, 15, 17, 19, 21}; |
* creazione della matrice con i valori attribuiti ai caratteri |
||||||
/* |
* pari, corrispondenti alla matrice di caratteri |
||||||
* creazione della matrice con i valori attribuiti ai caratteri pari, corrispondenti alla |
*/ |
||||||
* matrice di caratteri |
int[] ValoriPari = new int[36]; |
||||||
*/ |
for (int i = 0; i < 26; i++) { |
||||||
int[] ValoriPari = new int[36]; |
ValoriPari[i] = i; |
||||||
for (int i = 0; i < 26; i++) { |
} |
||||||
ValoriPari[i] = i; |
for (int i = 26; i < 36; i++) { |
||||||
} |
ValoriPari[i] = i - 26; |
||||||
for (int i = 26; i < 36; i++) { |
} |
||||||
ValoriPari[i] = i - 26; |
// conversione della stringa da esaminare ad una matrice di
|
||||||
} |
// caratteri
|
||||||
// conversione della stringa da esaminare ad una matrice di caratteri
|
char[] caratteriCF = cf.toCharArray(); |
||||||
char[] caratteriCF = cf.toCharArray(); |
int valore = 0; |
||||||
int valore = 0; |
for (int i = 0; i < caratteriCF.length - 1; i++) { |
||||||
for (int i = 0; i < caratteriCF.length - 1; i++) { |
/* |
||||||
/* |
* somma delle posizioni pari in base ai valori |
||||||
* somma delle posizioni pari in base ai valori corrispondenti contenuti nell'array |
* corrispondenti contenuti nell'array ValoriPari (tranne |
||||||
* ValoriPari (tranne l'ultimo carattere che è quello di controllo) |
* l'ultimo carattere che è quello di controllo) |
||||||
*/ |
*/ |
||||||
if ((i + 1) % 2 == 0) { |
if ((i + 1) % 2 == 0) { |
||||||
for (int j = 0; j < Carattere.length; j++) { |
for (int j = 0; j < Carattere.length; j++) { |
||||||
|
|
||||||
if (caratteriCF[i] == Carattere[j]) { |
if (caratteriCF[i] == Carattere[j]) { |
||||||
valore += ValoriPari[j]; |
valore += ValoriPari[j]; |
||||||
} |
} |
||||||
} |
} |
||||||
/* |
/* |
||||||
* somma delle posizioni dispari in base ai valori corrispondenti contenuti nell'array |
* somma delle posizioni dispari in base ai valori |
||||||
* ValoriDispari |
* corrispondenti contenuti nell'array ValoriDispari |
||||||
*/ |
*/ |
||||||
} else { |
} else { |
||||||
for (int j = 0; j < Carattere.length; j++) { |
for (int j = 0; j < Carattere.length; j++) { |
||||||
if (caratteriCF[i] == Carattere[j]) { |
if (caratteriCF[i] == Carattere[j]) { |
||||||
valore += ValoriDispari[j]; |
valore += ValoriDispari[j]; |
||||||
} |
} |
||||||
} |
} |
||||||
} |
} |
||||||
} |
} |
||||||
/* |
/* |
||||||
* ottenimento del resto della divisione per 26 e valutazione del carattere di controllo |
* ottenimento del resto della divisione per 26 e valutazione |
||||||
* (ultimo carattere) |
* del carattere di controllo (ultimo carattere) |
||||||
*/ |
*/ |
||||||
valore %= 26; |
valore %= 26; |
||||||
for (int i = 0; i < 26; i++) { |
for (int i = 0; i < 26; i++) { |
||||||
/* |
/* |
||||||
* verifica che il valore dell'ultimo carattere corrisponda al valore ottenuto attraverso |
* verifica che il valore dell'ultimo carattere corrisponda |
||||||
* l'algoritmo di somma precedente |
* al valore ottenuto attraverso l'algoritmo di somma |
||||||
*/ |
* precedente |
||||||
if (ultimoCarattere) { |
*/ |
||||||
if (caratteriCF[caratteriCF.length - 1] == Carattere[i]) { |
if (ultimoCarattere) { |
||||||
if (valore == i) { |
if (caratteriCF[caratteriCF.length - 1] == Carattere[i]) { |
||||||
return true; |
if (valore == i) { |
||||||
} else { |
return true; |
||||||
return false; |
} else { |
||||||
} |
return false; |
||||||
} |
} |
||||||
} else { |
} |
||||||
return true; |
} else { |
||||||
} |
return true; |
||||||
} |
} |
||||||
return false; |
} |
||||||
} else { |
return false; |
||||||
return false; |
} else { |
||||||
} |
return false; |
||||||
} catch (Exception e) { |
} |
||||||
return false; |
} catch (Exception e) { |
||||||
} |
return false; |
||||||
} |
} |
||||||
|
} |
||||||
} |
} |
||||||
|
Caricamento…
Reference in new issue