more tests

This commit is contained in:
Timo Bejan 2021-09-20 13:08:50 +03:00
parent 54126895d2
commit e036c4183e
16 changed files with 255 additions and 42 deletions

View File

@ -1,5 +1,6 @@
package com.iqser.red.service.persistence.service.v1.api.model.data.configuration;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.iqser.red.service.persistence.service.v1.api.model.data.dossier.DossierTemplate;
import lombok.AllArgsConstructor;
import lombok.Data;
@ -23,6 +24,7 @@ public class FileAttributesGeneralConfiguration {
private String delimiter;
@OneToOne
@JsonIgnore
@MapsId("dossierTemplateId")
private DossierTemplate dossierTemplate;

View File

@ -50,14 +50,19 @@ public class DossierTemplate {
@ElementCollection
private Set<DownloadFileType> downloadFileTypes = new HashSet<>();
@ManyToMany
@JsonIgnore
@OneToMany(mappedBy = "dossierTemplate")
private List<ReportTemplate> reportTemplates = new ArrayList<>();
@OneToMany
@JsonIgnore
@OneToMany(mappedBy = "dossierTemplate")
private List<Type> dossierTypes = new ArrayList<>();
@OneToMany
@JsonIgnore
@OneToMany(mappedBy = "dossierTemplate")
private List<Dossier> dossiers = new ArrayList<>();
@JsonIgnore
@OneToMany(mappedBy = "dossierTemplate")
private List<FileAttributeConfig> fileAttributeConfigs = new ArrayList<>();
}

View File

@ -1,9 +1,12 @@
package com.iqser.red.service.persistence.service.v1.api.model.data.dossier;
import com.fasterxml.jackson.annotation.JsonIgnore;
import lombok.Data;
import javax.persistence.*;
import java.time.OffsetDateTime;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
@ -112,11 +115,12 @@ public class File {
private int analysisVersion;
@ElementCollection
private Set<Integer> excludedPages;
private Set<Integer> excludedPages = new HashSet<>();
@OneToMany(mappedBy = "file", fetch = FetchType.LAZY, cascade = CascadeType.ALL)
private List<FileAttribute> fileAttributes;
@OneToMany(mappedBy = "file", fetch = FetchType.EAGER, cascade = CascadeType.ALL)
private List<FileAttribute> fileAttributes = new ArrayList<>();
@JsonIgnore
@ManyToOne
private Dossier dossier;

View File

@ -1,5 +1,6 @@
package com.iqser.red.service.persistence.service.v1.api.model.data.dossier;
import com.fasterxml.jackson.annotation.JsonIgnore;
import lombok.Data;
import javax.persistence.*;
@ -16,10 +17,12 @@ public class FileAttribute {
@Column
private String value;
@JsonIgnore
@ManyToOne(fetch = FetchType.LAZY)
@MapsId("fileId")
private File file;
@JsonIgnore
@ManyToOne(fetch = FetchType.LAZY)
@MapsId("fileAttributeConfigId")
private FileAttributeConfig fileAttributeConfig;

View File

@ -1,11 +1,18 @@
package com.iqser.red.service.persistence.service.v1.api.model.data.dossier;
import com.fasterxml.jackson.annotation.JsonIgnore;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import javax.persistence.*;
@Data
@Entity
@NoArgsConstructor
@AllArgsConstructor
@Builder
@Table(name = "file_attribute_config")
public class FileAttributeConfig {
@ -29,6 +36,7 @@ public class FileAttributeConfig {
private FileAttributeType type = FileAttributeType.TEXT;
@ManyToOne
@JsonIgnore
private DossierTemplate dossierTemplate;

View File

@ -14,19 +14,14 @@ public interface FileAttributesConfigResource {
String FILE_ATTRIBUTE_PATH = "/fileAttribute";
String BASE_CONFIG_PATH = "/baseConfig";
String DELETE_PATH = "/delete";
String DOSSIER_TEMPLATE_ID = "dossierTemplateId";
String DOSSIER_TEMPLATE_ID_PATH_VARIABLE = "/{" + DOSSIER_TEMPLATE_ID + "}";
String FILE_ATTRIBUTE_ID = "fileAttributeId";
String FILE_ATTRIBUTE_ID_PATH_VARIABLE = "/{" + FILE_ATTRIBUTE_ID + "}";
@ResponseBody
@ResponseStatus(HttpStatus.OK)
@PostMapping(value = FILE_ATTRIBUTES_PATH + FILE_ATTRIBUTE_PATH + DOSSIER_TEMPLATE_ID_PATH_VARIABLE, consumes = MediaType.APPLICATION_JSON_VALUE, produces = MediaType.APPLICATION_JSON_VALUE)
FileAttributeConfig addOrUpdateFileAttribute(@PathVariable(DOSSIER_TEMPLATE_ID) String dossierTemplateId,
@RequestBody FileAttributeConfig fileAttributeConfig);
@ResponseBody
@ResponseStatus(HttpStatus.OK)
@PutMapping(value = FILE_ATTRIBUTES_PATH + BASE_CONFIG_PATH + DOSSIER_TEMPLATE_ID_PATH_VARIABLE, consumes = MediaType.APPLICATION_JSON_VALUE, produces = MediaType.APPLICATION_JSON_VALUE)
@ -36,7 +31,13 @@ public interface FileAttributesConfigResource {
@ResponseBody
@ResponseStatus(HttpStatus.OK)
@GetMapping(value = FILE_ATTRIBUTES_PATH + BASE_CONFIG_PATH + DOSSIER_TEMPLATE_ID_PATH_VARIABLE, produces = MediaType.APPLICATION_JSON_VALUE)
FileAttributesGeneralConfiguration getFileAttributesGeneralConfiguration(@PathVariable(DOSSIER_TEMPLATE_ID) String dossierTemplateId);
FileAttributesGeneralConfiguration getFileAttributesGeneralConfig(@PathVariable(DOSSIER_TEMPLATE_ID) String dossierTemplateId);
@ResponseBody
@ResponseStatus(HttpStatus.OK)
@PostMapping(value = FILE_ATTRIBUTES_PATH + FILE_ATTRIBUTE_PATH + DOSSIER_TEMPLATE_ID_PATH_VARIABLE, consumes = MediaType.APPLICATION_JSON_VALUE, produces = MediaType.APPLICATION_JSON_VALUE)
FileAttributeConfig addOrUpdateFileAttributeConfig(@PathVariable(DOSSIER_TEMPLATE_ID) String dossierTemplateId,
@RequestBody FileAttributeConfig fileAttributeConfig);
@ResponseBody
@ResponseStatus(HttpStatus.OK)
@ -46,19 +47,19 @@ public interface FileAttributesConfigResource {
@ResponseStatus(HttpStatus.NO_CONTENT)
@DeleteMapping(value = FILE_ATTRIBUTES_PATH + FILE_ATTRIBUTE_PATH + DOSSIER_TEMPLATE_ID_PATH_VARIABLE + FILE_ATTRIBUTE_ID_PATH_VARIABLE)
void deleteFileAttribute(@PathVariable(FILE_ATTRIBUTE_ID) String fileAttributeId);
@DeleteMapping(value = FILE_ATTRIBUTES_PATH + FILE_ATTRIBUTE_PATH + FILE_ATTRIBUTE_ID_PATH_VARIABLE)
void deleteFileAttributeConfigs(@PathVariable(FILE_ATTRIBUTE_ID) String fileAttributeId);
@ResponseStatus(HttpStatus.NO_CONTENT)
@PostMapping(value = FILE_ATTRIBUTES_PATH + FILE_ATTRIBUTE_PATH + DOSSIER_TEMPLATE_ID_PATH_VARIABLE + "/delete")
void deleteFileAttributes(@RequestBody List<String> fileAttributeIds);
@PostMapping(value = FILE_ATTRIBUTES_PATH + FILE_ATTRIBUTE_PATH + DELETE_PATH)
void deleteFileAttributeConfigs(@RequestBody List<String> fileAttributeIds);
@ResponseBody
@ResponseStatus(HttpStatus.OK)
@GetMapping(value = FILE_ATTRIBUTES_PATH + DOSSIER_TEMPLATE_ID_PATH_VARIABLE, produces = MediaType.APPLICATION_JSON_VALUE)
List<FileAttributeConfig> getFileAttributes(@PathVariable(DOSSIER_TEMPLATE_ID) String dossierTemplateId);
List<FileAttributeConfig> getFileAttributeConfigs(@PathVariable(DOSSIER_TEMPLATE_ID) String dossierTemplateId);
}

View File

@ -6,6 +6,7 @@ import com.iqser.red.service.persistence.management.v1.processor.exception.NotFo
import com.iqser.red.service.persistence.management.v1.processor.service.persistence.repository.DossierTemplateRepository;
import com.iqser.red.service.persistence.management.v1.processor.service.persistence.repository.FileAttributeConfigRepository;
import com.iqser.red.service.persistence.management.v1.processor.service.persistence.repository.FileAttributesGeneralConfigurationRepository;
import com.iqser.red.service.persistence.management.v1.processor.service.persistence.repository.FileAttributesRepository;
import com.iqser.red.service.persistence.service.v1.api.model.data.configuration.FileAttributesGeneralConfiguration;
import com.iqser.red.service.persistence.service.v1.api.model.data.dossier.FileAttributeConfig;
import lombok.RequiredArgsConstructor;
@ -14,9 +15,8 @@ import org.apache.commons.lang3.text.WordUtils;
import org.springframework.stereotype.Service;
import javax.transaction.Transactional;
import java.util.List;
import java.util.Optional;
import java.util.UUID;
import java.util.*;
import java.util.stream.Collectors;
@Service
@RequiredArgsConstructor
@ -25,6 +25,7 @@ public class FileAttributeConfigPersistenceService {
private final FileAttributeConfigRepository fileAttributeConfigRepository;
private final FileAttributesGeneralConfigurationRepository fileAttributesGeneralConfigurationRepository;
private final DossierTemplateRepository dossierTemplateRepository;
private final FileAttributesRepository fileAttributesRepository;
public FileAttributeConfig addOrUpdateFileAttribute(String dossierTemplateId, FileAttributeConfig fileAttributeConfig) {
var dossierTemplate = dossierTemplateRepository.getOne(dossierTemplateId);
@ -73,25 +74,33 @@ public class FileAttributeConfigPersistenceService {
@Transactional
public List<FileAttributeConfig> setFileAttributesConfig(String dossierTemplateId, List<FileAttributeConfig> fileAttributesConfig) {
fileAttributeConfigRepository.deleteByDossierTemplateId(dossierTemplateId);
var dossierTemplate = dossierTemplateRepository.getOne(dossierTemplateId);
fileAttributesConfig.forEach(d -> {
d.setDossierTemplate(dossierTemplate);
d.setId(UUID.randomUUID().toString());
setPlaceholder(d);
uniqueLabelAndPlaceholder(d);
Set<String> toSetIds = fileAttributesConfig.stream().map(FileAttributeConfig::getId).filter(Objects::nonNull).collect(Collectors.toSet());
var currentConfigs = fileAttributeConfigRepository.findByDossierTemplateId(dossierTemplateId);
Set<FileAttributeConfig> configsToRemove = currentConfigs.stream().filter(c -> !toSetIds.contains(c.getId())).collect(Collectors.toSet());
fileAttributesConfig.forEach(fac -> addOrUpdateFileAttribute(dossierTemplateId, fac));
configsToRemove.forEach(ctr -> {
fileAttributesRepository.deleteByFileAttributeConfigId(ctr.getId());
fileAttributeConfigRepository.deleteById(ctr.getId());
});
return getFileAttributes(dossierTemplateId);
}
@Transactional
public void deleteFileAttribute(String fileAttributeId) {
fileAttributesRepository.deleteByFileAttributeConfigId(fileAttributeId);
fileAttributeConfigRepository.deleteById(fileAttributeId);
}
@Transactional
public void deleteFileAttributes(List<String> fileAttributeIds) {
fileAttributeIds.forEach(fileAttributeConfigRepository::deleteById);
fileAttributeIds.forEach(fileAttributeId -> {
fileAttributesRepository.deleteByFileAttributeConfigId(fileAttributeId);
fileAttributeConfigRepository.deleteById(fileAttributeId);
});
}
public List<FileAttributeConfig> getFileAttributes(String dossierTemplateId) {

View File

@ -1,7 +1,9 @@
package com.iqser.red.service.persistence.management.v1.processor.service.persistence;
import com.iqser.red.service.persistence.management.v1.processor.exception.BadRequestException;
import com.iqser.red.service.persistence.service.v1.api.model.data.dossier.File;
import com.iqser.red.service.persistence.service.v1.api.model.data.dossier.FileAttribute;
import com.iqser.red.service.persistence.service.v1.api.model.data.dossier.FileAttributeConfig;
import com.iqser.red.service.persistence.service.v1.api.model.data.dossier.FileStatus;
import com.iqser.red.service.persistence.management.v1.processor.exception.NotFoundException;
import com.iqser.red.service.persistence.management.v1.processor.service.persistence.repository.DossierRepository;
@ -12,7 +14,9 @@ import org.springframework.stereotype.Service;
import javax.transaction.Transactional;
import java.time.OffsetDateTime;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.stream.Collectors;
@Service

View File

@ -2,12 +2,12 @@ package com.iqser.red.service.persistence.management.v1.processor.service.persis
import com.iqser.red.service.persistence.service.v1.api.model.data.dossier.FileAttributeConfig;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Query;
import java.util.List;
public interface FileAttributeConfigRepository extends JpaRepository<FileAttributeConfig,String> {
public interface FileAttributeConfigRepository extends JpaRepository<FileAttributeConfig, String> {
List<FileAttributeConfig> findByDossierTemplateId(String dossierTemplateId);
void deleteByDossierTemplateId(String dossierTemplateId);
}

View File

@ -0,0 +1,14 @@
package com.iqser.red.service.persistence.management.v1.processor.service.persistence.repository;
import com.iqser.red.service.persistence.service.v1.api.model.data.dossier.FileAttribute;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Modifying;
import org.springframework.data.jpa.repository.Query;
public interface FileAttributesRepository extends JpaRepository<FileAttribute, String> {
@Modifying
@Query("DELETE FROM FileAttribute f where f.fileAttributeId.fileAttributeConfigId = :fileAttributeConfigId")
void deleteByFileAttributeConfigId(String fileAttributeConfigId);
}

View File

@ -21,7 +21,7 @@ public class FileAttributesConfigController implements FileAttributesConfigResou
private final FileAttributeConfigPersistenceService fileAttributeConfigPersistenceService;
@Override
public FileAttributeConfig addOrUpdateFileAttribute(@PathVariable(DOSSIER_TEMPLATE_ID) String dossierTemplateId, @RequestBody FileAttributeConfig fileAttributeConfig) {
public FileAttributeConfig addOrUpdateFileAttributeConfig(@PathVariable(DOSSIER_TEMPLATE_ID) String dossierTemplateId, @RequestBody FileAttributeConfig fileAttributeConfig) {
return fileAttributeConfigPersistenceService.addOrUpdateFileAttribute(dossierTemplateId, fileAttributeConfig);
}
@ -32,7 +32,7 @@ public class FileAttributesConfigController implements FileAttributesConfigResou
}
@Override
public FileAttributesGeneralConfiguration getFileAttributesGeneralConfiguration(@PathVariable(DOSSIER_TEMPLATE_ID) String dossierTemplateId) {
public FileAttributesGeneralConfiguration getFileAttributesGeneralConfig(@PathVariable(DOSSIER_TEMPLATE_ID) String dossierTemplateId) {
return fileAttributeConfigPersistenceService.getFileAttributesGeneralConfiguration(dossierTemplateId);
}
@ -42,17 +42,17 @@ public class FileAttributesConfigController implements FileAttributesConfigResou
}
@Override
public void deleteFileAttribute(@PathVariable(FILE_ATTRIBUTE_ID) String fileAttributeId) {
public void deleteFileAttributeConfigs(@PathVariable(FILE_ATTRIBUTE_ID) String fileAttributeId) {
fileAttributeConfigPersistenceService.deleteFileAttribute(fileAttributeId);
}
@Override
public void deleteFileAttributes(@RequestBody List<String> fileAttributeIds) {
public void deleteFileAttributeConfigs(@RequestBody List<String> fileAttributeIds) {
fileAttributeConfigPersistenceService.deleteFileAttributes(fileAttributeIds);
}
@Override
public List<FileAttributeConfig> getFileAttributes(@PathVariable(DOSSIER_TEMPLATE_ID) String dossierTemplateId) {
public List<FileAttributeConfig> getFileAttributeConfigs(@PathVariable(DOSSIER_TEMPLATE_ID) String dossierTemplateId) {
return fileAttributeConfigPersistenceService.getFileAttributes(dossierTemplateId);
}
}

View File

@ -23,6 +23,7 @@ import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RestController;
import javax.transaction.Transactional;
import java.io.BufferedReader;
import java.io.ByteArrayInputStream;
import java.io.IOException;
@ -43,6 +44,7 @@ public class FileAttributesController implements FileAttributesResource {
private final DossierService dossierService;
@Transactional
public ImportCsvResponse importCsv(@PathVariable(DOSSIER_ID_PARAM) String dossierId,
@RequestBody ImportCsvRequest importCsvRequest) {
@ -113,6 +115,8 @@ public class FileAttributesController implements FileAttributesResource {
}
@Transactional
public void setFileAttributes(@PathVariable(DOSSIER_ID_PARAM) String dossierId,
@PathVariable(FILE_ID) String fileId, @RequestBody Map<String, String> fileAttributesMap) {
@ -126,6 +130,7 @@ public class FileAttributesController implements FileAttributesResource {
return fileAttributesMap.entrySet().stream().map(entry -> {
var fa = new FileAttribute();
fa.setFileAttributeId(new FileAttribute.FileAttributeId());
fa.setFile(file);
fa.setFileAttributeConfig(configuration.stream().filter(c -> c.getId().equals(entry.getKey())).findAny().orElseThrow(() ->
new BadRequestException("Invalid File Attribute Id")));

View File

@ -0,0 +1,139 @@
package com.iqser.red.service.peristence.v1.server.integration.tests;
import com.iqser.red.service.peristence.v1.server.integration.client.FileAttributeClient;
import com.iqser.red.service.peristence.v1.server.integration.client.FileAttributeConfigClient;
import com.iqser.red.service.peristence.v1.server.integration.client.FileClient;
import com.iqser.red.service.peristence.v1.server.integration.service.DossierTesterAndProvider;
import com.iqser.red.service.peristence.v1.server.integration.service.FileTesterAndProvider;
import com.iqser.red.service.peristence.v1.server.integration.utils.AbstractPersistenceServerServiceTest;
import com.iqser.red.service.persistence.service.v1.api.model.ImportCsvRequest;
import com.iqser.red.service.persistence.service.v1.api.model.data.configuration.FileAttributesGeneralConfiguration;
import com.iqser.red.service.persistence.service.v1.api.model.data.dossier.FileAttribute;
import com.iqser.red.service.persistence.service.v1.api.model.data.dossier.FileAttributeConfig;
import lombok.SneakyThrows;
import org.apache.commons.io.IOUtils;
import org.assertj.core.util.Lists;
import org.junit.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.core.io.ClassPathResource;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
import static org.assertj.core.api.Assertions.assertThat;
public class FileAttributeTest extends AbstractPersistenceServerServiceTest {
@Autowired
private FileTesterAndProvider fileTesterAndProvider;
@Autowired
private DossierTesterAndProvider dossierTesterAndProvider;
@Autowired
private FileAttributeConfigClient fileAttributeConfigClient;
@Autowired
private FileAttributeClient fileAttributeClient;
@Autowired
private FileClient fileClient;
@SneakyThrows
@Test
public void testFileAttributes() {
var dossier = dossierTesterAndProvider.provideTestDossier();
var file = fileTesterAndProvider.testAndProvideFile(dossier);
FileAttributesGeneralConfiguration generalConfig = new FileAttributesGeneralConfiguration();
generalConfig.setDelimiter(",");
generalConfig.setFilenameMappingColumnHeaderName("Name");
generalConfig.setDossierTemplateId(dossier.getDossierTemplateId());
fileAttributeConfigClient.setFileAttributesGeneralConfig(dossier.getDossierTemplateId(), generalConfig);
var loadedConfig = fileAttributeConfigClient.getFileAttributesGeneralConfig(dossier.getDossierTemplateId());
assertThat(loadedConfig.getDelimiter()).isEqualTo(",");
List<FileAttributeConfig> configs = new ArrayList<>();
configs.add(FileAttributeConfig.builder().csvColumnHeader("Name").primaryAttribute(true).label("Name").build());
configs.add(FileAttributeConfig.builder().csvColumnHeader("Attribute A").primaryAttribute(false).label("Attribute A").build());
configs.add(FileAttributeConfig.builder().csvColumnHeader("Attribute B").primaryAttribute(false).label("Attribute B").build());
configs.add(FileAttributeConfig.builder().csvColumnHeader("Attribute C").primaryAttribute(false).label("Attribute C").build());
configs.add(FileAttributeConfig.builder().csvColumnHeader("Attribute D").primaryAttribute(false).label("Attribute D").build());
fileAttributeConfigClient.setFileAttributesConfig(dossier.getDossierTemplateId(), configs);
List<FileAttributeConfig> loadedConfigs = fileAttributeConfigClient.getFileAttributeConfigs(dossier.getDossierTemplateId());
assertThat(loadedConfigs.size()).isEqualTo(5);
fileAttributeConfigClient.deleteFileAttributeConfigs(loadedConfigs.stream()
.filter(a -> a.getCsvColumnHeader().equalsIgnoreCase("Attribute C"))
.findAny()
.map(FileAttributeConfig::getId)
.orElseThrow(() -> new IllegalArgumentException("Should exists!")));
fileAttributeConfigClient.deleteFileAttributeConfigs(loadedConfigs.stream()
.filter(a -> a.getCsvColumnHeader().equalsIgnoreCase("Attribute D"))
.findAny()
.map(FileAttributeConfig::getId)
.stream().collect(Collectors.toList()));
loadedConfigs = fileAttributeConfigClient.getFileAttributeConfigs(dossier.getDossierTemplateId());
assertThat(loadedConfigs.size()).isEqualTo(3);
FileAttributeConfig newConfig = new FileAttributeConfig();
newConfig.setPrimaryAttribute(true);
newConfig.setLabel("Test Attribute");
var created = fileAttributeConfigClient.addOrUpdateFileAttributeConfig(dossier.getDossierTemplateId(), newConfig);
loadedConfigs = fileAttributeConfigClient.getFileAttributeConfigs(dossier.getDossierTemplateId());
assertThat(loadedConfigs.size()).isEqualTo(4);
newConfig.setId(created.getId());
newConfig.setLabel("Test Attribute Update");
var updated = fileAttributeConfigClient.addOrUpdateFileAttributeConfig(dossier.getDossierTemplateId(), newConfig);
loadedConfigs = fileAttributeConfigClient.getFileAttributeConfigs(dossier.getDossierTemplateId());
assertThat(loadedConfigs.size()).isEqualTo(4);
assertThat(updated.getLabel()).isEqualTo("Test Attribute Update");
fileAttributeClient.setFileAttributes(dossier.getId(), file.getId(), Map.of(updated.getId(), "Lorem Ipsum"));
List<FileAttribute> fileAttributes = fileClient.getFileStatus(dossier.getId(), file.getId()).getFileAttributes();
assertThat(fileAttributes.size()).isEqualTo(1);
assertThat(fileAttributes.iterator().next().getValue()).isEqualTo("Lorem Ipsum");
var request = new ImportCsvRequest();
request.setCsvFile(IOUtils.toByteArray(new ClassPathResource("files/test.csv").getInputStream()));
fileAttributeClient.importCsv(dossier.getId(), request);
fileAttributes = fileClient.getFileStatus(dossier.getId(), file.getId()).getFileAttributes();
assertThat(fileAttributes.size()).isEqualTo(3);
fileAttributeConfigClient.setFileAttributesConfig(dossier.getDossierTemplateId(), Lists.newArrayList());
loadedConfigs = fileAttributeConfigClient.getFileAttributeConfigs(dossier.getDossierTemplateId());
assertThat(loadedConfigs.size()).isEqualTo(0);
fileAttributes = fileClient.getFileStatus(dossier.getId(), file.getId()).getFileAttributes();
assertThat(fileAttributes.size()).isEqualTo(0);
}
}

View File

@ -162,8 +162,30 @@ public abstract class AbstractPersistenceServerServiceTest {
@Autowired
private LegalBasisMappingRepository legalBasisMappingRepository;
@Autowired
private FileAttributeConfigRepository fileAttributeConfigRepository;
@Autowired
private FileAttributesGeneralConfigurationRepository fileAttributesGeneralConfigurationRepository;
@Autowired
private ReportTemplateRepository reportTemplateRepository;
@Autowired
private DigitalSignatureRepository digitalSignatureRepository;
@Autowired
private FileAttributesRepository fileAttributesRepository;
@After
public void afterTests() {
fileAttributesRepository.deleteAll();
watermarkRepository.deleteAll();
smtpRepository.deleteAll();
digitalSignatureRepository.deleteAll();
fileAttributesGeneralConfigurationRepository.deleteAll();
fileAttributeConfigRepository.deleteAll();
reportTemplateRepository.deleteAll();
typeRepository.deleteAll();
viewedPagesRepository.deleteAll();
fileRepository.deleteAll();

View File

@ -1,5 +0,0 @@
PMRA Document Number,GAP Active Ingredient,Regulatory Utility,Document Comment,SIC Number,Protocol Number,Protocol Number,Data Evaluation Record,Audience,Original Retirement Date,Regulatory Released,Regulatory Authority,Regulatory Authority (legacy to remove),Source Owner,Legacy Primary OECD Code,Legacy Source Organisation,Regulator Comments,Contains Registered Composition?,File Name,FTP Source Location,Submission Format Needed,Legacy Report Number,Sales Unit,Address,ANVISA Process Number,Source Number,Legacy Migration Path,Review Completion Date,Registration Number,Agency Dossier Registration Type,Submission Version,Media Comments,Literature Citation,Document Language,Notes,Study Location,Materials,Approver,Subtype,Test Facility,Is Latest Version,Consumer,Classification,Guideline,TRP Type,Legacy System Date,Function,Artist,Document Title,PI Number,Legacy Version Description,PI Number,Incoming from,Annotations (Unresolved),Work To Date,Copyright Clearance Obtained?,Summary Type,Annotations (Claim Links),Latest Source Minor Version,Regulatory Category,SYN Letter Number,Work From Date,Product,Version Creation Date,Governance Committee,Test Facility (legacy to remove),Regulatory Finalization Date,Imported file?,Status,Information Tracking Submission Package,Approval Type,Media Description,Duration,Legacy System,Archive Date,Exporting country,Regulatory Tracking Number,Annotations (Anchors),Information Tracking,Document Number,GAP Usage Information,Report Number,Legacy Reg Document Number,Legal Representative 2,Registering Company,File Created By,Legacy EPA Decision Code,Meeting Minutes,Product Safety Finalization Date,Report Type,Archived Date,Legacy Other PMRA Data Codes,Template Document Type,Color Space,Legal Representative 1,Document Author,CrossLink,Annotations (Notes),Suggested Links,Assessment Type,Legacy Species Commodity,TK Number,Legacy Test Facilities,Planned Completion Date,PRF Number,Registration Item Country,Legacy Target Species,Legacy Owning Organisation,Archive Number,Protocol Type,Submission Output Format,Submission Date,Coordinator,Regulatory Reporting Date,Annotations (Lines),Field Trial Number,Batch Number,Legacy Version Number,External ID,Author Names,Sponsor Organisation (legacy to remove),Literature Type,Sponsor Organisation,Legacy Crop Host,Document Edition,Agreement Expiry Date,TRP Usage,Legacy EPA Submission Type,Security Classification,Source Document Name,Syngenta Address,Outgoing to (legacy to remove),Link Status,Legacy System Document ID,Copyright,PMRA Registration Number,Annotations (All),SU,Source Vault Name,Latest Source Major Version,Legacy Other OECD Codes,Version Created By,Subarea,Reviewer,Owning Organisation (legacy to remove),Dossier,Viewer,Regulatory Territory,Lifecycle,Claims,Bound Source Minor Version,Global ID,Legacy Regulatory Authorities,Outgoing to,Additional Information,Year,Organism,File Last Modified By,Requires Attachment of a Signature Page?,Source Binding Rule,Destination country,Cross-Reference Submission Number,Name,Issue Topic,Pages,Type,Reason for Retiring,Rule,Type of Review,Original Finalization Date,Trade Name,Transmittal Document,Pages OCR'ed (%),Legacy Object ID(s),Protocol Number,Last Modified By,Annotations (Approved Links),Request Type,Binder,Author,Last Modified Date,Non-English Document Title,Media Location,Created By,Editor,Owner,CRO Report Number,Format,Legacy Discipline,Major Version Number,Created From,Active Ingredients,Archive Location,EPA Registration Number,Retirement Date,Annotations (Links),TRP Document,Finalization Date,Legacy Task Number,Legal Details,OCR Requested,Global Version ID,Publicly Published,Document Date,MRID Number,Legacy Reg Topic,Requires Review and Approval?,Annotations (Auto Links),Subareas,Product Safety Reporting Date,Media Title,Minor Version Number,Legacy Primary PMRA Data Code,Requestor,Owning Organisation,Zone,File Last Modified Date,Contact Person,File Created Date,Amendment Justification,CDPR Number,Legacy EPA Submission Date,Supports Agency Dossier,Field Trial Year,Reason for Un-retiring,TRP Topic,Bound Source Major Version,Keywords,Legacy Author Name(s),Export File Name,Size,Source Link,This content is a translation?,Quality Assurance Standard,Legacy Fed Reg Number,Checksum,Created Date,Annotations (Resolved),User Task,Review Start Date,test list,Incoming from (legacy to remove),Rendition Profile,Path,URL
,,Country Specific,,,,,No,,,Yes,,,,,Syngenta,,,Lambda-cyhalothrin - EU AIR5 - Document A - Statement of the context in which the dossier is submit.doc,,,,,,,,,,,,,,,English,,,PP321,,Authority Form / Document,,TRUE,"All Internal Users, Syngenta Read Only Restricted, Syngenta Read Only Non Restricted",,,,16/07/2019,,,Lambda-cyhalothrin - EU AIR5 - Document A - Statement of the context in which the dossier is submitted,PI0015818,,,,0,,,,0,,,,,,26/03/2020 14:06 CET,,Syngenta Crop Protection AG (Switzerland),,No,Final,,,,,SmartDoc - EAME,,,,0,IT-624180,VV-731623,,N/A,PP321_12074,,,,,,,,,,,,,B Sochard,No,0,0,,,,,,,,,,,,,,,,0,,,1.0|CURRENT,090100b881afdd91,,Syngenta Crop Protection AG (Switzerland),,Syngenta Crop Protection AG,,Original,,,,Internal Use Only,,,ETL_blank,,090100b881afdd91,,,0,,,,,Berangere Sochard,,,Syngenta Crop Protection AG (Switzerland),,,European Union,General Lifecycle,,,40037_850361,,ETL_blank,,,,,,,,,Lambda-cyhalothrin - EU AIR5 - Document A - Statement of the context in which the dossier is submit,,2,Registration Supporting Documentation,,,,,,No,,090100b881afdd91 (cv),,CP Vault Support,0,,No,,24/02/2021 15:20 CET,,,Vault Migration,"Global Reg Ops, NA Reg Ops, PS Ops, EAME Reg Ops, Syngenta Business Administrator, Berangere Sochard, Simon Baker, Lily Williams, Clive Boxwell, Paul Parsons, Richard MacKenzie, Dan Pickford, Laurence Hand",Vault Migration,,application/msword,Regulatory,2,,PP321,,,,0,No,,PI0015818,,No,40037_850361_1958105,No,01/09/2020,,Regulatory,No,0,,,,0,,,Syngenta Crop Protection AG,,,,,,,,,,,,,,Sochard Berangere,,49152,,No,,,86d75e5da397fdadcd332f92234a4f62,29/11/2019 08:51 CET,0,,,,,,Lambda-cyhalothrin - EU AIR5 - Document A - Statement of the.pdf,
,,Country Specific,,,,,No,,,Yes,,,,,Syngenta,,,Lambda-cyhalothrin - EU AIR5 - MCA Section 5 - Toxicology (1).docx,,,,,,,,,,,,,,,English,,,PP321,,Summary / Overview,,TRUE,"All Internal Users, Syngenta Read Only Non Restricted, Syngenta Read Only Restricted",,,,16/07/2019,,,Lambda-cyhalothrin - EU AIR5 - MCA Section 5 - Toxicology,PI0015818,,,,0,,,OECD Tier 2 Summary,0,,,,,,17/02/2021 22:02 CET,,Syngenta Crop Protection AG (Switzerland),,Yes,Draft,,,,,SmartDoc - EAME,,,,0,IT-615930,VV-729845,,N/A,PP321_12086,,,Syngenta,,,,,,,,,,S Lloyd,No,0,0,,,,,,,,,,,,,,,,0,,,1.0|CURRENT,090100b881afde22,,Syngenta Crop Protection AG (Switzerland),,Syngenta Crop Protection AG,,Original,,,,Internal Use Only,,,,,090100b881afde22,,,0,,,,,Sonia Ellis,,,Syngenta Crop Protection AG (Switzerland),,,European Union,General Lifecycle,,,40037_848583,,,,,,Ellis Sonia (ext) GBGU,,,,,Lambda-cyhalothrin - EU AIR5 - MCA Section 5 - Toxicology,,893,Summary / Assessment,,,,,,No,,090100b881afde22 (cv),,CP Vault Support,0,,No,Syngenta,24/02/2021 15:20 CET,,,Vault Migration,"EAME Reg Ops, Syngenta Business Administrator, PS Ops, NA Reg Ops, Global Reg Ops, Berangere Sochard, Simon Baker, Lily Williams, Clive Boxwell, Paul Parsons, Richard MacKenzie, Dan Pickford, Laurence Hand, Claire McCombie, Elaine Buss",Vault Migration,,application/vnd.openxmlformats-officedocument.wordprocessingml.document,Toxicology,3,,PP321,,,,0,No,,PI0015818,,No,40037_848583_2033983,No,01/09/2020,,Tox,No,0,,,,1,,,Syngenta Crop Protection AG,,17/02/2021 21:35 CET,,04/09/2020 14:34 CEST,,,,,,,,,VV-729845,Lloyd Sara,,5089990,,No,,,3b13f57d1244e77844eba73ce0ae9813,29/11/2019 08:47 CET,0,,,,,,Lambda-cyhalothrin - EU AIR5 - MCA Section 5 - Toxicology.pdf,
,,Country Specific,,,,,No,,,Yes,,,,,Syngenta,,,Lambda-cyhalothrin - EU AIR5 - LCA Section 5 Reference List (1).doc,,,,,,,,,,,,,,,English,,,PP321,,Summary / Overview,,TRUE,"All Internal Users, Syngenta Read Only Restricted, Syngenta Read Only Non Restricted",,,,16/07/2019,,,Lambda-cyhalothrin - EU AIR5 - LCA Section 5 Reference List,PI0015818,,,,0,,,OECD Tier 1 Summary,0,,,,,,12/09/2020 15:48 CEST,,Syngenta Crop Protection AG (Switzerland),,Yes,Final,,,,,SmartDoc - EAME,,,,0,IT-615436,VV-729844,,N/A,PP321_12084,,,,,,,,,,,,,S Ellis,No,0,0,,,,,,,,,,,,,,,,0,,,1.0|CURRENT,090100b881afde20,,Syngenta Crop Protection AG (Switzerland),,Syngenta Crop Protection AG,,Original,,,,Internal Use Only,,,,,090100b881afde20,,,0,,,,,Sonia Ellis,,,Syngenta Crop Protection AG (Switzerland),,,European Union,General Lifecycle,,,40037_848582,,,,,,,,,,,Lambda-cyhalothrin - EU AIR5 - LCA Section 5 Reference List,,147,Summary / Assessment,,,,,,No,,090100b881afde20 (cv),,CP Vault Support,0,,No,,24/02/2021 15:20 CET,,,Vault Migration,"NA Reg Ops, Global Reg Ops, EAME Reg Ops, PS Ops, Syngenta Business Administrator, Berangere Sochard, Paul Parsons",Vault Migration,,application/msword,Toxicology,2,,PP321,,,,0,No,,PI0015818,,No,40037_848582_2001744,No,01/09/2020,,Tox,No,0,,,,0,,,Syngenta Crop Protection AG,,,,,,,,,,,,,,Ellis Sonia,,651264,,No,,,eb0fdf698b528b67f54635395ec7fb52,29/11/2019 08:47 CET,0,,,,,,Lambda-cyhalothrin - EU AIR5 - LCA Section 5 Reference List.pdf,
,,Country Specific,,,,,No,,,Yes,,,,,Syngenta,,,Lambda-cyhalothrin - EU AIR5 - LCA Section 4 Reference List (5).doc,,,,,,,,,,,,,,,English,,,PP321,,Summary / Overview,,TRUE,"All Internal Users, Syngenta Read Only Restricted, Syngenta Read Only Non Restricted",,,,16/07/2019,,,Lambda-cyhalothrin - EU AIR5 - LCA Section 4 Reference List,PI0015818,,,,0,,,OECD Tier 1 Summary,0,,,,,,21/09/2020 15:21 CEST,,Syngenta Crop Protection AG (Switzerland),,Yes,Final,,,,,SmartDoc - EAME,,,,0,IT-618210,VV-729843,,N/A,PP321_12083,,,,,,,,,,,,,S Ellis,No,0,0,,,,,,,,,,,,,,,,0,,,1.0|CURRENT,090100b881afde1f,,Syngenta Crop Protection AG (Switzerland),,Syngenta Crop Protection AG,,Original,,,,Internal Use Only,,,,,090100b881afde1f,,,0,,,,,Sonia Ellis,,,Syngenta Crop Protection AG (Switzerland),,,European Union,General Lifecycle,,,40037_848581,,,,,,,,,,,Lambda-cyhalothrin - EU AIR5 - LCA Section 4 Reference List,,151,Summary / Assessment,,,,,,No,,090100b881afde1f (cv),,CP Vault Support,0,,No,,24/02/2021 15:20 CET,,,Vault Migration,"EAME Reg Ops, Global Reg Ops, PS Ops, Syngenta Business Administrator, NA Reg Ops, Berangere Sochard, Melanie Bottoms, Dan Pickford, Lynda Farrelly",Vault Migration,,application/msword,Chemistry - Regulatory,2,,PP321,,,,0,No,,PI0015818,,No,40037_848581_2003177,No,01/09/2020,,Chem - Analytical Methods,No,0,,,,0,,,Syngenta Crop Protection AG,,,,,,,,,,,,,,Ellis Sonia,,699392,,No,,,2c476f477f6e2b55ecb537683f5d1cee,29/11/2019 08:47 CET,0,,,,,,Lambda-cyhalothrin - EU AIR5 - LCA Section 4 Reference List.pdf,
1 PMRA Document Number GAP Active Ingredient Regulatory Utility Document Comment SIC Number Protocol Number Protocol Number Data Evaluation Record Audience Original Retirement Date Regulatory Released Regulatory Authority Regulatory Authority (legacy to remove) Source Owner Legacy Primary OECD Code Legacy Source Organisation Regulator Comments Contains Registered Composition? File Name FTP Source Location Submission Format Needed Legacy Report Number Sales Unit Address ANVISA Process Number Source Number Legacy Migration Path Review Completion Date Registration Number Agency Dossier Registration Type Submission Version Media Comments Literature Citation Document Language Notes Study Location Materials Approver Subtype Test Facility Is Latest Version Consumer Classification Guideline TRP Type Legacy System Date Function Artist Document Title PI Number Legacy Version Description PI Number Incoming from Annotations (Unresolved) Work To Date Copyright Clearance Obtained? Summary Type Annotations (Claim Links) Latest Source Minor Version Regulatory Category SYN Letter Number Work From Date Product Version Creation Date Governance Committee Test Facility (legacy to remove) Regulatory Finalization Date Imported file? Status Information Tracking Submission Package Approval Type Media Description Duration Legacy System Archive Date Exporting country Regulatory Tracking Number Annotations (Anchors) Information Tracking Document Number GAP Usage Information Report Number Legacy Reg Document Number Legal Representative 2 Registering Company File Created By Legacy EPA Decision Code Meeting Minutes Product Safety Finalization Date Report Type Archived Date Legacy Other PMRA Data Codes Template Document Type Color Space Legal Representative 1 Document Author CrossLink Annotations (Notes) Suggested Links Assessment Type Legacy Species Commodity TK Number Legacy Test Facilities Planned Completion Date PRF Number Registration Item Country Legacy Target Species Legacy Owning Organisation Archive Number Protocol Type Submission Output Format Submission Date Coordinator Regulatory Reporting Date Annotations (Lines) Field Trial Number Batch Number Legacy Version Number External ID Author Names Sponsor Organisation (legacy to remove) Literature Type Sponsor Organisation Legacy Crop Host Document Edition Agreement Expiry Date TRP Usage Legacy EPA Submission Type Security Classification Source Document Name Syngenta Address Outgoing to (legacy to remove) Link Status Legacy System Document ID Copyright PMRA Registration Number Annotations (All) SU Source Vault Name Latest Source Major Version Legacy Other OECD Codes Version Created By Subarea Reviewer Owning Organisation (legacy to remove) Dossier Viewer Regulatory Territory Lifecycle Claims Bound Source Minor Version Global ID Legacy Regulatory Authorities Outgoing to Additional Information Year Organism File Last Modified By Requires Attachment of a Signature Page? Source Binding Rule Destination country Cross-Reference Submission Number Name Issue Topic Pages Type Reason for Retiring Rule Type of Review Original Finalization Date Trade Name Transmittal Document Pages OCR'ed (%) Legacy Object ID(s) Protocol Number Last Modified By Annotations (Approved Links) Request Type Binder Author Last Modified Date Non-English Document Title Media Location Created By Editor Owner CRO Report Number Format Legacy Discipline Major Version Number Created From Active Ingredients Archive Location EPA Registration Number Retirement Date Annotations (Links) TRP Document Finalization Date Legacy Task Number Legal Details OCR Requested Global Version ID Publicly Published Document Date MRID Number Legacy Reg Topic Requires Review and Approval? Annotations (Auto Links) Subareas Product Safety Reporting Date Media Title Minor Version Number Legacy Primary PMRA Data Code Requestor Owning Organisation Zone File Last Modified Date Contact Person File Created Date Amendment Justification CDPR Number Legacy EPA Submission Date Supports Agency Dossier Field Trial Year Reason for Un-retiring TRP Topic Bound Source Major Version Keywords Legacy Author Name(s) Export File Name Size Source Link This content is a translation? Quality Assurance Standard Legacy Fed Reg Number Checksum Created Date Annotations (Resolved) User Task Review Start Date test list Incoming from (legacy to remove) Rendition Profile Path URL
2 Country Specific No Yes Syngenta Lambda-cyhalothrin - EU AIR5 - Document A - Statement of the context in which the dossier is submit.doc English PP321 Authority Form / Document TRUE All Internal Users, Syngenta Read Only Restricted, Syngenta Read Only Non Restricted 16/07/2019 Lambda-cyhalothrin - EU AIR5 - Document A - Statement of the context in which the dossier is submitted PI0015818 0 0 26/03/2020 14:06 CET Syngenta Crop Protection AG (Switzerland) No Final SmartDoc - EAME 0 IT-624180 VV-731623 N/A PP321_12074 B Sochard No 0 0 0 1.0|CURRENT 090100b881afdd91 Syngenta Crop Protection AG (Switzerland) Syngenta Crop Protection AG Original Internal Use Only ETL_blank 090100b881afdd91 0 Berangere Sochard Syngenta Crop Protection AG (Switzerland) European Union General Lifecycle 40037_850361 ETL_blank Lambda-cyhalothrin - EU AIR5 - Document A - Statement of the context in which the dossier is submit 2 Registration Supporting Documentation No 090100b881afdd91 (cv) CP Vault Support 0 No 24/02/2021 15:20 CET Vault Migration Global Reg Ops, NA Reg Ops, PS Ops, EAME Reg Ops, Syngenta Business Administrator, Berangere Sochard, Simon Baker, Lily Williams, Clive Boxwell, Paul Parsons, Richard MacKenzie, Dan Pickford, Laurence Hand Vault Migration application/msword Regulatory 2 PP321 0 No PI0015818 No 40037_850361_1958105 No 01/09/2020 Regulatory No 0 0 Syngenta Crop Protection AG Sochard Berangere 49152 No 86d75e5da397fdadcd332f92234a4f62 29/11/2019 08:51 CET 0 Lambda-cyhalothrin - EU AIR5 - Document A - Statement of the.pdf
3 Country Specific No Yes Syngenta Lambda-cyhalothrin - EU AIR5 - MCA Section 5 - Toxicology (1).docx English PP321 Summary / Overview TRUE All Internal Users, Syngenta Read Only Non Restricted, Syngenta Read Only Restricted 16/07/2019 Lambda-cyhalothrin - EU AIR5 - MCA Section 5 - Toxicology PI0015818 0 OECD Tier 2 Summary 0 17/02/2021 22:02 CET Syngenta Crop Protection AG (Switzerland) Yes Draft SmartDoc - EAME 0 IT-615930 VV-729845 N/A PP321_12086 Syngenta S Lloyd No 0 0 0 1.0|CURRENT 090100b881afde22 Syngenta Crop Protection AG (Switzerland) Syngenta Crop Protection AG Original Internal Use Only 090100b881afde22 0 Sonia Ellis Syngenta Crop Protection AG (Switzerland) European Union General Lifecycle 40037_848583 Ellis Sonia (ext) GBGU Lambda-cyhalothrin - EU AIR5 - MCA Section 5 - Toxicology 893 Summary / Assessment No 090100b881afde22 (cv) CP Vault Support 0 No Syngenta 24/02/2021 15:20 CET Vault Migration EAME Reg Ops, Syngenta Business Administrator, PS Ops, NA Reg Ops, Global Reg Ops, Berangere Sochard, Simon Baker, Lily Williams, Clive Boxwell, Paul Parsons, Richard MacKenzie, Dan Pickford, Laurence Hand, Claire McCombie, Elaine Buss Vault Migration application/vnd.openxmlformats-officedocument.wordprocessingml.document Toxicology 3 PP321 0 No PI0015818 No 40037_848583_2033983 No 01/09/2020 Tox No 0 1 Syngenta Crop Protection AG 17/02/2021 21:35 CET 04/09/2020 14:34 CEST VV-729845 Lloyd Sara 5089990 No 3b13f57d1244e77844eba73ce0ae9813 29/11/2019 08:47 CET 0 Lambda-cyhalothrin - EU AIR5 - MCA Section 5 - Toxicology.pdf
4 Country Specific No Yes Syngenta Lambda-cyhalothrin - EU AIR5 - LCA Section 5 Reference List (1).doc English PP321 Summary / Overview TRUE All Internal Users, Syngenta Read Only Restricted, Syngenta Read Only Non Restricted 16/07/2019 Lambda-cyhalothrin - EU AIR5 - LCA Section 5 Reference List PI0015818 0 OECD Tier 1 Summary 0 12/09/2020 15:48 CEST Syngenta Crop Protection AG (Switzerland) Yes Final SmartDoc - EAME 0 IT-615436 VV-729844 N/A PP321_12084 S Ellis No 0 0 0 1.0|CURRENT 090100b881afde20 Syngenta Crop Protection AG (Switzerland) Syngenta Crop Protection AG Original Internal Use Only 090100b881afde20 0 Sonia Ellis Syngenta Crop Protection AG (Switzerland) European Union General Lifecycle 40037_848582 Lambda-cyhalothrin - EU AIR5 - LCA Section 5 Reference List 147 Summary / Assessment No 090100b881afde20 (cv) CP Vault Support 0 No 24/02/2021 15:20 CET Vault Migration NA Reg Ops, Global Reg Ops, EAME Reg Ops, PS Ops, Syngenta Business Administrator, Berangere Sochard, Paul Parsons Vault Migration application/msword Toxicology 2 PP321 0 No PI0015818 No 40037_848582_2001744 No 01/09/2020 Tox No 0 0 Syngenta Crop Protection AG Ellis Sonia 651264 No eb0fdf698b528b67f54635395ec7fb52 29/11/2019 08:47 CET 0 Lambda-cyhalothrin - EU AIR5 - LCA Section 5 Reference List.pdf
5 Country Specific No Yes Syngenta Lambda-cyhalothrin - EU AIR5 - LCA Section 4 Reference List (5).doc English PP321 Summary / Overview TRUE All Internal Users, Syngenta Read Only Restricted, Syngenta Read Only Non Restricted 16/07/2019 Lambda-cyhalothrin - EU AIR5 - LCA Section 4 Reference List PI0015818 0 OECD Tier 1 Summary 0 21/09/2020 15:21 CEST Syngenta Crop Protection AG (Switzerland) Yes Final SmartDoc - EAME 0 IT-618210 VV-729843 N/A PP321_12083 S Ellis No 0 0 0 1.0|CURRENT 090100b881afde1f Syngenta Crop Protection AG (Switzerland) Syngenta Crop Protection AG Original Internal Use Only 090100b881afde1f 0 Sonia Ellis Syngenta Crop Protection AG (Switzerland) European Union General Lifecycle 40037_848581 Lambda-cyhalothrin - EU AIR5 - LCA Section 4 Reference List 151 Summary / Assessment No 090100b881afde1f (cv) CP Vault Support 0 No 24/02/2021 15:20 CET Vault Migration EAME Reg Ops, Global Reg Ops, PS Ops, Syngenta Business Administrator, NA Reg Ops, Berangere Sochard, Melanie Bottoms, Dan Pickford, Lynda Farrelly Vault Migration application/msword Chemistry - Regulatory 2 PP321 0 No PI0015818 No 40037_848581_2003177 No 01/09/2020 Chem - Analytical Methods No 0 0 Syngenta Crop Protection AG Ellis Sonia 699392 No 2c476f477f6e2b55ecb537683f5d1cee 29/11/2019 08:47 CET 0 Lambda-cyhalothrin - EU AIR5 - LCA Section 4 Reference List.pdf

View File

@ -0,0 +1,2 @@
Name,Attribute A,Attribute B
test,123,465
1 Name Attribute A Attribute B
2 test 123 465