Skip to content

Commit

Permalink
Merge branch 'refs/heads/main' into Sonar-Fixes
Browse files Browse the repository at this point in the history
# Conflicts:
#	.gitignore
#	Sivatagi vizhalozatok uzemeltetese a gyakorlatban 2/src/Controll/Menu.java
#	Sivatagi vizhalozatok uzemeltetese a gyakorlatban 2/src/Controll/ViewGame.java
#	Sivatagi vizhalozatok uzemeltetese a gyakorlatban 2/src/Controll/WaterCounter.java
#	src/palya.txt
  • Loading branch information
voroscsoki committed May 21, 2024
2 parents 64955c1 + 61abcd1 commit fd1d517
Show file tree
Hide file tree
Showing 134 changed files with 1,633 additions and 66 deletions.
38 changes: 38 additions & 0 deletions .github/workflows/maven.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
# This workflow will build a Java project with Maven, and cache/restore any dependencies to improve the workflow execution time
# For more information see: https://docs.github.com/en/actions/automating-builds-and-tests/building-and-testing-java-with-maven

# This workflow uses actions that are not certified by GitHub.
# They are provided by a third-party and are governed by
# separate terms of service, privacy policy, and support
# documentation.

name: Java CI with Maven

on:
push:
branches:
- '*'
pull_request:
branches:
- '*'
workflow_dispatch:
branches:
- '*' # Allow manual triggering of workflow


jobs:
build:
runs-on: ubuntu-latest

steps:
- name: Checkout code
uses: actions/checkout@v3

- name: Set up JDK 11
uses: actions/setup-java@v3
with:
java-version: '11'
distribution: 'adopt'

- name: Build with Maven
run: mvn -f "./Sivatagi vizhalozatok uzemeltetese a gyakorlatban 2/pom.xml" clean verify package
4 changes: 4 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
*.iml
*.class
*.xml
!pom.xml
*.bat
*.name
*.project
Expand All @@ -10,4 +11,7 @@
*.out
*.OUT
/bin/
.idea/
.idea/*
out/production/iet-hf-2024-tizenhat_tonna/palya.txt
/target

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Empty file.
Binary file not shown.
24 changes: 24 additions & 0 deletions Sivatagi vizhalozatok uzemeltetese a gyakorlatban 2/doc/ci-cd.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
# Vízhálózat játék CI-CD

Ez a dokumentum leírja a projekthez készített és felhasznált CI-CD rendszereket. A megvalósítás fő vektora a GitHub Actions volt.

## Részfeladatok
# 1. Maven beüzemelése
Az eredeti projekt Mavent használt a program fordításához és futtatásához. Ez többnyire működőképes volt, de a pom.xml fájlon változtatni kellett a kívánt hatás eléréséhez.

Fel kellett venni a maven compiler és jar pluginokat, ezek segítségével a projekt forráskódja fordítható, és további függőségektől mentes, önálló .jar fájlba csomagolható.
A kapott fájl bármilyen, a Java 11-es verzióját támogató környezetben futtatható, JDK telepítése nélkül, kizárólag a JRE használatával.

# 2. GitHub Actions
A GitHub Actions lehetővé teszi repository-k automata tesztelését, ellenőrzését, futtatását. A projekt másik egységében ezt a SonarCloud-hoz is kihasználtuk.

Az általam létrehozott action a következő lépéseket hajtja végre:
1. A legújabb stabil Ubuntu verzió használata
2. A projekt forráskódjának lemásolása
3. 11-es verziójú AdoptOpenJDK telepítése
4. A projekt buildelése a maven pom fájl segítségével, tesztekkel, tisztítással és csomagolással

Amennyiben ezek a lépések mind sikeresek, nagy bizonyossággal állíthatjuk, hogy a projekt futtatható a specifikált környezetben.
A sikert zöld pipa jelzi, a hibát piros X; ez utóbbi esetben értesítést kapunk a repository beállításai szerint.

Wendl Csongor (HZERYX) - 2024
28 changes: 28 additions & 0 deletions Sivatagi vizhalozatok uzemeltetese a gyakorlatban 2/doc/docker.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
# Vízhálózat játék deployment (Docker)

Ez a dokumentum leírja a projekthez készített és felhasznált konténerizációs és deploy megoldásokat. A megvalósítás fő vektora a Docker volt.

## Részfeladatok
# 1. Dockerfile készítése
A dockerfile írja le, hogy egy adott docker image elkészítéséhez milyen lépéseket kell végrehajtani. Ebben az esetben a lépések a következők:
- standard docker maven+openjdk11 image használatával:
- a projekt forráskódjának lemásolása, buildelése
- standard docker openjdk11 image használatával:
- xauth és egyéb függőségek telepítése (lásd lejjebb: X11)
- X11 kijelző célpont beállítása (docker virtuális)
- kész .jar és adatfájlok másolása
- VNC port nyitása
- jar file futtatása
# 2. Docker image futtatása
A docker image buildelhető így:
docker build -t IMAGE_NÉV .
A docker image futtatása a következő paranccsal történik:
docker run -e DISPLAY=host.docker.internal:0.0 --name CONTAINER_NÉV IMAGE_NÉV

A program ezután natív ablakként jelenik meg a host gépen és játszható.

# Információ: X11
Az X11 kijelzőszerver Unix rendszereken gyári felszereltségnek tekinthető, viszont Windows esetében ez nem adott. A program csakis grafikus felülettel rendelkezik, így a futtatáshoz elengedhetetlen az X11 szerver megléte.
Windowson erre például az Xming alkalmas, telepítése és futtatása elegendő. A dockerfile beállítja a megfelelő dockeres virtuális kijelzőt, ennek eredményeként a játék natív Windows ablakként jelenik meg és játszható.

Wendl Csongor (HZERYX) - 2024
28 changes: 28 additions & 0 deletions Sivatagi vizhalozatok uzemeltetese a gyakorlatban 2/dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
# Build with maven
FROM maven:3.8.6-openjdk-11 AS builder

WORKDIR /app
COPY pom.xml .
COPY src ./src

RUN mvn clean package

# Create the runtime image
FROM openjdk:11

RUN apt-get update && apt-get install -y \
xauth \
libxrender1 \
libxtst6 \
libxi6

# X11 env variable
ENV DISPLAY=host.docker.internal:0.0

WORKDIR /app
COPY --from=builder /app/target/*.jar /app/app.jar
COPY --from=builder /app/src/palya.txt /app/src/palya.txt

# Expose VNC port
EXPOSE 5800 5900
CMD ["java", "-jar", "/app/app.jar"]
71 changes: 71 additions & 0 deletions Sivatagi vizhalozatok uzemeltetese a gyakorlatban 2/pom.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,71 @@
<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>hu.bme.mit.iet.hf.2024.tizenhat_tonna</groupId>
<artifactId>hu.bme.mit.iet.hf.2024.tizenhat_tonna</artifactId>
<version>0.5.0-SNAPSHOT</version>

<properties>
<sonar.organization>bme-mit-iet-org</sonar.organization>
<sonar.host.url>https://sonarcloud.io</sonar.host.url>
</properties>

<dependencies>
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter</artifactId>
<version>5.8.2</version>
</dependency>
<dependency>
<groupId>org.mockito</groupId>
<artifactId>mockito-core</artifactId>
<version>4.4.0</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.jacoco</groupId>
<artifactId>jacoco-maven-plugin</artifactId>
<version>0.8.7</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>io.cucumber</groupId>
<artifactId>cucumber-java</artifactId>
<version>7.17.0</version>
</dependency>

</dependencies>

<build>
<sourceDirectory>src</sourceDirectory>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.10.1</version>
<configuration>
<release>11</release>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>3.4.1</version>
<configuration>
<archive>
<manifest>
<addClasspath>true</addClasspath>
<mainClass>Controll.ViewGame</mainClass>
</manifest>
</archive>
</configuration>
</plugin>

<!-- JUnit 5 requires Surefire version 2.22.1 or higher -->
<plugin>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.22.2</version>
</plugin>
</plugins>
</build>
</project>
Original file line number Diff line number Diff line change
Expand Up @@ -64,6 +64,9 @@ private Controller() {}
* Getter for test
* */
public static boolean isTest() {return test;}

public static void setTest(boolean value){ test = value;}

/**
* Name of the used file
* */
Expand Down Expand Up @@ -240,9 +243,11 @@ public static void Game() throws FileNotFoundException {
public static void load(String cmd){
try(Scanner scanner = new Scanner(new File(cmd))) {
outResults.clear();
logger.log(Level.INFO, cmd);

filePath = cmd;
System.out.println(cmd);
String rootDirectory = System.getProperty("user.dir");
String modifiedPath=cmd.replace("/", File.separator).replace("\\", File.separator);
Scanner scanner = new Scanner(new File(rootDirectory+File.separator+"Sivatagi vizhalozatok uzemeltetese a gyakorlatban 2"+ File.separator+modifiedPath));
filePath = modifiedPath;
String separator = "\\";
String[] tmp=cmd.replaceAll(Pattern.quote(separator), "\\\\").split("\\\\");
fileName = tmp[tmp.length-1];
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,8 @@
import javax.swing.WindowConstants;

import java.io.FileNotFoundException;
import java.util.ArrayList;
import java.util.List;

import javax.swing.JFrame;
import javax.swing.JTextField;
Expand All @@ -14,7 +16,6 @@


public class Menu extends JFrame implements ActionListener {
private String currentTheme;
private JButton newGame;
private JButton exitGame;
private JButton theme;
Expand All @@ -23,6 +24,8 @@ public class Menu extends JFrame implements ActionListener {
private JTextField mechanic;
private JTextField saboteur;

public static ViewGame vg;

/**
* konstruktor
* @param name az ablak neve
Expand Down Expand Up @@ -113,6 +116,27 @@ public void changeTheme(String s) {
}
}

public JButton getThemeButton() {
return theme;
}

public JButton getPlayButton() {
return newGame;
}

public ArrayList<JButton> getActionButtons() {
ArrayList<JButton> actionButtons = new ArrayList<JButton>();
if (vg == null) return actionButtons;

actionButtons.add(vg.repairButton);
actionButtons.add(vg.breakButton);
actionButtons.add(vg.makeSlipperyButton);
actionButtons.add(vg.makeStickyButton);
actionButtons.add(vg.putDownButton);

return actionButtons;
}

@Override
public void actionPerformed(ActionEvent e) {

Expand All @@ -139,7 +163,7 @@ public void actionPerformed(ActionEvent e) {
Controller.create();
Controller.setActivePlayer(Controller.getAllPlayers().get(0));
this.dispose();
ViewGame vg = new ViewGame();
vg = new ViewGame();
vg.setBackgroundColor(currentTheme);
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -44,14 +44,14 @@ public class ViewGame extends JFrame implements ActionListener {
/**
* Controll buttons
*/
JButton moveButton;
JButton repairButton;
JButton breakButton;
JButton makeSlipperyButton;
JButton makeStickyButton;
JButton pickUpButton;
JButton putDownButton;
JButton setPumpButton;
static JButton moveButton;
static JButton repairButton;
static JButton breakButton;
static JButton makeSlipperyButton;
static JButton makeStickyButton;
static JButton pickUpButton;
static JButton putDownButton;
static JButton setPumpButton;

/**
* Last action
Expand Down Expand Up @@ -121,13 +121,27 @@ public void actionPerformed(ActionEvent e) {
}
};

public static Menu menu;

/**
* Main method
* @param args
*/
public static void main(String[] args){
Menu menu = new Menu("Menu", "White");
// measure startup time
long startTime = System.currentTimeMillis();

menu = new Menu("Menu", "White");
menu.showMenu();

// measure startup time
long endTime = System.currentTimeMillis();
long duration = endTime - startTime;
System.out.println("Startup time: " + duration + "ms");
}

public static Menu getMenuInstance() {
return menu;
}

/**
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -61,6 +61,13 @@ public void reset(){
* @return mechanic - Points of the mechanics.
*/
public int getMechanic() { return mechanic; }

public ArrayList<Cistern> getCisterns() { return cisterns; }

public ArrayList<Pipe> getPipes() { return pipes; }

public boolean getEnd() { return end; }

/**
*Adds new Cistern to cisterns.
* @param c Cistern that is to be added to cisterns.
Expand Down
Loading

0 comments on commit fd1d517

Please sign in to comment.