From 973ee9056995d1c9e7a533d9999329a70f0d2b2d Mon Sep 17 00:00:00 2001
From: rsanchez <rsanchez@curisit.net>
Date: Wed, 15 Oct 2014 07:49:46 +0000
Subject: [PATCH] #2021 config - Added pack and LicenseType Metadata management
---
securis/src/main/resources/static/admin.html | 4
securis/src/main/java/net/curisit/securis/services/LicenseTypeResource.java | 26 ++++++
securis/src/main/resources/static/licenses.html | 5 -
securis/src/main/resources/static/js/catalogs.json | 3
securis/src/main/resources/static/main.html | 2
securis/src/main/java/net/curisit/securis/db/LicenseTypeMetadata.java | 29 ++++---
securis/src/main/java/net/curisit/securis/db/LicenseType.java | 15 +++
securis/src/main/java/net/curisit/securis/db/PackMetadata.java | 33 ++++---
securis/src/main/resources/static/js/admin.js | 19 ++++
securis/src/main/java/net/curisit/securis/db/Pack.java | 23 +++++
securis/src/main/resources/db/schema.sql | 6 -
securis/src/main/java/net/curisit/securis/services/PackResource.java | 26 ++++++
12 files changed, 148 insertions(+), 43 deletions(-)
diff --git a/securis/src/main/java/net/curisit/securis/db/LicenseType.java b/securis/src/main/java/net/curisit/securis/db/LicenseType.java
index 41874fe..b483db2 100644
--- a/securis/src/main/java/net/curisit/securis/db/LicenseType.java
+++ b/securis/src/main/java/net/curisit/securis/db/LicenseType.java
@@ -45,7 +45,7 @@
@Id
@GeneratedValue
- private int id;
+ private Integer id;
private String code;
private String name;
@@ -138,4 +138,17 @@
this.creationTimestamp = creationTimestamp;
}
+ @Override
+ public boolean equals(Object obj) {
+ if (!(obj instanceof LicenseType))
+ return false;
+ LicenseType other = (LicenseType)obj;
+ return id.equals(other.id);
+ }
+
+ @Override
+ public int hashCode() {
+
+ return (id == null ? 0 : id.hashCode());
+ }
}
diff --git a/securis/src/main/java/net/curisit/securis/db/LicenseTypeMetadata.java b/securis/src/main/java/net/curisit/securis/db/LicenseTypeMetadata.java
index 3473d6c..b82a400 100644
--- a/securis/src/main/java/net/curisit/securis/db/LicenseTypeMetadata.java
+++ b/securis/src/main/java/net/curisit/securis/db/LicenseTypeMetadata.java
@@ -32,25 +32,15 @@
private static final long serialVersionUID = 1L;
@Id
- @GeneratedValue
- private int id;
-
- private String key;
-
- private String value;
-
@JsonIgnore
@ManyToOne
@JoinColumn(name = "license_type_id")
private LicenseType licenseType;
- public int getId() {
- return id;
- }
+ @Id
+ private String key;
- public void setId(int id) {
- this.id = id;
- }
+ private String value;
@JsonProperty("licensetype_id")
public Integer getLicenseTypeId() {
@@ -91,4 +81,17 @@
this.key = key;
}
+ @Override
+ public boolean equals(Object obj) {
+ if (!(obj instanceof LicenseTypeMetadata))
+ return false;
+ LicenseTypeMetadata other = (LicenseTypeMetadata)obj;
+ return key.equals(other.key) && (licenseType == null || licenseType.equals(other.licenseType));
+ }
+
+ @Override
+ public int hashCode() {
+
+ return key.hashCode() + (licenseType == null ? 0 : licenseType.hashCode());
+ }
}
diff --git a/securis/src/main/java/net/curisit/securis/db/Pack.java b/securis/src/main/java/net/curisit/securis/db/Pack.java
index 5dd9993..6e89e47 100644
--- a/securis/src/main/java/net/curisit/securis/db/Pack.java
+++ b/securis/src/main/java/net/curisit/securis/db/Pack.java
@@ -42,7 +42,7 @@
@Id
@GeneratedValue
- private int id;
+ private Integer id;
private String code;
@@ -263,4 +263,25 @@
this.licensePreactivation = licensePreactivation;
}
+ public Set<PackMetadata> getMetadata() {
+ return metadata;
+ }
+
+ public void setMetadata(Set<PackMetadata> metadata) {
+ this.metadata = metadata;
+ }
+
+ @Override
+ public boolean equals(Object obj) {
+ if (!(obj instanceof Pack))
+ return false;
+ Pack other = (Pack)obj;
+ return id.equals(other.id);
+ }
+
+ @Override
+ public int hashCode() {
+
+ return (id == null ? 0 : id.hashCode());
+ }
}
diff --git a/securis/src/main/java/net/curisit/securis/db/PackMetadata.java b/securis/src/main/java/net/curisit/securis/db/PackMetadata.java
index 7545457..a99a045 100644
--- a/securis/src/main/java/net/curisit/securis/db/PackMetadata.java
+++ b/securis/src/main/java/net/curisit/securis/db/PackMetadata.java
@@ -32,27 +32,18 @@
private static final long serialVersionUID = 1L;
@Id
- @GeneratedValue
- private int id;
+ @JsonIgnore
+ @ManyToOne
+ @JoinColumn(name = "pack_id")
+ private Pack pack;
+ @Id
private String key;
private String value;
private boolean readonly;
- @JsonIgnore
- @ManyToOne
- @JoinColumn(name = "pack_id")
- private Pack pack;
-
- public int getId() {
- return id;
- }
-
- public void setId(int id) {
- this.id = id;
- }
@JsonProperty("pack_id")
public Integer getPackId() {
@@ -100,5 +91,19 @@
public void setReadonly(boolean readonly) {
this.readonly = readonly;
}
+
+ @Override
+ public boolean equals(Object obj) {
+ if (!(obj instanceof PackMetadata))
+ return false;
+ PackMetadata other = (PackMetadata)obj;
+ return key.equals(other.key) && (pack == null || pack.equals(other.pack));
+ }
+
+ @Override
+ public int hashCode() {
+
+ return key.hashCode() + (pack == null ? 0 : pack.hashCode());
+ }
}
diff --git a/securis/src/main/java/net/curisit/securis/services/LicenseTypeResource.java b/securis/src/main/java/net/curisit/securis/services/LicenseTypeResource.java
index 23eafa8..385a35c 100644
--- a/securis/src/main/java/net/curisit/securis/services/LicenseTypeResource.java
+++ b/securis/src/main/java/net/curisit/securis/services/LicenseTypeResource.java
@@ -2,6 +2,7 @@
import java.util.Date;
import java.util.List;
+import java.util.Set;
import javax.inject.Inject;
import javax.inject.Provider;
@@ -26,7 +27,9 @@
import net.curisit.securis.DefaultExceptionHandler;
import net.curisit.securis.SeCurisException;
import net.curisit.securis.db.Application;
+import net.curisit.securis.db.ApplicationMetadata;
import net.curisit.securis.db.LicenseType;
+import net.curisit.securis.db.LicenseTypeMetadata;
import net.curisit.securis.utils.TokenHelper;
import org.apache.logging.log4j.LogManager;
@@ -123,6 +126,15 @@
lt.setCreationTimestamp(new Date());
em.persist(lt);
+ Set<LicenseTypeMetadata> newMD = lt.getMetadata();
+
+ if (newMD != null) {
+ for (LicenseTypeMetadata md : newMD) {
+ md.setLicenseType(lt);
+ em.persist(md);
+ }
+ }
+ lt.setMetadata(newMD);
return Response.ok(lt).build();
}
@@ -155,6 +167,20 @@
currentlt.setName(lt.getName());
currentlt.setDescription(lt.getDescription());
em.persist(currentlt);
+
+ Set<LicenseTypeMetadata> newMD = lt.getMetadata();
+ for (LicenseTypeMetadata currentMd : currentlt.getMetadata()) {
+ if (newMD == null || !newMD.contains(currentMd));
+ em.remove(currentMd);
+ }
+
+ if (newMD != null) {
+ for (LicenseTypeMetadata md : newMD) {
+ md.setLicenseType(currentlt);
+ em.persist(md);
+ }
+ }
+ currentlt.setMetadata(newMD);
return Response.ok(currentlt).build();
}
diff --git a/securis/src/main/java/net/curisit/securis/services/PackResource.java b/securis/src/main/java/net/curisit/securis/services/PackResource.java
index 45c5bd9..39ac56d 100644
--- a/securis/src/main/java/net/curisit/securis/services/PackResource.java
+++ b/securis/src/main/java/net/curisit/securis/services/PackResource.java
@@ -3,6 +3,7 @@
import java.security.Principal;
import java.util.Date;
import java.util.List;
+import java.util.Set;
import javax.annotation.security.RolesAllowed;
import javax.inject.Inject;
@@ -26,8 +27,10 @@
import net.curisit.securis.DefaultExceptionHandler;
import net.curisit.securis.SeCurisException;
import net.curisit.securis.db.LicenseType;
+import net.curisit.securis.db.PackMetadata;
import net.curisit.securis.db.Organization;
import net.curisit.securis.db.Pack;
+import net.curisit.securis.db.PackMetadata;
import net.curisit.securis.db.User;
import net.curisit.securis.security.BasicSecurityContext;
import net.curisit.securis.security.Securable;
@@ -155,7 +158,15 @@
pack.setCreatedBy(user);
pack.setCreationTimestamp(new Date());
em.persist(pack);
-
+ Set<PackMetadata> newMD = pack.getMetadata();
+
+ if (newMD != null) {
+ for (PackMetadata md : newMD) {
+ md.setPack(pack);
+ em.persist(md);
+ }
+ }
+ pack.setMetadata(newMD);
return Response.ok(pack).build();
}
@@ -205,6 +216,19 @@
em.persist(currentPack);
+ Set<PackMetadata> newMD = pack.getMetadata();
+ for (PackMetadata currentMd : currentPack.getMetadata()) {
+ if (newMD == null || !newMD.contains(currentMd));
+ em.remove(currentMd);
+ }
+
+ if (newMD != null) {
+ for (PackMetadata md : newMD) {
+ md.setPack(currentPack);
+ em.persist(md);
+ }
+ }
+ currentPack.setMetadata(newMD);
return Response.ok(pack).build();
}
diff --git a/securis/src/main/resources/db/schema.sql b/securis/src/main/resources/db/schema.sql
index c52b116..d3fdf49 100644
--- a/securis/src/main/resources/db/schema.sql
+++ b/securis/src/main/resources/db/schema.sql
@@ -48,11 +48,10 @@
drop table IF EXISTS licensetype_metadata;
CREATE TABLE IF NOT EXISTS licensetype_metadata (
- id INT NOT NULL auto_increment,
license_type_id INT NOT NULL ,
key VARCHAR(100) NOT NULL ,
value VARCHAR(200) NULL ,
- PRIMARY KEY (id));
+ PRIMARY KEY (license_type_id, key));
drop table IF EXISTS organization;
CREATE TABLE IF NOT EXISTS organization (
@@ -85,12 +84,11 @@
drop table IF EXISTS pack_metadata;
CREATE TABLE IF NOT EXISTS pack_metadata (
- id INT NOT NULL auto_increment,
pack_id INT NOT NULL ,
key VARCHAR(100) NOT NULL ,
value VARCHAR(200) NULL ,
readonly BOOlEAN NOT NULL default false,
- PRIMARY KEY (id));
+ PRIMARY KEY (pack_id, key));
drop table IF EXISTS license;
diff --git a/securis/src/main/resources/static/admin.html b/securis/src/main/resources/static/admin.html
index 37c07ef..4782cff 100644
--- a/securis/src/main/resources/static/admin.html
+++ b/securis/src/main/resources/static/admin.html
@@ -52,8 +52,8 @@
<p ng-switch-when="readonly" class="form-control-static">{{formu[field.name]}}</p>
<p ng-switch-when="readonly_date" class="form-control-static">{{formu[field.name] | date:'medium'}}</p>
<select ng-switch-when="select" class="form-control" ng-required="field.mandatory" ng-model="formu[field.name]"
- ng-options="o.id as o.label for o in refs[field.name]" >
- <option selected="true" ng-if="!field.mandatory" value=""></option>
+ ng-options="o.id as o.label for o in refs[field.name]" ng-change="selectFieldChanged(field.onchange)">
+ <option value="-1" selected></option>
</select>
<select chosen multiple ng-switch-when="multiselect" class="form-control" ng-required="field.mandatory" ng-model="formu[field.name]"
ng-options="o.id as o.label for o in refs[field.name]" data-placeholder="...">
diff --git a/securis/src/main/resources/static/js/admin.js b/securis/src/main/resources/static/js/admin.js
index a433436..53f9a70 100644
--- a/securis/src/main/resources/static/js/admin.js
+++ b/securis/src/main/resources/static/js/admin.js
@@ -66,7 +66,7 @@
$scope.edit = function(data) {
$scope.showForm = true;
$scope.isNew = false;
- // Next line is a wirkaround due to some issues with values with ID == 0
+ // Next line is a workaround due to some issues with values with ID == 0
$('select').val(null);
$scope.formu = {}
var fields = Catalogs.getMetadata().fields;
@@ -130,6 +130,10 @@
$scope.$parent.showForm = true;
$('select').val(null);
$scope.$parent.formu = {};
+
+ console.log("Refs:");
+ console.log($scope.refs);
+
setTimeout(function() {
$('#'+Catalogs.getFFF()).focus();
}, 0);
@@ -165,6 +169,11 @@
}
}
+ $scope.selectFieldChanged = function(onchangehandler) {
+ if (onchangehandler) {
+ $scope[onchangehandler]();
+ }
+ }
// Metadata management
$scope.createMetadataRow = function() {
@@ -176,6 +185,14 @@
$scope.removeMetadataKey = function(row_md) {
$scope.formu.metadata.splice( $scope.formu.metadata.indexOf(row_md), 1 );
}
+ $scope.updateMetadata = function() {
+ // Called when Application ID change in current field
+ var newAppId = $scope.formu['application_id'];
+ console.log('Ready to get metadata from application: ' + newAppId);
+ Catalogs.getResource('application').get({appId: newAppId}).$promise.then(function(app) {
+ $scope.formu.metadata = app.metadata;
+ });
+ }
} ]);
diff --git a/securis/src/main/resources/static/js/catalogs.json b/securis/src/main/resources/static/js/catalogs.json
index 2135103..bb11315 100644
--- a/securis/src/main/resources/static/js/catalogs.json
+++ b/securis/src/main/resources/static/js/catalogs.json
@@ -67,7 +67,8 @@
"display" : "Application",
"resource" : "application",
"mandatory" : true,
- "type" : "select"
+ "type" : "select",
+ "onchange": "updateMetadata"
}, {
"name" : "creationTimestamp",
"display" : "Creation date",
diff --git a/securis/src/main/resources/static/licenses.html b/securis/src/main/resources/static/licenses.html
index 6ba2104..9f290c9 100644
--- a/securis/src/main/resources/static/licenses.html
+++ b/securis/src/main/resources/static/licenses.html
@@ -88,8 +88,7 @@
ng-required="mandatory.license_type_id"
ng-model="pack.license_type_id"
ng-options="o.id as o.label for o in refs.license_type_id">
- <option selected="true" ng-if="!mandatory.license_type_id"
- value=""></option>
+
</select>
<div class="alert inline-alert alert-warning"
ng-show="packForm.license_type_id.$invalid">
@@ -106,8 +105,6 @@
<select class="form-control" ng-required="field.mandatory"
ng-model="pack.organization_id"
ng-options="o.id as o.label for o in refs.organization_id">
- <option selected="true" ng-if="!mandatory.organization_id"
- value=""></option>
</select>
<div class="alert inline-alert alert-warning"
ng-show="packForm.organization_id.$invalid">
diff --git a/securis/src/main/resources/static/main.html b/securis/src/main/resources/static/main.html
index a8d9bff..45e27e9 100644
--- a/securis/src/main/resources/static/main.html
+++ b/securis/src/main/resources/static/main.html
@@ -41,7 +41,7 @@
<script type="text/javascript"
src="/js/vendor/bootstrap-dialog.js"></script>
<script type="text/javascript"
- src="/js/angular/angular.min.js"></script>
+ src="/js/angular/angular.js"></script>
<script type="text/javascript"
src="/js/angular/angular-route.min.js"></script>
<script type="text/javascript"
--
Gitblit v1.3.2