Ott 23

JAVA – Come ottenere l’anno corrente in Java

Come mostrare correttamente l’anno corrente in Java (senza usare il metodo Date.getYear)
Fino alla versione del JDK 1.1 veniva abitualmente usato il metodo java.util.Date.getYear()!
Questo metodo è deprecato dalla JDK 1.2 in poi in quanto, per gli anni successi al 1999 restituiva il numero di anni passati dal 1900.
Per ottenere correttamente l’anno in corso si può utilizzare il seguente codice:
Calendar calendar = GregorianCalendar.getInstance();
System.out.printl(“ANNO CORRENTE:” + calendar.get( Calendar.YEAR ));

invece di:

Date d = new Date();
Systtem.out.printl(“ANNO CORRENTE:” + d.getYear());

Che invece mostrerebbe come risultato (nel 2009):
ANNO CORRENTE:109

Ott 23

JAVA – Ottenere il primo giorno della settimana

Ottenere il primo giorno della settimana

Nel caso serva ottenere il primo giorno della settimana in riferimento a un giorno specifico, la funzione per ottenere questo risultato è la seguente:
Codice:
/**
** IN: Date today – giorno di riferimento all’interno della settimana du cui si vuole conoscere il primo giorno
**/
public static Date getCurrentMonday(Date today)
{
Date monday = null;
Calendar rightNow = Calendar.getInstance();
rightNow.setTime(today);
int day = rightNow.get(Calendar.DAY_OF_WEEK);
int distance = 0;
if (day == Calendar.MONDAY)
{
monday = rightNow.getTime();
}
else
{
distance = day – Calendar.MONDAY;
if (distance == -1)
distance = 6;
monday = (Date) (rightNow.getTime());
monday.setTime(monday.getTime() – 1000 * 60 * 60 * 24 * (distance));
}
return monday;
}
Ad esempio quand’è lunedì nella settimana contenente il 25-07-2008? (risp. 21-07-2008)

La funzione ha impostato come primo giorno della settimana il lunedì, in caso si voglia cambiare il giorno di rifermento va cambiato nel codice Calendar.MONDAY con la costante del giorno che interessa (definita nella classe Calendar)

Ott 14

JAVA – Listing di file ordinati per data

Per ottenere un listing di una directory di file, ordinata per data, si può usare il seguente codice:

import java.io.*;
import java.util.Arrays;
import java.util.Comparator;
import java.util.Date;

public class FileUtils{

public static void main(String args[]) throws Exception {
String cartella=”c://miacartella”);
File files[] = FileUtils.dirListByAscendingDate
(new File(cartella));
for (File file : files) {
System.out.println(file.getName() + ” ”
+ new Date(file.lastModified()));
}
System.out.println(“DIR ->”);
files = FileUtils.dirListByDescendingDate
(new File(“C:/Applications/folder”));
for (File file : files) {
System.out.println(file.getName() + “t”
+ new Date(file.lastModified()));
}

}

public static File[] dirListByAscendingDate(File folder) {
if (!folder.isDirectory()) {
return null;
}
File files[] = folder.listFiles();
Arrays.sort( files, new Comparator()
{
public int compare(final Object o1, final Object o2) {
return new Long(((File)o1).lastModified()).compareTo
(new Long(((File) o2).lastModified()));

}
});
return files;
}

public static File[] dirListByDescendingDate(File folder) {
if (!folder.isDirectory()) {
return null;
}
File files[] = folder.listFiles();
Arrays.sort( files, new Comparator()
{
public int compare(final Object o1, final Object o2) {
return new Long(((File)o2).lastModified()).compareTo
(new Long(((File) o1).lastModified()));
}
});
return files;
}
}

In realtà chi fa il lavoro “sporco” di ordinamento è il codice di Compare:

public int compare(final Object o1, final Object o2) {
return new Long(((File)o1).lastModified()).compareTo
(new Long(((File) o2).lastModified()));

che può essere personalizzato all’occorrenza su qualsiasi campo di proprietà dell’oggetto File.

Ott 10

JAVA – Convertire da String a CLOB

I database Oracle usano il tipo CLOB per la memorizzazione di testi estremamente lunghi (superiori ai 4000 caratteri nella versione 10), la memorizzazione di una stringa Java in questi campi non è possibile direttamente e richiede dunque una conversione.

Di seguito il codice per la conversione:

public static CLOB getCLOB( String clobData )
{
try{
return getCLOB(createConnection(), clobData);
}catch ( Exception exp ) {
//TODO: Stampa dell’errore

return null;
}
}

public static CLOB getCLOB(Connection connection, String clobData )
throws Exception {
CLOB tempClob = null;

try {
// crea un nuovo CLOB temporaneo
tempClob = CLOB.createTemporary(connection, true, CLOB.DURATION_SESSION );

// Aple il CLOB temporaneo in modalità read/write per abilitarne la scirttura
tempClob.open( CLOB.MODE_READWRITE );
Writer tempClobWriter = tempClob.getCharacterOutputStream( );
tempClobWriter.write( clobData );

tempClobWriter.flush( );

//Chiude lo stream
tempClobWriter.close( );

// Chiude il CLOB temporaneo
tempClob.close( );

} catch ( Exception exp ) {
// Rilascia l’oggetto CLOB
tempClob.freeTemporary( );
//TODO
}

//Restituisce il clob elaborato

return tempClob;
}