Skip to content

Commit

Permalink
#349 - add displayName (required) to metadata
Browse files Browse the repository at this point in the history
  • Loading branch information
cbellone committed Mar 18, 2018
1 parent 15ad00f commit 91dc344
Show file tree
Hide file tree
Showing 8 changed files with 24 additions and 12 deletions.
1 change: 1 addition & 0 deletions docs/extensions-howto.md
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@ Each extension consists of a JavaScript script, you can find a sample below:
function getScriptMetadata() {
return {
id: 'myExtensionIdentifier', // optional: id and version will be used later as a mechanism for checking if the script has a newer version
displayName: 'My Extension', //mandatory: the name displayed in the configuration page
version: 0, // optional
async: false,
events: [
Expand Down
1 change: 1 addition & 0 deletions src/main/java/alfio/extension/ExtensionMetadata.java
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,7 @@
@AllArgsConstructor
public class ExtensionMetadata {
String id;
String displayName;
Integer version;
boolean async;
List<String> events;
Expand Down
11 changes: 8 additions & 3 deletions src/main/java/alfio/extension/ExtensionService.java
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,10 @@
import alfio.model.Event;
import alfio.model.ExtensionLog;
import alfio.model.ExtensionSupport;
import alfio.model.ExtensionSupport.*;
import alfio.model.ExtensionSupport.ExtensionMetadataValue;
import alfio.model.ExtensionSupport.ExtensionParameterMetadataAndValue;
import alfio.model.ExtensionSupport.NameAndValue;
import alfio.model.ExtensionSupport.ScriptPathNameHash;
import alfio.model.user.Organization;
import alfio.repository.ExtensionLogRepository;
import alfio.repository.ExtensionRepository;
Expand Down Expand Up @@ -110,13 +113,15 @@ public void createOrUpdate(String previousPath, String previousName, Extension s
String hash = DigestUtils.sha256Hex(script.getScript());
ExtensionMetadata extensionMetadata = getMetadata(script.getName(), script.getScript());

Validate.notBlank(extensionMetadata.displayName, "Display Name is mandatory");

extensionRepository.deleteEventsForPath(previousPath, previousName);

if (!Objects.equals(previousPath, script.getPath()) || !Objects.equals(previousName, script.getName())) {
extensionRepository.deleteScriptForPath(previousPath, previousName);
extensionRepository.insert(script.getPath(), script.getName(), hash, script.isEnabled(), extensionMetadata.async, script.getScript());
extensionRepository.insert(script.getPath(), script.getName(), extensionMetadata.displayName, hash, script.isEnabled(), extensionMetadata.async, script.getScript());
} else {
extensionRepository.update(script.getPath(), script.getName(), hash, script.isEnabled(), extensionMetadata.async, script.getScript());
extensionRepository.update(script.getPath(), script.getName(), extensionMetadata.displayName, hash, script.isEnabled(), extensionMetadata.async, script.getScript());
//TODO: load all saved parameters value, then delete the register extension parameter
}

Expand Down
3 changes: 0 additions & 3 deletions src/main/java/alfio/manager/ExtensionManager.java
Original file line number Diff line number Diff line change
Expand Up @@ -20,9 +20,7 @@
import alfio.extension.ExtensionService;
import alfio.model.*;
import alfio.model.extension.InvoiceGeneration;
import alfio.model.user.Organization;
import alfio.repository.EventRepository;
import alfio.repository.TicketReservationRepository;
import lombok.AllArgsConstructor;
import org.springframework.stereotype.Component;

Expand All @@ -34,7 +32,6 @@ public class ExtensionManager {

private final ExtensionService extensionService;
private final EventRepository eventRepository;
private final TicketReservationRepository ticketReservationRepository;

public enum ExtensionEvent {
RESERVATION_CONFIRMED,
Expand Down
3 changes: 3 additions & 0 deletions src/main/java/alfio/model/ExtensionSupport.java
Original file line number Diff line number Diff line change
Expand Up @@ -65,6 +65,7 @@ public ScriptPathNameHash(@Column("path") String path,
public static class ExtensionParameterMetadataAndValue {
private final int id;
private final String name;
private final String extensionDisplayName;
private final String configurationLevel;
private final String description;
private final String type;
Expand All @@ -85,6 +86,7 @@ public ExtensionParameterMetadataAndValue(@Column("ecm_id") int id,
@Column("path") String path,
@Column("es_id") int extensionId,
@Column("name") String extensionName,
@Column("display_name") String extensionDisplayName,
@Column("conf_path") String configurationPath,
@Column("conf_value") String configurationValue) {
this.id = id;
Expand All @@ -96,6 +98,7 @@ public ExtensionParameterMetadataAndValue(@Column("ecm_id") int id,
this.path = path;
this.extensionId = extensionId;
this.extensionName = extensionName;
this.extensionDisplayName = extensionDisplayName;
this.configurationPath = configurationPath;
this.configurationValue = configurationValue;
}
Expand Down
14 changes: 9 additions & 5 deletions src/main/java/alfio/repository/ExtensionRepository.java
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,9 @@
package alfio.repository;

import alfio.model.ExtensionSupport;
import ch.digitalfondue.npjt.*;
import ch.digitalfondue.npjt.Bind;
import ch.digitalfondue.npjt.Query;
import ch.digitalfondue.npjt.QueryRepository;

import java.util.List;
import java.util.Optional;
Expand All @@ -27,18 +29,20 @@
@QueryRepository
public interface ExtensionRepository {

@Query("insert into extension_support(path, name, hash, enabled, async, script) values " +
" (:path, :name, :hash, :enabled, :async, :script)")
@Query("insert into extension_support(path, name, display_name, hash, enabled, async, script) values " +
" (:path, :name, :displayName, :hash, :enabled, :async, :script)")
int insert(@Bind("path") String path,
@Bind("name") String name,
@Bind("displayName") String displayName,
@Bind("hash") String hash,
@Bind("enabled") boolean enabled,
@Bind("async") boolean async,
@Bind("script") String script);

@Query("update extension_support set hash = :hash, enabled = :enabled, async = :async, script = :script where path = :path and name = :name")
@Query("update extension_support set display_name = :displayName, hash = :hash, enabled = :enabled, async = :async, script = :script where path = :path and name = :name")
int update(@Bind("path") String path,
@Bind("name") String name,
@Bind("displayName") String displayName,
@Bind("hash") String hash,
@Bind("enabled") boolean enabled,
@Bind("async") boolean async,
Expand Down Expand Up @@ -96,7 +100,7 @@ int registerExtensionConfigurationMetadata(@Bind("extensionId") int extensionId,
@Bind("mandatory") boolean mandatory);


@Query("select ecm_id, ecm_name, ecm_configuration_level, ecm_description, ecm_type, ecm_mandatory, path, es_id, name, conf_path, conf_value"+
@Query("select ecm_id, ecm_name, ecm_configuration_level, ecm_description, ecm_type, ecm_mandatory, path, es_id, name, display_name, conf_path, conf_value"+
" from extension_configuration_metadata " +
" inner join extension_support on es_id = ecm_es_id_fk " +
" left outer join extension_configuration_metadata_value on ecm_id = fk_ecm_id and (conf_path is null or (conf_path in (:possiblePaths))) " +
Expand Down
1 change: 1 addition & 0 deletions src/main/resources/alfio/extension/sample.js
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
function getScriptMetadata() {
return {
id: 'myExtensionIdentifier', // optional: id and version will be used later as a mechanism for checking if the script has a newer version
displayName: 'My Extension', //mandatory: the name displayed in the configuration page
version: 0, // optional
async: false,
events: [
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -225,7 +225,7 @@ <h2>Extensions</h2>
</div>
<div class="panel panel-default" data-ng-repeat="settingId in systemConf.extensionSettings | keys">
<div class="panel-heading">
<div class="panel-title"><i class="fa fa-plug"></i> {{systemConf.extensionSettings[settingId][0].extensionName}}</div>
<div class="panel-title"><i class="fa fa-plug"></i> {{systemConf.extensionSettings[settingId][0].extensionDisplayName}}</div>
</div>
<div class="panel-body">
<div>
Expand Down

0 comments on commit 91dc344

Please sign in to comment.