Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
79 commits
Select commit Hold shift + click to select a range
f07dc6e
Setting up GitHub Classroom Feedback
github-classroom[bot] Apr 23, 2024
bb3a84a
chore: set up JC project
qrutyy Apr 28, 2024
0d4e455
chore: add gitignore
qrutyy Apr 28, 2024
a0f53d9
chore: tuned JC project config
qrutyy Apr 28, 2024
6ad230f
docs(readme): add draft
qrutyy Apr 28, 2024
c3c6eac
docs(lic): add MIT license
qrutyy Apr 28, 2024
5efce28
chore(fix): correct compose version
qrutyy Apr 28, 2024
b3910fb
chore: set up initial JC project structure #2
qrutyy Apr 28, 2024
3369758
dev: add model draft
qrutyy May 1, 2024
c527315
fix: switch edge data to non-nullable
qrutyy May 1, 2024
ec06f57
feat: switch from abstract class to interface, due to adjacencyMap
qrutyy May 1, 2024
33a5ea8
fix: remove EdgeType refinement. small corrections
qrutyy May 1, 2024
64be1ee
fix: correct addEdge method, +refactor
qrutyy May 1, 2024
9fa884a
feat: implement weighted + undirected graph, add specific edge class
qrutyy May 1, 2024
51613f3
feat(Graph): change to abstract class, add properties, deletion metho…
shakareem May 1, 2024
32acd19
fix: change all types of graphs and add addEdge method implementation…
shakareem May 1, 2024
b647069
fix(WeightedDirectedGraph): remove extra addition of vertex1 to verte…
shakareem May 1, 2024
076f3d3
fix: add adding newly created edge to edges set
shakareem May 1, 2024
744d665
fix: add weight parameter to the Edge interface
qrutyy May 2, 2024
349fc7c
fix: make 'deleteEdge' method abstract
qrutyy May 2, 2024
080dd2d
fix: remove weight field from edge interface, add it to weighted edges
shakareem May 2, 2024
362f6e7
refactor(deleteEdge): rename to removeEdge
shakareem May 2, 2024
9f760a8
chore: change packages structure
shakareem May 2, 2024
6f5a283
feat: add exceptions for illegal arguments instead of returning null
shakareem May 2, 2024
c9acbf0
feat(model): add 4 types of graphs #3
shakareem May 2, 2024
f10816f
feat: add ktfmt gradle plugin and script for pre-commit hook #4
shakareem May 4, 2024
c74c381
fix: return type of graphs' methods by edge parameterization (#5)
shakareem May 4, 2024
d81dbc7
feat: implement Dijkstra's shortest path algorithm #7
qrutyy May 4, 2024
839b9dd
feat: implement Kosaraju's SCC algorithm #8
qrutyy May 6, 2024
e358142
feat: implement Kruskal's MST algorithm #10
spisladqo May 7, 2024
6d92a67
fix: id fragmentation in removeVertex method #11
shakareem May 7, 2024
042ddce
refactor: localize exceptions, change formatter, make gradle clean #13
spisladqo May 11, 2024
aa77cbb
fix: get rid of edge type parametrisation and extern layers, fix algo…
qrutyy May 11, 2024
b17d350
feat: implement Tarjan's bridge finding algorithm #15
spisladqo May 12, 2024
77aa22e
feat: add new collections, optimize, refactor and fix existing code #16
spisladqo May 13, 2024
f5f8ab2
test: add test classes and inner test classes for methods, parameteri…
shakareem May 13, 2024
7016813
fix: case if there is no edge from vertex1 to vertex2 in getEdge #19
shakareem May 14, 2024
7698832
feat: implement initial UI, add basic structure and logic #18
qrutyy May 14, 2024
10aa1d0
feat: add border support for surface, make it prettier #22
qrutyy May 15, 2024
3520740
fix: add exception in case vertex does not exist in removeVertex and …
shakareem May 15, 2024
da878ac
feat: implement basic UI elements for tabs + helpful dialogs #23
qrutyy May 15, 2024
500c1d0
docs: add contributing rules #24
qrutyy May 15, 2024
503a0d1
test: add tests for findMinSpanningTree() method of weighted undirect…
spisladqo May 16, 2024
44c5938
test: add tests for abstract graph basic methods #21
shakareem May 18, 2024
1fd1752
fix: make vertex's id var to get rid of a lot of complex code #26
shakareem May 18, 2024
4192669
feat: link ViewModel and UI, improve UI #29
qrutyy May 18, 2024
12302ba
refactor: change exception messages and use getEdge where possible #28
shakareem May 18, 2024
c6f2d14
feat: add visualization of directed edges in a directed graph #27
spisladqo May 18, 2024
1c42c30
test: add tests for findBridges() method of undirected graphs #31
spisladqo May 19, 2024
955f89d
fix: add process of adding already existing edge #30
shakareem May 19, 2024
03a260a
test: graph implementations' basic methods #32
shakareem May 19, 2024
711a2d4
fix: removing edge from weightMap #33
shakareem May 19, 2024
1a18401
ci: add approval check and building app in PR attempts #34
shakareem May 20, 2024
b8261e4
ci: fix excluding main in mergeable #35
shakareem May 21, 2024
d2f1e58
test: implement tests for Dijkstra's shortest path algorithm #36
qrutyy May 21, 2024
6044fde
test: implement tests for Kosaraju's SCC search #37
qrutyy May 21, 2024
20849c8
feat: implement Ford-Bellman algorithm and write tests for it #38
shakareem May 22, 2024
16bee46
feat: implement algorithm for finding key vertices #39
spisladqo May 23, 2024
76f69b5
feat: implement Johnson's find cycles algorithm and tests for it #40
shakareem May 23, 2024
9b7c2f7
feat: enforce graph visualisation, add T-FDP layout #42
qrutyy May 24, 2024
78cd8e0
test: implement tests for key vertices finding algorithm #41
spisladqo May 24, 2024
368a54f
feat: enhance FAQ hoverable icon #43
spisladqo May 24, 2024
8d83704
fix: delete invisible borders #44
spisladqo May 25, 2024
3c4cc44
fix(findCycles): wrong copying of graph #45
shakareem May 27, 2024
f1de99e
test: enhance app with integration test draft #46
qrutyy May 27, 2024
a4cca71
feat: add basic file control tab fields and buttons #48
spisladqo May 28, 2024
2f6d769
refactor: clean up code, resolve some TODO's #49
qrutyy May 28, 2024
e2b4f57
feat: add clustering algorithm #47
shakareem May 28, 2024
c3ab611
feat: bolster SQLite management, improve UI and error handling #50
qrutyy May 29, 2024
cca76ae
feat: algorithms to separate classes in model and add draft of analyz…
shakareem May 29, 2024
948a13c
docs(lic): switch from MIT to GPL-V3 #52
qrutyy May 29, 2024
ca8374b
feat: implement FFT optimisation of T-FDP layout. #53
qrutyy May 29, 2024
cae0fa1
docs: implement readme, add general tab screenshot #55
qrutyy May 29, 2024
ff30eef
feat: make algorithms runnable from UI #56
shakareem May 29, 2024
59de507
feat: add authorization and saving to Neo4j #57
spisladqo May 30, 2024
f27c62a
feat: improve on-launch UI, enhance operating with Neo4j #58
spisladqo Jun 1, 2024
a353f98
docs: improve README, make it shorter and more functional #60
qrutyy Jun 11, 2024
1025dfc
fix: resolve review issues, edit SQL module architecture #61
qrutyy Jun 11, 2024
0055782
fix: adjust dialog win. size + edit SQL query path #62
qrutyy Aug 3, 2024
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
Empty file removed .github/.keep
Empty file.
41 changes: 41 additions & 0 deletions .github/mergeable.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
version: 2
mergeable:
- when: pull_request.*
name: "Description check"

filter: # to ignore Feedback branch
- do: payload
pull_request:
title:
must_exclude:
regex: ^Feedback$
regex_flag: none

validate:
- do: description
no_empty:
enabled: true
message: Description matter and should not be empty. Provide detail with **what** was changed, **why** it was changed, and **how** it was changed.

- when: pull_request.*, pull_request_review.*
name: 'Approval check'

filter: # to ignore Feedback branch
- do: payload
pull_request:
title:
must_exclude:
regex: ^Feedback$
regex_flag: none

branches-ignore:
- main
validate:
- do: approvals
min:
count: 2
required:
requested_reviewers: true
message: All requested reviewers must approve changes before merging.
limit:
users: [ 'qrutyy', 'spisladqo', 'kar1mgh' ]
26 changes: 26 additions & 0 deletions .github/workflows/test.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
name: Build & Run JUnit5 tests

on:
workflow_dispatch:
pull_request:

jobs:
build:
if: github.actor!= 'github-classroom[bot]' # to ignore Feedback branch

runs-on: ${{ matrix.os }}
strategy:
matrix:
os: [ ubuntu-latest, windows-latest, macos-latest ]

steps:
- uses: actions/checkout@v4

- name: Set up JDK 21
uses: actions/setup-java@v4
with:
java-version: '21'
distribution: zulu

- name: Build & Test by Gradle
run: ./gradlew build
219 changes: 219 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,219 @@
# Created by https://www.toptal.com/developers/gitignore/api/intellij+all,macos,windows,linux,gradle,kotlin
# Edit at https://www.toptal.com/developers/gitignore?templates=intellij+all,macos,windows,linux,gradle,kotlin

### Intellij+all ###
# Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm, CLion, Android Studio, WebStorm and Rider
# Reference: https://intellij-support.jetbrains.com/hc/en-us/articles/206544839

# User-specific stuff
.idea/**/workspace.xml
.idea/**/tasks.xml
.idea/**/usage.statistics.xml
.idea/**/dictionaries
.idea/**/shelf

# AWS User-specific
.idea/**/aws.xml

# Generated files
.idea/**/contentModel.xml

# Sensitive or high-churn files
.idea/**/dataSources/
.idea/**/dataSources.ids
.idea/**/dataSources.local.xml
.idea/**/sqlDataSources.xml
.idea/**/dynamic.xml
.idea/**/uiDesigner.xml
.idea/**/dbnavigator.xml

# Gradle
.idea/**/gradle.xml
.idea/**/libraries

# Gradle and Maven with auto-import
# When using Gradle or Maven with auto-import, you should exclude module files,
# since they will be recreated, and may cause churn. Uncomment if using
# auto-import.
# .idea/artifacts
# .idea/compiler.xml
# .idea/jarRepositories.xml
# .idea/modules.xml
# .idea/*.iml
# .idea/modules
# *.iml
# *.ipr

# CMake
cmake-build-*/

# Mongo Explorer plugin
.idea/**/mongoSettings.xml

# File-based project format
*.iws

# IntelliJ
out/

# mpeltonen/sbt-idea plugin
.idea_modules/

# JIRA plugin
atlassian-ide-plugin.xml

# Cursive Clojure plugin
.idea/replstate.xml

# SonarLint plugin
.idea/sonarlint/

# Crashlytics plugin (for Android Studio and IntelliJ)
com_crashlytics_export_strings.xml
crashlytics.properties
crashlytics-build.properties
fabric.properties

# Editor-based Rest Client
.idea/httpRequests

# Android studio 3.1+ serialized cache file
.idea/caches/build_file_checksums.ser

### Intellij+all Patch ###
# Ignore everything but code style settings and run configurations
# that are supposed to be shared within teams.

.idea/*

!.idea/codeStyles
!.idea/runConfigurations

### Kotlin ###
# Compiled class file
*.class

# Log file
*.log

# BlueJ files
*.ctxt

# Mobile Tools for Java (J2ME)
.mtj.tmp/

# Package Files #
*.jar
*.war
*.nar
*.ear
*.zip
*.tar.gz
*.rar

# virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml
hs_err_pid*
replay_pid*

### Linux ###
*~

# temporary files which can be created if a process still has a handle open of a deleted file
.fuse_hidden*

# KDE directory preferences
.directory

# Linux trash folder which might appear on any partition or disk
.Trash-*

# .nfs files are created when an open file is removed but is still being accessed
.nfs*

### macOS ###
# General
.DS_Store
.AppleDouble
.LSOverride

# Icon must end with two \r
Icon


# Thumbnails
._*

# Files that might appear in the root of a volume
.DocumentRevisions-V100
.fseventsd
.Spotlight-V100
.TemporaryItems
.Trashes
.VolumeIcon.icns
.com.apple.timemachine.donotpresent

# Directories potentially created on remote AFP share
.AppleDB
.AppleDesktop
Network Trash Folder
Temporary Items
.apdisk

### macOS Patch ###
# iCloud generated files
*.icloud

### Windows ###
# Windows thumbnail cache files
Thumbs.db
Thumbs.db:encryptable
ehthumbs.db
ehthumbs_vista.db

# Dump file
*.stackdump

# Folder config file
[Dd]esktop.ini

# Recycle Bin used on file shares
$RECYCLE.BIN/

# Windows Installer files
*.cab
*.msi
*.msix
*.msm
*.msp

# Windows shortcuts
*.lnk

### Gradle ###
.gradle
**/build/
!src/**/build/

# Ignore Gradle GUI config
gradle-app.setting

# Avoid ignoring Gradle wrapper jar file (.jar files are usually ignored)
!gradle-wrapper.jar

# Avoid ignore Gradle wrappper properties
!gradle-wrapper.properties

# Cache of project
.gradletasknamecache

# Eclipse Gradle plugin generated files
# Eclipse Core
.project
# JDT-specific (Eclipse Java Development Tools)
.classpath

### Gradle Patch ###
# Java heap dump
*.hprof

# End of https://www.toptal.com/developers/gitignore/api/intellij+all,macos,windows,linux,gradle,kotlin
53 changes: 53 additions & 0 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
# 💪 Interested in contributing?

Good boy! Please read the few sections below to understand how to implement new features.

> Be positive! Even if your changes don't get merged in WUDU, please don't be too sad, you will always be able to run workflows directly from your fork!
> Meow

## 🤝 Accepted contributions

The following contributions are accepted:
<table>
<tr>
<th>Section</th>
<th>Changes</th>
<th>Additions</th>
<th>Notes</th>
</tr>
<tr>
<td nowrap="nowrap">🧩 Features</td>
<td>💢</td>
<td>💢</td>
<td>
<ul>
<li>New features are allowed, but must be optional and backward compatible</li>
</ul>
</td>
</tr>
<tr>
<td nowrap="nowrap">🧪 Tests</td>
<td>💢</td>
<td>✅
<td>
<ul>
<li>Everything that makes WUDU more stable is welcomed!</li>
</ul>
</td>
</tr>
<tr>
<td nowrap="nowrap">🗃️ Repository</td>
<td>❌</td>
<td>❌</td>
<td>
<ul>
<li>Workflows, license, readmes, etc. usually don't need to be edited</li>
</ul>
</td>
</tr>
</table>

**Legend**
* ✅: Contributions welcomed!
* 💢: Contributions are welcomed, but must be discussed first
* ❌: Only maintainers can manage these files
Loading