Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
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
13 changes: 13 additions & 0 deletions Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
FROM maven:3.9.5 AS build

COPY src /home/app/src
COPY pom.xml /home/app
RUN mvn -f /home/app/pom.xml clean install -DskipTests

FROM openjdk:21
COPY --from=build /home/app/target/ods-metadata-0.0.1-SNAPSHOT.jar /usr/local/lib/ods-metadata-0.0.1-SNAPSHOT.jar
COPY boot.sh .

EXPOSE 8083
ENTRYPOINT ["bash","boot.sh"]
ENTRYPOINT ["java","-jar","/usr/local/lib/rods-metadata-0.0.1-SNAPSHOT.jar"]
14 changes: 14 additions & 0 deletions boot.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
export EUREKA_URI=3.136.74.174:8090
export EUREKA_PASS=W872INBJNWZcoDN
export EUREKA_USER=someUserName

export COCKROACH_USER="monitoring"
export COCKROACH_PASS="9gLufC2BVxta3O6m"
export COCKROACH_URI="postgresql://onedatashare-627.j77.cockroachlabs.cloud:26257/onedatashare?sslmode=prefer"

export INFLUX_TOKEN="CkCFcu0sca6udDVk3A0Bbj1rfwilGSEAp8A36Qy7LOhE2DhnVqAtoT1QpD9dKWwVIr4oIczft0ypWhRNNKN0XA=="
export INFLUX_ORG="10972f62ad2d59a6"

mvn clean package -DskipTests

java -Dspring.profiles.active=dev -jar target/ods-metadata-0.0.1-SNAPSHOT.jar
18 changes: 9 additions & 9 deletions pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.6.2</version>
<version>3.1.0</version>
<relativePath/>
</parent>
<groupId>org.onedatashare</groupId>
Expand All @@ -14,8 +14,8 @@
<name>ods-metadata</name>
<description>OneDataShare Service that exposes the Data in CDB to other services.</description>
<properties>
<java.version>11</java.version>
<spring-cloud.version>2021.0.0</spring-cloud.version>
<java.version>21</java.version>
<spring-cloud.version>2022.0.3</spring-cloud.version>
</properties>
<dependencies>
<dependency>
Expand Down Expand Up @@ -64,7 +64,7 @@
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
<version>3.1.0</version>
<version>4.0.2</version>
</dependency>
<dependency>
<groupId>org.postgresql</groupId>
Expand All @@ -79,7 +79,7 @@
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.24</version>
<version>1.18.30</version>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
Expand All @@ -98,12 +98,12 @@
<dependency>
<groupId>jakarta.validation</groupId>
<artifactId>jakarta.validation-api</artifactId>
<version>2.0.2</version>
<version>3.0.2</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
<version>5.3.16</version>
<version>6.0.9</version>
</dependency>
</dependencies>
<dependencyManagement>
Expand Down Expand Up @@ -133,7 +133,7 @@
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.10.1</version>
<version>3.11.0</version>
<configuration>
<source>${java.version}</source>
<target>${java.version}</target>
Expand All @@ -146,7 +146,7 @@
<path>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.24</version>
<version>1.18.30</version>
</path>
<path>
<groupId>org.projectlombok</groupId>
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package org.onedatashare.odsmetadata.controller;


import com.google.common.base.Preconditions;
import lombok.extern.slf4j.Slf4j;
import org.onedatashare.odsmetadata.model.BatchJobData;
Expand All @@ -14,16 +15,12 @@
import org.springframework.data.domain.Pageable;
import org.springframework.format.annotation.DateTimeFormat;
import org.springframework.http.MediaType;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.bind.annotation.*;
import org.onedatashare.odsmetadata.entity.BatchJobExecution;

import java.time.LocalDateTime;
import java.time.ZoneOffset;
import java.util.ArrayList;
import java.util.List;
import java.util.UUID;
import java.util.*;
import java.util.regex.Pattern;

/**
Expand Down Expand Up @@ -266,4 +263,30 @@ public TransferSummary jobMonitor(@RequestParam String userEmail, @RequestParam
summary.setTransferStatus(jobData.get(0).getStatus());
return summary;
}

@GetMapping("/user_batchJobs")
public List<BatchJobExecution> getBatchJobBasedOnEmailAndType(@RequestParam String userEmail,
@RequestParam String type) {

List<BatchJobExecution> batchJobDetails = new ArrayList<>();
Preconditions.checkNotNull(userEmail);
Preconditions.checkNotNull(type);
log.info(userEmail);
log.info(type);
if (validateUserEmail(userEmail)) {
batchJobDetails = jobService.getBatchJobDetailsBasedOnEmailAndType(userEmail, type);
}

return batchJobDetails;
}

@GetMapping("/jobs/param_map")
public List<BatchJobExecution> getDistinctBatchJobsByParameterValues(@RequestBody HashMap<String, String> paramMap) {

log.info("test values : {}", paramMap);
List<BatchJobExecution> batchJobDetails = new ArrayList<>();
Preconditions.checkNotNull(paramMap);
batchJobDetails = jobService.getBatchJobExecutionByParameterMap(paramMap);
return batchJobDetails;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

import lombok.Data;

import javax.persistence.*;
import jakarta.persistence.*;
import java.sql.Timestamp;
import java.util.List;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
import com.fasterxml.jackson.annotation.JsonIgnore;
import lombok.Data;

import javax.persistence.*;
import jakarta.persistence.*;
import java.sql.Timestamp;
@Data
@Entity
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
import com.fasterxml.jackson.annotation.JsonIgnore;
import lombok.Data;

import javax.persistence.*;
import jakarta.persistence.*;
import java.sql.Timestamp;
@Data
@Entity
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,9 @@
import org.onedatashare.odsmetadata.entity.BatchJobExecutionParams;
import org.springframework.data.domain.Pageable;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.PagingAndSortingRepository;
import org.springframework.data.repository.query.Param;
import org.springframework.stereotype.Repository;

import java.util.Date;
Expand All @@ -27,4 +29,15 @@ public interface BatchJobRepository extends PagingAndSortingRepository<BatchJobE
List<BatchJobExecution> findAllByBatchJobParams_ParameterValueLike(String userId, Pageable pr);

List<BatchJobExecution> findByStartTimeIsGreaterThanEqualAndEndTimeIsLessThanEqualAndBatchJobParams_ParameterValueLike(Date startTime, Date endTime, String userId, Pageable pr);

List<BatchJobExecution> findByBatchJobParams_ParameterValueIn(List<String> paramValues);

@Query("SELECT DISTINCT j FROM BatchJobExecution j " +
"INNER JOIN j.batchJobParams p " +
"INNER JOIN j.batchJobParams p2 " +
"WHERE ((p.parameterName = 'sourceCredentialType' AND p.parameterValue LIKE %:type%) " +
"OR (p.parameterName = 'destCredentialType' AND p.parameterValue LIKE %:type%)) " +
"AND p2.parameterValue LIKE %:email%")
List<BatchJobExecution> findBatchJobExecutionByEmailAndSourceAndDestinationType(
@Param("email") String email, @Param("type") String type);
}
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;

import javax.annotation.PostConstruct;
import jakarta.annotation.PostConstruct;
import java.time.Instant;
import java.time.LocalDateTime;
import java.time.ZoneOffset;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -134,6 +134,35 @@ public Page<BatchJobData> getUserJobsByDateRange(String userId, Instant from, In
return new PageImpl<BatchJobData>(batchJobDataList, pr, batchJobDataList.size());
}

public List<BatchJobExecution> getBatchJobDetailsBasedOnEmailAndType(String userEmail, String type){

List<BatchJobExecution> batchJobDetails = batchJobRepository
.findBatchJobExecutionByEmailAndSourceAndDestinationType(userEmail, type);
return batchJobDetails;

}

public List<BatchJobExecution> getBatchJobExecutionByParameterMap(Map<String, String> paramMap){

List<String> paramValues = paramMap.values().stream()
.filter(value -> value != null && !value.isEmpty())
.collect(Collectors.toList());
List<BatchJobExecution> batchJobExecutions = batchJobRepository.findByBatchJobParams_ParameterValueIn(paramValues);
List<BatchJobExecution> filteredJobs = batchJobExecutions.stream()
.filter(job -> matchesParameterMap(job, paramMap))
.collect(Collectors.toList());
return filteredJobs;
}

private boolean matchesParameterMap(BatchJobExecution job, Map<String, String> paramMap) {

List<BatchJobExecutionParams> jobParams = job.getBatchJobParams();

return paramMap.entrySet().stream().allMatch(entry -> jobParams.stream()
.anyMatch(param -> param.getParameterName().equals(entry.getKey())
&& param.getParameterValue().equals(entry.getValue())));
}

private void processBatchJobExecutionData(List<BatchJobData> batchJobDataList, List<BatchJobExecution> batchJobExecutions) {
if (!CollectionUtils.isEmpty(batchJobExecutions)) {
batchJobExecutions.stream().forEach(batchJobExecution -> {
Expand Down
2 changes: 1 addition & 1 deletion src/main/resources/application.properties
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ server.port=8084
management.endpoints.web.exposure.include=*

#Job Datasource config
spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.PostgreSQL95Dialect
spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.PostgreSQLDialect
spring.jpa.properties.hibernate.jdbc.lob.non_contextual_creation=true
spring.datasource.driver-class-name=org.postgresql.Driver
spring.datasource.url=jdbc:${COCKROACH_URI:postgresql://localhost:26257/job_details?sslmode=disable}
Expand Down