Skip to content

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.

License

Notifications You must be signed in to change notification settings

josueelias9/__java__analyse-concurrency-of-employees

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

42 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Proyecto

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.

Entregable

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.

Datos

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.

Arquitectura del proyecto

                +--------+                  +--------+       
                |        |                  |        |       
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)

palabras claves...

  • 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

logica del backend

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)

logica de fecha

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.

Estructura del repositorio

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)

Deploy

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.

links

java

top programming language 2022 link

refencia oficial

teoria

  • final vs abstract link
  • private vs default vs protected vs public link
  • entity link
  • arquitectura de spring boot (no oficial) link
  • arquitectura spring + react link

About

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.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published