RED-10343 - User should be able to set own placerholder value
- when placeholder is set, the placeholder is checked to be unique (conflict otherwise) and then used - when placeholder is not set, the current behaviour is in place(with generated placeholder) - update unit tests
This commit is contained in:
parent
d3f0d1bc87
commit
0e08794271
@ -60,7 +60,7 @@ public class DossierAttributeConfigPersistenceService {
|
||||
dossierAttributeConfig.setDossierTemplate(dossierTemplate);
|
||||
if (dossierAttributeConfig.getId() == null) {
|
||||
dossierAttributeConfig.setId(UUID.randomUUID().toString());
|
||||
setPlaceholder(dossierAttributeConfig);
|
||||
checkAndSetPlaceholder(dossierAttributeConfig);
|
||||
uniqueLabelAndPlaceholder(dossierAttributeConfig);
|
||||
return dossierAttributeConfigRepository.save(dossierAttributeConfig);
|
||||
} else {
|
||||
@ -72,12 +72,13 @@ public class DossierAttributeConfigPersistenceService {
|
||||
config.setLabel(dossierAttributeConfig.getLabel());
|
||||
config.setType(dossierAttributeConfig.getType());
|
||||
config.setEditable(dossierAttributeConfig.isEditable());
|
||||
setPlaceholder(config);
|
||||
checkAndSetPlaceholder(dossierAttributeConfig);
|
||||
config.setPlaceholder(dossierAttributeConfig.getPlaceholder());
|
||||
uniqueLabelAndPlaceholder(dossierAttributeConfig);
|
||||
return dossierAttributeConfigRepository.save(config);
|
||||
} else {
|
||||
dossierAttributeConfig.setId(UUID.randomUUID().toString());
|
||||
setPlaceholder(dossierAttributeConfig);
|
||||
checkAndSetPlaceholder(dossierAttributeConfig);
|
||||
uniqueLabelAndPlaceholder(dossierAttributeConfig);
|
||||
return dossierAttributeConfigRepository.save(dossierAttributeConfig);
|
||||
}
|
||||
@ -92,12 +93,25 @@ public class DossierAttributeConfigPersistenceService {
|
||||
}
|
||||
|
||||
|
||||
private void setPlaceholder(DossierAttributeConfigEntity dossierAttributeConfig) {
|
||||
private void checkAndSetPlaceholder(DossierAttributeConfigEntity dossierAttributeConfig) {
|
||||
|
||||
String placeholder = "{{dossier.attribute." + StringUtils.remove(WordUtils.capitalizeFully(dossierAttributeConfig.getLabel(), ' '), " ") + "}}";
|
||||
dossierAttributeConfig.setPlaceholder(placeholder);
|
||||
if (StringUtils.isEmpty(dossierAttributeConfig.getPlaceholder())) {
|
||||
String placeholder = "{{dossier.attribute." + StringUtils.remove(WordUtils.capitalizeFully(dossierAttributeConfig.getLabel(), ' '), " ") + "}}";
|
||||
dossierAttributeConfig.setPlaceholder(placeholder);
|
||||
} else {
|
||||
uniquePlaceholder(dossierAttributeConfig);
|
||||
}
|
||||
}
|
||||
|
||||
private void uniquePlaceholder(DossierAttributeConfigEntity dossierAttributesConfig) {
|
||||
getDossierAttributes(dossierAttributesConfig.getDossierTemplate().getId()).stream()
|
||||
.filter(d -> !d.getId().equals(dossierAttributesConfig.getId()))
|
||||
.forEach(other -> {
|
||||
if (other.getPlaceholder().equalsIgnoreCase(dossierAttributesConfig.getPlaceholder())) {
|
||||
throw new ConflictException("Placeholder already exists. " + dossierAttributesConfig.getPlaceholder());
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
private void uniqueLabelAndPlaceholder(DossierAttributeConfigEntity dossierAttributesConfig) {
|
||||
|
||||
|
||||
@ -115,7 +115,7 @@ public class FileAttributeConfigPersistenceService {
|
||||
}
|
||||
if (fileAttributeConfig.getId() == null) {
|
||||
fileAttributeConfig.setId(UUID.randomUUID().toString());
|
||||
setPlaceholder(fileAttributeConfig);
|
||||
checkAndSetPlaceholder(fileAttributeConfig);
|
||||
uniqueLabelAndPlaceholder(fileAttributeConfig);
|
||||
return fileAttributeConfigRepository.save(fileAttributeConfig);
|
||||
} else {
|
||||
@ -131,12 +131,13 @@ public class FileAttributeConfigPersistenceService {
|
||||
config.setDisplayedInFileList(fileAttributeConfig.isDisplayedInFileList());
|
||||
config.setPrimaryAttribute(fileAttributeConfig.isPrimaryAttribute());
|
||||
config.setFilterable(fileAttributeConfig.isFilterable());
|
||||
setPlaceholder(config);
|
||||
checkAndSetPlaceholder(fileAttributeConfig);
|
||||
config.setPlaceholder(fileAttributeConfig.getPlaceholder());
|
||||
uniqueLabelAndPlaceholder(fileAttributeConfig);
|
||||
return fileAttributeConfigRepository.save(config);
|
||||
} else {
|
||||
fileAttributeConfig.setId(UUID.randomUUID().toString());
|
||||
setPlaceholder(fileAttributeConfig);
|
||||
checkAndSetPlaceholder(fileAttributeConfig);
|
||||
uniqueLabelAndPlaceholder(fileAttributeConfig);
|
||||
return fileAttributeConfigRepository.save(fileAttributeConfig);
|
||||
}
|
||||
@ -151,12 +152,25 @@ public class FileAttributeConfigPersistenceService {
|
||||
}
|
||||
|
||||
|
||||
private void setPlaceholder(FileAttributeConfigEntity fileAttributeConfig) {
|
||||
private void checkAndSetPlaceholder(FileAttributeConfigEntity fileAttributeConfig) {
|
||||
|
||||
String placeholder = "{{file.attribute." + StringUtils.remove(WordUtils.capitalizeFully(fileAttributeConfig.getLabel(), ' '), " ") + "}}";
|
||||
fileAttributeConfig.setPlaceholder(placeholder);
|
||||
if (StringUtils.isEmpty(fileAttributeConfig.getPlaceholder())) {
|
||||
String placeholder = "{{file.attribute." + StringUtils.remove(WordUtils.capitalizeFully(fileAttributeConfig.getLabel(), ' '), " ") + "}}";
|
||||
fileAttributeConfig.setPlaceholder(placeholder);
|
||||
} else {
|
||||
uniquePlaceholder(fileAttributeConfig);
|
||||
}
|
||||
}
|
||||
|
||||
private void uniquePlaceholder(FileAttributeConfigEntity fileAttributeConfig) {
|
||||
getFileAttributes(fileAttributeConfig.getDossierTemplate().getId()).stream()
|
||||
.filter(d -> !d.getId().equals(fileAttributeConfig.getId()))
|
||||
.forEach(other -> {
|
||||
if (other.getPlaceholder().equalsIgnoreCase(fileAttributeConfig.getPlaceholder())) {
|
||||
throw new ConflictException("Placeholder already exists.");
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
private void uniqueLabelAndPlaceholder(FileAttributeConfigEntity fileAttributeConfig) {
|
||||
|
||||
|
||||
@ -51,15 +51,23 @@ public class DossierAttributeTest extends AbstractPersistenceServerServiceTest {
|
||||
attribute.setEditable(true);
|
||||
attribute.setType(DossierAttributeType.TEXT);
|
||||
|
||||
dossierAttributeConfigClient.addOrUpdateDossierAttributeConfig(dossier.getDossierTemplateId(), attribute);
|
||||
var created = dossierAttributeConfigClient.addOrUpdateDossierAttributeConfig(dossier.getDossierTemplateId(), attribute);
|
||||
assertThat(created.getPlaceholder()).isEqualTo("{{dossier.attribute.Test}}");
|
||||
loadedAttributes = dossierAttributeConfigClient.getDossierAttributesConfig(dossier.getDossierTemplateId());
|
||||
assertThat(loadedAttributes.getDossierAttributeConfigs()).isNotEmpty();
|
||||
|
||||
attribute.setId(created.getId());
|
||||
attribute.setLabel("updated test");
|
||||
var updated = dossierAttributeConfigClient.addOrUpdateDossierAttributeConfig(dossier.getDossierTemplateId(), attribute);
|
||||
assertThat(updated.getLabel()).isEqualTo("updated test");
|
||||
assertThat(updated.getPlaceholder()).isEqualTo("{{dossier.attribute.UpdatedTest}}");
|
||||
|
||||
attribute.setPlaceholder("{{dossier.attribute.MyOwnPlaceholder}}");
|
||||
updated = dossierAttributeConfigClient.addOrUpdateDossierAttributeConfig(dossier.getDossierTemplateId(), attribute);
|
||||
assertThat(updated.getLabel()).isEqualTo("updated test");
|
||||
assertThat(updated.getPlaceholder()).isEqualTo("{{dossier.attribute.MyOwnPlaceholder}}");
|
||||
|
||||
|
||||
dossierAttributeConfigClient.setDossierAttributesConfig(dossier.getDossierTemplateId(), new DossierAttributesConfig());
|
||||
loadedAttributes = dossierAttributeConfigClient.getDossierAttributesConfig(dossier.getDossierTemplateId());
|
||||
assertThat(loadedAttributes.getDossierAttributeConfigs()).isEmpty();
|
||||
|
||||
@ -88,9 +88,10 @@ public class FileAttributeTest extends AbstractPersistenceServerServiceTest {
|
||||
assertThat(loadedConfig.getEncoding()).isEqualTo(ASCII_ENCODING);
|
||||
|
||||
List<FileAttributeConfig> configs = new ArrayList<>();
|
||||
String myOwnPlaceholder = "{{file.attribute.MyOwnPlaceholder}}";
|
||||
configs.add(FileAttributeConfig.builder().csvColumnHeader("Name").primaryAttribute(true).label("Name").build());
|
||||
configs.add(FileAttributeConfig.builder().csvColumnHeader("Attribute A").primaryAttribute(true).label("Attribute A").build());
|
||||
FileAttributeConfig attributeB = FileAttributeConfig.builder().csvColumnHeader("Attribute B").primaryAttribute(true).label("Attribute B").build();
|
||||
FileAttributeConfig attributeB = FileAttributeConfig.builder().csvColumnHeader("Attribute B").primaryAttribute(true).label("Attribute B").placeholder(myOwnPlaceholder).build();
|
||||
configs.add(attributeB);
|
||||
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());
|
||||
@ -104,6 +105,7 @@ public class FileAttributeTest extends AbstractPersistenceServerServiceTest {
|
||||
.findAny()
|
||||
.get();
|
||||
assertThat(primaryAttribute.getLabel()).isEqualTo(attributeB.getLabel());
|
||||
assertThat(primaryAttribute.getPlaceholder()).isEqualTo(attributeB.getPlaceholder());
|
||||
|
||||
fileAttributeConfigClient.deleteFileAttribute(dossier.getDossierTemplateId(),
|
||||
loadedConfigs.stream()
|
||||
@ -129,6 +131,8 @@ public class FileAttributeTest extends AbstractPersistenceServerServiceTest {
|
||||
var created = fileAttributeConfigClient.addOrUpdateFileAttribute(dossier.getDossierTemplateId(), newConfig);
|
||||
loadedConfigs = fileAttributeConfigClient.getFileAttributesConfiguration(dossier.getDossierTemplateId()).getFileAttributeConfigs();
|
||||
assertThat(loadedConfigs.size()).isEqualTo(4);
|
||||
assertThat(created.getPlaceholder()).isEqualTo("{{file.attribute.TestAttribute}}");
|
||||
assertThat(created.getCsvColumnHeader()).isNull();
|
||||
|
||||
newConfig.setId(created.getId());
|
||||
newConfig.setLabel("Test Attribute Update");
|
||||
@ -138,6 +142,14 @@ public class FileAttributeTest extends AbstractPersistenceServerServiceTest {
|
||||
assertThat(updated.getLabel()).isEqualTo("Test Attribute Update");
|
||||
assertThat(updated.getPlaceholder()).isEqualTo("{{file.attribute.TestAttributeUpdate}}");
|
||||
|
||||
newConfig.setPlaceholder(myOwnPlaceholder);
|
||||
var e = assertThrows(FeignException.class,
|
||||
() -> fileAttributeConfigClient.addOrUpdateFileAttribute(dossier.getDossierTemplateId(), newConfig));
|
||||
assertEquals(409, e.status());
|
||||
newConfig.setPlaceholder("{{file.attribute.TestAttributeUpdate2}}");
|
||||
updated = fileAttributeConfigClient.addOrUpdateFileAttribute(dossier.getDossierTemplateId(), newConfig);
|
||||
assertThat(updated.getPlaceholder()).isEqualTo("{{file.attribute.TestAttributeUpdate2}}");
|
||||
|
||||
assertThat(fileClient.getFileStatus(dossier.getId(), file.getId()).getLastFileAttributeChange()).isNull();
|
||||
|
||||
fileAttributeClient.setFileAttributes(dossier.getId(), file.getId(), new FileAttributes(Map.of(updated.getId(), "Lorem Ipsum")));
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user