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; |
||||
|
||||
|
||||
import java.util.Arrays; |
||||
import java.util.List; |
||||
import java.util.regex.Pattern; |
||||
|
||||
public class TipoSoggettoUtil { |
||||
|
||||
public static final String COLLAUDATORE = "01"; |
||||
public static final String COMMITTENTE = "02"; |
||||
public static final String DIRETTORE_LAVORI = "03"; |
||||
public static final String DITTA = "04"; |
||||
public static final String GEOLOGO = "05"; |
||||
public static final String PROGETTISTA = "06"; |
||||
public static final String TITOLARE_DIGITALE = "00"; |
||||
public static final String COLLAUDATORE = "01"; |
||||
public static final String COMMITTENTE = "02"; |
||||
public static final String DIRETTORE_LAVORI = "03"; |
||||
public static final String DITTA = "04"; |
||||
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_RUOLO = "codiceRuolo"; |
||||
public static final String JSON_CODICE_FISCALE = "codiceFiscale"; |
||||
public static final String JSON_CODICE_RUOLO = "codiceRuolo"; |
||||
|
||||
public static List<String> getAllSubjects() { |
||||
return Arrays.asList(TipoSoggettoUtil.COMMITTENTE, TipoSoggettoUtil.DITTA, TipoSoggettoUtil.PROGETTISTA, |
||||
TipoSoggettoUtil.DIRETTORE_LAVORI, TipoSoggettoUtil.GEOLOGO, TipoSoggettoUtil.COLLAUDATORE); |
||||
} |
||||
public static List<String> getAllSubjects() { |
||||
return Arrays.asList(TipoSoggettoUtil.COMMITTENTE, TipoSoggettoUtil.DITTA, |
||||
TipoSoggettoUtil.PROGETTISTA, TipoSoggettoUtil.DIRETTORE_LAVORI, TipoSoggettoUtil.GEOLOGO, |
||||
TipoSoggettoUtil.COLLAUDATORE); |
||||
} |
||||
|
||||
public static boolean validaCodiceFiscale(String codiceFiscale, boolean ultimoCarattere) { |
||||
// conversione della stringa in caratteri maiuscoli
|
||||
try { |
||||
String cf = codiceFiscale.toUpperCase().replaceAll(" ", ""); |
||||
/* |
||||
* verifica della lunghezza del codice fiscale |
||||
*/ |
||||
if (cf.length() == 16) { |
||||
public static boolean validaCodiceFiscale(String codiceFiscale, boolean ultimoCarattere) { |
||||
// conversione della stringa in caratteri maiuscoli
|
||||
try { |
||||
String cf = codiceFiscale.toUpperCase().replaceAll(" ", ""); |
||||
/* |
||||
* verifica della lunghezza del codice fiscale |
||||
*/ |
||||
if (cf.length() == 16) { |
||||
|
||||
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}$"; |
||||
if (!Pattern.matches(cfMask, codiceFiscale)) |
||||
return false; |
||||
/* |
||||
* creazione della matrice con i caratteri dell'alfabeto |
||||
*/ |
||||
char[] Carattere = |
||||
{'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', |
||||
'V', 'W', 'X', 'Y', 'Z', '0', '1', '2', '3', '4', '5', '6', '7', '8', '9'}; |
||||
/* |
||||
* creazione della matrice con i valori attribuiti ai caratteri dispari, corrispondenti alla |
||||
* 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, 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 |
||||
*/ |
||||
int[] ValoriPari = new int[36]; |
||||
for (int i = 0; i < 26; i++) { |
||||
ValoriPari[i] = i; |
||||
} |
||||
for (int i = 26; i < 36; i++) { |
||||
ValoriPari[i] = i - 26; |
||||
} |
||||
// conversione della stringa da esaminare ad una matrice di caratteri
|
||||
char[] caratteriCF = cf.toCharArray(); |
||||
int valore = 0; |
||||
for (int i = 0; i < caratteriCF.length - 1; i++) { |
||||
/* |
||||
* somma delle posizioni pari in base ai valori corrispondenti contenuti nell'array |
||||
* ValoriPari (tranne l'ultimo carattere che è quello di controllo) |
||||
*/ |
||||
if ((i + 1) % 2 == 0) { |
||||
for (int j = 0; j < Carattere.length; j++) { |
||||
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}$"; |
||||
if (!Pattern.matches(cfMask, codiceFiscale)) |
||||
return false; |
||||
/* |
||||
* creazione della matrice con i caratteri dell'alfabeto |
||||
*/ |
||||
char[] Carattere = { 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', |
||||
'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', '0', '1', '2', '3', '4', |
||||
'5', '6', '7', '8', '9' }; |
||||
/* |
||||
* creazione della matrice con i valori attribuiti ai caratteri |
||||
* dispari, corrispondenti alla 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, |
||||
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 |
||||
*/ |
||||
int[] ValoriPari = new int[36]; |
||||
for (int i = 0; i < 26; i++) { |
||||
ValoriPari[i] = i; |
||||
} |
||||
for (int i = 26; i < 36; i++) { |
||||
ValoriPari[i] = i - 26; |
||||
} |
||||
// conversione della stringa da esaminare ad una matrice di
|
||||
// caratteri
|
||||
char[] caratteriCF = cf.toCharArray(); |
||||
int valore = 0; |
||||
for (int i = 0; i < caratteriCF.length - 1; i++) { |
||||
/* |
||||
* somma delle posizioni pari in base ai valori |
||||
* corrispondenti contenuti nell'array ValoriPari (tranne |
||||
* l'ultimo carattere che è quello di controllo) |
||||
*/ |
||||
if ((i + 1) % 2 == 0) { |
||||
for (int j = 0; j < Carattere.length; j++) { |
||||
|
||||
if (caratteriCF[i] == Carattere[j]) { |
||||
valore += ValoriPari[j]; |
||||
} |
||||
} |
||||
/* |
||||
* somma delle posizioni dispari in base ai valori corrispondenti contenuti nell'array |
||||
* ValoriDispari |
||||
*/ |
||||
} else { |
||||
for (int j = 0; j < Carattere.length; j++) { |
||||
if (caratteriCF[i] == Carattere[j]) { |
||||
valore += ValoriDispari[j]; |
||||
} |
||||
} |
||||
} |
||||
} |
||||
/* |
||||
* ottenimento del resto della divisione per 26 e valutazione del carattere di controllo |
||||
* (ultimo carattere) |
||||
*/ |
||||
valore %= 26; |
||||
for (int i = 0; i < 26; i++) { |
||||
/* |
||||
* verifica che il valore dell'ultimo carattere corrisponda al valore ottenuto attraverso |
||||
* l'algoritmo di somma precedente |
||||
*/ |
||||
if (ultimoCarattere) { |
||||
if (caratteriCF[caratteriCF.length - 1] == Carattere[i]) { |
||||
if (valore == i) { |
||||
return true; |
||||
} else { |
||||
return false; |
||||
} |
||||
} |
||||
} else { |
||||
return true; |
||||
} |
||||
} |
||||
return false; |
||||
} else { |
||||
return false; |
||||
} |
||||
} catch (Exception e) { |
||||
return false; |
||||
} |
||||
} |
||||
if (caratteriCF[i] == Carattere[j]) { |
||||
valore += ValoriPari[j]; |
||||
} |
||||
} |
||||
/* |
||||
* somma delle posizioni dispari in base ai valori |
||||
* corrispondenti contenuti nell'array ValoriDispari |
||||
*/ |
||||
} else { |
||||
for (int j = 0; j < Carattere.length; j++) { |
||||
if (caratteriCF[i] == Carattere[j]) { |
||||
valore += ValoriDispari[j]; |
||||
} |
||||
} |
||||
} |
||||
} |
||||
/* |
||||
* ottenimento del resto della divisione per 26 e valutazione |
||||
* del carattere di controllo (ultimo carattere) |
||||
*/ |
||||
valore %= 26; |
||||
for (int i = 0; i < 26; i++) { |
||||
/* |
||||
* verifica che il valore dell'ultimo carattere corrisponda |
||||
* al valore ottenuto attraverso l'algoritmo di somma |
||||
* precedente |
||||
*/ |
||||
if (ultimoCarattere) { |
||||
if (caratteriCF[caratteriCF.length - 1] == Carattere[i]) { |
||||
if (valore == i) { |
||||
return true; |
||||
} else { |
||||
return false; |
||||
} |
||||
} |
||||
} else { |
||||
return true; |
||||
} |
||||
} |
||||
return false; |
||||
} else { |
||||
return false; |
||||
} |
||||
} catch (Exception e) { |
||||
return false; |
||||
} |
||||
} |
||||
} |
||||
|
Caricamento…
Reference in new issue