Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
23 changes: 11 additions & 12 deletions ParkIT/src/controller/App.java
Original file line number Diff line number Diff line change
Expand Up @@ -9,42 +9,41 @@
public class App {

public static void main(String[] args) {

final int PLAZAS = 107;
final int PLAZAS_MR = 2;

SwingUtilities.invokeLater(new Runnable() {
public void run() {
try {
Frame frame = new Frame();
frame.setVisible(true);
frame.setLocationRelativeTo(null);

Semaphore semaforo = new Semaphore(PLAZAS, true);
Semaphore semaforoMovilidadReducida = new Semaphore(PLAZAS_MR, true);

GeneradorTiempo generadorTiempo = new GeneradorTiempo();
new Thread(generadorTiempo).start();

Parking parking = new Parking(
generadorTiempo,
frame,
frame,
semaforo,
semaforoMovilidadReducida,
"Parking DAM-30",
"Parking DAM-30",
PLAZAS,
PLAZAS_MR
);

PLAZAS_MR);

new Thread(new GeneradorCoches(parking)).start();

new ControladorPrincipal(frame, parking);
} catch (Exception e) {
e.printStackTrace();
}
}
});

}

}
6 changes: 3 additions & 3 deletions ParkIT/src/controller/CicloCoche.java
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
package controller;

/**
* Contiene la l�gica inherente al m�todo run() de un Coche-thread
* con las llamadas a los m�todos correspondientes del ControladorParking
* separando este comportamiento de la mera definici�n del Modelo Coche.
* Contiene la l�gica inherente al m�todo run() de un Coche-thread
* con las llamadas a los m�todos correspondientes del ControladorParking
* separando este comportamiento de la mera definici�n del Modelo Coche.
*
*/
public class CicloCoche {
Expand Down
11 changes: 5 additions & 6 deletions ParkIT/src/controller/ControladorAfluencia.java
Original file line number Diff line number Diff line change
Expand Up @@ -6,22 +6,21 @@
import view.Frame;

public class ControladorAfluencia implements ActionListener {

private Frame frame;

public ControladorAfluencia(Frame frame) {
this.frame = frame;
}

@Override
public void actionPerformed(ActionEvent e) {
if (e.getSource().equals(frame.getPanelTop().getBtnAfluenciaBaja())) {
// L�gica de AFLUENCIA BAJA
// L�gica de AFLUENCIA BAJA
} else if (e.getSource().equals(frame.getPanelTop().getBtnAfluenciaMedia())) {
// L�gica de AFLUENCIA MEDIA
// L�gica de AFLUENCIA MEDIA
} else if (e.getSource().equals(frame.getPanelTop().getBtnAfluenciaAlta())) {
// L�gica de AFLUENCIA ALTA
// L�gica de AFLUENCIA ALTA
}
}
}

33 changes: 15 additions & 18 deletions ParkIT/src/controller/ControladorInforme.java
Original file line number Diff line number Diff line change
Expand Up @@ -15,45 +15,42 @@
import view.Frame;

/**
* Muestra la informaci�n del veh�culo alojado en una plaza
* Muestra la informaci�n del veh�culo alojado en una plaza
*
*/
public class ControladorInforme implements ActionListener {

private Frame frame;
private Parking parking;

public ControladorInforme(Frame frame, Parking parking) {
this.frame = frame;
this.parking = parking;
}

@Override
public void actionPerformed(ActionEvent e) {

JButton botonPlaza = (JButton) e.getSource();
String plaza = botonPlaza.getName();
Coche coche = parking.getMapaPlazasCoches().get(plaza);

UIManager.put("OptionPane.messageFont", new FontUIResource(
new Font("Arial", Font.BOLD, 22))
);

new Font("Arial", Font.BOLD, 22)));

if (coche != null) {
JOptionPane.showMessageDialog(
frame,
coche.toString(),
"Informaci�n sobre el veh�culo en la plaza "
+ coche.getPlaza(),
JOptionPane.INFORMATION_MESSAGE
);
frame,
coche.toString(),
"Informaci�n sobre el veh�culo en la plaza "
+ coche.getPlaza(),
JOptionPane.INFORMATION_MESSAGE);
} else {
JOptionPane.showMessageDialog(
frame,
"La plaza " + plaza + " est� vac�a",
"Informaci�n sobre la plaza",
JOptionPane.ERROR_MESSAGE
);
frame,
"La plaza " + plaza + " est� vac�a",
"Informaci�n sobre la plaza",
JOptionPane.ERROR_MESSAGE);
}
}
}
6 changes: 3 additions & 3 deletions ParkIT/src/controller/ControladorParking.java
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
package controller;

/**
* Contiene la l�gica de sem�foros y gobierno del tr�fico de coches
* en el Parking, separando la l�gica de estos m�todos de operaci�n
* de la mera definici�n del mapa o "blueprint" del Modelo Parking
* Contiene la l�gica de sem�foros y gobierno del tr�fico de coches
* en el Parking, separando la l�gica de estos m�todos de operaci�n
* de la mera definici�n del mapa o "blueprint" del Modelo Parking
*
*/
public class ControladorParking {
Expand Down
16 changes: 8 additions & 8 deletions ParkIT/src/controller/ControladorPrincipal.java
Original file line number Diff line number Diff line change
Expand Up @@ -6,32 +6,32 @@
import view.Frame;

public class ControladorPrincipal {

private Frame frame;
private Parking parking;
private ControladorParking controladorParking;
private ControladorAfluencia controladorAfluencia;
private ControladorInforme controladorInforme;

public ControladorPrincipal(Frame frame, Parking parking) {
this.frame = frame;
this.parking = parking;
this.controladorAfluencia = new ControladorAfluencia(frame);
this.controladorInforme = new ControladorInforme(frame, parking);

iniciarVista();
iniciarControladores();
}

public void iniciarVista() {
//TODO: L�gica inicializadora de la Vista
// TODO: L�gica inicializadora de la Vista
}

public void iniciarControladores() {
this.frame.getPanelTop().getBtnAfluenciaBaja().addActionListener(controladorAfluencia);
this.frame.getPanelTop().getBtnAfluenciaMedia().addActionListener(controladorAfluencia);
this.frame.getPanelTop().getBtnAfluenciaAlta().addActionListener(controladorAfluencia);

for (JButton boton : this.frame.getPanelParking().getPanelPAreaA().getParkingAButtons()) {
boton.addActionListener(controladorInforme);
}
Expand All @@ -41,7 +41,7 @@ public void iniciarControladores() {
for (JButton boton : this.frame.getPanelParking().getPanelPAreaC().getParkingCButtons()) {
boton.addActionListener(controladorInforme);
}

}

}
73 changes: 35 additions & 38 deletions ParkIT/src/controller/GeneradorCoches.java
Original file line number Diff line number Diff line change
Expand Up @@ -10,75 +10,73 @@
import model.Parking;

public class GeneradorCoches implements Runnable {
// public static int contadorCoches = 0;
// private static Object obj = new Object();

// public static int contadorCoches = 0;
// private static Object obj = new Object();
private Parking parking;
private ArrayList<String> modelosCoche;
private static final String filePath = "/files/coches.txt";
// private boolean apagado = false;
// private boolean apagado = false;

public GeneradorCoches(Parking parking) {
System.out.println("Generador de coches comienza su operaci�n");
System.out.println("Generador de coches comienza su operaci�n");
this.parking = parking;
this.modelosCoche = new ArrayList<String>();

leerModelosCoche();
}

@Override
public void run() {
while(true) {

while (true) {
try {
Thread.sleep(parking.getGeneradorTiempo().getTiempoGeneracionCoches() * 220);
Thread.sleep(parking.getGeneradorTiempo().getGeneracionCochesNuevo() * 220);
} catch (InterruptedException e) {
e.printStackTrace();
}


parking.getGeneradorTiempo().setGeneracionCochesUsado(parking.getGeneradorTiempo().getGeneracionCochesNuevo());

Coche coche = new Coche(
generarMatricula(),
generarMatricula(),
generarModeloCoche(),
parking,
definirMovilidadReducida()

);
Thread thread = new Thread(coche);
thread.setName("thread-" + coche.getMatricula());
thread.start();
// synchronized (obj) {
// contadorCoches++;
// if (contadorCoches>=100) {
// apagado = true;
// }
// }

// synchronized (obj) {
// contadorCoches++;
// if (contadorCoches>=100) {
// apagado = true;
// }
// }
}

}

public String generarMatricula() {
String letrasPermitidas = "BCDFGHJKLMNPRSTVWXYZ";
String parteAlfabetica = "";
String parteNumerica = String.format(
"%04d",
ThreadLocalRandom.current().nextInt(0, 10_000)
);

"%04d",
ThreadLocalRandom.current().nextInt(0, 10_000));

for (int i = 0; i < 3; i++) {
parteAlfabetica += letrasPermitidas.charAt(
ThreadLocalRandom.current().nextInt(letrasPermitidas.length())
);
ThreadLocalRandom.current().nextInt(letrasPermitidas.length()));
}
return parteNumerica + parteAlfabetica;
}

public void leerModelosCoche() {
try (
InputStream is = getClass().getResourceAsStream(filePath);
BufferedReader reader = new BufferedReader(new InputStreamReader(is, StandardCharsets.UTF_8));
)
{
BufferedReader reader = new BufferedReader(new InputStreamReader(is, StandardCharsets.UTF_8));) {
String modeloCoche;
while ((modeloCoche = reader.readLine()) != null) {
this.modelosCoche.add(modeloCoche);
Expand All @@ -87,21 +85,20 @@ public void leerModelosCoche() {
e.printStackTrace();
}
}

public String generarModeloCoche() {
String modeloAleatorio = modelosCoche.get(
ThreadLocalRandom.current().nextInt(modelosCoche.size())
);
ThreadLocalRandom.current().nextInt(modelosCoche.size()));
return modeloAleatorio;
}

public boolean definirMovilidadReducida() {
int porcentajeMovilidadReducida = ThreadLocalRandom.current().nextInt(100);
if (porcentajeMovilidadReducida < 5) {
return true;
} else {
return false;
return false;
}
}

}
Loading