replaced h2 with potgres
This commit is contained in:
parent
b98ff0f497
commit
02142f1d11
|
@ -8,19 +8,19 @@
|
||||||
*~
|
*~
|
||||||
.vscode
|
.vscode
|
||||||
.classpath
|
.classpath
|
||||||
/*/.classpath
|
/**/.classpath
|
||||||
/*/*/.classpath
|
|
||||||
.metadata
|
.metadata
|
||||||
/*/.metadata
|
/**/.metadata
|
||||||
/*/*/.metadata
|
|
||||||
.project
|
.project
|
||||||
|
/**/.project
|
||||||
.settings
|
.settings
|
||||||
/*/*/target
|
/**/.settings
|
||||||
/*/target
|
.factorypath
|
||||||
/target
|
/**/.factorypath
|
||||||
/*/*/build
|
target
|
||||||
/*/build
|
/**/target
|
||||||
/build
|
build
|
||||||
|
/**/build
|
||||||
spark-warehouse
|
spark-warehouse
|
||||||
/**/job-override.properties
|
/**/job-override.properties
|
||||||
/**/*.log
|
/**/*.log
|
||||||
|
|
|
@ -34,10 +34,10 @@
|
||||||
</exclusions>
|
</exclusions>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
|
||||||
<!-- H2 DB -->
|
<!-- Postgres -->
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>com.h2database</groupId>
|
<groupId>org.postgresql</groupId>
|
||||||
<artifactId>h2</artifactId>
|
<artifactId>postgresql</artifactId>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
|
||||||
<!-- Gson -->
|
<!-- Gson -->
|
||||||
|
|
|
@ -16,7 +16,7 @@ import eu.dnetlib.lbs.properties.EmailProperties;
|
||||||
public class CurrentStatus {
|
public class CurrentStatus {
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
private DatabaseProperties h2;
|
private DatabaseProperties db;
|
||||||
@Autowired
|
@Autowired
|
||||||
private ElasticSearchProperties elasticSearch;
|
private ElasticSearchProperties elasticSearch;
|
||||||
|
|
||||||
|
@ -72,12 +72,12 @@ public class CurrentStatus {
|
||||||
this.elasticSearch = elasticSearch;
|
this.elasticSearch = elasticSearch;
|
||||||
}
|
}
|
||||||
|
|
||||||
public DatabaseProperties getH2() {
|
public DatabaseProperties getDb() {
|
||||||
return this.h2;
|
return this.db;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setH2(final DatabaseProperties h2) {
|
public void setDb(final DatabaseProperties db) {
|
||||||
this.h2 = h2;
|
this.db = db;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -9,19 +9,9 @@ import org.springframework.stereotype.Component;
|
||||||
@ConfigurationProperties(prefix = "lbs.database")
|
@ConfigurationProperties(prefix = "lbs.database")
|
||||||
public class DatabaseProperties {
|
public class DatabaseProperties {
|
||||||
|
|
||||||
@NotNull
|
|
||||||
private String driverName;
|
|
||||||
@NotNull
|
@NotNull
|
||||||
private String url;
|
private String url;
|
||||||
|
|
||||||
public String getDriverName() {
|
|
||||||
return this.driverName;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setDriverName(final String driverName) {
|
|
||||||
this.driverName = driverName;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getUrl() {
|
public String getUrl() {
|
||||||
return this.url;
|
return this.url;
|
||||||
}
|
}
|
||||||
|
|
|
@ -24,7 +24,7 @@ public class Subscription {
|
||||||
@Column(name = "subscriptionid")
|
@Column(name = "subscriptionid")
|
||||||
private String subscriptionId;
|
private String subscriptionId;
|
||||||
|
|
||||||
@Column(name = "subscriber", length = 4096, nullable = false)
|
@Column(name = "subscriber", nullable = false)
|
||||||
private String subscriber;
|
private String subscriber;
|
||||||
|
|
||||||
@Column(name = "topic", nullable = false)
|
@Column(name = "topic", nullable = false)
|
||||||
|
@ -44,19 +44,19 @@ public class Subscription {
|
||||||
@Column(name = "creationDate", nullable = false, columnDefinition = "timestamp default '2018-01-01 00:00:00'")
|
@Column(name = "creationDate", nullable = false, columnDefinition = "timestamp default '2018-01-01 00:00:00'")
|
||||||
private Date creationDate;
|
private Date creationDate;
|
||||||
|
|
||||||
@Column(name = "conditions", length = 4096, nullable = true)
|
@Column(name = "conditions", nullable = true)
|
||||||
private String conditions;
|
private String conditions;
|
||||||
|
|
||||||
public Subscription() {}
|
public Subscription() {}
|
||||||
|
|
||||||
public Subscription(final String subscriptionId, final String subscriber, final String topic, final NotificationFrequency frequency,
|
public Subscription(final String subscriptionId, final String subscriber, final String topic, final NotificationFrequency frequency,
|
||||||
final NotificationMode mode,
|
final NotificationMode mode,
|
||||||
final Date lastNotificationDate, final Date creationDate, final List<MapCondition> conditions) {
|
final Date lastNotificationDate, final Date creationDate, final List<MapCondition> conditions) {
|
||||||
this(subscriptionId, subscriber, topic, frequency, mode, lastNotificationDate, creationDate, new Gson().toJson(conditions));
|
this(subscriptionId, subscriber, topic, frequency, mode, lastNotificationDate, creationDate, new Gson().toJson(conditions));
|
||||||
}
|
}
|
||||||
|
|
||||||
public Subscription(final String subscriptionId, final String subscriber, final String topic, final NotificationFrequency frequency,
|
public Subscription(final String subscriptionId, final String subscriber, final String topic, final NotificationFrequency frequency,
|
||||||
final NotificationMode mode, final Date lastNotificationDate, final Date creationDate, final String conditions) {
|
final NotificationMode mode, final Date lastNotificationDate, final Date creationDate, final String conditions) {
|
||||||
this.subscriptionId = subscriptionId;
|
this.subscriptionId = subscriptionId;
|
||||||
this.subscriber = subscriber;
|
this.subscriber = subscriber;
|
||||||
this.topic = topic;
|
this.topic = topic;
|
||||||
|
@ -144,9 +144,11 @@ public class Subscription {
|
||||||
return true;
|
return true;
|
||||||
} else {
|
} else {
|
||||||
final long diff = new Date().getTime() - s.getLastNotificationDate().getTime();
|
final long diff = new Date().getTime() - s.getLastNotificationDate().getTime();
|
||||||
if (((s.getFrequency() == NotificationFrequency.daily) && (diff >= TimeUnit.DAYS.toMillis(1))) ||
|
if (s.getFrequency() == NotificationFrequency.daily && diff >= TimeUnit.DAYS.toMillis(1) ||
|
||||||
((s.getFrequency() == NotificationFrequency.weekly) && (diff >= TimeUnit.DAYS.toMillis(7))) ||
|
s.getFrequency() == NotificationFrequency.weekly && diff >= TimeUnit.DAYS.toMillis(7) ||
|
||||||
((s.getFrequency() == NotificationFrequency.monthly) && (diff >= TimeUnit.DAYS.toMillis(30)))) { return true; }
|
s.getFrequency() == NotificationFrequency.monthly && diff >= TimeUnit.DAYS.toMillis(30)) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
|
@ -28,16 +28,16 @@ public class TopicType {
|
||||||
@Column(name = "name", nullable = false, unique = true)
|
@Column(name = "name", nullable = false, unique = true)
|
||||||
private String name;
|
private String name;
|
||||||
|
|
||||||
@Column(name = "expression", length = 4096, unique = true, nullable = false)
|
@Column(name = "expression", unique = true, nullable = false)
|
||||||
private String expression;
|
private String expression;
|
||||||
|
|
||||||
@Column(name = "regex", length = 4096, unique = true, nullable = false)
|
@Column(name = "regex", unique = true, nullable = false)
|
||||||
private String regex;
|
private String regex;
|
||||||
|
|
||||||
@Column(name = "producerId", length = 4096)
|
@Column(name = "producerId")
|
||||||
private String producerId;
|
private String producerId;
|
||||||
|
|
||||||
@Column(name = "mapKeys", length = 4096)
|
@Column(name = "mapKeys")
|
||||||
private String mapKeys;
|
private String mapKeys;
|
||||||
|
|
||||||
public TopicType() {}
|
public TopicType() {}
|
||||||
|
@ -116,11 +116,11 @@ public class TopicType {
|
||||||
final Predicate<String> p = Pattern.compile(getRegex()).asPredicate();
|
final Predicate<String> p = Pattern.compile(getRegex()).asPredicate();
|
||||||
final Set<String> keys = getMapKeysAsSet();
|
final Set<String> keys = getMapKeysAsSet();
|
||||||
return e -> e != null
|
return e -> e != null
|
||||||
&& StringUtils.isNotBlank(e.getTopic())
|
&& StringUtils.isNotBlank(e.getTopic())
|
||||||
&& p.test(e.getTopic())
|
&& p.test(e.getTopic())
|
||||||
&& (StringUtils.isBlank(TopicType.this.producerId) ||
|
&& (StringUtils.isBlank(TopicType.this.producerId) ||
|
||||||
TopicType.this.producerId.equals(e.getProducerId()))
|
TopicType.this.producerId.equals(e.getProducerId()))
|
||||||
&& e.getMap().keySet().containsAll(keys);
|
&& e.getMap().keySet().containsAll(keys);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,14 +1,20 @@
|
||||||
spring.profiles.active = dev
|
spring.profiles.active = dev
|
||||||
|
|
||||||
spring.h2.console.enabled = true
|
spring.datasource.url=jdbc:postgresql://localhost:5432/dnet_broker
|
||||||
spring.datasource.url = jdbc:h2:/tmp/lbs/prova
|
spring.datasource.username=
|
||||||
spring.datasource.username = lbs
|
spring.datasource.password=
|
||||||
spring.datasource.password = lbs
|
|
||||||
spring.datasource.driver-class-name = org.h2.Driver
|
spring.jpa.properties.hibernate.dialect = org.hibernate.dialect.PostgreSQLDialect
|
||||||
spring.jpa.hibernate.ddl-auto = update
|
|
||||||
spring.jpa.database-platform = org.hibernate.dialect.H2Dialect
|
# Hibernate ddl auto (create, create-drop, validate, update)
|
||||||
|
spring.jpa.hibernate.ddl-auto = validate
|
||||||
|
spring.jpa.properties.hibernate.hbm2dll.extra_physical_table_types = MATERIALIZED VIEW
|
||||||
|
spring.jpa.properties.hibernate.jdbc.lob.non_contextual_creation = true
|
||||||
|
spring.jpa.open-in-view = true
|
||||||
|
spring.jpa.properties.hibernate.show_sql = false
|
||||||
|
spring.jpa.properties.hibernate.use_sql_comments = false
|
||||||
|
spring.jpa.properties.hibernate.format_sql = false
|
||||||
|
|
||||||
lbs.database.driverName = ${spring.datasource.driver-class-name}
|
|
||||||
lbs.database.url = ${spring.datasource.url}
|
lbs.database.url = ${spring.datasource.url}
|
||||||
|
|
||||||
# for development server
|
# for development server
|
||||||
|
|
|
@ -54,19 +54,3 @@ curl -XPUT -H 'Content-Type: application/json' "$INDEXBASEURL/$NOTIFICATIONINDEX
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}'
|
}'
|
||||||
|
|
||||||
echo
|
|
||||||
echo
|
|
||||||
echo "Registering topic type: ENRICH/<cond>/<field>..."
|
|
||||||
curl "http://localhost:8080/api/topic-types/add" -d "name=ENRICH&expression=ENRICH%2F%3Ccond%3E%2F%3Cfield%3E&producerId=OpenAIRE&mapKeys=targetDatasourceName"
|
|
||||||
echo
|
|
||||||
echo
|
|
||||||
echo "Registering topic type: ENRICH/<cond>/<field>/<subfield>..."
|
|
||||||
curl "http://localhost:8080/api/topic-types/add" -d "name=ENRICH_WITH_SUBFIELD&expression=ENRICH%2F%3Ccond%3E%2F%3Cfield%3E%2F%3Csubfield%3E&producerId=OpenAIRE&mapKeys=targetDatasourceName"
|
|
||||||
echo
|
|
||||||
echo
|
|
||||||
echo "Registering topic type: ADD/<field>..."
|
|
||||||
curl "http://localhost:8080/api/topic-types/add" -d "name=ADD&expression=ADD%2F%3Cfield%3E&producerId=OpenAIRE&mapKeys=targetDatasourceName"
|
|
||||||
echo
|
|
||||||
echo
|
|
||||||
echo
|
|
||||||
|
|
|
@ -0,0 +1,28 @@
|
||||||
|
CREATE TABLE subscriptions (
|
||||||
|
subscriptionid text PRIMARY KEY,
|
||||||
|
conditions text,
|
||||||
|
creation_date timestamp without time zone DEFAULT '2018-01-01 00:00:00'::timestamp without time zone NOT NULL,
|
||||||
|
frequency text NOT NULL,
|
||||||
|
last_notification_date timestamp without time zone,
|
||||||
|
mode text NOT NULL,
|
||||||
|
subscriber text NOT NULL,
|
||||||
|
topic text NOT NULL
|
||||||
|
);
|
||||||
|
|
||||||
|
CREATE TABLE topic_types (
|
||||||
|
id text PRIMARY KEY,
|
||||||
|
name text UNIQUE NOT NULL,
|
||||||
|
expression text UNIQUE NOT NULL,
|
||||||
|
map_keys text,
|
||||||
|
producer_id text,
|
||||||
|
regex text UNIQUE NOT NULL
|
||||||
|
);
|
||||||
|
|
||||||
|
-- curl "http://localhost:8080/api/topic-types/add" -d "name=ENRICH&expression=ENRICH%2F%3Ccond%3E%2F%3Cfield%3E&producerId=OpenAIRE&mapKeys=targetDatasourceName"
|
||||||
|
INSERT INTO public.topic_types (id, name, expression, map_keys, producer_id, regex) VALUES ('tt-a739fa2b-fde0-4eb2-bcee-6e7f277347db', 'ENRICH', 'ENRICH/<cond>/<field>', 'targetDatasourceName', 'OpenAIRE', '^ENRICH\/[a-zA-Z0-9._-]+\/[a-zA-Z0-9._-]+$');
|
||||||
|
|
||||||
|
-- curl "http://localhost:8080/api/topic-types/add" -d "name=ENRICH_WITH_SUBFIELD&expression=ENRICH%2F%3Ccond%3E%2F%3Cfield%3E%2F%3Csubfield%3E&producerId=OpenAIRE&mapKeys=targetDatasourceName"
|
||||||
|
INSERT INTO public.topic_types (id, name, expression, map_keys, producer_id, regex) VALUES ('tt-93be0404-e7fb-43bb-9a0a-d317f418ed6d', 'ENRICH_WITH_SUBFIELD', 'ENRICH/<cond>/<field>/<subfield>', 'targetDatasourceName', 'OpenAIRE', '^ENRICH\/[a-zA-Z0-9._-]+\/[a-zA-Z0-9._-]+\/[a-zA-Z0-9._-]+$');
|
||||||
|
|
||||||
|
-- curl "http://localhost:8080/api/topic-types/add" -d "name=ADD&expression=ADD%2F%3Cfield%3E&producerId=OpenAIRE&mapKeys=targetDatasourceName"
|
||||||
|
INSERT INTO public.topic_types (id, name, expression, map_keys, producer_id, regex) VALUES ('tt-80978da9-1859-47aa-9897-0a0c372365a1', 'ADD', 'ADD/<field>', 'targetDatasourceName', 'OpenAIRE', '^ADD\/[a-zA-Z0-9._-]+$');
|
|
@ -1,4 +1,4 @@
|
||||||
<h3>Subscriptions (H2 database)</h3>
|
<h3>Subscriptions (Postgres database)</h3>
|
||||||
|
|
||||||
<form class="form-inline text-right" style="margin-top:40px; margin-bottom:20px">
|
<form class="form-inline text-right" style="margin-top:40px; margin-bottom:20px">
|
||||||
<button class="btn btn-primary" data-target="#addSubscriptionModal" data-toggle="modal" ng-click="resetFormFields()">
|
<button class="btn btn-primary" data-target="#addSubscriptionModal" data-toggle="modal" ng-click="resetFormFields()">
|
||||||
|
|
|
@ -149,14 +149,11 @@
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col-xs-12 col-md-6">
|
<div class="col-xs-12 col-md-6">
|
||||||
<div class="panel panel-default">
|
<div class="panel panel-default">
|
||||||
<div class="panel-heading">H2 database</div>
|
<div class="panel-heading">Postgres database</div>
|
||||||
<table class="table">
|
<table class="table">
|
||||||
<tr>
|
<tr>
|
||||||
<th class="col-xs-4">path</th>
|
<th class="col-xs-4">path</th>
|
||||||
<td class="col-xs-8">{{summary.h2.url}}</td>
|
<td class="col-xs-8">{{summary.db.url}}</td>
|
||||||
</tr><tr>
|
|
||||||
<th class="col-xs-4">driver</th>
|
|
||||||
<td class="col-xs-8">{{summary.h2.driverName}}</td>
|
|
||||||
</tr>
|
</tr>
|
||||||
</table>
|
</table>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -200,7 +200,7 @@ CREATE VIEW organizations_simple_view AS SELECT
|
||||||
org.type,
|
org.type,
|
||||||
org.city,
|
org.city,
|
||||||
org.country,
|
org.country,
|
||||||
array_agg(DISTINCT a.acronym) FILTER (WHERE a.acronym IS NOT NULL) AS acronyms
|
array_remove(array_agg(DISTINCT a.acronym), NULL) AS acronyms
|
||||||
FROM
|
FROM
|
||||||
organizations org
|
organizations org
|
||||||
LEFT OUTER JOIN acronyms a ON (org.id = a.id)
|
LEFT OUTER JOIN acronyms a ON (org.id = a.id)
|
||||||
|
@ -215,7 +215,7 @@ CREATE VIEW users_view AS SELECT
|
||||||
u.email,
|
u.email,
|
||||||
u.valid,
|
u.valid,
|
||||||
u.role,
|
u.role,
|
||||||
array_agg(uc.country) FILTER (WHERE uc.country IS NOT NULL) AS countries
|
array_remove(array_agg(uc.country), NULL) AS countries
|
||||||
FROM
|
FROM
|
||||||
users u
|
users u
|
||||||
LEFT OUTER JOIN user_countries uc ON (u.email = uc.email)
|
LEFT OUTER JOIN user_countries uc ON (u.email = uc.email)
|
||||||
|
|
Loading…
Reference in New Issue