Un poco de documentacion

This commit is contained in:
Daniel Cortés
2019-06-19 12:06:28 -04:00
parent b1ade25a5d
commit a4ba20fa3e
5 changed files with 121 additions and 0 deletions

1
.gitignore vendored
View File

@@ -109,3 +109,4 @@ buildNumber.properties
# cosas random que pasan
nohup.out
docs/

8
.idea/misc.xml generated
View File

@@ -1,6 +1,14 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ExternalStorageConfigurationManager" enabled="true" />
<component name="JavadocGenerationManager">
<option name="OUTPUT_DIRECTORY" value="$PROJECT_DIR$/docs" />
<option name="OPTION_SCOPE" value="private" />
<option name="OPTION_DOCUMENT_TAG_USE" value="true" />
<option name="OPTION_DOCUMENT_TAG_AUTHOR" value="true" />
<option name="OPTION_DOCUMENT_TAG_VERSION" value="true" />
<option name="OPEN_IN_BROWSER" value="false" />
</component>
<component name="MavenProjectsManager">
<option name="originalFiles">
<list>

View File

@@ -8,8 +8,19 @@ import xyz.danielcortes.controllers.LaunchController;
import xyz.danielcortes.login.LoginController;
import xyz.danielcortes.login.LoginPanel;
/**
* Punto de entrada de la aplicacion.
*/
public class App {
/**
* Punto de entrada de ejecucion de la aplicacion
* <p>
* Ejecuta el <code>LoginController</code> y le entrega el <code>LoggedListener</code> que ejecutara <code>LaunchController</code> al cual se le
* entrega el usuario obtenido en el proceso de login
*
* @see LoginController
*/
public static void main(String[] args) {
setupLookAndFeel();
LoginController loginController = new LoginController(new LoginPanel());
@@ -19,6 +30,16 @@ public class App {
});
}
/**
* Configura el look and feel del programa.
* <p>
* Activa el antialiasing optimizado para lcd.
* <p>
* Configura directamente el lookAndFeel seleccionado uno desde una serie de strings
* <p>
* Finalmente configura la clase de la ventana java para que no tenga el nombre generico y pueda configurarlo como ventana flotante en un
* WindowManager.
*/
private static void setupLookAndFeel() {
System.setProperty("awt.useSystemAAFontSettings", "lcd");
System.setProperty("swing.aatext", "true");

View File

@@ -137,6 +137,11 @@ import xyz.danielcortes.views.usuario.UsuarioCreatePanel;
import xyz.danielcortes.views.usuario.UsuarioUpdatePanel;
import xyz.danielcortes.views.usuario.UsuarioViewPanel;
/**
* Controlador principal de la aplicacion
* <p>
* Se encarga de crear todos los controladores con sus vistas que estaran contenidos en la ventana principal
*/
public class LaunchController {
private LaunchFrame frame;
@@ -148,21 +153,42 @@ public class LaunchController {
this.controllers = new HashMap<>();
}
/**
* Entrega un <code>BaseController</code> dado su nombre
*
* @param name <code>PanelName</code> el cual esta relacionado con el controlador que se busca
* @return Un <code>BaseController</code> correspondiente al nombre entregado
*/
public BaseController getCard(PanelName name) {
return this.controllers.get(name);
}
/**
* Lanza la vista inicial
*/
public void run() {
this.create();
this.frame.setVisible(true);
}
/**
* Crea el frame y llama a crear las cartas del <code>CardLayout</code> y el <code>MenuBar</code>
*/
private void create() {
this.frame = new LaunchFrame();
this.createCards();
this.createMenuBar();
}
/**
* Crea las cartas que estaran contenidas en la vista
* <p>
* Estan son agregadas a un <code>HashMap</code> que las almacenara relacionadas a su <code>PanelName</code>
* <p>
* A cada controlador se le entregara una referencia a esta clase
* <p>
* Luego de agregar todos los controladores al <code>HashMap</code> estos son agregados al <code>CardLayout</code> del JFrame
*/
private void createCards() {
this.frame.addCard(new JPanel(), PanelName.EMPTY);
@@ -266,6 +292,9 @@ public class LaunchController {
}
}
/**
* Llama a crear los <code>Menu</code> que contendra el <code>MenuBar</code> y los añade a este
*/
private void createMenuBar() {
JMenuBar menuBar = new JMenuBar();
@@ -275,6 +304,11 @@ public class LaunchController {
this.frame.setJMenuBar(menuBar);
}
/**
* Crear todos los menus para acceder a las vistas de mantenedores con sus <code>ActionListener</code> creados.
*
* @return <code>JMenu</code> con los <code>MenuItem</code> para acceder a las vistas.
*/
private JMenu createMantenedoresMenu() {
JMenu mantenedoresMenu = new JMenu("Mantenedores");
@@ -311,6 +345,11 @@ public class LaunchController {
return mantenedoresMenu;
}
/**
* Crear todos los menus para acceder a las vistas de compras con sus <code>ActionListener</code> creados.
*
* @return <code>JMenu</code> con los <code>MenuItem</code> para acceder a las vistas.
*/
private JMenu createComprarMenu() {
JMenu comprarMenu = new JMenu("Comprar");
@@ -323,6 +362,11 @@ public class LaunchController {
return comprarMenu;
}
/**
* Muestra la Carta con el nombre entregado Llama al metodo show del controlador de la carta a mostrar
*
* @param name <code>PanelName</code> de la Carta que se quiere mostrar.
*/
public void showCard(PanelName name) {
this.frame.showCard(name);
this.controllers.get(name).show();

View File

@@ -11,6 +11,9 @@ import xyz.danielcortes.framework.Passwords;
import xyz.danielcortes.models.Usuario;
import xyz.danielcortes.repository.UsuarioRepository;
/**
* Controlador para el panel <code>LoginPanel</code>
*/
public class LoginController {
private JFrame frame;
@@ -18,6 +21,11 @@ public class LoginController {
private UsuarioRepository repository;
private LoggedListener loggedListener;
/**
* Crea la clase, almacena la vista, crea el listener y el frame que contiene la vista
*
* @param view LoginPanel.
*/
public LoginController(LoginPanel view) {
this.view = view;
this.repository = new UsuarioRepository();
@@ -25,12 +33,30 @@ public class LoginController {
this.createFrame();
}
/**
* Crea los listeners de la vista
* <p>
* El field de usuario, el field de contraseña y el boton de logeo ejecutaran <code>login()</code>
*/
private void setupListeners() {
this.view.getUserField().addActionListener(e -> this.login());
this.view.getPassField().addActionListener(e -> this.login());
this.view.getLoginButton().addActionListener(e -> this.login());
}
/**
* Crea un frame que contendra el <code>LoginPanel</code>
* <p>
* Dimensiones de 400x400
* <p>
* Cierra el programa al cerrar la ventana
* <p>
* Relativo a nada, por lo tanto centrado
* <p>
* Titulo "Login"
* <p>
* El content panel siendo la vista entregada en el constructor.
*/
private void createFrame() {
Dimension dimension = new Dimension(400, 400);
this.frame = new JFrame();
@@ -43,6 +69,20 @@ public class LoginController {
this.frame.setVisible(true);
}
/**
* Intenta logear a un usuario con los datos entregados
* <p>
* Primero comprueba si el nombre de usuario existe en la base de datos
* <p>
* Luego comprueba que la contraseña entregada sea igual que la que esta guarda en la base de datos, para esto se utiliza la clase
* <code>Passwords</code>
* <p>
* Si es que alguno de los 2 pasos falló se muestra el mismo mensaje de error.
* <p>
* Y en caso que no falle nada se ejecutara el <code>loggedListener</code> con un <code>LoggedEvent</code> que contiene el usuario obtenido
*
* @see Passwords
*/
private void login() {
String name = this.view.getUserField().getText();
Optional<Usuario> optionalUser = this.repository.getByName(name);
@@ -71,6 +111,13 @@ public class LoginController {
}
}
/**
* Almacena un <code>LoggedListener</code>.
* <p>
* Este listener es ejecutado cuando se logea correctamente un usuario.
*
* @param listener Listener a ser ejecutado.
*/
public void setLoggedListener(LoggedListener listener) {
this.loggedListener = listener;
}