Projecte Configurador de vehicles
La revisió el 19:03, 24 oct 2018 per Lzabala (discussió | contribucions) (→Sprint #2 (24 hores) 24/10/18 -- 7/11/18)
Introducció
Configurador de vehículos
Este proyecto consiste en crear una aplicación de escritorio en JAVA que permita configurar un vehículo. Podemos tomar como ejemplos el configurador de toyota o el configurador de seat. La idea es desarrollar una aplicación que en un futuro tenga todas las funcionalidades de un configurador.
Para realizar esta tarea se creará una lista priorizada de características de la aplicación.
Product Backlog
A l'inici de l'apliació ha de carregar les configuracions inicials d'un fitxer xml anomenat cv_config.xmlGenera una classe ConfigurationLoader que implementi el patró de diseny singleton que contigui totes las configuracions llegides des de cv_config.xmlImplementar i llegir les claus: car_configuration_path, car_configuration_file_name, employee_list, employee_password, specifications_file_pathLa primera pantalla de l’aplicació serveix pel logueixar-se.
comprovarà el passsword quan es polsi el botó ENTRAR.Per accedir a l'apliació s'ha d'introduir un nom vàlid, es a dir, un nom que aparegui a la llista employee_list del fitxer de configuració. Si el nom no apareix a la llista mostrar un missatge de error.Implementar i llegir les claus: version, employee_versionLa segona pantalla és per introduir les dades del client
Els camps que porten * són obligatoris i no es pot passar a la següent pantalla si estan en blanc.Només es pot tenir seleccionat un gènere.Per accedir a l'aplicació a la versió per empleats a més del nom vàlid de l'empleat ha de introduir el password correcte i ha de estar activa la clau employee_version del fitxer de configLa tercera pantalla serveix per escollir el model de cotxe de la marca SEAT:
L'aplicació ha de accedir al fitxer de configuració de vehicle que es un fitxer xml amb les dades de MODEL, MOTOR i ACCESORIS disponibles. Al menys hi ha d'haver 4 models (id, nom, descripció, imatge_nom, preu) 2 motors(id, nom, descripció, imatge_nom, preu) i 6 accesoris(id, nom, descripció, imatge_nom, preu, models_disponibles)- Implementa el patró de diseny DAO per accedir al fitxer xml de configuració de vehicle. La implementació ha de permetre afegir, treure o modificar dades del fitxer en temps d'execució
- La part esquerra són botons amb la imatge del diferents model. Al prémer un , apareix a la part central la imatge amb bona resolució i un text resumint les seves característiques en un JTextArea.
- A sota els botons per continuar i tornar enrere amb el comportament normal. Per defecte, un model s’ha de considerar seleccionat i és el que apareix inicialment a la foto.
- A la quarta pantalla, apareix els submodels del model escollit a la pantalla anterior. Es mostra la informació en un JList ( cada opció és un String)
- En la següent es seleccionen els extres que es volen
- Al finalitzar es mostrarà una pantalla resum amb el resum del cotxe seleccionat i el preu final.
- A mesura que es van seleccionant les opcions de configuració s'han d'anar guardant en el fitxer resum fs_employee.txt indicant a la primera linea del fitxer "Dades temporals" una vegada hem acabat la configuració s'ha de borrar la linea "Dades temporals"
- Quan s'acaba la configuració s'ha de generar el fitxer de presupost en format XML
- Quan s'acaba la configuració als fitxers fs_employee.txt i fs_employee.xml s'ha de canviar el nom a fs_employee_data_i_hora.txt i fs_employee_data_i_hora.xml
- Quan el camp de password té el focus, si es clica la tecla ENTER ha de comprovar el password.
- A partit d’estar logueixat, a la cantonada dreta superior de cada finestra, apareixerà el “Usuario: ‘nom_de_l’usuari’ “
- El camp de correu electrònic , té un format propi de les adreces electròniques i no s’accepta res que no pugui ser un mail.
- Data de naixement obre un JCalendar.
- El botó “GUARDAR” fa les mateixes comprovacions que per passar a la següent pantalla.
- SI l’operació de guardar dades ha anat bé, mostrarà aquest fet amb un JOptionPane.
- El comportament a l’hora de tancar aquesta finestra ha d’oferir la possibilitat de sortir gravant les dades, sortir sense gravar i no sortir. Ho podeu fer com vulgueu. Una possibilitat és: Si tanco aquesta finestra em demana si vull desar les dades amb un JOptionPane amb opció OK.CANCEL. Si premo OK, es desen i em demana de nou si vull sortir. Si diu CANCEL, ens quedem i si diem Ok sortim. Si al primer JOptionPane, quan pregunta si vull desar les dades, he dit CANCEL, ens pregunta un altre cop si volem Sortir sense desar. Si diem CANCEL, ho deixa tot obert i si diem que sí, tanca i no s’hauran desat les dades.
- Totes les finestres tenen un títul adequat i la icona del Esteve Terradas.
- Crear fitxer de textes de l'apliació tal i com s'exposa a les especificacions no funcionals
- Implementar i llegir les claus: language, language_default, postfix_language_file_name per implementar el multillenguatge
- S'han de carregar els textos de l'aplicació segons el valor configurat al fitxer de configuració (cv_config.xml)
- Permetre que l'aplicació tingui tots el textes en Català o Castellà
- Afegir l'anglès com a idioma a l'aplicació
- A la pantalla resum s'ha d'afegir un botó per anar a crear un presupost nou que ens porti a la pantalla d'introducció de dades del client
- Al finalitzar un presupost i renombrar els fitxers fs_employee.txt i fs_employee.xml, hem de crear el fitxer fs_employee.txt i deixar-lo vuit
- Una vegada fet el login a l'aplicació, s'ha de comprobar si el fitxer que emmagatzema dades temporals (fs_employee.txt) té dades, si es així hem de carregar l'aplicació amb les dades temporals, sino continuem com fins ara
- Si hi ha dades al fitxer fs_employee.txt ha de sortir un missatge informant que hi ha dades temporals i si volem carregar-les. Si es que si carreguem les dades i accedim directament a la pantalla corresponent, si es que no esborrem el contigut del fitxer
- la versió del empleat queda desahibilitada, afegirem per configuració la clau (descompte) els valors nomès poden ser positius i s'indicarà en percentatge, el descompte màxim es d'un 21%
- Crea una clau (codis_descomptes) al fitxer de config que emmagatzemi tots els codis que son válids per aplicar un descompte
- A la pantalla d'accessoris crea un apartat per introduir un codi de descompte, si aquest es troba en el llistat, aplica el descompte corresponent
- Si es configura algun descompte més gran que 21% la aplicació ha de donar el missatge: "Ha hagut un problema amb el codi de descompte, si us plau, contacta amb l'administrador de l'aplicació
Especificacions funcionals
M6: Accès a dades
- A l'inici de l'apliació ha de carregar les configuracions inicials d'un fitxer xml anomenat cv_config.xml
- Genera una classe ConfigurationLoader que implementi el patró de diseny singleton que contigui totes las configuracions llegides des de cv_config.xml
- Implementar i llegir les claus: car_configuration_path, car_configuration_file_name, employee_list, employee_password, specifications_file_path
- L'aplicació ha de accedir al fitxer de configuració de vehicle que es un fitxer xml amb les dades de MODEL, MOTOR i ACCESORIS disponibles. Al menys hi ha d'haver 4 models (id, nom, descripció, imatge_nom, preu) 2 motors(id, nom, descripció, imatge_nom, preu) i 6 accesoris(id, nom, descripció, imatge_nom, preu, models_disponibles)
- Implementa el patró de diseny DAO per accedir al fitxer xml de configuració de vehicle. La implementació ha de permetre afegir, treure o modificar dades del fitxer en temps d'execució
- Crear fitxer de textes de l'apliació tal i com s'exposa a les especificacions no funcionals
- Permetre que l'aplicació tingui tots el textes en Català o Castellà
- Implementar i llegir les claus: language, language_default, postfix_language_file_name per implementar el multillenguatge
- Implementar i llegir les claus: version, employee_version
- S'han de carregar els textos de l'aplicació segons el valor configurat al fitxer de configuració (cv_config.xml)
- Per accedir a l'apliació s'ha d'introduir un nom vàlid, es a dir, un nom que aparegui a la llista employee_list del fitxer de configuració. Si el nom no apareix a la llista mostrar un missatge de error.
- Per accedir a l'aplicació a la versió per empleats a més del nom vàlid de l'empleat ha de introduir el password correcte i ha de estar activa la clau employee_version del fitxer de config
- Afegir l'anglès com a idioma a l'aplicació
- A mesura que es van seleccionant les opcions de configuració s'han d'anar guardant en el fitxer resum fs_employee.txt indicant a la primera linea del fitxer "Dades temporals" una vegada hem acabat la configuració s'ha de borrar la linea "Dades temporals"
- Quan s'acaba la configuració s'ha de generar el fitxer de presupost en format XML
- Quan s'acaba la configuració als fitxers fs_employee.txt i fs_employee.xml s'ha de canviar el nom a fs_employee_data_i_hora.txt i fs_employee_data_i_hora.xml
- Al finalitzar un presupost i renombrar els fitxers fs_employee.txt i fs_employee.xml, hem de crear el fitxer fs_employee.txt i deixar-lo vuit
- Una vegada fet el login a l'aplicació, s'ha de comprobar si el fitxer que emmagatzema dades temporals (fs_employee.txt) té dades, si es així hem de carregar l'aplicació amb les dades temporals, sino continuem com fins ara
- Si hi ha dades al fitxer fs_employee.txt ha de sortir un missatge informant que hi ha dades temporals i si volem carregar-les. Si es que si carreguem les dades i accedim directament a la pantalla corresponent, si es que no esborrem el contigut del fitxer
- La versió del empleat queda desahibilitada, afegirem per configuració la clau (descompte) els valors nomès poden ser positius i s'indicarà en percentatge, el descompte màxim es d'un 21%
- Crea una clau (codis_descomptes) al fitxer de config que emmagatzemi tots els codis que son válids per aplicar un descompte
- Si es configura algun descompte més gran que 21% la aplicació ha de donar el missatge: "Ha hagut un problema amb el codi de descompte, si us plau, contacta amb l'administrador de l'aplicació
M7: Disseny d'interficíes
- General:
- Totes les finestres tenen un títul adequat i la icona del Esteve Terradas.
- La finestra principal no es tanca mai ( obviament ) però les altres es van tancant a mesura que passem a la següent.
- Pantalles
- 1. PRIMERA PANTALLA.
- La primera pantalla de l’aplicació serveix pel logueixar-se.
- Quan el camp de password té el focus, si es clica la tecla ENTER ha de comprovar el password.
- Igualment comprovarà el passsword quan es polsi el botó ENTRAR.
- A partit d’estar logueixat, a la cantonada dreta superior de cada finestra, apareixerà el “Usuario: ‘nom_de_l’usuari’ “
- 2. SEGONA PANTALLA.
- La segona pantalla és per introduir les dades del client
- Els camps que porten * són obligatoris i no es pot passar a la següent pantalla si estan en blanc.
- El camp de correu electrònic , té un format propi de les adreces electròniques i no s’accepta res que no pugui ser un mail.
- Només es pot tenir seleccionat un gènere.
- Data de naixement obre un JCalendar.
- El botó “GUARDAR” fa les mateixes comprovacions que per passar a la següent pantalla.
- SI l’operació de guardar dades ha anat bé, mostrarà aquest fet amb un JOptionPane.
- El comportament a l’hora de tancar aquesta finestra ha d’oferir la possibilitat de sortir gravant les dades, sortir sense gravar i no sortir. Ho podeu fer com vulgueu.
- Una possibilitat és: Si tanco aquesta finestra em demana si vull desar les dades amb un JOptionPane amb opció OK.CANCEL. Si premo OK, es desen i em demana de nou si vull sortir. Si diu CANCEL, ens quedem i si diem Ok sortim. Si al primer JOptionPane, quan pregunta si vull desar les dades, he dit CANCEL, ens pregunta un altre cop si volem Sortir sense desar. Si diem CANCEL, ho deixa tot obert i si diem que sí, tanca i no s’hauran desat les dades
- La segona pantalla és per introduir les dades del client
- 3. TERCERA PANTALLA.
- La tercera pantalla serveix per escollir el model de cotxe de la marca SEAT:
- La part esquerra són botons amb la imatge del diferents model. Al prémer un , apareix a la part central la imatge amb bona resolució i un text resumint les seves característiques en un JTextArea.
- A sota els botons per continuar i tornar enrere amb el comportament normal. Per defecte, un model s’ha de considerar seleccionat i és el que apareix inicialment a la foto.
- 4. QUARTA PANTALLA.
- 5. CINQUENA PANTALLA.
- 6. SEXTA PANTALLA
- Al finalitzar es mostrarà una pantalla resum amb el resum del cotxe seleccionat i el preu final
- 1. PRIMERA PANTALLA.
Especifiacions no funcionals
- Es treballarà amb fitxers (no es poden fer servir bbdd)
- Contenido del fichero cv_config.xml:
- Clave: language, valores es, ca, en etc. Esta clave sirve para identificar el idioma en el que se quiere cargar el programa los valores (uno o más de uno) pueden estar separados por ',' la aplicación leerá los valores e intentará utilizar el primer idioma que encuentre, en caso de no estar disponible pasará al siguiente hasta acabar con todos los valores. Este valor puede ser nulo.
- Clave: language_default, valores es o ca o en, etc. Esta clave define el idioma por defecto y solo puede ser un único valor. En caso que la clave language sea nulo o se hayan intentado aplicar todos los idiomas proporcionados por la clave y no haya sido posible el idioma definido en este campo será el utilizado
- Clave: postfix_language_file_name valor un string que especifica el patrón para identificar los ficheros de idioma. (Ejemplo: postfix_language_file_name: _cv.language buscará ficheros con el formato es_cv.language, ca_cv.language o en_cv.language)
- Clave: version, valores un string con el siguiente formato #.#.# donde # = un número entre 0 y 9. El primer número solo se usará para cambios o modificaciones de las funcionales principales, el segundo número para ampliación de funcionalidades y el tercer número para inidicar corrección de errores
- Clave: language_files_path, valores la ruta donde estarán los ficheros de idiomas
- Clave: car_configuration_path, valor la ruta donde encontrar el fichero con las opciones de configuración de los vehículos
- Clave: car_configuration_file_name, valor el nombre del fichero con las opciones de configuración de los vehículos
- Clave: employee_list, valores lista separada por ',' con los nombres de los empleados que pueden acceder a la aplicación
- Clave: employee_version, valores True o False, si es False es la versión standart de la aplicación la que utilizaría un comercial para venderle un vehículo a un cliente. Si es True y la clave employee_password es correcto se aplicará un 20% de descuento al precio final y se indicará arriba en el centro de ventana que estas en la versión para empleados.
- Clave: employee_password, valores lista separada por ',' con los passwords de los empleados que pueden acceder a la aplicación
- Clave: specifications_file_path, valor un string con la ruta donde se guardarán los presupuestos generados, el nombre y formato del documento presupuesto|3| en el apartado anexos
- Formato de los ficheros de idiomas:
- Nombre: idioma_cv.language
- Formato: Clave-Valor, importante en todos los ficheros de idioma la clave ha de ser la misma. Ejemplo: clave: lbl_user_access valor es: "Nombre de usuario", valor ca: "Nom d'usuari", valor en: "User name"
- Nombre y formato del fichero de presupuestos:
- Nombre: fs_employee.txt
- Formato un fichero de texto con el resumen de los datos seleccionados en la aplicación desde la fase 0 a la fase final. En cada linea un dato en el formato clave:valor. Ejemplo: nombre: Leandro Hernán Zabala Iglesias. Los datos de cada fase están separados por una linea de guiones (------)
- Nombre y formato del fichero de presupuestos:
- Nombre: fs_employee.xml
- Formato un fichero en formato xml con el resumen de los datos seleccionados en la aplicación desde la fase 0 a la fase final.
Definition of Done (DOF)
- Tasca implementada
- Tasca testejada
- Tasca comitejada
- Tasca pujada a producció
Gestió de projecte
Sprint #1 (18 hores) 17/10/18 -- 24/10/18
- A l'inici de l'apliació ha de carregar les configuracions inicials d'un fitxer xml anomenat cv_config.xml
- Genera una classe ConfigurationLoader que implementi el patró de diseny singleton que contigui totes las configuracions llegides des de cv_config.xml
- Implementar i llegir les claus: car_configuration_path, car_configuration_file_name, employee_list, employee_password, specifications_file_path
- La primera pantalla de l’aplicació serveix pel logueixar-se.
- comprovarà el passsword quan es polsi el botó ENTRAR.
- Per accedir a l'apliació s'ha d'introduir un nom vàlid, es a dir, un nom que aparegui a la llista employee_list del fitxer de configuració. Si el nom no apareix a la llista mostrar un missatge de error.
- Implementar i llegir les claus: version, employee_version
- La segona pantalla és per introduir les dades del client
- Els camps que porten * són obligatoris i no es pot passar a la següent pantalla si estan en blanc.
- Només es pot tenir seleccionat un gènere.
- Per accedir a l'aplicació a la versió per empleats a més del nom vàlid de l'empleat ha de introduir el password correcte i ha de estar activa la clau employee_version del fitxer de config
- La tercera pantalla serveix per escollir el model de cotxe de la marca SEAT
- L'aplicació ha de accedir al fitxer de configuració de vehicle que es un fitxer xml amb les dades de MODEL, MOTOR i ACCESORIS disponibles. Al menys hi ha d'haver 4 models (id, nom, descripció, imatge_nom, preu) 2 motors(id, nom, descripció, imatge_nom, preu) i 6 accesoris(id, nom, descripció, imatge_nom, preu, models_disponibles)
Sprint #2 (24 hores) 24/10/18 -- 7/11/18
- Finalitzar les tasques del Sprint 1 (2 hores)
- Implementa el patró de diseny DAO per accedir al fitxer xml de configuració de vehicle. La implementació ha de permetre afegir, treure o modificar dades del fitxer en temps d'execució(2 hores)
- La part esquerra són botons amb la imatge del diferents model. Al prémer un , apareix a la part central la imatge amb bona resolució i un text resumint les seves característiques en un JTextArea.(1 hora)
- A sota els botons per continuar i tornar enrere amb el comportament normal. Per defecte, un model s’ha de considerar seleccionat i és el que apareix inicialment a la foto.(1 hora)
- A la quarta pantalla, apareix els submodels del model escollit a la pantalla anterior. Es mostra la informació en un JList ( cada opció és un String)(2 hores)
- En la següent es seleccionen els extres que es volen(3 hores)
- Al finalitzar es mostrarà una pantalla resum amb el resum del cotxe seleccionat i el preu final.(1 hora)
- A mesura que es van seleccionant les opcions de configuració s'han d'anar guardant en el fitxer resum fs_employee.txt indicant a la primera linea del fitxer "Dades temporals" una vegada hem acabat la configuració s'ha de borrar la linea "Dades temporals"(2 hores)
- Quan s'acaba la configuració s'ha de generar el fitxer de presupost en format XML(2 hores)
- Quan s'acaba la configuració als fitxers fs_employee.txt i fs_employee.xml s'ha de canviar el nom a fs_employee_data_i_hora.txt i fs_employee_data_i_hora.xml(1 hora)
- Quan el camp de password té el focus, si es clica la tecla ENTER ha de comprovar el password.(1 hora)
- El camp de correu electrònic , té un format propi de les adreces electròniques i no s’accepta res que no pugui ser un mail.(1 hora)
- El botó “GUARDAR” fa les mateixes comprovacions que per passar a la següent pantalla.(1 hora)
- SI l’operació de guardar dades ha anat bé, mostrarà aquest fet amb un JOptionPane.(1 hora)
- El comportament a l’hora de tancar aquesta finestra ha d’oferir la possibilitat de sortir gravant les dades, sortir sense gravar i no sortir. Ho podeu fer com vulgueu. Una possibilitat és: Si tanco aquesta finestra em demana si vull desar les dades amb un JOptionPane amb opció OK.CANCEL. Si premo OK, es desen i em demana de nou si vull sortir. Si diu CANCEL, ens quedem i si diem Ok sortim. Si al primer JOptionPane, quan pregunta si vull desar les dades, he dit CANCEL, ens pregunta un altre cop si volem Sortir sense desar. Si diem CANCEL, ho deixa tot obert i si diem que sí, tanca i no s’hauran desat les dades.(1 hora)
- Implementar i llegir les claus: language, language_default, postfix_language_file_name per implementar el multillenguatge (2 hores)