package casarural;
import java.rmi.*;
import java.sql.Date;
import java.util.GregorianCalendar;
import java.util.StringTokenizer;
import java.util.Vector;
import java.lang.*;
/**
* @author kdreamer
*/
public class ConsultarDisponibilidadBean {
/**
* @uml.property name="logNeg"
* @uml.associationEnd
*/
InterfazFachada logNeg;
/**
* @uml.property name="numCasa"
*/
private int numCasa;
/**
* @uml.property name="diaIni"
*/
private String diaIni;
private Date diaIniDate;
private String diaFin;
private Date diaFinDate;
/**
* @uml.property name="numNoches"
*/
private int numNoches;
private long numNochesM;
public ConsultarDisponibilidadBean() {
final String IPMAQUINA = "localhost";
// final String DIRECTORIOCLASES= "/ISOServidor/";
//
// System.setProperty ("java.rmi.server.codebase",
// "http://"+IPMAQUINA+DIRECTORIOCLASES);
// Aqui realizamos las operaciones necesarias para trabajar
// mediante RMI
try {
// Nombre servicio remoto
String servicio = "/CasaRural";
System.setSecurityManager(new RMISecurityManager());
// Numero puerto servidor RMI
int numPuerto = InterfazFachada.numPuerto;
// IP maquina servidor RMI
String maquina = IPMAQUINA;
logNeg = (InterfazFachada) Naming.lookup("rmi://" + maquina + ":"
+ numPuerto + servicio);
} catch (Exception e) {
System.out.println(e.toString());
}
}
/**
* Asigna el codigo de la casa al de la instancia actual
* @param El codigo de la casa
* @return Ninguno
* @uml.property name="numCasa"
*/
public void setNumCasa(int numCasa) {
this.numCasa = numCasa;
}
/**
* Devuelve el codigo de la casa
* @param Ninguno
* @return El codigo de la casa
* @uml.property name="numCasa"
*/
public int getNumCasa() {
return numCasa;
}
/**
* Asigna el dia de inicio de la reserva al de la instancia actual
* @param El dia de inicio de la reserva
* @return Ninguno
* @uml.property name="diaIni"
*/
public void setDiaIni(String i) {
diaIni = i;
StringTokenizer st = new StringTokenizer(i, "/");
int dia = Integer.parseInt(st.nextToken());
int mes = Integer.parseInt(st.nextToken()) - 1;
int anio = Integer.parseInt(st.nextToken());
GregorianCalendar gc = new GregorianCalendar(anio, mes, dia);
diaIniDate = new Date(gc.getTime().getTime());
}
/**
* Devuelve el dia de inicio de la reserva
* @param Ninguno
* @return El dia de inicio de la reserva
* @uml.property name="diaIni"
*/
public String getDiaIni() {
return diaIni;
}
/**
* Asigna el numero de noches
* @param El numero de noches
* @return Ninguno
* @uml.property name="numNoches"
*/
public void setNumNoches(int s) {
numNoches = s;
numNochesM = 1000 * 60 * 60 * 24 * s;
}
/**
* Devuelve el numero de noches
* @param Ninguno
* @return El numero de noches
* @uml.property name="numNoches"
*/
public int getNumNoches() {
return numNoches;
}
/**
* Devuelve el dia de inicio en formato Date
*
* @param Ninguno
* @return El dia de inicio
*/
public Date getDiaIniAsDate() {
return (this.diaIniDate);
}
/**
* Devuelve un vector con el dia y el estado de la oferta
*
* @param Ninguno
* @return El vector de ofertas
*/
public Vector getResultado() {
// Numero de Casa
// Dia inicio
final long diams = 1000 * 60 * 60 * 24;
diaFinDate = new Date(diaIniDate.getTime() + (diams * numNoches));
Vector res = new Vector();
try {
OfertasEnMemoriaPrincipal omp = logNeg.obtenerOfertas(numCasa,
diaIniDate, diaFinDate);
Vector ompVectorStrict = omp.obtenerOfertasIncluidasEntre(
diaIniDate, diaFinDate);
Vector ompVector = omp.obtenerOfertasEntre(diaIniDate, diaFinDate);
Date dia = new Date(diaIniDate.getTime());
dia = Date.valueOf(dia.toString());
String estadoCasaRural;
String estadoCasaRuralStrict;
while (dia.getTime() <= diaFinDate.getTime())// hasta el ultimo
// dia
{
estadoCasaRural = omp.estadoCasaRural(dia, ompVector);
estadoCasaRuralStrict = omp.estadoCasaRural(dia,
ompVectorStrict);
if (estadoCasaRural == estadoCasaRuralStrict) {
} else if (estadoCasaRural != estadoCasaRuralStrict) {
Date DiaIniAux = ((Oferta) omp
.obtenerOfertasEntre(dia, dia).elementAt(0))
.getDiaIni();
Date DiaFinAux = ((Oferta) omp
.obtenerOfertasEntre(dia, dia).elementAt(0))
.getDiaFin();
estadoCasaRural = "Libre pero oferta no completa\n * Disponible del "
+ DiaIniAux.toString()
+ " al "
+ DiaFinAux.toString();
}
res.addElement(dia.toString() + ": " + estadoCasaRural + "\n");
dia.setTime(dia.getTime() + diams);
}
return res;
} catch (Exception e) {
System.out.println("Error: " + e.toString());
e.printStackTrace();
}
return res;
}
}