Skip to content

Commit

Permalink
#349 support delete operation on extension param value
Browse files Browse the repository at this point in the history
  • Loading branch information
syjer committed Mar 6, 2018
1 parent f9d3d7d commit 9433345
Show file tree
Hide file tree
Showing 8 changed files with 62 additions and 3 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -137,6 +137,12 @@ public void bulkUpdateSystem(@RequestBody List<ExtensionMetadataValue> toUpdate,
extensionService.bulkUpdateSystemSettings(toUpdate);
}

@DeleteMapping("/setting/system/{id}")
public void deleteSystemSettingValue(@PathVariable("id") int id, Principal principal) {
ensureAdmin(principal);
extensionService.deleteSettingValue(id, "-");
}

@RequestMapping(value = "/setting/organization/{orgShortName}", method = RequestMethod.GET)
public Map<Integer, List<ExtensionParameterMetadataAndValue>> getParametersFor(@PathVariable("orgShortName") String orgShortName, Principal principal) {
Organization org = organizationRepository.findByName(orgShortName).orElseThrow(IllegalStateException::new);
Expand All @@ -153,6 +159,13 @@ public void bulkUpdateOrganization(@PathVariable("orgShortName") String orgShort
extensionService.bulkUpdateOrganizationSettings(org, toUpdate);
}

@DeleteMapping("/setting/organization/{orgShortName}/{id}")
public void deleteOrganizationSettingValue(@PathVariable("orgShortName") String orgShortName, @PathVariable("id") int id, Principal principal) {
Organization org = organizationRepository.findByName(orgShortName).orElseThrow(IllegalStateException::new);
ensureOrganization(principal, org);
extensionService.deleteSettingValue(id, "-" + org.getId());
}

@RequestMapping(value = "/setting/organization/{orgShortName}/event/{shortName}", method = RequestMethod.GET)
public Map<Integer, List<ExtensionParameterMetadataAndValue>> getParametersFor(@PathVariable("orgShortName") String orgShortName,
@PathVariable("shortName") String eventShortName,
Expand All @@ -179,6 +192,15 @@ public void bulkUpdateEvent(@PathVariable("orgShortName") String orgShortName, @
extensionService.bulkUpdateEventSettings(org, event, toUpdate);
}

@DeleteMapping("/setting/organization/{orgShortName}/event/{shortName}/{id}")
public void deleteEventSettingValue(@PathVariable("orgShortName") String orgShortName, @PathVariable("shortName") String eventShortName, @PathVariable("id") int id, Principal principal) {
Organization org = organizationRepository.findByName(orgShortName).orElseThrow(IllegalStateException::new);
ensureOrganization(principal, org);
Event event = eventRepository.findByShortName(eventShortName);
ensureEventInOrganization(org, event);
extensionService.deleteSettingValue(id, String.format("-%d-%d", org.getId(), event.getId()));
}

//check that the ids are coherent
private static void ensureIdsArePresent(List<ExtensionMetadataValue> toUpdate, List<ExtensionParameterMetadataAndValue> system) {
Set<Integer> validIds = system.stream().map(ExtensionParameterMetadataAndValue::getId).collect(Collectors.toSet());
Expand Down
6 changes: 6 additions & 0 deletions src/main/java/alfio/extension/ExtensionService.java
Original file line number Diff line number Diff line change
Expand Up @@ -54,6 +54,7 @@ public class ExtensionService {

private final PlatformTransactionManager platformTransactionManager;


@AllArgsConstructor
private static final class ExtensionLoggerImpl implements ExtensionLogger {

Expand Down Expand Up @@ -161,6 +162,11 @@ public void bulkUpdateEventSettings(Organization org, Event event, List<Extensio
deleteAndInsertSetting("EVENT", path, toUpdate);
}

@Transactional
public void deleteSettingValue(int id, String path) {
extensionRepository.deleteSettingValue(id, path);
}

private void deleteAndInsertSetting(String level, String path, List<ExtensionMetadataValue> toUpdate) {
extensionRepository.deleteSettingValue(level, path);
List<ExtensionMetadataValue> toUpdate2 = (toUpdate == null ? Collections.emptyList() : toUpdate);
Expand Down
3 changes: 3 additions & 0 deletions src/main/java/alfio/repository/ExtensionRepository.java
Original file line number Diff line number Diff line change
Expand Up @@ -110,6 +110,9 @@ List<ExtensionSupport.ExtensionParameterMetadataAndValue> getParametersForLevelA
@Query("delete from extension_configuration_metadata_value where fk_ecm_id in (select ecm_id from extension_configuration_metadata where ECM_CONFIGURATION_LEVEL = :confLevel) and conf_path = :confPath")
int deleteSettingValue(@Bind("confLevel") String level, @Bind("confPath") String confPath);

@Query("delete from extension_configuration_metadata_value where fk_ecm_id = :id and conf_path = :path")
int deleteSettingValue(@Bind("id") int id, @Bind("path") String path);

@Query("insert into extension_configuration_metadata_value(fk_ecm_id, conf_path, conf_value) values (:ecmId, :confPath, :value)")
int insertSettingValue(@Bind("ecmId") int ecmId, @Bind("confPath") String confPath, @Bind("value") String value);
}
Original file line number Diff line number Diff line change
Expand Up @@ -141,7 +141,7 @@ <h2>Extension settings</h2>
<div class="panel-body">
<div>
<div data-ng-repeat="setting in eventConf.extensionSettings[settingId]">
<setting data-obj="setting" data-display-delete-if-needed="true" data-delete-handler=""></setting>
<setting data-obj="setting" data-display-delete-if-needed="true" data-delete-handler="eventConf.deleteExtensionSetting(setting)"></setting>
</div>
</div>
</div>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -195,7 +195,7 @@ <h2>Extension settings</h2>
<div class="panel-body">
<div>
<div data-ng-repeat="setting in organizationConf.extensionSettings[settingId]">
<setting data-obj="setting" data-display-delete-if-needed="true" data-delete-handler=""></setting>
<setting data-obj="setting" data-display-delete-if-needed="true" data-delete-handler="organizationConf.deleteExtensionSetting(setting)"></setting>
</div>
</div>
</div>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -230,7 +230,7 @@ <h2>Extension settings</h2>
<div class="panel-body">
<div>
<div data-ng-repeat="setting in systemConf.extensionSettings[settingId]">
<setting data-obj="setting" data-display-delete-if-needed="true" data-delete-handler=""></setting>
<setting data-obj="setting" data-display-delete-if-needed="true" data-delete-handler="systemConf.deleteExtensionSetting(setting)"></setting>
</div>
</div>
</div>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -234,6 +234,10 @@
return ConfigurationService.removeSystemConfig(config);
};

systemConf.deleteExtensionSetting = function(config) {
return ExtensionService.deleteSystemSettingValue(config);
};

$rootScope.$on('ReloadSettings', function() {
loadAll();
});
Expand Down Expand Up @@ -284,6 +288,10 @@
return ConfigurationService.removeOrganizationConfig(config, organizationConf.organizationId);
};

organizationConf.deleteExtensionSetting = function(config) {
return ExtensionService.deleteOrganizationSettingValue(organizationConf.organizationId, config);
};

$rootScope.$on('ReloadSettings', function() {
load();
});
Expand Down Expand Up @@ -361,6 +369,10 @@
return ConfigurationService.removeEventConfig(config, eventConf.eventId);
};

eventConf.deleteExtensionSetting = function(config) {
return ExtensionService.deleteEventSettingValue(eventConf.organizationId, eventConf.eventId, config);
};

$rootScope.$on('ReloadSettings', function() {
load();
});
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,22 @@
var eventShortName = res[1].data.shortName;
return $http.post('/admin/api/extensions/setting/organization/'+encodeURIComponent(organizationName)+'/event/'+encodeURIComponent(eventShortName) + '/bulk-update', transformSettingPayload(toSave));
});
},
deleteSystemSettingValue: function(toDelete) {
return $http.delete('/admin/api/extensions/setting/system/'+toDelete.id);
},
deleteOrganizationSettingValue: function(orgId, toDelete) {
return OrganizationService.getOrganization(orgId).then(function(org) {
var organizationName = org.data.name;
return $http.delete('/admin/api/extensions/setting/organization/' + encodeURIComponent(organizationName) + '/'+toDelete.id);
});
},
deleteEventSettingValue: function(orgId, eventId, toDelete) {
return $q.all([OrganizationService.getOrganization(orgId), EventService.getEventById(eventId)]).then(function(res) {
var organizationName = res[0].data.name;
var eventShortName = res[1].data.shortName;
return $http.delete('/admin/api/extensions/setting/organization/'+encodeURIComponent(organizationName)+'/event/'+encodeURIComponent(eventShortName) + '/'+toDelete.id);
});
}
};
}
Expand Down

0 comments on commit 9433345

Please sign in to comment.