Skip to content

Commit

Permalink
Merge pull request #335 from MORE-Platform/staging
Browse files Browse the repository at this point in the history
Merg Staging into Main
  • Loading branch information
alireza-dhp committed Aug 9, 2024
2 parents a622ac2 + 8eaefb7 commit 64e15c8
Show file tree
Hide file tree
Showing 103 changed files with 3,426 additions and 443 deletions.
48 changes: 34 additions & 14 deletions .github/workflows/compile-test.yml
Original file line number Diff line number Diff line change
@@ -1,6 +1,10 @@
name: Test and Compile
on:
workflow_dispatch:
inputs:
dockerTag:
description: If set, docker img is built and tagged accordingly
required: false
push:

jobs:
Expand All @@ -10,7 +14,7 @@ jobs:
steps:
- uses: actions/checkout@v4
- name: Set up JDK 17
uses: actions/setup-java@v3
uses: actions/setup-java@v4
with:
distribution: 'temurin'
java-version: 17
Expand All @@ -37,28 +41,44 @@ jobs:
Build-and-Deploy:
name: "Build and Push Docker Image"
runs-on: ubuntu-latest
if: github.ref_name == 'main'
if: contains(fromJSON('["main", "develop", "redlink", "staging"]'), github.ref_name) || github.event.inputs.dockerTag != ''
needs:
- Compile-and-Test
steps:
- uses: actions/checkout@v4
- name: Set up JDK 17
uses: actions/setup-java@v3
uses: actions/setup-java@v4
with:
distribution: 'temurin'
java-version: 17
- name: Generate additional Docker-Tags
run: |
TAGS=${BRANCH}
if [ "$BRANCH" == "$MAIN_BRANCH" ]; then
TAGS="latest,$TAGS"
fi
if [ -n "$EVENT_PARAM" ]; then
TAGS="$EVENT_PARAM"
fi
echo "Generated Docker-Tags: $TAGS"
echo "TAGS=$TAGS" >> "$GITHUB_ENV"
env:
BRANCH: ${{ github.ref_name }}
MAIN_BRANCH: ${{ github.event.repository.default_branch }}
EVENT_PARAM: ${{ github.event.inputs.dockerTag }}
- name: Build JIB container and publish to GitHub Packages
run: ./mvnw -B -U
--no-transfer-progress
clean deploy
-Drevision=${{github.run_number}}
-Dchangelist=
-Dsha1=.${GITHUB_SHA:0:7}
-Dquick
-Ddocker.namespace=${DOCKER_NAMESPACE,,}
-Djib.to.tags=latest
-Djib.to.auth.username=${{ github.actor }}
-Djib.to.auth.password=${{ secrets.GITHUB_TOKEN }}
run:
./mvnw -B -U
--no-transfer-progress
clean deploy
-Drevision=${{github.run_number}}
-Dchangelist=
-Dsha1=.${GITHUB_SHA:0:7}
-Dquick
-Ddocker.namespace=${DOCKER_NAMESPACE,,}
-Djib.to.tags=${TAGS}
-Djib.to.auth.username=${{ github.actor }}
-Djib.to.auth.password=${{ secrets.GITHUB_TOKEN }}
env:
DOCKER_NAMESPACE: ghcr.io/${{ github.repository_owner }}

Expand Down
30 changes: 15 additions & 15 deletions pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -35,8 +35,8 @@
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>

<java.version>17</java.version>
<spring-boot.version>3.1.3</spring-boot.version>
<testcontainers.version>1.19.0</testcontainers.version>
<spring-boot.version>3.3.1</spring-boot.version>
<testcontainers.version>1.19.8</testcontainers.version>

<docker.namespace>more-project</docker.namespace>

Expand All @@ -57,7 +57,7 @@
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>flatten-maven-plugin</artifactId>
<version>1.5.0</version>
<version>1.6.0</version>
<configuration>
<outputDirectory>${project.build.directory}</outputDirectory>
</configuration>
Expand All @@ -84,12 +84,12 @@
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>3.1.2</version>
<version>3.2.5</version>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.11.0</version>
<version>3.13.0</version>
<configuration>
<source>${java.version}</source>
<target>${java.version}</target>
Expand All @@ -100,15 +100,15 @@
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-install-plugin</artifactId>
<version>3.1.1</version>
<version>3.1.2</version>
<configuration>
<skip>${maven.install.skip}</skip>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-deploy-plugin</artifactId>
<version>3.1.1</version>
<version>3.1.2</version>
<configuration>
<skip>true</skip>
</configuration>
Expand All @@ -128,7 +128,7 @@
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>license-maven-plugin</artifactId>
<version>2.2.0</version>
<version>2.4.0</version>
<executions>
<execution>
<id>generate-third-party</id>
Expand Down Expand Up @@ -319,7 +319,7 @@
<plugin>
<groupId>com.google.cloud.tools</groupId>
<artifactId>jib-maven-plugin</artifactId>
<version>3.4.0</version>
<version>3.4.3</version>
<executions>
<execution>
<id>jib-deploy</id>
Expand Down Expand Up @@ -408,12 +408,12 @@
<dependency>
<groupId>co.elastic.clients</groupId>
<artifactId>elasticsearch-java</artifactId>
<version>8.10.2</version>
<version>8.13.4</version>
</dependency>
<dependency>
<groupId>com.google.firebase</groupId>
<artifactId>firebase-admin</artifactId>
<version>9.2.0</version>
<version>9.3.0</version>
</dependency>
<dependency>
<groupId>org.apache.httpcomponents</groupId>
Expand All @@ -429,7 +429,7 @@
<dependency>
<groupId>com.mchange</groupId>
<artifactId>c3p0</artifactId>
<version>0.9.5.5</version>
<version>0.10.1</version>
</dependency>

<dependency>
Expand All @@ -440,17 +440,17 @@
<dependency>
<groupId>jakarta.json</groupId>
<artifactId>jakarta.json-api</artifactId>
<version>2.1.2</version>
<version>2.1.3</version>
</dependency>
<dependency>
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
<version>32.1.2-jre</version>
<version>33.2.1-jre</version>
</dependency>
<dependency>
<groupId>net.sf.biweekly</groupId>
<artifactId>biweekly</artifactId>
<version>0.6.7</version>
<version>0.6.8</version>
</dependency>
</dependencies>
</dependencyManagement>
Expand Down
3 changes: 1 addition & 2 deletions studymanager-core/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -16,12 +16,11 @@
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.15.2</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>2.0.9</version>
<version>2.0.13</version>
</dependency>
</dependencies>
</project>
Original file line number Diff line number Diff line change
Expand Up @@ -77,6 +77,8 @@ public P validate(P values) {
}
}

public P preImport(P values) { return values; }

public WebComponent getWebComponent() {
return null;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -42,4 +42,12 @@ public boolean equals(Object o) {
public int hashCode() {
return Objects.hash(super.hashCode(), studyId, participantId);
}

@Override
public String toString() {
return "ActionParameter{" +
"studyId=" + studyId +
", participantId=" + participantId +
'}';
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
package io.redlink.more.studymanager.core.io;

import java.time.Instant;

public class SimpleParticipant {
private final Integer id;
private final Instant start;

public SimpleParticipant(Integer id, Instant start) {
this.id = id;
this.start = start;
}

public Integer getId() {
return id;
}

public Instant getStart() {
return start;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,11 @@ public TriggerResult(Set<ActionParameter> actionParameters, boolean proceed) {

public static TriggerResult NOOP = new TriggerResult(null, false);
public static TriggerResult withParams(Set<ActionParameter> actionParameterSet) {
return new TriggerResult(actionParameterSet, true);
if(actionParameterSet.isEmpty()) {
return TriggerResult.NOOP;
} else {
return new TriggerResult(actionParameterSet, true);
}
}

public Set<ActionParameter> getActionParameters() {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,8 @@
*/
package io.redlink.more.studymanager.core.sdk;

import io.redlink.more.studymanager.core.io.SimpleParticipant;

import java.io.Serializable;
import java.util.Optional;
import java.util.Set;
Expand All @@ -21,6 +23,7 @@ public enum ParticipantFilter {
<T extends Serializable> Optional<T> getValue(String name, Class<T> tClass);
void removeValue(String name);
Set<Integer> participantIds(ParticipantFilter filter);
Set<SimpleParticipant> participants(ParticipantFilter filter);
long getStudyId();
Integer getStudyGroupId();
// TODO
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,15 +13,19 @@
import io.redlink.more.studymanager.core.io.ActionParameter;
import io.redlink.more.studymanager.core.properties.ActionProperties;
import io.redlink.more.studymanager.core.sdk.MoreActionSDK;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

public class PushNotificationAction extends Action<ActionProperties> {

private static final Logger LOGGER = LoggerFactory.getLogger(PushNotificationAction.class);
protected PushNotificationAction(MoreActionSDK sdk, ActionProperties properties) throws ConfigurationValidationException {
super(sdk, properties);
}

@Override
public void execute(ActionParameter parameters) {
LOGGER.info("send push notification with parameters: {}", parameters.toString());
sdk.sendPushNotification(
properties.getString("title"),
properties.getString("message")
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,62 @@
package io.redlink.more.studymanager.component.trigger.relative;

import io.redlink.more.studymanager.core.component.Trigger;
import io.redlink.more.studymanager.core.exception.ConfigurationValidationException;
import io.redlink.more.studymanager.core.io.ActionParameter;
import io.redlink.more.studymanager.core.io.Parameters;
import io.redlink.more.studymanager.core.io.SimpleParticipant;
import io.redlink.more.studymanager.core.io.TriggerResult;
import io.redlink.more.studymanager.core.properties.TriggerProperties;
import io.redlink.more.studymanager.core.sdk.MorePlatformSDK;
import io.redlink.more.studymanager.core.sdk.MoreTriggerSDK;
import io.redlink.more.studymanager.core.sdk.schedule.CronSchedule;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import java.time.Instant;
import java.time.LocalDateTime;
import java.time.LocalTime;
import java.time.ZoneId;
import java.time.temporal.ChronoUnit;
import java.util.stream.Collectors;

public class RelativeTimeTrigger extends Trigger<TriggerProperties> {

private static final Logger LOGGER = LoggerFactory.getLogger(RelativeTimeTrigger.class);

// TODO set to study home as soon the feature is there
private static final ZoneId HOME = ZoneId.of("Europe/Vienna");

protected RelativeTimeTrigger(MoreTriggerSDK sdk, TriggerProperties properties) throws ConfigurationValidationException {
super(sdk, properties);
}
@Override
public void activate() {
String schedule = sdk.addSchedule(new CronSchedule("1 0 * * * ?"));
sdk.setValue("scheduleId", schedule);
}

@Override
public void deactivate() {
sdk.getValue("scheduleId", String.class).ifPresent(sdk::removeSchedule);
}

@Override
public TriggerResult execute(Parameters parameters) {
return TriggerResult.withParams(
sdk.participants(MorePlatformSDK.ParticipantFilter.ACTIVE_ONLY).stream()
.filter(p -> matchesDayAndHour(p, Instant.now()))
.map(p -> new ActionParameter(sdk.getStudyId(), p.getId()))
.collect(Collectors.toSet())
);
}

protected boolean matchesDayAndHour(SimpleParticipant participant, Instant now) {
long day = ChronoUnit.DAYS.between(
LocalDateTime.of(participant.getStart().atZone(HOME).toLocalDate(), LocalTime.MIDNIGHT),
LocalDateTime.of(now.atZone(HOME).toLocalDate(), LocalTime.MIDNIGHT)
) + 1;
int hour = now.atZone(HOME).getHour();
return properties.getInt("hour") == hour && properties.getLong("day") == day;
}
}
Loading

0 comments on commit 64e15c8

Please sign in to comment.