Alejandro Acuña
2024-08-12 831c7bd85763b5eb5ef46664c65f0181824f9e13
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
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;
        }
 
  }
 
    
}