Hacer un programa usando el lenguaje Java que determine los intervalos de tiempo (mes, dia hora y minutos) donde no hay personal trabajando en la empresa IPTP. El programa debe ser capaz de hacer este calculo en el rango enero 2015 hasta diciembre 2015.
Despues de ejecutar el programa y considerando que el algoritmo hace la evaluacion en el todo el año 2015, se llevo a la siguiente conclusion:
No hay personal trabajando desde:
- el primero de enero a las 0:00 horas hasta el 19 de enero al medio dia en punto.
- el 20 de enero a las 4:00 horas hasta el 20 de enero a las 6:00 horas.
- el 27 de enero a las 23:59 horas hasta el 1 de enero a las 0:00 del 2016.
generales:
- cliente: IPTP network
- desarrollador: Josué Huamán
- fecha inicio: 25 de marzo a las 11:48 minutos
- fecha fin: 28 de marzo a las 23:59 minutos
- lenguage solicitado: Java
tecnicos:
- sistema operativo: Ubuntu Linux
- lenguaje: java
- framework: spring y bootstrap
- herramientas: Visual studio code, thunder client, spring initalizer, crhome developer tool, git, etc.
+--------+ +--------+
| | | |
xml file --> |frontend| API (json) --> |backend |
| | <-- API (json) | |
+--------+ +--------+
fetch spring controller
- backend:
- lenguaje de programacion: Java
- framwork: Spring-boot (JPA, Web app)
- patrones de diseño: Facade y Adapter (GoF)
- frontend:
- lenguge: Javascript
- framework: Bootstrap (framwork de CSS)
- rango: es el espacio de tiempo donde SI hay alguien trabajando.
- intervalo: es el espacio de tiempo donde NO hay nadie trabajando.
- espacio de tiempo: se define como unn objeto de la clase Intervalo
Al inicio se tendra un solo intervalo. Al ingresar los rangos de horarios se iran dividiendo, acortando o eliminando segun sea el caso:
i = punto inferior del rango
s = punto superior del rango
a = punto inferior del intervalo
b = punto superior del intervalo
caso 1
i s
|======| rango de hora ingresado
a b
*----------------------* intervalo
*------* *--------* resultado
caso 2
i s
|======| rango de hora ingresado
a b
*----------------------* intervalo
*-------------------* resultado
caso 3
i s
|======| rango de hora ingresado
a b
*----------------------* intervalo
*-------------------* resultado
caso 4
i s
|==============================| rango de hora ingresado
a b
*----------------------* intervalo
resultado
caso 5
i s
|======| rango de hora ingresado
a b
*----------------------* intervalo
*----------------------* resultado
caso 6
i s
|======| rango de hora ingresado
a b
*----------------------* intervalo
*----------------------* resultado
i dentro de intervalo | s dentro de intervalo | ni i ni s dentro de intervalo | intervalo | |
---|---|---|---|---|
caso 1 | si | si | x | se divide |
caso 2 | no | si | x | se acorta (por la izquierda) |
caso 3 | si | no | x | se acorta (por la derecha) |
caso 4 | no | no | i < a && b < s | se elimina (uno menor y otro mayor) |
caso 5 | no | no | b < i | no se toca (ambos mayores) |
caso 6 | no | no | s < a | no se toca (ambos menores) |
El dato que recibimos son minutos. Estos tenemos que convertirlos a fecha. Para ello consideramos que los dias varian segun el mes:
dias de los meses del 2015:
- 31 enero
- 28 febrero
- 31 marzo
- 30 abril
- 31 mayo
- 30 junio
- 31 julio
- 31 agosto
- 30 septiembre
- 31 octubre
- 30 noviembre
- 31 diciembre
Con esto claro, queda calcular a partir de los minutos cuandos meses, dias y horas han pasado.
Dentro de la carpeta /main/java/payroll se encuentra las clases de Java que hacen la logica del ejercicio.
|-- frontend (frontend :D)
|-- README.md (documentacion)
|-- input (carpeta con el XML de la empresa)
|-- payroll (backend - spring bot)
|-- pom.xml (dependencias del proyecto)
|-- src
|-- main
|-- java
|-- payroll
|-- Fecha.java (clase propia para la logica)
|-- Logica.java (clase propia para la logica)
|-- Intervalo.java (clase propia para la logica)
|-- Facade.java (clase propia para la logica)
|-- MiTest.java (clase propia para la logica)
descargar este repositorio y ejecutar los siguientes comandos (Ubuntu):
cd (ubicacion del repositorio)/java/payroll
./mvnw spring-boot:run
Con esto se instalaran las dependencias del backend y se levantara el puerto 8080 para que el frontend pueda consumir de el. Luego ir a la carpeta:
cd (ubicacion del repositorio)/java/frontend
dar doble click al archivo post.html y se abrira la pagina con el aplicativo desarrollado. Dar click donde dice Seleccionar archivo. Ir a la carpeta input y seleccionar el archivo data_java-2.xml. Este fue el archivo que nos dio la empresa. En la parte inferior se verán los rangos donde no hay personal trabajando.
top programming language 2022 link