[init] Initial commit
This commit is contained in:
commit
115caa0218
8 changed files with 241 additions and 0 deletions
7
.gitignore
vendored
Normal file
7
.gitignore
vendored
Normal file
|
@ -0,0 +1,7 @@
|
|||
# Maven
|
||||
target/
|
||||
|
||||
# Eclipse
|
||||
.settings/
|
||||
.project
|
||||
.classpath
|
28
CONTRIBUTING.md
Normal file
28
CONTRIBUTING.md
Normal file
|
@ -0,0 +1,28 @@
|
|||
# Comment contribuer à ce projet
|
||||
2 cas sont possibles pour contribuer à ce projet:
|
||||
- Vous ête un étudiant et l'utilisez pour créer votre projet, dans ce cas reportez vous à [la section étudiant](#etudiant)
|
||||
- Vous êtes un enseignant améliorant ce modèle, dans ce cas reportez vous à [la section enseignant](#enseignant)
|
||||
|
||||
## Etudiant
|
||||
|
||||
Vous ne devez pas contribuer directement à ce projet mais devez en effectuer un fork. Une fois cela effectué vous devez:
|
||||
- [ ] Ajouter votre identifiant de groupe au champs `groupId` du fichier [pom.xml](pom.xml) sous la forme de `fr.u-paris.gla.votreequipe`
|
||||
- [ ] Modifier le package principal afin de refleter le nouveau nom de groupe.
|
||||
- [ ] Adapter le fichier [README](README.md) au contenu de votre projet specifique
|
||||
- [ ] Adapter ce fichier (CONTRIBUTING.md) à vos propres instructions de contribution, notamment:
|
||||
- [ ] Convention de style de codage
|
||||
- [ ] Convention d'utilisation de git
|
||||
- [ ] Lien avec d'autres projets et d'autres dépôts.
|
||||
- [ ] Modifier le fichier `application.properties` au besoin.
|
||||
|
||||
|
||||
## Enseignant
|
||||
|
||||
Ce dépôt suit la convention de gitflow. Les modifications doivent être effectuées dans des branches séparées,
|
||||
intégrées dans la branche dev une fois terminée.
|
||||
La branche main ne doit contenir que des versions stables de ce modèle.
|
||||
|
||||
Le code est écrit en Java, manipulé par l'outils de construction maven et doit suivre les conventions usuelles du langage et de l'outils.
|
||||
|
||||
Le package principal du code Java est `fr.u_paris.gla.project`
|
||||
Le fichier de properties `application.properties` permet d'accéder depuis le code Java aux diverses informations inscrite dans maven.
|
27
README.md
Normal file
27
README.md
Normal file
|
@ -0,0 +1,27 @@
|
|||
# Projet de GLA
|
||||
Version 2024
|
||||
|
||||
## Description
|
||||
Ceci est l'archetype de projet de Génie Logiciel Avancé (GLA).
|
||||
|
||||
Il s'agit d'un projet Java. Ce dépôt définit un système de build et une application simple. Il est nécéssaire de consulter le fichier [CONTRIBUTING.md](CONTRIBUTING.md) pour utiliser ce dépôt.
|
||||
|
||||
## Lancement du programme
|
||||
Ce projet utilise [maven](https://maven.apache.org/) de Apache pour la gestion de construction.
|
||||
|
||||
Afin de compiler et lancer les tests, éxecutez simplement
|
||||
```
|
||||
mvn verify
|
||||
```
|
||||
|
||||
Dans sa version initiale, le programme fournit est un simple code qui se lance en terminal ou en application graphique.
|
||||
|
||||
Une fois le programme compilé, vous trouverez un jar executable dans le dossier target. Au nom de jar près (version changeante), vous pourrez l'exécuter avec:
|
||||
```
|
||||
java -jar project-2024.1.0.0-SNAPSHOT.jar --info
|
||||
```
|
||||
|
||||
L'option de lancement `--info` causera l'affichage dans la console d'informations de l'application.
|
||||
|
||||
L'option de lancement `--gui` causera l'ouverture d'une fenêtre affichant le logo de l'Université de Paris.
|
||||
|
49
pom.xml
Normal file
49
pom.xml
Normal file
|
@ -0,0 +1,49 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
|
||||
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
|
||||
<groupId>fr.u-paris.gla</groupId>
|
||||
<artifactId>project</artifactId>
|
||||
<version>2024.1.0.0-SNAPSHOT</version>
|
||||
|
||||
<name>Project Base</name>
|
||||
|
||||
<properties>
|
||||
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
|
||||
<maven.compiler.source>17</maven.compiler.source>
|
||||
<maven.compiler.target>17</maven.compiler.target>
|
||||
</properties>
|
||||
|
||||
<dependencies>
|
||||
<dependency>
|
||||
<groupId>org.junit.jupiter</groupId>
|
||||
<artifactId>junit-jupiter</artifactId>
|
||||
<version>5.9.1</version>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
|
||||
<build>
|
||||
<plugins>
|
||||
<plugin>
|
||||
<groupId>org.apache.maven.plugins</groupId>
|
||||
<artifactId>maven-jar-plugin</artifactId>
|
||||
<version>3.3.0</version>
|
||||
<configuration>
|
||||
<archive>
|
||||
<manifest>
|
||||
<addClasspath>true</addClasspath>
|
||||
<mainClass>fr.u_paris.gla.project.App</mainClass>
|
||||
</manifest>
|
||||
</archive>
|
||||
</configuration>
|
||||
</plugin>
|
||||
</plugins> <resources>
|
||||
<resource>
|
||||
<directory>src/main/resources-filtered</directory>
|
||||
<filtering>true</filtering>
|
||||
</resource>
|
||||
</resources>
|
||||
</build>
|
||||
</project>
|
113
src/main/java/fr/u_paris/gla/project/App.java
Normal file
113
src/main/java/fr/u_paris/gla/project/App.java
Normal file
|
@ -0,0 +1,113 @@
|
|||
package fr.u_paris.gla.project;
|
||||
|
||||
import java.awt.Graphics2D;
|
||||
import java.awt.Image;
|
||||
import java.awt.RenderingHints;
|
||||
import java.awt.image.BufferedImage;
|
||||
import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
import java.io.PrintStream;
|
||||
import java.util.Properties;
|
||||
|
||||
import javax.imageio.ImageIO;
|
||||
import javax.swing.ImageIcon;
|
||||
import javax.swing.JFrame;
|
||||
import javax.swing.JLabel;
|
||||
import javax.swing.WindowConstants;
|
||||
|
||||
/** Simple application model.
|
||||
*
|
||||
* @author Emmanuel Bigeon */
|
||||
public class App {
|
||||
/**
|
||||
*
|
||||
*/
|
||||
private static final String UNSPECIFIED = "Unspecified"; //$NON-NLS-1$
|
||||
/** The logo image name. */
|
||||
private static final String LOGO_NAME = "uparis_logo_rvb.png"; //$NON-NLS-1$
|
||||
/** Image height. */
|
||||
private static final int HEIGHT = 256;
|
||||
/** Image width. */
|
||||
private static final int WIDTH = HEIGHT;
|
||||
|
||||
/** Resizes an image.
|
||||
*
|
||||
* @param src source image
|
||||
* @param w width
|
||||
* @param h height
|
||||
* @return the resized image */
|
||||
private static Image getScaledImage(Image src, int w, int h) {
|
||||
BufferedImage resizedImg = new BufferedImage(w, h, BufferedImage.TYPE_INT_RGB);
|
||||
Graphics2D g2d = resizedImg.createGraphics();
|
||||
g2d.setRenderingHint(RenderingHints.KEY_INTERPOLATION,
|
||||
RenderingHints.VALUE_INTERPOLATION_BILINEAR);
|
||||
g2d.drawImage(src, 0, 0, w, h, null);
|
||||
g2d.dispose();
|
||||
return resizedImg;
|
||||
}
|
||||
|
||||
/** Application entry point.
|
||||
*
|
||||
* @param args launching arguments */
|
||||
public static void main(String[] args) {
|
||||
if (args.length > 0) {
|
||||
for (String string : args) {
|
||||
if ("--info".equals(string)) { //$NON-NLS-1$
|
||||
printAppInfos(System.out);
|
||||
return;
|
||||
}
|
||||
if ("--gui".equals(string)) { //$NON-NLS-1$
|
||||
showLogo();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/** @param out */
|
||||
public static void printAppInfos(PrintStream out) {
|
||||
Properties props = new Properties();
|
||||
try (InputStream is = App.class.getResourceAsStream("application.properties")) { //$NON-NLS-1$
|
||||
props.load(is);
|
||||
} catch (IOException e) {
|
||||
throw new RuntimeException("Unable to read application informations", e); //$NON-NLS-1$
|
||||
}
|
||||
|
||||
out.println("Application: " + props.getProperty("app.name", UNSPECIFIED)); //$NON-NLS-1$ //$NON-NLS-2$
|
||||
out.println("Version: " + props.getProperty("app.version", UNSPECIFIED)); //$NON-NLS-1$ //$NON-NLS-2$
|
||||
out.println("By: " + props.getProperty("app.team", UNSPECIFIED)); //$NON-NLS-1$ //$NON-NLS-2$
|
||||
}
|
||||
|
||||
/** Shows the logo in an image. */
|
||||
public static void showLogo() {
|
||||
Properties props = new Properties();
|
||||
try (InputStream is = App.class.getResourceAsStream("application.properties")) { //$NON-NLS-1$
|
||||
props.load(is);
|
||||
} catch (IOException e) {
|
||||
throw new RuntimeException("Unable to read application informations", e); //$NON-NLS-1$
|
||||
}
|
||||
|
||||
JFrame frame = new JFrame(props.getProperty("app.name")); //$NON-NLS-1$
|
||||
frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
|
||||
|
||||
JLabel container = new JLabel();
|
||||
|
||||
try (InputStream is = App.class.getResourceAsStream(LOGO_NAME)) {
|
||||
if (is == null) {
|
||||
container.setText("Image Not Found");
|
||||
} else {
|
||||
BufferedImage img = ImageIO.read(is);
|
||||
ImageIcon icon = new ImageIcon(img);
|
||||
ImageIcon resized = new ImageIcon(getScaledImage(icon.getImage(), WIDTH, HEIGHT));
|
||||
|
||||
container.setIcon(resized);
|
||||
}
|
||||
} catch (IOException e) {
|
||||
container.setText("Image Not Read: "+e.getLocalizedMessage());
|
||||
}
|
||||
|
||||
frame.getContentPane().add(container);
|
||||
|
||||
frame.pack();
|
||||
frame.setVisible(true);
|
||||
}
|
||||
}
|
|
@ -0,0 +1,3 @@
|
|||
app.name=${name}
|
||||
app.version=${version}
|
||||
app.team=No team
|
BIN
src/main/resources/fr/u_paris/gla/project/uparis_logo_rvb.png
Normal file
BIN
src/main/resources/fr/u_paris/gla/project/uparis_logo_rvb.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 13 KiB |
14
src/test/java/fr/u_paris/gla/project/AppTest.java
Normal file
14
src/test/java/fr/u_paris/gla/project/AppTest.java
Normal file
|
@ -0,0 +1,14 @@
|
|||
package fr.u_paris.gla.project;
|
||||
|
||||
import static org.junit.jupiter.api.Assertions.assertTrue;
|
||||
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
||||
/** Unit test for simple App. */
|
||||
public class AppTest {
|
||||
/** Rigorous Test :-) */
|
||||
@Test
|
||||
public void shouldAnswerWithTrue() {
|
||||
assertTrue(true);
|
||||
}
|
||||
}
|
Reference in a new issue