package art.servers.etdserver.protocols.diamond.files;
|
|
import art.servers.etdserver.protocols.diamond.Diamond_Message;
|
import java.text.DecimalFormat;
|
import java.text.SimpleDateFormat;
|
import java.util.Calendar;
|
import java.util.Collections;
|
import java.util.Comparator;
|
import java.util.Vector;
|
|
|
public final class DIAMOND_Directory
|
{
|
public int numfiles;
|
public int openfile;
|
public int totalmem;
|
|
public DIAMOND_Subdirectory[] subdirectorios;
|
|
private SimpleDateFormat formato = new SimpleDateFormat("dd/MM/yyyy HH:mm");
|
private DecimalFormat formato2 = new DecimalFormat("00");
|
|
|
public DIAMOND_Directory (String version, String mensaje) throws Exception
|
{
|
Diamond_Message reader = new Diamond_Message();
|
reader.setData(mensaje);
|
boolean version5 = (version.indexOf("5.") > -1);
|
|
numfiles = reader.get2X();
|
int ramunret = reader.get2X();
|
if (version5 == true)
|
{
|
int ddsunret = reader.get2X();
|
}
|
openfile = reader.get1X();
|
totalmem = reader.get6X();
|
int mmcfiles = reader.get4X();
|
int mmcunret = reader.get4X();
|
if (version5 == true)
|
{
|
int mmcddsret = reader.get2X();
|
}
|
int mmcsize = reader.get6X();
|
int mmcfree = reader.get6X();
|
for (int i=0; i<mmcfiles; i++)
|
{
|
String siteId = reader.getString(15);
|
int filestore = reader.get1X();
|
int filelanes = reader.get2X();
|
int filelen = reader.get6X();
|
int fileret = reader.get1X();
|
|
int startmonth = reader.get2X();
|
int startday = reader.get2X();
|
int startyear = reader.get2X();
|
int starthour = reader.get2X();
|
int startminute = reader.get2X();
|
|
int endmonth = reader.get2X();
|
int endday = reader.get2X();
|
int endyear = reader.get2X();
|
int endhour = reader.get2X();
|
int endminute = reader.get2X();
|
}
|
|
subdirectorios = new DIAMOND_Subdirectory[numfiles];
|
for (int i=0; i<numfiles; i++)
|
{
|
subdirectorios[i] = new DIAMOND_Subdirectory();
|
subdirectorios[i].number = i+1;
|
subdirectorios[i].site = reader.getString(15);
|
subdirectorios[i].storemode = reader.get1X();
|
subdirectorios[i].lanes = reader.get2X();
|
subdirectorios[i].length = reader.get6X();
|
subdirectorios[i].retrieved = (reader.get1X() == 1);
|
|
subdirectorios[i].startmonth = reader.get2X();
|
subdirectorios[i].startday = reader.get2X();
|
subdirectorios[i].startyear = reader.get2X() + 2000;
|
subdirectorios[i].starthour = reader.get2X();
|
subdirectorios[i].startminute = reader.get2X();
|
|
subdirectorios[i].stopmonth = reader.get2X();
|
subdirectorios[i].stopday = reader.get2X();
|
subdirectorios[i].stopyear = reader.get2X() + 2000;
|
subdirectorios[i].stophour = reader.get2X();
|
subdirectorios[i].stopminute = reader.get2X();
|
|
Calendar calendar1 = Calendar.getInstance();
|
calendar1.set(Calendar.DATE, subdirectorios[i].startday);
|
calendar1.set(Calendar.MONTH, subdirectorios[i].startmonth - 1);
|
calendar1.set(Calendar.YEAR, subdirectorios[i].startyear + 2000);
|
calendar1.set(Calendar.HOUR_OF_DAY, subdirectorios[i].starthour);
|
calendar1.set(Calendar.MINUTE, subdirectorios[i].startminute);
|
calendar1.set(Calendar.SECOND, 0);
|
calendar1.set(Calendar.MILLISECOND, 0);
|
subdirectorios[i].calendarStart = calendar1;
|
subdirectorios[i].timestampStart = formato.format(calendar1.getTime());
|
|
Calendar calendar2 = Calendar.getInstance();
|
calendar2.set(Calendar.DATE, subdirectorios[i].stopday);
|
calendar2.set(Calendar.MONTH, subdirectorios[i].stopmonth - 1);
|
calendar2.set(Calendar.YEAR, subdirectorios[i].stopyear + 2000);
|
calendar2.set(Calendar.HOUR_OF_DAY, subdirectorios[i].stophour);
|
calendar2.set(Calendar.MINUTE, subdirectorios[i].stopminute);
|
calendar2.set(Calendar.SECOND, 0);
|
calendar2.set(Calendar.MILLISECOND, 0);
|
subdirectorios[i].calendarStop = calendar2;
|
subdirectorios[i].timestampStop = formato.format(calendar2.getTime());
|
}
|
}
|
|
|
public Vector obtenerSubdirectoriosOrdenadorNumeroAscendente()
|
{
|
Vector resultado = new Vector();
|
|
for (int i=0; i<subdirectorios.length; i++)
|
{
|
resultado.add(subdirectorios[i]);
|
}
|
|
Collections.sort(resultado, comparador1);
|
|
return resultado;
|
}
|
|
|
|
|
|
|
|
///// FUNCIONES PRIVADAS
|
|
|
|
private Comparador1 comparador1 = new Comparador1();
|
|
|
|
|
private class Comparador1 implements Comparator
|
{
|
public int compare(Object o1, Object o2)
|
{
|
DIAMOND_Subdirectory s1 = (DIAMOND_Subdirectory)o1;
|
DIAMOND_Subdirectory s2 = (DIAMOND_Subdirectory)o2;
|
|
if (s1.number > s2.number) return -1;
|
if (s1.number < s2.number) return 1;
|
return 0;
|
}
|
|
}
|
|
|
}
|