package horario;
import java.util.HashMap;
import java.util.Calendar;
import java.util.GregorianCalendar;
/**
* Clase para obtener los datos necesarios para construir la interfaz grafica <code> Meses </code>
*
* @param año Los datos del objeto se crearan a pertir del año dado
* @param mes Los datos del objeto se crearan a pertir del mes dado
* @author Zero
*/
int[] dias={g.MONDAY, g.TUESDAY, g.WEDNESDAY,g.THURSDAY,g.FRIDAY,g.SATURDAY,g.SUNDAY};
/**
* Arreglo utilizado para saber que día termina cada mes del año
*/
int[] last={31, 28, 31,30,31,30,31,31,30,31,30,31};
/**
* Indica el año con que se construye este objeto
*/
int y=0;
/**
* Usado para conocer que indice tendra cada mes del año en el arreglo <code>last[]</code>
*/
HashMap<Integer, String> mez=null;
/**
* Indica el mes con que se construye este objeto
*/
int m=0;
/**
* Indica el primer día del mes
*/
int first=0;
ZCalendar(int año, int mes){
this.set(ZCalendar.YEAR, año);
this.set(ZCalendar.MONTH, mes);
m=mes;
mez=new HashMap<Integer, String>();
y=año;
int w=0;
mez.put(w, "Enero"); w++;
mez.put(w, "Febrero"); w++;
mez.put(w, "Marzo"); w++;
mez.put(w, "Abril"); w++;
mez.put(w, "Mayo"); w++;
mez.put(w, "Junio"); w++;
mez.put(w, "Julio"); w++;
mez.put(w, "Agosto"); w++;
mez.put(w, "Septiembre"); w++;
mez.put(w, "Octubre"); w++;
mez.put(w, "Noviembre"); w++;
mez.put(w, "Diciembre"); w++;
}
/**
* Devuelve la posicion del <code>ZLabel</code> desde donde empezarán los días del mes
*/
int getFirstDayOfMonth(){
int d=0;
this.set(this.DAY_OF_MONTH, this.DAY_OF_MONTH - this.DAY_OF_MONTH);
d=this.get(this.DAY_OF_WEEK);
d++;
first=d;
return d;
}
/**
* Devuelve la posicion del <code>ZLabel</code> en donde terminarán los días del mes
*/
int getLastDayOfTheMonth(){
int x=0;
if(m==1){
return inFeb();
}
if(last[m]==30){
return in30();
}
if(last[m]==31){
return in31();
}
return x;
}
private int in30(){
switch(first){
case 0:
return 29;
case 1:
return 30;
case 2:
return 31;
case 3:
return 32;
case 4:
return 33;
case 5:
return 34;
case 6:
return 35;
case 7:
return 36;
}
return 10;
}
private int in31(){
switch(first){
case 0:
return 30;
case 1:
return 31;
case 2:
return 32;
case 3:
return 33;
case 4:
return 34;
case 5:
return 35;
case 6:
return 36;
case 7:
return 37;
}
return 10;
}
private int inFeb(){
if(isBis(y)){
switch(first){
case 0:
return 28;
case 1:
return 29;
case 2:
return 30;
case 3:
return 31;
case 4:
return 32;
case 5:
return 33;
case 6:
return 34;
case 7:
return 35;
}
}else{
switch(first){
case 0:
return 27;
case 1:
return 28;
case 2:
return 29;
case 3:
return 30;
case 4:
return 31;
case 5:
return 32;
case 6:
return 33;
case 7:
return 34;
}
}
return 10;
}
/**
* Devuelve <code>true</code> si <code>x</code> es multiplo de 4
*
* @param x Representa el año que se desea saber si es bisiesto
*/
boolean isBis(int x){
if(x%4==0){
return true;
}else{
return false;
}
}
/**
* Devuelve el nombre del mes correspondiente
*
* @return m El nombre del mes con el que se construye este objeto
*/
return mez.get(this.m);
}
/**
* Devuelve el año correspondiente
*
* @return m El año con el que se construye este objeto
*/
return y+"";
}
}