diff --git a/.gitignore b/.gitignore index 7d8040d..549e00a 100644 --- a/.gitignore +++ b/.gitignore @@ -1,10 +1,10 @@ -### IntelliJ IDEA ### -.idea/ -out/ -*.iml -.kotlin +HELP.md +target/ +!.mvn/wrapper/maven-wrapper.jar +!**/src/main/**/target/ +!**/src/test/**/target/ -### Eclipse ### +### STS ### .apt_generated .classpath .factorypath @@ -12,7 +12,12 @@ out/ .settings .springBeans .sts4-cache -bin/ + +### IntelliJ IDEA ### +.idea +*.iws +*.iml +*.ipr ### NetBeans ### /nbproject/private/ @@ -20,19 +25,9 @@ bin/ /dist/ /nbdist/ /.nb-gradle/ +build/ +!**/src/main/**/build/ +!**/src/test/**/build/ ### VS Code ### .vscode/ - -### Gradle ### -.gradle/ -build/ - -### Maven ### -target/ - -### Ant ### -/build/ - -### Mac OS ### -.DS_Store \ No newline at end of file diff --git a/.idea/.gitignore b/.idea/.gitignore deleted file mode 100644 index ab1f416..0000000 --- a/.idea/.gitignore +++ /dev/null @@ -1,10 +0,0 @@ -# Default ignored files -/shelf/ -/workspace.xml -# Ignored default folder with query files -/queries/ -# Datasource local storage ignored files -/dataSources/ -/dataSources.local.xml -# Editor-based HTTP Client requests -/httpRequests/ diff --git a/.idea/misc.xml b/.idea/misc.xml deleted file mode 100644 index 3b13036..0000000 --- a/.idea/misc.xml +++ /dev/null @@ -1,14 +0,0 @@ - - - - - - - - - - \ No newline at end of file diff --git a/.idea/vcs.xml b/.idea/vcs.xml deleted file mode 100644 index 94a25f7..0000000 --- a/.idea/vcs.xml +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/Cyber Ecosystem.iml b/Cyber Ecosystem.iml deleted file mode 100644 index c90834f..0000000 --- a/Cyber Ecosystem.iml +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - - - \ No newline at end of file diff --git a/README.md b/README.md index 86e84aa..bd2afb2 100644 --- a/README.md +++ b/README.md @@ -1,9 +1,3 @@ -# Cyber-Ecosystem Simulation +# Git Demo -A server network simulation under malware attack with GUI visualization. - -## Contributors -- Noah Erhart -- Rome Todd - -CS 142 — Spring 2026 +Test Repository to Help Teach basic Github functionality of branches, commits, Push/Merge functionalities, and GitHubCI testing with Maven. diff --git a/docs/design-v1.md b/docs/design-v1.md deleted file mode 100644 index f29a115..0000000 --- a/docs/design-v1.md +++ /dev/null @@ -1,51 +0,0 @@ -# The Big Picture - -**Theme:** A digital simulation of a server network under a malware attack. - -**The Grid:** A coordinate-based system where every cell represents a NetworkNode. - -**Primary Objective:** To observe the interaction between spreading malware and automated security protocols. - -## Sim Mechanics - -**Infection Logic:** Red "Malware" nodes spread to adjacent "Data" nodes based on a configurable probability. - -**Defense Logic:** Blue "Security Agents" move through the grid to quarantine or repair infected cells. - -**Win/Loss Conditions:** The simulation tracks the health of the "System Core"; if the core is fully compromised, the virus mutation rate increases. - -## Inheritance Hierarchy - -### Level 1: Base Class - -- **NetworkNode** (Abstract): The top-level class defining shared properties like coordinates and the core `action()` method. - -### Level 2: Intermediate Subclasses - -- **DataCell**: Represents static objects in the grid that can be targeted by malware. -- **ActiveAgent**: Represents objects that can move independently across the grid. - -### Level 3: Specific Implementations - -- **models.StandardFile** (under DataCell): Basic data units that serve as the primary fuel for malware spread. -- **models.EncryptedVault** (under DataCell): Highly secure data nodes that require multiple "hits" to become infected. -- **models.SystemCore** (under DataCell): The critical target; infecting this triggers a "System Failure" state or increases virus aggression. -- **models.AntivirusSentinel** (under ActiveAgent): A defensive unit that scans the grid and deletes malware. -- **models.RepairBot** (under ActiveAgent): A specialized agent that restores corrupted or deleted nodes back to their original state. -- **models.MalwareStrain** (under ActiveAgent): The primary antagonist; an active virus that moves and attempts to infect adjacent data. - -## The GUI - -**Visuals:** High-contrast neon colors (Not sure which ones just yet) - -**Adjustable Parameters:** - -- Initial infection density. -- Malware spread/mutation rate. -- Security Agent response speed. - -## How It Should All Come Together - -- **Model Layer:** Define the 2D array and the update loop that calls `action()` on every node. -- **Logic Layer:** Implement the specific behaviors for each of the 6 classes. -- **View Layer:** Build the GUI using Java Swing or a similar library to animate the grid state. diff --git a/pom.xml b/pom.xml index 991e0ff..16e46b4 100644 --- a/pom.xml +++ b/pom.xml @@ -4,12 +4,21 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 - cyber-ecosystem - cyber-ecosystem + com.github.romankh3 + maven-template-repository 1.0-SNAPSHOT jar - Cyber Ecosystem + Maven Repository Template + + https://github.com/template-repository/maven-template-repository + + + + The Apache Software License, Version 2.0 + http://www.apache.org/licenses/LICENSE-2.0.txt + + 2.26.0 @@ -44,7 +53,6 @@ - src org.apache.maven.plugins diff --git a/src/base/ActiveAgent.java b/src/base/ActiveAgent.java deleted file mode 100644 index 12ba3b6..0000000 --- a/src/base/ActiveAgent.java +++ /dev/null @@ -1,13 +0,0 @@ -package base; - -public abstract class ActiveAgent extends NetworkNode { - - private final int speed; - private final int actionRange; - - public ActiveAgent(int row, int col, int speed, int actionRange) { - super(row, col); - this.speed = speed; - this.actionRange = actionRange; - } -} diff --git a/src/base/DataCell.java b/src/base/DataCell.java deleted file mode 100644 index c2d1b0e..0000000 --- a/src/base/DataCell.java +++ /dev/null @@ -1,17 +0,0 @@ -package base; - -public abstract class DataCell extends NetworkNode{ - - protected boolean corrupted; - protected int corruptionLevel; - protected boolean beingRepaired; - protected int repairProgress; - - public DataCell(int row, int col) { - super(row, col); - this.corrupted = false; - this.corruptionLevel = 0; - this.beingRepaired = false; - this.repairProgress = 0; - } -} diff --git a/src/base/NetworkNode.java b/src/base/NetworkNode.java deleted file mode 100644 index 1752940..0000000 --- a/src/base/NetworkNode.java +++ /dev/null @@ -1,33 +0,0 @@ -package base; - -import java.awt.*; - -public abstract class NetworkNode { - - protected int row; - protected int col; - protected boolean isAlive; - - - public NetworkNode(int row, int col){ - this.row = row; - this.col = col; - this.isAlive = true; - } - - public abstract Color getColor(); - - public abstract String getTypeName(); - - public int getRow() { return row; } - public int getCol() { return col; } - - public void setPosition(int row, int col) { - this.row = row; - this.col = col; - } - - public boolean isAlive() { return isAlive; } - - public void kill() { this.isAlive = false; } -} \ No newline at end of file diff --git a/src/main/java/Greetings.java b/src/main/java/Greetings.java new file mode 100644 index 0000000..760295e --- /dev/null +++ b/src/main/java/Greetings.java @@ -0,0 +1,20 @@ +import java.util.ArrayList; +import java.util.Collections; +import java.util.List; + +/** Holds a list of greetings supplied by the class. */ +public final class Greetings { + + private static final List MESSAGES = new ArrayList<>(); + static { + MESSAGES.add("Hello from the teacher!"); + // students add exactly one line each: + // MESSAGES.add("Hola — Alice P."); + MESSAGES.add("Hello-DarionP."); + } + + /** Returns an unmodifiable view of the greetings list. */ + public static List all() { + return Collections.unmodifiableList(MESSAGES); + } +} diff --git a/src/main/java/Main.java b/src/main/java/Main.java new file mode 100644 index 0000000..3d84671 --- /dev/null +++ b/src/main/java/Main.java @@ -0,0 +1,6 @@ +public class Main { + public static void main(String[] args) { + Greetings.all().forEach(System.out::println); + //test line to show commit + } +} diff --git a/src/models/AntivirusSentinel.java b/src/models/AntivirusSentinel.java deleted file mode 100644 index 28a07ba..0000000 --- a/src/models/AntivirusSentinel.java +++ /dev/null @@ -1,29 +0,0 @@ -package models; - -import base.ActiveAgent; - -import java.awt.*; - -public class AntivirusSentinel extends ActiveAgent { - - private static final Color BASE_COLOR = new Color(0, 170, 255); - - private int scanRadius; - private boolean justDeletedTarget; - - public AntivirusSentinel(int row, int col, int scanRadius) { - super(row, col, 1, 1); // speed=1, range=1 - this.scanRadius = scanRadius; - this.justDeletedTarget = false; - } - - @Override - public Color getColor() { - return BASE_COLOR; - } - - @Override - public String getTypeName() { - return "models.AntivirusSentinel"; - } -} diff --git a/src/models/EncryptedVault.java b/src/models/EncryptedVault.java deleted file mode 100644 index 73aeed8..0000000 --- a/src/models/EncryptedVault.java +++ /dev/null @@ -1,31 +0,0 @@ -package models; - -import base.DataCell; - -import java.awt.*; - -public class EncryptedVault extends DataCell { - - private int maxHP; - private int currentHP; - - public EncryptedVault(int row, int col, int maxHP) { - super(row, col); - this.maxHP = maxHP; - this.currentHP = maxHP; - } - - @Override - public Color getColor() { - return null; - } - - @Override - public String getTypeName() { - return "models.EncryptedVault"; - } - - public int getCurrentHP() { return currentHP; } - - public int getMaxHP() { return maxHP; } -} diff --git a/src/models/MalwareStrain.java b/src/models/MalwareStrain.java deleted file mode 100644 index 61578ad..0000000 --- a/src/models/MalwareStrain.java +++ /dev/null @@ -1,25 +0,0 @@ -package models; - -import base.ActiveAgent; - -import java.awt.*; - -public class MalwareStrain extends ActiveAgent { - - private int damage; - - public MalwareStrain(int row, int col) { - super(row, col, 1, 1); // speed=1, range=1 - this.damage = 20; - } - - @Override - public Color getColor() { - return null; - } - - @Override - public String getTypeName() { - return "models.MalwareStrain"; - } -} diff --git a/src/models/RepairBot.java b/src/models/RepairBot.java deleted file mode 100644 index 524217a..0000000 --- a/src/models/RepairBot.java +++ /dev/null @@ -1,30 +0,0 @@ -package models; - -import base.ActiveAgent; -import base.DataCell; - -import java.awt.*; - -public class RepairBot extends ActiveAgent { - - private static final Color BASE_COLOR = new Color(170, 221, 255); - - private int repairPower; - private DataCell currentTarget; - - public RepairBot(int row, int col, int repairPower) { - super(row, col, 1, 1); - this.repairPower = repairPower; - this.currentTarget = null; - } - - @Override - public Color getColor() { - return BASE_COLOR; - } - - @Override - public String getTypeName() { - return "models.RepairBot"; - } -} diff --git a/src/models/StandardFile.java b/src/models/StandardFile.java deleted file mode 100644 index cc00dc4..0000000 --- a/src/models/StandardFile.java +++ /dev/null @@ -1,28 +0,0 @@ -package models; - -import base.DataCell; - -import java.awt.*; - -public class StandardFile extends DataCell { - - // This is the base color of a standard file when it is alive - private static final Color BASE_COLOR = new Color(0, 255, 204); - // This is the dead color of a standard file when it is dead - private static final Color DEAD_COLOR = new Color(26, 10, 10); - - public StandardFile(int row, int col) { - super(row, col); - } - - @Override - public Color getColor() { - return BASE_COLOR; - } - - @Override - public String getTypeName() { - return "models.StandardFile"; - } - -} diff --git a/src/models/SystemCore.java b/src/models/SystemCore.java deleted file mode 100644 index 98fd772..0000000 --- a/src/models/SystemCore.java +++ /dev/null @@ -1,25 +0,0 @@ -package models; - -import base.DataCell; - -import java.awt.*; - -public class SystemCore extends DataCell { - - private boolean compromised; - - public SystemCore(int row, int col) { - super(row, col); - this.compromised = false; - } - - @Override - public Color getColor() { - return null; - } - - @Override - public String getTypeName() { - return "System Core"; - } -} diff --git a/src/simulation/CyberGridSimulation.java b/src/simulation/CyberGridSimulation.java deleted file mode 100644 index 5d1280a..0000000 --- a/src/simulation/CyberGridSimulation.java +++ /dev/null @@ -1,6 +0,0 @@ -package simulation; - -public class CyberGridSimulation -{ - -} diff --git a/src/test/java/GreetingsTest.java b/src/test/java/GreetingsTest.java new file mode 100644 index 0000000..cb6f9d8 --- /dev/null +++ b/src/test/java/GreetingsTest.java @@ -0,0 +1,11 @@ +import static org.junit.jupiter.api.Assertions.*; +import org.junit.jupiter.api.Test; + +class GreetingsTest { + + @Test + void atLeastOneGreeting() { + assertFalse(Greetings.all().isEmpty(), + "The class should have at least one greeting!"); + } +} diff --git a/src/ui/CyberGridView.java b/src/ui/CyberGridView.java deleted file mode 100644 index f0d6c2a..0000000 --- a/src/ui/CyberGridView.java +++ /dev/null @@ -1,18 +0,0 @@ -package ui; - -import java.awt.*; -import javax.swing.*; - -public class CyberGridView -{ - public static void main(String[] args) - { - JFrame frame = new JFrame("Network Simulation"); - frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); - frame.setSize(new Dimension(900, 600)); - - frame.setVisible(true); - - - } -}