Skip to content
Merged
Show file tree
Hide file tree
Changes from 8 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

Large diffs are not rendered by default.

Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@
public class LunaticJsonDataResponse {

@JsonProperty("EXTERNAL")
private LunaticJSonExternalVariables externalVariables;
private LunaticJsonExternalVariables externalVariables;

@JsonProperty("COLLECTED")
private LunaticJsonCollectedVariables collectedVariables;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
import java.util.Map;

@Data
public class LunaticJSonExternalVariables {
public class LunaticJsonExternalVariables {
private Map<String, String> externalMap = new HashMap<>();

@JsonAnySetter
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
package fr.insee.genesis.domain.model.surveyunit.rawdata;

import fr.insee.genesis.domain.model.surveyunit.Mode;
import lombok.Builder;
import org.bson.types.ObjectId;

import java.time.LocalDateTime;


@Builder
public record LunaticJsonDataModel(
ObjectId id,
String campaignId,
Mode mode,
String dataJson,
LocalDateTime recordDate,
LocalDateTime processDate
){}
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
package fr.insee.genesis.domain.model.surveyunit.rawdata;

import fr.insee.genesis.controller.sources.xml.LunaticXmlCampaign;
import fr.insee.genesis.domain.model.surveyunit.Mode;
import lombok.Builder;
import org.bson.types.ObjectId;

import java.time.LocalDateTime;

@Builder
public record LunaticXmlDataModel(
ObjectId id,
Mode mode,
LunaticXmlCampaign data,
LocalDateTime recordDate
){};
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
package fr.insee.genesis.domain.ports.api;

import com.fasterxml.jackson.core.JsonProcessingException;
import fr.insee.genesis.domain.model.surveyunit.Mode;

public interface LunaticJsonRawDataApiPort {
void saveData(String campaignName, String dataJson, Mode mode) throws JsonProcessingException;
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
package fr.insee.genesis.domain.ports.api;

import fr.insee.genesis.controller.sources.xml.LunaticXmlCampaign;
import fr.insee.genesis.domain.model.surveyunit.Mode;

public interface LunaticXmlRawDataApiPort {
void saveData(LunaticXmlCampaign data, Mode mode);
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
package fr.insee.genesis.domain.ports.spi;

import fr.insee.genesis.domain.model.surveyunit.rawdata.LunaticJsonDataModel;

public interface LunaticJsonPersistancePort {
void save(LunaticJsonDataModel lunaticJsonDataModel);
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
package fr.insee.genesis.domain.ports.spi;

import fr.insee.genesis.domain.model.surveyunit.rawdata.LunaticXmlDataModel;

import java.util.List;

public interface LunaticXmlPersistancePort {
void save(LunaticXmlDataModel lunaticXmlDataModels);
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
package fr.insee.genesis.domain.service.rawdata;

import fr.insee.genesis.domain.model.surveyunit.Mode;
import fr.insee.genesis.domain.model.surveyunit.rawdata.LunaticJsonDataModel;
import fr.insee.genesis.domain.ports.api.LunaticJsonRawDataApiPort;
import fr.insee.genesis.domain.ports.spi.LunaticJsonPersistancePort;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.stereotype.Service;

import java.time.LocalDateTime;

@Service
public class LunaticJsonRawDataService implements LunaticJsonRawDataApiPort {
@Qualifier("lunaticJsonMongoAdapter")
private final LunaticJsonPersistancePort lunaticJsonPersistancePort;

@Autowired
public LunaticJsonRawDataService(LunaticJsonPersistancePort lunaticJsonPersistancePort) {
this.lunaticJsonPersistancePort = lunaticJsonPersistancePort;
}

@Override
public void saveData(String campaignName, String dataJson, Mode mode){
LunaticJsonDataModel lunaticJsonDataModel = LunaticJsonDataModel.builder()
.campaignId(campaignName)
.mode(mode)
.dataJson(dataJson)
.recordDate(LocalDateTime.now())
.build();

lunaticJsonPersistancePort.save(lunaticJsonDataModel);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
package fr.insee.genesis.domain.service.rawdata;

import fr.insee.genesis.controller.sources.xml.LunaticXmlCampaign;
import fr.insee.genesis.domain.model.surveyunit.Mode;
import fr.insee.genesis.domain.model.surveyunit.rawdata.LunaticXmlDataModel;
import fr.insee.genesis.domain.ports.api.LunaticXmlRawDataApiPort;
import fr.insee.genesis.domain.ports.spi.LunaticXmlPersistancePort;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.stereotype.Service;

import java.time.LocalDateTime;

@Service
public class LunaticXmlRawDataService implements LunaticXmlRawDataApiPort {
@Qualifier("lunaticXmlMongoAdapter")
private final LunaticXmlPersistancePort lunaticXmlPersistancePort;

@Autowired
public LunaticXmlRawDataService(LunaticXmlPersistancePort lunaticXmlPersistancePort) {
this.lunaticXmlPersistancePort = lunaticXmlPersistancePort;
}

@Override
public void saveData(LunaticXmlCampaign campaign, Mode mode) {
LunaticXmlDataModel lunaticXmlDataModel = LunaticXmlDataModel.builder()
.mode(mode)
.data(campaign)
.recordDate(LocalDateTime.now())
.build();

lunaticXmlPersistancePort.save(lunaticXmlDataModel);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
package fr.insee.genesis.infrastructure.adapter;

import fr.insee.genesis.domain.model.surveyunit.rawdata.LunaticJsonDataModel;
import fr.insee.genesis.domain.ports.spi.LunaticJsonPersistancePort;
import fr.insee.genesis.infrastructure.document.rawdata.LunaticJsonDataDocument;
import fr.insee.genesis.infrastructure.mappers.LunaticJsonDocumentMapper;
import fr.insee.genesis.infrastructure.repository.LunaticJsonMongoDBRepository;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.stereotype.Service;

@Slf4j
@Service
@Qualifier("lunaticJsonMongoAdapter")
public class LunaticJsonMongoAdapter implements LunaticJsonPersistancePort {

private final LunaticJsonMongoDBRepository lunaticJsonMongoDBRepository;

@Autowired
public LunaticJsonMongoAdapter(LunaticJsonMongoDBRepository lunaticJsonMongoDBRepository) {
this.lunaticJsonMongoDBRepository = lunaticJsonMongoDBRepository;
}

@Override
public void save(LunaticJsonDataModel lunaticJsonDataModel) {
LunaticJsonDataDocument document = LunaticJsonDocumentMapper.INSTANCE
.modelToDocument(lunaticJsonDataModel);
lunaticJsonMongoDBRepository.insert(document);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
package fr.insee.genesis.infrastructure.adapter;

import fr.insee.genesis.domain.model.surveyunit.rawdata.LunaticXmlDataModel;
import fr.insee.genesis.domain.ports.spi.LunaticXmlPersistancePort;
import fr.insee.genesis.infrastructure.document.rawdata.LunaticXmlDataDocument;
import fr.insee.genesis.infrastructure.mappers.LunaticXmlDocumentMapper;
import fr.insee.genesis.infrastructure.repository.LunaticXmlMongoDBRepository;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.data.mongodb.core.MongoTemplate;
import org.springframework.stereotype.Service;

@Slf4j
@Service
@Qualifier("lunaticXmlMongoAdapter")
public class LunaticXmlMongoAdapter implements LunaticXmlPersistancePort {

private final LunaticXmlMongoDBRepository mongoRepository;

@Autowired
public LunaticXmlMongoAdapter(LunaticXmlMongoDBRepository mongoRepository) {
this.mongoRepository = mongoRepository;
}

@Override
public void save(LunaticXmlDataModel lunaticXmlDataModel) {
LunaticXmlDataDocument document = LunaticXmlDocumentMapper.INSTANCE
.modelToDocument(lunaticXmlDataModel);
mongoRepository.insert(document);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
package fr.insee.genesis.infrastructure.document.rawdata;

import fr.insee.genesis.domain.model.surveyunit.Mode;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.bson.types.ObjectId;
import org.springframework.data.annotation.Id;
import org.springframework.data.mongodb.core.mapping.Document;

import java.time.LocalDateTime;
import java.util.Map;

@Data
@NoArgsConstructor
@AllArgsConstructor
@Document(collection = "lunaticjsondata")
public class LunaticJsonDataDocument {
@Id
private ObjectId id;
private String campaignId;
private Mode mode;
private Map<String, Object> data;
private LocalDateTime recordDate;
private LocalDateTime processDate;
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
package fr.insee.genesis.infrastructure.document.rawdata;

import fr.insee.genesis.controller.sources.xml.LunaticXmlCampaign;
import fr.insee.genesis.domain.model.surveyunit.Mode;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.bson.types.ObjectId;
import org.springframework.data.annotation.Id;
import org.springframework.data.mongodb.core.mapping.Document;

import java.time.LocalDateTime;

@Data
@NoArgsConstructor
@AllArgsConstructor
@Document(collection = "lunaticxmldata")
public class LunaticXmlDataDocument {
@Id
private ObjectId id;
private LunaticXmlCampaign lunaticXmlData;
private Mode mode;
private LocalDateTime recordDate;
}
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package fr.insee.genesis.infrastructure.document.schedule;

import fr.insee.genesis.Constants;
import fr.insee.genesis.domain.model.schedule.KraftwerkExecutionSchedule;
import lombok.AllArgsConstructor;
import lombok.Data;
Expand All @@ -14,7 +15,7 @@
@Data
@NoArgsConstructor
@AllArgsConstructor
@Document(collection = "schedules")
@Document(collection = Constants.MONGODB_SCHEDULE_COLLECTION_NAME)
public class ScheduleDocument {

public ScheduleDocument(String surveyName, List<KraftwerkExecutionSchedule> kraftwerkExecutionScheduleList) {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,13 +1,14 @@
package fr.insee.genesis.infrastructure.document.surveyunit;

import fr.insee.genesis.Constants;
import lombok.Data;
import org.springframework.data.mongodb.core.mapping.Document;

import java.time.LocalDateTime;
import java.util.List;

@Data
@Document(collection = "responses")
@Document(collection = Constants.MONGODB_RESPONSE_COLLECTION_NAME)
public class SurveyUnitDocument {
private String idCampaign;
private String idUE;
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
package fr.insee.genesis.infrastructure.mappers;

import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.core.type.TypeReference;
import com.fasterxml.jackson.databind.ObjectMapper;
import fr.insee.genesis.domain.model.surveyunit.rawdata.LunaticJsonDataModel;
import fr.insee.genesis.infrastructure.document.rawdata.LunaticJsonDataDocument;
import org.mapstruct.Mapper;
import org.mapstruct.Mapping;
import org.mapstruct.Named;
import org.mapstruct.factory.Mappers;

import java.io.IOException;
import java.util.Collections;
import java.util.List;
import java.util.Map;
import java.util.Objects;

@Mapper(componentModel = "spring")
public interface LunaticJsonDocumentMapper {
LunaticJsonDocumentMapper INSTANCE = Mappers.getMapper(LunaticJsonDocumentMapper.class);

@Mapping(source = "data", target = "dataJson", qualifiedByName = "fromMapToJson")
LunaticJsonDataModel documentToModel(LunaticJsonDataDocument lunaticJsonDataDocument);

@Mapping(source = "dataJson", target = "data", qualifiedByName = "fromJsonToMap")
LunaticJsonDataDocument modelToDocument(LunaticJsonDataModel lunaticJsonDataModel);

List<LunaticJsonDataModel> listDocumentToListModel(List<LunaticJsonDataDocument> lunaticJsonDataDocuments);

List<LunaticJsonDataDocument> listModelToListDocument(List<LunaticJsonDataModel> lunaticJsonDataModels);


@Named(value = "fromJsonToMap")
default Map<String, Object> fromJsonToMap(String dataJson) throws IOException {
if (Objects.nonNull(dataJson)) {
ObjectMapper objectMapper = new ObjectMapper();
return objectMapper.readValue(dataJson, new TypeReference<>() {
});
}
return Collections.emptyMap();
}

@Named(value = "fromMapToJson")
default String fromMapToJson(Map<String, Object> dataMap) throws JsonProcessingException {
if (Objects.nonNull(dataMap)) {
ObjectMapper objectMapper = new ObjectMapper();
return objectMapper.writeValueAsString(dataMap);
}
return null;
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
package fr.insee.genesis.infrastructure.mappers;

import fr.insee.genesis.domain.model.surveyunit.rawdata.LunaticXmlDataModel;
import fr.insee.genesis.infrastructure.document.rawdata.LunaticXmlDataDocument;
import org.mapstruct.Mapper;
import org.mapstruct.Mapping;
import org.mapstruct.factory.Mappers;

import java.util.List;

@Mapper
public interface LunaticXmlDocumentMapper {
LunaticXmlDocumentMapper INSTANCE = Mappers.getMapper(LunaticXmlDocumentMapper.class);

@Mapping(source = "lunaticXmlData", target = "data")
LunaticXmlDataModel documentToModel(LunaticXmlDataDocument lunaticXmlDataDocument);

@Mapping(source = "data", target = "lunaticXmlData")
LunaticXmlDataDocument modelToDocument(LunaticXmlDataModel lunaticXmlDataModel);

List<LunaticXmlDataModel> listDocumentToListModel(List<LunaticXmlDataDocument> lunaticXmlDataDocuments);

List<LunaticXmlDataDocument> listModelToListDocument(List<LunaticXmlDataModel> lunaticXmlDataModels);

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
package fr.insee.genesis.infrastructure.repository;

import fr.insee.genesis.infrastructure.document.rawdata.LunaticJsonDataDocument;
import org.springframework.data.mongodb.repository.MongoRepository;
import org.springframework.stereotype.Repository;

@Repository
public interface LunaticJsonMongoDBRepository extends MongoRepository<LunaticJsonDataDocument, String> {
}
Loading
Loading