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

bring new release updates to master branch #111

Merged
merged 216 commits into from
Mar 6, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
216 commits
Select commit Hold shift + click to select a range
2749aba
'build'
TimoBellartz Feb 2, 2022
2b265eb
Put Method for updating the Graph
TimoBellartz Feb 10, 2022
35e6821
Deleted print statement
TimoBellartz Feb 11, 2022
66b23f5
Add first version of converted graph related classes, still untested
MaxKissgen Feb 27, 2022
b299277
Generate uuids for new graphs/edges names as they must be unique. Kee…
MaxKissgen Feb 27, 2022
fc972cf
Some fixing
MaxKissgen Feb 27, 2022
8044a63
Add methods for edges with weights strictly above zero
MaxKissgen Feb 27, 2022
b631db7
Add graphstream core lib to dependencies
MaxKissgen Feb 27, 2022
55c73c3
Adapt ocd algorithms toward graphstream usage, NISE and MEAs-SN still…
MaxKissgen Mar 13, 2022
075da8d
Add graphstream conversion for AlgoExecutor and Graphprocessor, also …
MaxKissgen Mar 21, 2022
e8b4292
Classes for MLink /placeholder algorithm
TimoBellartz Mar 30, 2022
cc9da81
Community function for individual - mutation
TimoBellartz Apr 6, 2022
6a05563
Label propagation and translation prototype
TimoBellartz Apr 8, 2022
44ad37f
Test class
TimoBellartz Apr 8, 2022
d4fa3aa
Initialization algorithms and bugfix
TimoBellartz Apr 14, 2022
e7c63aa
Beautify node and edge iterator generation and naming in ocd algorithms
MaxKissgen Apr 15, 2022
81dd925
Start graphstream conversion with centralities, biconnected component…
MaxKissgen Apr 15, 2022
81b7e45
local search / diversity
TimoBellartz Apr 19, 2022
8551633
Untested Algorithm
TimoBellartz Apr 21, 2022
3dca38a
Postprocessing mostly untested
TimoBellartz Apr 22, 2022
92ddd9d
bug fixes and optimization of individual class
TimoBellartz Apr 25, 2022
b671e19
Backtracking and new intradensity
TimoBellartz Apr 29, 2022
e883ffd
Comments and delete old code
TimoBellartz May 3, 2022
0d177f5
Different initialization algorithms try
TimoBellartz May 6, 2022
a679650
local search speedup not working
TimoBellartz May 6, 2022
c623c9f
Add most centralities for graphstream and a few fixes, certain parts …
MaxKissgen May 8, 2022
f0090e5
Convert higher level classes regarding graphstream and introduce new …
MaxKissgen May 8, 2022
a1f0918
Small changes for evaluation
TimoBellartz May 19, 2022
e0a4c50
Add input adapter conversions to graphstream, XGMML realizer part sti…
MaxKissgen Jun 12, 2022
086c763
Add output adapter conversions for graphstream
MaxKissgen Jun 12, 2022
1d5fc00
Add test graphstream conversions for input/output adapters
MaxKissgen Jun 12, 2022
0285e9d
Add graphstream conversions for cover metrics and their tests
MaxKissgen Jun 12, 2022
21c4cb8
Add graphstream conversions for benchmarks and some fixes
MaxKissgen Jun 12, 2022
582efd9
Fix giving edges ids for graphstream
MaxKissgen Jun 12, 2022
8faa92b
Add graphstream conversions for EntityHandler and InvocationHandler
MaxKissgen Jun 12, 2022
1092c05
add and use efficient methods for fetching graph meta data
beka-beka Jun 12, 2022
d39cd77
add efficient requests for covers
beka-beka Jun 19, 2022
487a350
add efficient centrality requests
beka-beka Jun 19, 2022
43ae5ab
remove hardcoding in database queries
beka-beka Jun 19, 2022
7af9c16
Rework CustomGraph Ids to be of type long again and name them more cl…
MaxKissgen Jun 19, 2022
7c75d66
Include UUID library where missing
MaxKissgen Jun 19, 2022
27358e1
Convert graph property classes and the CoverData class to graphstream
MaxKissgen Jun 19, 2022
cd55f0c
Convert ServiceClass to graphstream and do a few minor fixes
MaxKissgen Jun 19, 2022
649ed5c
Merge remote-tracking branch 'origin/MEA_implementation' into graphSt…
MaxKissgen Jun 19, 2022
ab8593a
Convert MEA algorithm to graphstream
MaxKissgen Jun 19, 2022
ee87b37
add unit tests for meta output adapters
beka-beka Jun 19, 2022
b8b154e
Merge remote-tracking branch 'TimoBellartzFork/master' into TimoBella…
beka-beka Jun 26, 2022
fdd7473
small cleanup
beka-beka Jun 26, 2022
12c30cf
Fix input handler issues for graphstream by switching to stream as in…
MaxKissgen Jul 22, 2022
a6531a7
Fix test graph factory methods, fix a few smaller bugs and also add n…
MaxKissgen Jul 22, 2022
b38f370
Fixx connected component usage in ServiceClass for graphstream
MaxKissgen Jul 22, 2022
01d67f8
Fix output adapters for graphstream and especially consider now possi…
MaxKissgen Jul 22, 2022
0d0e762
Add preliminary graphstream version of NISE algorithm converted for g…
MaxKissgen Jul 22, 2022
26068f3
Rework listener to be used with graphstream
MaxKissgen Jul 22, 2022
62bed00
Rework CustomGraph class to work with graphstream and fix a few class…
MaxKissgen Jul 22, 2022
17e5222
Add some smaller fixes for the graph package regarding graphstream
MaxKissgen Jul 22, 2022
60703e2
Rework viewer classes for graphstream, still wip until tests run through
MaxKissgen Jul 22, 2022
8fc9bbb
Fix some smaller bugs regarding graphstream
MaxKissgen Jul 22, 2022
113a7d2
add LOCAlgorithm
cralem7 Jul 29, 2022
24e2afc
add LOCAlgorithmTest
cralem7 Jul 29, 2022
f0c587c
add LOCAlgorithm enum
cralem7 Jul 29, 2022
f264bb1
fix graphprocessortest
beka-beka Jul 30, 2022
ee09909
fix metric related tests
beka-beka Jul 30, 2022
c9d18fc
fix graph processor
beka-beka Jul 30, 2022
433df4c
documentation
cralem7 Aug 4, 2022
ffee62f
Add first working version of FlowBetweenness centrality, some more te…
MaxKissgen Aug 14, 2022
76cbaee
add persistMethods
cralem7 Aug 19, 2022
b5c60d7
add description
cralem7 Aug 19, 2022
5133593
add persist functions
cralem7 Aug 19, 2022
33258cc
add anrangoJavaDriver/jacksonVelocypack
cralem7 Aug 20, 2022
709270f
add database tests
cralem7 Aug 20, 2022
9c0d339
Use own getNeighbors method to not get a list with duplicates, fixes …
MaxKissgen Aug 20, 2022
66a5dc3
Fix NISEAlgorithm redundant next() calls
MaxKissgen Aug 20, 2022
7bd5467
Fix some NodeDegree methods not working properly
MaxKissgen Aug 20, 2022
40a1564
Remove unnecessary println in CustomGraph
MaxKissgen Aug 20, 2022
4fb704f
fix testMembershipCounts
beka-beka Aug 20, 2022
f78404c
Fix CurrentFlowBetweenness centrality
MaxKissgen Aug 20, 2022
049b0d1
Merge branch 'graphStream' of https://github.com/rwth-acis/REST-OCD-S…
MaxKissgen Aug 20, 2022
9f90969
Fix setStructureFrom method in CustomGraph
MaxKissgen Aug 20, 2022
06ac957
fix AgentTest
beka-beka Aug 20, 2022
c5a45e7
fix SimulationBuilderTest
beka-beka Aug 20, 2022
85ceb81
fix warnings
beka-beka Aug 20, 2022
d7e5f18
add persistence functions
cralem7 Aug 26, 2022
146bc77
add persistence functions
cralem7 Aug 26, 2022
98113e6
add key getter
cralem7 Aug 26, 2022
0f22aaa
add key getter
cralem7 Aug 26, 2022
417cb8f
remove helpfunctions
cralem7 Aug 26, 2022
d6f0b3a
add load,persist functions
cralem7 Aug 26, 2022
df15704
add transaction options
cralem7 Aug 31, 2022
02a4b8b
add deletion function
cralem7 Aug 31, 2022
d65b353
add store/get/delete funktions for graph/cover/centralityMaps
cralem7 Aug 31, 2022
e31f88d
more database tests
cralem7 Aug 31, 2022
889c70b
add transaction options
cralem7 Aug 31, 2022
fff3edd
add transaction options
cralem7 Aug 31, 2022
237ee79
add configuration handler
cralem7 Sep 14, 2022
974fd8e
add getGraphs
cralem7 Sep 14, 2022
5af672f
remove TODO/change column names
cralem7 Sep 14, 2022
572da40
add todos
cralem7 Sep 14, 2022
45e20fd
add config files in arangoDB folder
cralem7 Sep 14, 2022
8e57069
add databaseConfigTest
cralem7 Sep 14, 2022
cd37adb
add some tests
cralem7 Sep 14, 2022
8221ae3
simplify functions
cralem7 Sep 14, 2022
eeec3ff
fix build fail on linux due to persistence.xml
beka-zhvania Sep 15, 2022
02a6399
upgrade to gradle 7.3.2
beka-zhvania Sep 15, 2022
90e5714
upgrade service to java 17
beka-zhvania Sep 18, 2022
be7f800
update Dockerfile to use gradle 7.3 & java 17
beka-zhvania Sep 18, 2022
88aaa86
change graphid to graphkey
cralem7 Sep 18, 2022
0e720be
add graph cover getter
cralem7 Sep 18, 2022
7553454
small design changes
cralem7 Sep 18, 2022
faa9cfa
add DatabaseMethodTest
cralem7 Sep 18, 2022
d5034cd
add CoverDatabaseTest
cralem7 Sep 18, 2022
25693ea
add CustomGraphDatabaseTest
cralem7 Sep 18, 2022
661de7f
change Database initialisation
cralem7 Sep 18, 2022
0d4475d
change graphid to graphkey
cralem7 Sep 18, 2022
41a50fb
change description
cralem7 Sep 18, 2022
4136460
change initialisation to new database
cralem7 Sep 18, 2022
78662b5
remove todo
cralem7 Sep 20, 2022
1bf7132
make column names public
cralem7 Sep 20, 2022
f42b1dd
make column names public
cralem7 Sep 20, 2022
c54387b
filter out wrong graph keys
cralem7 Sep 20, 2022
c68d2cb
change database tests
cralem7 Sep 20, 2022
06d75ee
merge remote-tracking branch 'origin/develop' into LOC_Algorithm
cralem7 Sep 20, 2022
462e7e9
Merge 'origin/master' into LOC_Algorithm
cralem7 Sep 20, 2022
72821ab
reset database before and after testClass
cralem7 Sep 22, 2022
03a69bf
reset database before and after testClass
cralem7 Sep 22, 2022
cfb1698
insert database setup
cralem7 Sep 22, 2022
75580c6
remove y library related parts
beka-zhvania Sep 25, 2022
e4ac141
add github actions for webocd
beka-zhvania Sep 25, 2022
d251028
fix folder structure for actions
beka-zhvania Sep 25, 2022
a1ae141
Add first attempts for SVG viz with graphstream
MaxKissgen Sep 26, 2022
a878ce1
remove gs-algo jar file
beka-zhvania Oct 2, 2022
0ab4466
fix leaderrank error on newman graph
beka-zhvania Oct 2, 2022
e869af0
update ID System
cralem7 Oct 2, 2022
7cdb314
Add mostly working SVG visualization and some visual listener fixes, …
MaxKissgen Oct 3, 2022
4f57ee7
Merge remote-tracking branch 'origin/develop' into gradleAndJava17
beka-zhvania Oct 3, 2022
a1fe620
fix build fail due to inactivityHandler
beka-zhvania Oct 3, 2022
0ecbb32
Merge remote-tracking branch 'origin/graphstreamVis' into gradleAndJa…
beka-zhvania Oct 3, 2022
f8b8757
fix crash caused by MakeUndirected method in GraphProcessor
beka-zhvania Oct 4, 2022
7db89c5
Fix Some edges not being displayed in the SVG
MaxKissgen Oct 5, 2022
af48c42
Merge pull request #96 from rwth-acis/graphstreamVis
MaxKissgen Oct 5, 2022
8e6c707
fix visualization error on newman cover
beka-zhvania Oct 5, 2022
8781008
fix 2D and 3D visualization
beka-zhvania Oct 5, 2022
8327b13
improve naming of node attributes
beka-zhvania Oct 6, 2022
83d61a0
Add backwards compatibility for old service versions
MaxKissgen Oct 6, 2022
07d79d5
remove inactivity function
cralem7 Oct 9, 2022
36fcb7c
add database to inactivity functions
cralem7 Oct 9, 2022
a3b8f0d
realize a groundTruth run
cralem7 Oct 9, 2022
6376fc8
remove useless function
cralem7 Oct 9, 2022
6adbb8e
add store/load/update fuctions
cralem7 Oct 9, 2022
a8d75c4
add databasefunctions and help stuff
cralem7 Oct 9, 2022
4f22393
add update functions
cralem7 Oct 9, 2022
f1c9c7e
change results from undefined to 0
cralem7 Oct 9, 2022
6bab0a0
functions to realize updates
cralem7 Oct 9, 2022
70bc140
add update function
cralem7 Oct 9, 2022
9740e73
add update fuction
cralem7 Oct 9, 2022
1067345
add some database test function
cralem7 Oct 9, 2022
312b694
remove or ignore old database stuff
cralem7 Oct 9, 2022
6b39ad3
add some new tests
cralem7 Oct 9, 2022
6c8ff5a
Merge remote-tracking branch 'origin/efficientRequests' into gradleAn…
beka-zhvania Oct 10, 2022
fe2999e
make efficient requests additions compatible with graphstream notation
beka-zhvania Oct 10, 2022
7194a9a
remove todos
cralem7 Oct 12, 2022
6f06eaa
set value to 0 if there is no node in the graph
cralem7 Oct 12, 2022
ac05692
change update
cralem7 Oct 12, 2022
6320e37
update funktion
cralem7 Oct 12, 2022
b6d85fc
fix errors
cralem7 Oct 12, 2022
0c43501
fix error and update documentation
cralem7 Oct 12, 2022
1ad7d9e
add Log funktions and documentation
cralem7 Oct 12, 2022
e2c8cdf
fix errors
cralem7 Oct 12, 2022
8c83956
update tests due to funktions not visible
cralem7 Oct 12, 2022
0e5bb35
change graph delete funktions
cralem7 Oct 12, 2022
d195e57
Merge remote-tracking branch 'origin/TimoBellartzBA' into gradleAndJa…
beka-zhvania Oct 14, 2022
57890a0
make Memetic Link algorithm compatible with graphstream
beka-zhvania Oct 15, 2022
27b1b26
add user content limitation with default limits
beka-zhvania Oct 16, 2022
4b0102b
fix for Louvain crashing or outputting cluster quantity equaling nodes
beka-zhvania Oct 16, 2022
cab0f02
Merge branch 'gradleAndJava17' of github.com:rwth-acis/REST-OCD-Servi…
beka-zhvania Oct 16, 2022
5320456
Merge pull request #102 from rwth-acis/master
beka-zhvania Oct 18, 2022
0b97cca
add custom inactive user content deletion feature
beka-zhvania Oct 23, 2022
c2b9092
add endpoint to fetch user content deletion info and improve inactivi…
beka-zhvania Oct 23, 2022
bedcf14
fix typo remaining from debugging
beka-zhvania Oct 23, 2022
3f135b2
add graph efficient requests compatible with arangodb
beka-zhvania Nov 11, 2022
40ba785
replace id with key in graphmeta output adapter, to avoid errors in w…
beka-zhvania Nov 11, 2022
d7d2102
add cover efficient requests compatible with arangodb
beka-zhvania Nov 12, 2022
3a64518
fix exception when accessing centralities of a specific graph
beka-zhvania Nov 13, 2022
5454ae9
add centrality efficient requests compatible with arangodb
beka-zhvania Nov 13, 2022
628b2b6
add arangodb compatible metadata xml adapter tests
beka-zhvania Nov 13, 2022
715e566
add persistence in arangodb for simulations
beka-zhvania Dec 11, 2022
e4a08ca
add tests for persistence methods of simulation classes
beka-zhvania Dec 11, 2022
7862554
remove persistence methods of classes that are not stored as separate…
beka-zhvania Dec 12, 2022
f58796c
fix null pointer exception in GetSimulationGroupsMapping
beka-zhvania Dec 12, 2022
e41e8c2
Merge remote-tracking branch 'origin/arango' into gradleAndJava17
beka-zhvania Dec 19, 2022
33100ac
update github actions to exclude arango database tests
beka-zhvania Dec 20, 2022
98e9a7f
fix centrality visualization not working
beka-zhvania Dec 25, 2022
7658cf2
fix empty map being stored in db when LeaderRank centrality is executed
beka-zhvania Dec 25, 2022
446f5ee
fix centralities that were computed incorrectly
beka-zhvania Dec 26, 2022
b80a189
make missing servicetests arangodb compatible
beka-zhvania Jan 1, 2023
0f44aa5
add LOC algorithm
beka-zhvania Jan 1, 2023
db02f50
Merge remote-tracking branch 'origin/develop' into gradleAndJava17
beka-zhvania Jan 9, 2023
05ea71a
add graphstream compatible LOC Algorithm test and clean up code
beka-zhvania Jan 9, 2023
cea00c3
Merge pull request #103 from rwth-acis/gradleAndJava17
beka-zhvania Jan 9, 2023
49572bc
clean up code
beka-zhvania Jan 9, 2023
b83b337
fix map conversions to avoid data type error when importing arangodb …
beka-zhvania Jan 30, 2023
f9a4daf
add docker image of webocd that runs with arangodb
beka-zhvania Jan 30, 2023
94e1d48
Merge pull request #104 from rwth-acis/docker-with-arangodb
beka-zhvania Jan 30, 2023
f516490
update readme to include building and running info
beka-zhvania Feb 10, 2023
aaf68d6
improve logging
beka-zhvania Feb 13, 2023
cad1179
fix error when log folder does not exist
beka-zhvania Feb 13, 2023
d6704d6
Merge pull request #105 from rwth-acis/logging2023
beka-zhvania Feb 13, 2023
d52e227
improve database configuration
beka-zhvania Feb 26, 2023
b447f7e
fix incorrect database user usage
beka-zhvania Feb 26, 2023
59cc32e
Merge pull request #106 from rwth-acis/dbImprovements
beka-zhvania Feb 26, 2023
88fc67e
incorporate arangodb in webocd github actions
beka-zhvania Feb 27, 2023
bfaf948
Merge pull request #108 from rwth-acis/ci_improvement
beka-zhvania Feb 27, 2023
179dd1b
fix storing OCDA parameters in the db
beka-zhvania Mar 3, 2023
ecb29cd
update wiki
beka-zhvania Mar 5, 2023
8219c9c
Merge pull request #109 from rwth-acis/updateWiki
beka-zhvania Mar 6, 2023
1620c72
Merge pull request #110 from rwth-acis/storeOCDAParameters
beka-zhvania Mar 6, 2023
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
7 changes: 3 additions & 4 deletions .classpath
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,8 @@
<classpathentry kind="lib" path="lib/commons-dbcp2-2.0.jar"/>
<classpathentry kind="lib" path="lib/commons-pool2-2.2.jar"/>
<classpathentry kind="lib" path="lib/bcprov-jdk15on-1.50.jar"/>
<classpathentry kind="lib" path="lib/y.jar"/>
<classpathentry kind="lib" path="lib/gs-algo-2.0.jar"/>
<classpathentry kind="lib" path="lib/gs-core-2.0.jar"/>
<classpathentry kind="lib" path="lib/json-simple-1.1.1.jar"/>
<classpathentry kind="lib" path="lib/commonj.sdo-2.1.1.jar"/>
<classpathentry kind="lib" path="lib/la4j-0.4.9.jar"/>
Expand All @@ -20,7 +21,6 @@
<classpathentry kind="lib" path="lib/geronimo-jpa_2.0_spec-1.1.jar"/>
<classpathentry kind="lib" path="lib/stax-api-1.0.1.jar"/>
<classpathentry kind="lib" path="lib/mockito-all-1.9.5.jar"/>
<classpathentry kind="lib" path="lib/ysvg.jar"/>
<classpathentry kind="lib" path="lib/mason-19.jar"/>
<classpathentry kind="lib" path="lib/ojalgo-48.3.2.jar"/>
<classpathentry exported="true" kind="lib" path="lib/commons-jxpath-1.3.jar"/>
Expand Down Expand Up @@ -71,10 +71,9 @@
<classpathentry kind="lib" path="lib/junit-4.13.1.jar"/>
<classpathentry kind="lib" path="lib/guava-18.0.jar"/>
<classpathentry kind="lib" path="lib/json-smart-1.3.1.jar"/>
<classpathentry kind="lib" path="lib/las2peer-bundle-1.1.1.jar"/>
<classpathentry kind="lib" path="lib/las2peer-bundle-1.2.2.jar"/>
<classpathentry kind="lib" path="lib/sbbi-upnplib-1.0.4.jar"/>
<classpathentry kind="lib" path="lib/xml-apis-ext-1.3.04.jar"/>
<classpathentry kind="lib" path="lib/yguard-3.0.0.jar"/>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/jdk-14.0.2">
<attributes>
<attribute name="module" value="true"/>
Expand Down
31 changes: 31 additions & 0 deletions .github/workflows/gradle.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
# This workflow will build a Java project with Gradle

name: Java CI with Gradle

# Triggers the workflow on push events (on every branch)
on:
push:
branches:
- '*'
jobs:
build:
runs-on: ubuntu-latest
steps:
- name: Checkout Code
uses: actions/checkout@v2

- name: Set up JDK 17
uses: actions/setup-java@v1
with:
java-version: 17

- name: Set up Arangodb
uses: xinova/arangodb-action@v1
with:
arangodb version: 'latest' # See https://hub.docker.com/_/arangodb for available versions

- name: Grant execute permission for gradlew
run: chmod +x gradlew

- name: Build WebOCD Service
run: ./gradlew build
11 changes: 11 additions & 0 deletions .project
Original file line number Diff line number Diff line change
Expand Up @@ -20,4 +20,15 @@
<nature>org.eclipse.jdt.core.javanature</nature>
<nature>org.eclipse.buildship.core.gradleprojectnature</nature>
</natures>
<filteredResources>
<filter>
<id>1643825602746</id>
<name></name>
<type>30</type>
<matcher>
<id>org.eclipse.core.resources.regexFilterMatcher</id>
<arguments>node_modules|.git|__CREATED_BY_JAVA_LANGUAGE_SERVER__</arguments>
</matcher>
</filter>
</filteredResources>
</projectDescription>
24 changes: 19 additions & 5 deletions Dockerfile
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
FROM openjdk:14-alpine
FROM openjdk:17-alpine
COPY . /usr/src/webocd
WORKDIR /usr/src/webocd
RUN apk update && apk add bash \
Expand All @@ -8,8 +8,22 @@ RUN apk update && apk add bash \
ghostscript-fonts \
build-base
# Fetch fitting gradle version manually because so far no os container has both jdk14 and a high enough gradle package version
RUN mkdir ../gradleFolder && wget https://services.gradle.org/distributions/gradle-6.8.3-bin.zip -P ../gradleFolder \
&& unzip -d ../gradleFolder ../gradleFolder/gradle-6.8.3-bin.zip && rm -R ../gradleFolder/gradle-6.8.3-bin.zip
RUN ../gradleFolder/gradle-6.8.3/bin/gradle build
RUN mkdir ../gradleFolder && wget https://services.gradle.org/distributions/gradle-7.3.2-bin.zip -P ../gradleFolder \
&& unzip -d ../gradleFolder ../gradleFolder/gradle-7.3.2-bin.zip && rm -R ../gradleFolder/gradle-7.3.2-bin.zip

# Replace HOST for database configuration (standard & for testing) with the db container name
RUN sed -i "s/^HOST.*/HOST=arangodb/" ocd/arangoDB/config_test.properties
RUN sed -i "s/^HOST.*/HOST=arangodb/" ocd/arangoDB/standard_config.properties


# This is to clean the previously generated agents and avoid error in case WebOCD was built before image creation
RUN ../gradleFolder/gradle-7.3.2/bin/gradle clean

# Execute gradle build and tests excluding db tests
RUN ../gradleFolder/gradle-7.3.2/bin/gradle build -x test
RUN ../gradleFolder/gradle-7.3.2/bin/gradle testWithoutDB

# Add a loop that waits for arangodb to run, before webocd service starts when start_network.sh is used
RUN sed -i '2 i while ! nc -z arangodb 8529; do sleep 10; done' bin/start_network.sh
RUN chmod +x bin/start_network.sh
CMD ["bin/start_network.sh"]
CMD ["bin/start_network.sh"]
19 changes: 18 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# OCD Service - WebOCD

This is a RESTful web service offering various overlapping community detection algorithms(OCDA) and centrality measures/simulations. The service is developed with the Eclipse IDE and IntelliJ, so we recommend you to use one of these tools to work on the project.<br/>
This is a RESTful web service offering various overlapping community detection algorithms(OCDA) and centrality measures/simulations. The service is developed with the IntelliJ IDE, so we recommend you to use this tool to work on the project.<br/>
**WebOCD works best with its corresponding [web client](https://github.com/rwth-acis/OCD-Web-Client)**.

A running instance of WebOCD can be found at http://webocd.dbis.rwth-aachen.de/OCDWebClient/.
Expand All @@ -9,3 +9,20 @@ For any information on the service itself please refer to the [project wiki](htt

### Additional Notes
This service is based on the LAS2peer Template Project and its underlying LAS2peer framework. For any information on these please refer to https://github.com/rwth-acis/LAS2peer-Template-Project and https://github.com/rwth-acis/LAS2peer

# Building & Running WebOCD Service

WebOCD Service requires a running arangodb instance, which has to be [installed separately](https://www.arangodb.com/docs/stable/installation.html). In order for WebOCD to access the database, the configuration files, located under [ocd/arangoDB](/ocd/arangoDB) should be adjusted accordingly.

The service can be built using the gradle build task. Afterwards, it can be run using start_network.sh/start_network.bat scripts located in the [bin](/bin) directory (Consider changing the java heap size in the file with the ```-Xmx``` parameter to avoid storage allocation issues).

Alternatively, Docker can be used, as explained below, to run the WebOCD service and database in one line.

# Quickstart Docker
To build and run WebOCD Service using Docker, you can navigate to the REST-OCD-Service directory and execute
```
docker compose up
```
This will build and run containers for WebOCD service and arangodb, which is required for the service to run properly.

You can adjust the database container default password by modifying docker-compose.yml. Keep in mind to also change the config file [config.properties](ocd/arangoDB/config.properties), so that WebOCD tests as well as the service can use the database.
23 changes: 23 additions & 0 deletions docker-compose.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
version: '3'
services:
arangodb:
image: arangodb
container_name: webocd-arangodb
ports:
- "127.0.0.1:8529:8529"
environment:
- ARANGO_ROOT_PASSWORD=password
webocd-service:
container_name: webocd-service
stdin_open: true # docker run -i
tty: true # docker run -t
restart: on-failure
depends_on:
- arangodb
build:
context: .
dockerfile: ./Dockerfile
links:
- arangodb
ports:
- "127.0.0.1:8080:8080"
9 changes: 5 additions & 4 deletions docs/pages/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -28,10 +28,10 @@ The OCD Service is publicly accessible via this [link](http://webocd.dbis.rwth-a
Along with the service we provide a web client which also has its own [project](https://github.com/rwth-acis/OCD-Web-Client). The client can only be used with a valid Learning Layers account. We recommend to use the service along with the web client.


We additionally provide a brief [Integration Tutorial](/integration/) that shows you the usage of the most important requests so that you can get started with the OCD Service more quickly.
We additionally provide a brief [Integration Tutorial](/REST-OCD-Services/pages/wiki/integration/) that shows you the usage of the most important requests so that you can get started with the OCD Service more quickly. A more detailed usage examples of WebOCD Service, using the WebOCD webclient can be found here [link](/REST-OCD-Services/pages/tutorials/login).

## The OCD Service
The service is developed using the Eclipse IDE, so we recommend you to stick to that tool for any work on this project.
The service is developed using the IntelliJ IDEA, so we recommend you to stick to that tool for any work on this project.

Please refer to the following pages in order to obtain more information about the OCD Service.

Expand All @@ -41,9 +41,10 @@ Please refer to the following pages in order to obtain more information about th
+ [User Management and Authentication](/REST-OCD-Services/pages/wiki/user-management-and-authentication)
+ [Deploying the OCD Service](/REST-OCD-Services/pages/wiki/service-deployment)
+ [Database Configuration](/REST-OCD-Services/pages/wiki/database-configuration)
+ [Tutorials using WebOCD Service and Webclient](/REST-OCD-Services/pages/tutorials/login)

### Important
The OCD Service is largely based on the commercial **yFiles** library. You will only be able to run it yourself if you have access to the archive _y.jar_. The Chair i5 of RWTH Aachen University has a license for that library. If you are affiliated with that institute, please contact somebody to obtain the library. Also, keep in mind that the archive mentioned above must under no circumstances be publicly deployed or otherwise made publicly available. Please refer to [Deploying the OCD Service](/REST-OCD-Services/pages/wiki/service-deployment) for more information.
The WebOCD Service uses **ArangoDB** database, which has to be separately installed on the machine where the service runs. Alternatively, docker can be used to build the WebOCD Service together with the database. To build and run WebOCD Service with Docker, refer to [link](/REST-OCD-Services/pages/wiki/running#docker).

The service also currently requires **Java JDK 14** to be built and most likely also to run it. However, there also exists an older version for JDK 8 (tag [1.0.0](https://github.com/rwth-acis/REST-OCD-Services/tree/1.0.0)) which is still functional in case you need it.
The service also currently requires **Java JDK 17** to be built and most likely also to run it. However, there also exists an older version for JDK 8 (tag [1.0.0](https://github.com/rwth-acis/REST-OCD-Services/tree/1.0.0)) which is still functional in case you need it.

50 changes: 9 additions & 41 deletions docs/pages/wiki/build-process.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,59 +4,27 @@ title: Build Process
---

# Introduction
The OCD Service is built via Gradle. We recommend a version similar to 6.8, yet others may also work. The project has mostly been developed with the Eclipse IDE using the gradle buildship plugin (most eclipse IDEs already include this), yet IDEs like IntelliJ are actively used as well. Finally note that you will likely need Java version 14 for the build to work without problems.

There also exists an older version using Apache Ant which is described at the bottom. Here, there are two build files, _build.xml_, and _ocd_build.xml_. Please do only use the _ocd_build.xml_. Note that Eclipse might illustrate errors for the build file because apparently it is not able to resolve the external target dependencies to the second build file correctly. This should not cause an issue. It is highly recommended that you build the project with Eclipse (To use Java 8 for the older version you may have to go with the Eclipse IDE for Java EE Developers variant) as this is the environment used during development and therefore the best tested one.
The OCD Service is built via Gradle. We recommend a version similar to 7.3, yet newer versions may also work. The project has mostly been developed with the IntelliJ IDEA. You can import the project into IntelliJ as a Gradle project. Finally note that you will likely need Java version 17 for the build to work without problems.

# Executing the Build Process

## First Build
When you are going to run the build process the very first time, you will need two manually obtain two libraries:
+ _y.jar_ forms part of the commercial yFiles library by yWorks which is not publicly available. Therefore you will have to add it manually to the project. The Chair i5 of RWTH Aachen University has a license for the library, so please contact somebody to obtain access. This will obviously only be possible if you are somehow affiliated with the Chair.
+ _ysvg.jar_ is an SVG writer for yFiles Graph2D objects that makes it possible to add useful features to generated SVG diagrams. The library is used for the visualization of graphs and covers.
Both libraries then have to be placed into the _yFiles_ folder.

Now, you just have to import the project as a gradle project via eclipse or simply open in via IntelliJ. After the first build, eclipse might still give you errors saying the yFiles jars are missing. To fix this, simply refresh the gradle project via the option you get from right clicking the folder.
When you are going to run the build process the very first time, you just have to import the project as a gradle project IntelliJ and execute the gradle *build* task. Make sure to adapt the database configuration _ocd/arangoDB/config.properties_ to fit your running ArangoDB instance.

After the build, you can then either start the _start_network.bat_ or _start_network.sh_ files in the bin folder to get the service running, see [Running the OCD Service](/REST-OCD-Services/pages/wiki/running) for more information.

## General Build
There are numerous targets which can be run. This summarizes the most important ones:
There are numerous gradle tasks which can be executed. This summarizes the most important ones:
+ _jar_: Generates the service jar in the _service_ and a copy in the _rest\_ocd\_services/export/jars_ directory. This archive is required for running the service.
+ _test_: Runs all jUnit tests . The test reports are stored in _rest\_ocd\_services/export/test_reports_.
+ _yguard_: Generates an obfuscated service jar in the _rest\_ocd\_services/export/obfuscated_ directory. This is required for public service deployment. Please refer to [Deploying the OCD Service](/REST-OCD-Services/pages/wiki/service-deployment) for more information. A log file of the obfuscation process is stored under _ocd/yGuard/log.xml_.
+ _build_: The target you'll likely be running most of the time. This executes the build process and generates a jar as well as the executables.
+ _startscripts:_ Generates startscripts into the bin folder that are used to start the service.
+ _generateAgents_: Generates the user and service agents as specified in _build.gradle_. The users will be loaded when the service (or more precisely the underlying LAS2peer node) is launched.
+ _clean_: Clean up files generated from the build. This should be executed before rebuilding.

# Potential Issues

Currently, the build might fail if a version of Java not equal to 14 (or 8 for the older version of the service) is used, even with eclipse in compliance mode for that version, and running the service with a version other than this one is also likely to cause errors.

## Linux Users
The system was mainly tested on Windows so far. For Linux, there is still a small issue with the old Ant Build. In case you receive an exception that the database (_db_) could not be created, please do manually remove the directory _db_ from the _ocd_ directory before the build.


# Executing the Old Ant Build Process

## First Build
When you are going to run the build process the very first time, please make sure to run the target _get_deps_ in order to obtain all dependencies.

Due to the yFiles library being commercial, there are three dependencies which will be missing and must be added manually to the _lib_ folder:
+ _y.jar_ forms part of the commercial yFiles library by yWorks which is not publicly available. Therefore you will have to add it manually to the project. The Chair i5 of RWTH Aachen University has a license for the library, so please contact somebody to obtain access. This will obviously only be possible if you are somehow affiliated with the Chair.
+ _yguard.jar_ is a free obfuscation tool by yWorks which is only required for public deployment of the service. Anybody can download it from this [link](https://www.yworks.com/downloads#yGuard). Refer to [Deploying the OCD Service](/REST-OCD-Services/pages/wiki/service-deployment) for more information. You can probably do without it.
+ _ysvg.jar_ is an SVG writer for yFiles Graph2D objects that makes it possible to add useful features to generated SVG diagrams. The library is used for the visualization of graphs and covers.

## Linux Users
Please make sure that the program _ocd/lfr/LfrBenchmarkLinux_ is executable (via `chmod +x <filename>`).
# Potential Issues
Currently, the build might fail if a version of Java not equal to 17 is used.

## General Build
There are numerous targets which can be run. This summarizes the most important ones:
+ _jar_: Generates the service jar in the _service_ and a copy in the _export/jars_ directory. This archive is required for running the service.
+ _generate_configs_: Generates the user and service agents as specified in _etc/ant_configuration_. The users will be loaded when the service (or more precisely the underlying LAS2peer node) is launched.
+ _junit_: Runs all jUnit tests (except _src/test/i5/las2peer/services/ocd/DatabaseInitializer.java_, take look at the target _setup_database_ for more information). The test reports are stored in _export/test_reports_.
+ _startscripts:_ Generates startscripts into the bin folder that are used to start the service.
+ _obfuscate_: Generates an obfuscated service jar in the _export/obfuscated_ directory. This is required for public service deployment. Please refer to [Deploying the OCD Service](/REST-OCD-Services/pages/wiki/service-deployment) for more information. A log file of the obfuscation process is stored under _ocd/yGuard/log.xml_.
+ _setup_database_: This is intended for automatically populating the database for presentation or debugging purposes. It is not required in any way to actually make the database work. The database is set up by running _src/test/i5/las2peer/services/ocd/DatabaseInitializer.java_ as a jUnit test. You can adapt the code in any way that suits your needs.
+ _all_: Runs all of the above except _setup_database_.
Running WebOCD Service might cause *AgentAccessDeniedException* if the *build* task was performed multiple times without having performed the *clean* task inbetween. If this occurs, simply do the *clean* task followed by the *build* task and the issue should be solved.

## Building with IntelliJ
For IntelliJ, you can follow the above guide as well. For correct indexing in the IDE you however need to add the lib folder as a library via right click. You might also want to double check that build.xml isn't selected as an ant build file instead of ocd_build.xml
Loading