public String safeSubstr(String value, int startPos, int length, Container container) throws StreamTransformationException{
/*
By Nicola Martella (N4N)
La funzione ritorna la sottostringa di value a partire da startPos (in base 0) per la lunghezza length.
Es1: value: "ABCDEFGHIJ" startPos=6 length=3 ret: "GHI"
Se la posizione di length a partire da startPos eccede la lunghezza di value, viene ritornata la sottostringa
a partire da startPos per tutta la lunghezza rimanente.
Es2: value: "ABCDEFGHIJ" startPos=6 length=10 ret: "GHIJ"
Se la posizione di startPos e' maggiore della lunghezza di value, viene ritornata una stringa vuota.
Es3: value: "ABCDEFGHIJ" startPos=11 length=3 ret: ""
Se value è null, viene ritornata una stringa vuota.
Es4: value: null startPos=0 length=3 ret: ""
Se length e/o startPos sono < 0 vengono posti a 0.
*/
if (value == null) return "";
if (length < 0) length = 0;
if (startPos < 0) startPos = 0;
int toPos = startPos+length;
if (toPos > value.length()) {
toPos = value.length();
}
if (startPos > value.length()) {
startPos = value.length();
}
return value.substring(startPos, toPos);
}