Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[uml] Scripts for rendering images files from _plantuml_ files #10

Merged
merged 5 commits into from
Sep 1, 2021
Merged
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
11 changes: 11 additions & 0 deletions diagrams/classes/clase_localize.plantuml
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
@startuml

class Localize {
# esContent : String
# usContent : String

+ Localize(String esContent, String usContent)
+ String greet(String lang) : String
}

@enduml
Binary file added diagrams/classes/clase_localize.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
8 changes: 8 additions & 0 deletions diagrams/classes/clase_mensaje.plantuml
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
@startuml

class Mensaje {
+ Mensaje(String esContent, String usContent)
+ String greet() : String
}

@enduml
Binary file added diagrams/classes/clase_mensaje.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
26 changes: 26 additions & 0 deletions diagrams/classes/herencia.plantuml
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
@startuml

!include ../variables.txt
!include clase_localize.plantuml
!include clase_mensaje.plantuml

title $MiVar\n

Localize <|-- Mensaje

note left of Mensaje
Plantuml soporta inclusión de archivos y
utilización de variables!!

Esto les permite definir sus clases y
las relaciones en archivos separados.

Por ejemplo "MiClaseNombre" no se encuentra
definida en este archivo.

NOTA:
Les recomendamos implementar esta herramienta
para mitigar los errores de inconsistencia en los
diagramas uml.
end note
@enduml
Binary file added diagrams/classes/herencia.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Empty file added diagrams/packages/.gitkeep
Empty file.
Empty file added diagrams/sequences/.gitkeep
Empty file.
Empty file added diagrams/states/.gitkeep
Empty file.
1 change: 1 addition & 0 deletions diagrams/variables.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
!$MiVar = "<valor variable 'MiVar'>"
4 changes: 4 additions & 0 deletions docs/Desarrollo.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,10 @@ Existen distintas maneras de configurar el ambiente de desarrollo:
- [Nativo](./Nativo.md)
- [Docker](./Docker.md)

### Diagramas
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Se puede poner solo dos #? Como para que quede con el mismo tamaño que el resto de los títulos


[Plantuml](https://plantuml.com/) soporta un mecanísmo que les facilitará la generación y posterior mantenimiento de los diagramas de clase, secuencia, estado y paquetes. Para mayor información referir [guía de PlantUML](./docs/PLANTUML.md)

## Empaquetado

Cuando se genera un **tag** que comienza con `v` (ejemplo `v0.0.1`) automáticamente se produce un [release](https://github.com/fiuba/algo3_proyecto_base_tp2/releases) con la aplicación empaquetada. Para el nombre de la versión se recomienda utilizar [versionado semántico](https://semver.org/lang/es/), por ejemplo:
Expand Down
73 changes: 73 additions & 0 deletions docs/PlantUML.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,73 @@
# Diagramas UML


**Recomendamos la utilización de PlantUML por las siguientes razones**:

- Se pueden versionar los distintos diagramas
- Existen herramientas que lo interpretan y no requiere la instalación de un software. Ver [aquí](#editor-online)
- La utilización de `include` y *variables* facilita la actualización de los diagramas

## Herramientas

### Plantuml

Para trabajar localmente con [Plantuml](https://plantuml.com/) necesitará instalar la aplicación java. Las instrucciones las encontrarán [aquí](https://plantuml.com/starting).

### Script de traducción

Utilizando el script `render_diagrams.sh` se pueden generar los archivos `*.png` asociados a cada uno de los diagramas cuyo archivo es `*.plantuml`.

Este script inspecciona la carpeta `diagrams/`.

Forma de ejecución:

```bash
scripts/render_diagrams.sh
```
Comment on lines +24 to +26
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Se puede agregar un $ al principio? Solo para que quede igual que otros ejemplos del readme

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Se puede agregar un $ al principio? Solo para que quede igual que otros ejemplos del readme

Me siento discriminado como usuario de zsh XD

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Jajaj podemos cambiarlo! Pero habría que hacerlo con todos


**Nota 1:**

El script requiere que la herramienta [plantuml](#plantuml) esté instalada.

**Nota 2:**

No contamos con un script para sistemas operativos Windows. Cualquier colaboración es aceptada. Para más información revisar [guía de desarrollo](../docs/Desarrollo.md).

### Editor online

**Nota:**
Es útil para pequeños ensayos de notación.

- [Plantuml Editor](https://plantuml-editor.kkeisuke.com/)
- [Plant Text](https://www.planttext.com/)

### IDE como editor

Existen múltiples plugins para interpretar estos archivos


| Herramienta | Version | Plugin | Version |
|---------------------------|:-------:|------------------------------------------|:--------------:|
| [VSCode][external_vscode] | v1.58.0 | [Plantuml extension][external_pplantuml] | v2.15.1 |
| [Idea][external_idea] | 2020.3 | [Plantuml plugin][external_iplantuml] | v2.15.2/v5.5.1 |
| [Emacs][external_emacs] | ? | [Plugin][external_emacs_plugin] | ? |

## Ventajas

[Plantuml](https://plantuml.com/) nos permite utilizar inclusión de archivos y utilización de variables!

Esto les permitiría definir sus clases (una única vez) y utilizarlas en la definición de sus relaciones.

Aquí pueden econtrar un ejemplo [ejemplo](../diagrams/)

**Sugerencia:**

Les recomendamos implementar esta herramienta para mitigar los errores de inconsistencia en los diagramas uml.

[external_vscode]: https://code.visualstudio.com/Download
[external_idea]: https://www.jetbrains.com/idea/
[external_emacs]: https://www.gnu.org/software/emacs/
[external_iplantuml]: https://plugins.jetbrains.com/plugin/7017-plantuml-integration
[external_pplantuml]: https://marketplace.visualstudio.com/items?itemName=jebbs.plantuml
[external_emacs_plugin]: https://plantuml.com/emacs

17 changes: 17 additions & 0 deletions scripts/render_diagrams.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
#!/bin/sh

diagramsPath="diagrams"

echo 'AVERTENCIA!!!'
echo
echo "Todos los archivos '*.png' dentro de \"$diagramsPath\" serán borrados."
echo "Se regeneraran a partir de los archivos '*.plantuml'."
echo

read -t 3 -n 1 -p "Desea continuar (y/N)? " answer
[ -z "$answer" ] && answer="n"

if [ "$answer" == "y" ]
then
find $diagramsPath -name '*.plantuml' -exec plantuml -v {} \;
fi
20 changes: 20 additions & 0 deletions src/main/java/edu/fiuba/algo3/modelo/Localize.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
package edu.fiuba.algo3.modelo;

public class Localize {
protected final String esContent;
protected final String usContent;

public Localize(String esContent, String usContent) {
this.esContent = esContent;
this.usContent = usContent;
}

public String greet(String lang) {
if (lang.equals("us")) {
return usContent;
}

return esContent;
}

}
9 changes: 4 additions & 5 deletions src/main/java/edu/fiuba/algo3/modelo/Message.java
Original file line number Diff line number Diff line change
@@ -1,13 +1,12 @@
package edu.fiuba.algo3.modelo;

public class Message {
private final String content;
public class Message extends Localize {

public Message(String content) {
this.content = content;
public Message(String esContent, String usContent) {
super(esContent, usContent);
}

public String greet() {
return content;
return super.greet("es");
}
}
11 changes: 9 additions & 2 deletions src/main/test/edu/fiuba/algo3/modelo/MessageTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,15 @@
public class MessageTest {
@Test
public void messageGreeting() {
Message message = new Message("Hello world!");
Message message = new Message("Hola Mundo!", "Hello world!");

assertEquals("Hello world!", message.greet());
assertEquals("Hello world!", message.greet("us"));
}

@Test
public void messageGreetingDefaultLanguage() {
Message message = new Message("Hola Mundo!", "Hello world!");

assertEquals("Hola Mundo!", message.greet());
}
}