Java 17, Spirng boot 3, remove mongodb First commit

This commit is contained in:
nheron 2023-02-12 12:13:14 +01:00
commit 89c8e6aeea
69 changed files with 2203 additions and 104 deletions

View file

@ -5,7 +5,7 @@
<parent>
<artifactId>drools-framework-business-proxy-parent</artifactId>
<groupId>com.pymmasoftware.jbpm</groupId>
<version>1.1-SNAPSHOT</version>
<version>1.2.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
@ -48,7 +48,7 @@
</dependency>
<dependency>
<groupId>com.pymmasoftware.jbpm</groupId>
<artifactId>drools-framework-business-proxy-persistence</artifactId>
<artifactId>drools-framework-business-proxy-jpa</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>

View file

@ -27,7 +27,7 @@ import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.mongodb.repository.config.EnableMongoRepositories;
import org.springframework.data.jpa.repository.config.EnableJpaRepositories;
import org.springframework.kafka.annotation.EnableKafka;
import org.springframework.kafka.config.ConcurrentKafkaListenerContainerFactory;
import org.springframework.kafka.core.ConsumerFactory;
@ -40,7 +40,7 @@ import java.util.Map;
// CHECKSTYLE:OFF
@SpringBootApplication
@Configuration
@EnableMongoRepositories(basePackages = "org.chtijbug.drools.proxy.persistence.repository")
@EnableJpaRepositories(basePackages = "org.chtijbug.drools.proxy.persistence.repository")
@EnableKafka
public class DroolsBusinessIndexerServer {
public final static String LOGING_TOPIC ="logging";

View file

@ -52,7 +52,7 @@ public class StoreLoggingService {
item.setSecond(second);
item.setMillis(millis);
item.setTransactionId(id);
item.setId(UUID.randomUUID().toString());
long ii = 1;
SessionContext sessionContext = result.getSessionLogging();
@ -68,8 +68,8 @@ public class StoreLoggingService {
BusinessTransactionAction businessTransactionoutput = null;
for (Fact fact : sessionExecution.getFacts()) {
BusinessTransactionAction businessTransactionAction = new BusinessTransactionAction();
businessTransactionAction.setId(UUID.randomUUID().toString());
businessTransactionAction.setBusinessTransactionId(item.getId());
businessTransactionAction.setBusinessTransactionId(item.getTransactionId());
if (fact.getFactType().equals(FactType.INPUTDATA)) {
businessTransactionAction.setEventType(EventType.INPUT);
businessTransactionAction.setInputData(fact);
@ -108,18 +108,18 @@ public class StoreLoggingService {
businessTransactionActionStart.setEventType(EventType.STARTPROCESS);
businessTransactionActionStart.setProcessID(processExecution.getProcessId());
businessTransactionActionStart.setBusinessTransactionId(item.getId());
businessTransactionActionStart.setBusinessTransactionId(item.getTransactionId());
businessTransactionActionStart.setEventNumber(ii++);
businessTransactionActionStart.setId(UUID.randomUUID().toString());
actions.put(businessTransactionActionStart.getEventNumber(), businessTransactionActionStart);
for (RuleflowGroup rfg : processExecution.getRuleflowGroups()) {
BusinessTransactionAction businessTransactionActionStartRFG = new BusinessTransactionAction();
businessTransactionActionStartRFG.setBusinessTransactionId(item.getId());
businessTransactionActionStartRFG.setBusinessTransactionId(item.getTransactionId());
businessTransactionActionStartRFG.setEventType(EventType.STARTRULEFLOWGROUP);
businessTransactionActionStartRFG.setRuleflowGroupName(rfg.getRuleflowGroup());
businessTransactionActionStartRFG.setEventNumber(ii++);
businessTransactionActionStartRFG.setId(UUID.randomUUID().toString());
actions.put(businessTransactionActionStartRFG.getEventNumber(), businessTransactionActionStartRFG);
for (RuleExecution ruleExecution : rfg.getRuleExecutionList()) {
BusinessTransactionAction businessTransactionActionRule = new BusinessTransactionAction();
@ -127,27 +127,27 @@ public class StoreLoggingService {
businessTransactionActionRule.setEventType(EventType.RULE);
businessTransactionActionRule.setRuleflowGroupName(rfg.getRuleflowGroup());
businessTransactionActionRule.setRuleExecution(ruleExecution);
businessTransactionActionRule.setBusinessTransactionId(item.getId());
businessTransactionActionRule.setBusinessTransactionId(item.getTransactionId());
businessTransactionActionRule.setProcessID(processExecution.getProcessId());
businessTransactionActionRule.setEventNumber(ii++);
businessTransactionActionRule.setId(UUID.randomUUID().toString());
actions.put(businessTransactionActionRule.getEventNumber(), businessTransactionActionRule);
}
BusinessTransactionAction businessTransactionActionSTOPRFG = new BusinessTransactionAction();
businessTransactionActionSTOPRFG.setEventType(EventType.STOPTRULEFLOWGROUP);
businessTransactionActionSTOPRFG.setRuleflowGroupName(rfg.getRuleflowGroup());
businessTransactionActionSTOPRFG.setBusinessTransactionId(item.getId());
businessTransactionActionSTOPRFG.setBusinessTransactionId(item.getTransactionId());
businessTransactionActionSTOPRFG.setEventNumber(ii++);
businessTransactionActionSTOPRFG.setId(UUID.randomUUID().toString());
actions.put(businessTransactionActionSTOPRFG.getEventNumber(), businessTransactionActionSTOPRFG);
}
BusinessTransactionAction businessTransactionActionEnd = new BusinessTransactionAction();
businessTransactionActionEnd.setEventType(EventType.STOPPROCESS);
businessTransactionActionEnd.setProcessID(processExecution.getProcessId());
businessTransactionActionEnd.setBusinessTransactionId(item.getId());
businessTransactionActionEnd.setBusinessTransactionId(item.getTransactionId());
businessTransactionActionEnd.setEventNumber(ii++);
businessTransactionActionEnd.setId(UUID.randomUUID().toString());
actions.put(businessTransactionActionEnd.getEventNumber(), businessTransactionActionEnd);
}

View file

@ -19,12 +19,13 @@
-->
<project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://maven.apache.org/POM/4.0.0"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>com.pymmasoftware.jbpm</groupId>
<artifactId>drools-framework-business-proxy-parent</artifactId>
<version>1.1-SNAPSHOT</version>
<version>1.2.0-SNAPSHOT</version>
</parent>
<artifactId>drools-framework-business-proxy-app</artifactId>
@ -54,7 +55,7 @@
<dependencies>
<dependency>
<groupId>com.pymmasoftware.jbpm</groupId>
<artifactId>drools-framework-business-proxy-persistence</artifactId>
<artifactId>drools-framework-business-proxy-jpa</artifactId>
<version>${project.version}</version>
</dependency>
<!-- Spring Boot -->

View file

@ -0,0 +1,72 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent>
<artifactId>drools-framework-business-proxy-parent</artifactId>
<groupId>com.pymmasoftware.jbpm</groupId>
<version>1.2.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>drools-framework-business-proxy-jpa</artifactId>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-dependencies</artifactId>
<version>${spring.boot.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<dependencies>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.6.3</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
<version>${spring.boot.version}</version>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-entitymanager</artifactId>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.locationtech.jts</groupId>
<artifactId>jts-core</artifactId>
<version>1.17.1</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.datatype</groupId>
<artifactId>jackson-datatype-jsr310</artifactId>
<version>2.14.0</version>
</dependency>
<dependency>
<groupId>org.postgresql</groupId>
<artifactId>postgresql</artifactId>
<version>${postgresql.version}</version>
</dependency>
<dependency>
<groupId>com.pymmasoftware.jbpm</groupId>
<artifactId>drools-framework-runtime-entity</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>com.pymmasoftware.jbpm</groupId>
<artifactId>drools-framework-admin-dto</artifactId>
<version>${project.version}</version>
</dependency>
</dependencies>
</project>

View file

@ -0,0 +1,30 @@
/**
* Licensed under the Apache License, Version 2.0 (the "License"); you may not
* use this file except in compliance with the License. You may obtain a copy of
* the License at
* http://www.apache.org/licenses/LICENSE-2.0
* <p>
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
* License for the specific language governing permissions and limitations under
* the License.
*/
package org.chtijbug.drools.proxy.persistence.dialect;
import org.chtijbug.drools.proxy.persistence.types.JSONBUserType;
import org.hibernate.dialect.PostgreSQL9Dialect;
import java.sql.Types;
public class JSONBPostgreSQLDialect extends PostgreSQL9Dialect {
public JSONBPostgreSQLDialect() {
super();
System.out.println("Nico-JSONBPostgreSQLDialect");
registerColumnType(Types.JAVA_OBJECT, JSONBUserType.JSONB_TYPE);
}
}

View file

@ -0,0 +1,38 @@
package org.chtijbug.drools.proxy.persistence.json;
import java.io.Serializable;
public class KieProject implements Serializable {
private String spaceName;
private String name;
public KieProject(){}
public KieProject(String spaceName, String name) {
this.spaceName = spaceName;
this.name = name;
}
public String getSpaceName() {
return spaceName;
}
public void setSpaceName(String spaceName) {
this.spaceName = spaceName;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@Override
public String toString() {
return spaceName+"-"+name;
}
}

View file

@ -0,0 +1,150 @@
package org.chtijbug.drools.proxy.persistence.model;
import org.chtijbug.drools.logging.Fact;
import org.chtijbug.drools.logging.RuleExecution;
import org.chtijbug.drools.proxy.persistence.types.JSONBUserType;
import org.hibernate.annotations.Type;
import org.hibernate.annotations.TypeDef;
import org.hibernate.annotations.TypeDefs;
import javax.persistence.*;
@Entity
@TypeDefs({
@TypeDef(name = "Fact", typeClass = JSONBUserType.class, parameters = {
@org.hibernate.annotations.Parameter(name = JSONBUserType.CLASS, value = "org.chtijbug.drools.logging.Fact")}),
@TypeDef(name = "RuleExecution", typeClass = JSONBUserType.class, parameters = {
@org.hibernate.annotations.Parameter(name = JSONBUserType.CLASS, value = "org.chtijbug.drools.logging.RuleExecution")})
})
public class BusinessTransactionAction {
@javax.persistence.Id
@GeneratedValue
private Long uniqueId;
@Enumerated(EnumType.STRING)
@Column(length = 50)
private EventType eventType;
private long eventNumber;
private String businessTransactionId;
@Type(type = "Fact")
private Fact inputData;
@Type(type = "Fact")
private Fact outputData;
@Type(type = "RuleExecution")
private RuleExecution ruleExecution;
@Type(type = "Fact")
private Fact fact;
private String processID;
private String ruleflowGroupName;
public Long getUniqueId() {
return uniqueId;
}
public void setUniqueId(Long uniqueId) {
this.uniqueId = uniqueId;
}
public EventType getEventType() {
return eventType;
}
public void setEventType(EventType eventType) {
this.eventType = eventType;
}
public long getEventNumber() {
return eventNumber;
}
public void setEventNumber(long eventNumber) {
this.eventNumber = eventNumber;
}
public String getBusinessTransactionId() {
return businessTransactionId;
}
public void setBusinessTransactionId(String businessTransactionId) {
this.businessTransactionId = businessTransactionId;
}
public Fact getInputData() {
return inputData;
}
public void setInputData(Fact inputData) {
this.inputData = inputData;
}
public Fact getOutputData() {
return outputData;
}
public void setOutputData(Fact outputData) {
this.outputData = outputData;
}
public RuleExecution getRuleExecution() {
return ruleExecution;
}
public void setRuleExecution(RuleExecution ruleExecution) {
this.ruleExecution = ruleExecution;
}
public String getProcessID() {
return processID;
}
public void setProcessID(String processID) {
this.processID = processID;
}
public String getRuleflowGroupName() {
return ruleflowGroupName;
}
public void setRuleflowGroupName(String ruleflowGroupName) {
this.ruleflowGroupName = ruleflowGroupName;
}
public Fact getFact() {
return fact;
}
public void setFact(Fact fact) {
this.fact = fact;
}
@Override
public String toString() {
final StringBuffer sb = new StringBuffer("BusinessTransactionAction{");
sb.append("id='").append(uniqueId).append('\'');
sb.append(", eventType=").append(eventType);
sb.append(", eventNumber=").append(eventNumber);
sb.append(", businessTransactionId='").append(businessTransactionId).append('\'');
sb.append(", inputData=").append(inputData);
sb.append(", outputData=").append(outputData);
sb.append(", ruleExecution=").append(ruleExecution);
sb.append(", fact=").append(fact);
sb.append(", processID='").append(processID).append('\'');
sb.append(", ruleflowGroupName='").append(ruleflowGroupName).append('\'');
sb.append('}');
return sb.toString();
}
}

View file

@ -0,0 +1,162 @@
package org.chtijbug.drools.proxy.persistence.model;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Table;
import javax.persistence.UniqueConstraint;
@Entity
@Table(uniqueConstraints ={
@UniqueConstraint(columnNames={"transactionId"})
})
public class BusinessTransactionPersistence {
@javax.persistence.Id
@GeneratedValue
private Long uniqueId;
private String transactionId;
private Integer year;
private Integer month;
private Integer day;
private Integer hour;
private Integer minute;
private Integer second;
private Integer millis;
private String groupID;
private String artefactID;
private String version;
private String containerId;
private String serverName;
public Long getUniqueId() {
return uniqueId;
}
public void setUniqueId(Long uniqueId) {
this.uniqueId = uniqueId;
}
public String getTransactionId() {
return transactionId;
}
public void setTransactionId(String transactionId) {
this.transactionId = transactionId;
}
public Integer getYear() {
return year;
}
public void setYear(Integer year) {
this.year = year;
}
public Integer getMonth() {
return month;
}
public void setMonth(Integer month) {
this.month = month;
}
public Integer getDay() {
return day;
}
public void setDay(Integer day) {
this.day = day;
}
public Integer getHour() {
return hour;
}
public void setHour(Integer hour) {
this.hour = hour;
}
public Integer getMinute() {
return minute;
}
public void setMinute(Integer minute) {
this.minute = minute;
}
public Integer getSecond() {
return second;
}
public void setSecond(Integer second) {
this.second = second;
}
public Integer getMillis() {
return millis;
}
public void setMillis(Integer millis) {
this.millis = millis;
}
public String getGroupID() {
return groupID;
}
public void setGroupID(String groupID) {
this.groupID = groupID;
}
public String getArtefactID() {
return artefactID;
}
public void setArtefactID(String artefactID) {
this.artefactID = artefactID;
}
public String getVersion() {
return version;
}
public void setVersion(String version) {
this.version = version;
}
public String getContainerId() {
return containerId;
}
public void setContainerId(String containerId) {
this.containerId = containerId;
}
public String getServerName() {
return serverName;
}
public void setServerName(String serverName) {
this.serverName = serverName;
}
}

View file

@ -0,0 +1,148 @@
package org.chtijbug.drools.proxy.persistence.model;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Table;
import javax.persistence.UniqueConstraint;
@Entity
@Table(uniqueConstraints ={
@UniqueConstraint(columnNames={"className"}),
@UniqueConstraint(columnNames={"containerId"}),
@UniqueConstraint(columnNames={"serverName"})
})
public class ContainerPojoPersist {
@javax.persistence.Id
@GeneratedValue
private Long uniqueId;
private boolean disableRuleLogging;
private String className;
private String containerId;
private String serverName;
private String processID;
private String projectName;
private String groupId;
private String artifactId;
private String version;
private String projectUUID;
public Long getUniqueId() {
return uniqueId;
}
public void setUniqueId(Long uniqueId) {
this.uniqueId = uniqueId;
}
public String getClassName() {
return className;
}
public void setClassName(String className) {
this.className = className;
}
public String getContainerId() {
return containerId;
}
public void setContainerId(String containerId) {
this.containerId = containerId;
}
public String getServerName() {
return serverName;
}
public void setServerName(String serverName) {
this.serverName = serverName;
}
public String getProjectName() {
return projectName;
}
public void setProjectName(String projectName) {
this.projectName = projectName;
}
public String getProcessID() {
return processID;
}
public void setProcessID(String processID) {
this.processID = processID;
}
public String getProjectUUID() {
return projectUUID;
}
public void setProjectUUID(String projectUUID) {
this.projectUUID = projectUUID;
}
public boolean isDisableRuleLogging() {
return disableRuleLogging;
}
public void setDisableRuleLogging(boolean disableRuleLogging) {
this.disableRuleLogging = disableRuleLogging;
}
public String getGroupId() {
return groupId;
}
public void setGroupId(String groupId) {
this.groupId = groupId;
}
public String getArtifactId() {
return artifactId;
}
public void setArtifactId(String artifactId) {
this.artifactId = artifactId;
}
public String getVersion() {
return version;
}
public void setVersion(String version) {
this.version = version;
}
@Override
public String toString() {
final StringBuffer sb = new StringBuffer("ContainerPojoPersist{");
sb.append("id='").append(uniqueId).append('\'');
sb.append(", className='").append(className).append('\'');
sb.append(", containerId='").append(containerId).append('\'');
sb.append(", serverName='").append(serverName).append('\'');
sb.append(", processID='").append(processID).append('\'');
sb.append(", projectName='").append(projectName).append('\'');
sb.append(", groupId='").append(groupId).append('\'');
sb.append(", artifactId='").append(artifactId).append('\'');
sb.append(", version='").append(version).append('\'');
sb.append('}');
return sb.toString();
}
}

View file

@ -0,0 +1,107 @@
package org.chtijbug.drools.proxy.persistence.model;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Table;
import javax.persistence.UniqueConstraint;
@Entity
@Table(uniqueConstraints ={
@UniqueConstraint(columnNames={"containerId"}),
@UniqueConstraint(columnNames={"serverName"}),
@UniqueConstraint(columnNames={"hostname"})
})
public class ContainerRuntimePojoPersist {
public enum STATUS {
UP,
DOWN,
TODEPLOY,
TODELETE
}
@javax.persistence.Id
@GeneratedValue
private Long uniqueId;
private String containerId;
private String serverName;
private String hostname;
private String status;
private String projectUUID;
private boolean disableRuleLogging;
public Long getUniqueId() {
return uniqueId;
}
public void setUniqueId(Long uniqueId) {
this.uniqueId = uniqueId;
}
public String getProjectUUID() {
return projectUUID;
}
public void setProjectUUID(String projectUUID) {
this.projectUUID = projectUUID;
}
public boolean isDisableRuleLogging() {
return disableRuleLogging;
}
public void setDisableRuleLogging(boolean disableRuleLogging) {
this.disableRuleLogging = disableRuleLogging;
}
public String getContainerId() {
return containerId;
}
public void setContainerId(String containerId) {
this.containerId = containerId;
}
public String getServerName() {
return serverName;
}
public void setServerName(String serverName) {
this.serverName = serverName;
}
public String getStatus() {
return status;
}
public void setStatus(String status) {
this.status = status;
}
public String getHostname() {
return hostname;
}
public void setHostname(String hostname) {
this.hostname = hostname;
}
@Override
public String toString() {
final StringBuffer sb = new StringBuffer("ContainerRuntimePojoPersist{");
sb.append("id='").append(uniqueId).append('\'');
sb.append(", containerId='").append(containerId).append('\'');
sb.append(", serverName='").append(serverName).append('\'');
sb.append(", hostname='").append(hostname).append('\'');
sb.append(", status='").append(status).append('\'');
sb.append('}');
return sb.toString();
}
}

View file

@ -0,0 +1,46 @@
package org.chtijbug.drools.proxy.persistence.model;
import javax.persistence.*;
@Entity
@Table(uniqueConstraints ={
@UniqueConstraint(columnNames={"name"})
})
public class Customer {
@javax.persistence.Id
@GeneratedValue
private Long uniqueId;
private String name;
@ManyToMany
private KieWorkbench kieWorkbench;
public Long getUniqueId() {
return uniqueId;
}
public void setUniqueId(Long uniqueId) {
this.uniqueId = uniqueId;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public KieWorkbench getKieWorkbench() {
return kieWorkbench;
}
public void setKieWorkbench(KieWorkbench kieWorkbench) {
this.kieWorkbench = kieWorkbench;
}
}

View file

@ -0,0 +1,5 @@
package org.chtijbug.drools.proxy.persistence.model;
public enum EventType {
INPUT,OUPUT,INSERTFACT, UPDATEFACTOLDVALUE, UPDATEFACTNEWVALUE,RETRACTFACT,RULE,STARTPROCESS,STOPPROCESS, STARTRULEFLOWGROUP,STOPTRULEFLOWGROUP
}

View file

@ -0,0 +1,61 @@
package org.chtijbug.drools.proxy.persistence.model;
import org.chtijbug.drools.console.dto.VariableData;
import javax.persistence.*;
import java.util.ArrayList;
import java.util.List;
@Entity
@Table(uniqueConstraints ={
@UniqueConstraint(columnNames={"lineID"})
})
public class GuidedRulesTemplateData {
@javax.persistence.Id
@GeneratedValue
private Long uniqueId;
@ManyToMany
GuidedRulesTemplateDefinition guidedRulesTemplateDefinition;
private String lineID;
@ElementCollection
private List<VariableData> rows = new ArrayList<>();
public Long getUniqueId() {
return uniqueId;
}
public void setUniqueId(Long uniqueId) {
this.uniqueId = uniqueId;
}
public GuidedRulesTemplateDefinition getGuidedRulesTemplateDefinition() {
return guidedRulesTemplateDefinition;
}
public void setGuidedRulesTemplateDefinition(GuidedRulesTemplateDefinition guidedRulesTemplateDefinition) {
this.guidedRulesTemplateDefinition = guidedRulesTemplateDefinition;
}
public String getLineID() {
return lineID;
}
public void setLineID(String lineID) {
this.lineID = lineID;
}
public List<VariableData> getRows() {
return rows;
}
public void setRows(List<VariableData> rows) {
this.rows = rows;
}
}

View file

@ -0,0 +1,63 @@
package org.chtijbug.drools.proxy.persistence.model;
import org.chtijbug.drools.console.dto.VariableDefinition;
import javax.persistence.*;
import java.util.ArrayList;
import java.util.List;
@Entity
@Table(uniqueConstraints ={
@UniqueConstraint(columnNames={"templateName"})
})
public class GuidedRulesTemplateDefinition {
@javax.persistence.Id
@GeneratedValue
private Long uniqueId;
private String templateName;
@ManyToMany
private UserGroups projectGroup;
@ElementCollection
private List<VariableDefinition> variables = new ArrayList<>();
public Long getUniqueId() {
return uniqueId;
}
public void setUniqueId(Long uniqueId) {
this.uniqueId = uniqueId;
}
public String getTemplateName() {
return templateName;
}
public void setTemplateName(String templateName) {
this.templateName = templateName;
}
public UserGroups getProjectGroup() {
return projectGroup;
}
public void setProjectGroup(UserGroups projectGroup) {
this.projectGroup = projectGroup;
}
public List<VariableDefinition> getVariables() {
return variables;
}
public void setVariables(List<VariableDefinition> variables) {
this.variables = variables;
}
}

View file

@ -0,0 +1,75 @@
package org.chtijbug.drools.proxy.persistence.model;
import javax.persistence.*;
@Entity
@Table(uniqueConstraints ={
@UniqueConstraint(columnNames={"name"})
})
public class KieWorkbench {
@Id
@GeneratedValue
private Long uniqueId;
private String name;
private String internalUrl;
private String externalUrl;
private byte[] logo;
private String gitURL;
public Long getUniqueId() {
return uniqueId;
}
public void setUniqueId(Long uniqueId) {
this.uniqueId = uniqueId;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public byte[] getLogo() {
return logo;
}
public void setLogo(byte[] logo) {
this.logo = logo;
}
public String getInternalUrl() {
return internalUrl;
}
public void setInternalUrl(String internalUrl) {
this.internalUrl = internalUrl;
}
public String getExternalUrl() {
return externalUrl;
}
public void setExternalUrl(String externalUrl) {
this.externalUrl = externalUrl;
}
public String getGitURL() {
return gitURL;
}
public void setGitURL(String gitURL) {
this.gitURL = gitURL;
}
}

View file

@ -0,0 +1,250 @@
package org.chtijbug.drools.proxy.persistence.model;
import org.chtijbug.drools.proxy.persistence.json.KieProject;
import javax.persistence.*;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
@Entity
@Table(uniqueConstraints ={
@UniqueConstraint(columnNames={"deploymentName"}),
@UniqueConstraint(columnNames={"uuid"})
})
public class ProjectPersist implements Serializable {
public static final String ADEFINIR = "A définir";
public static final String DEFINI = "Défini";
public static final String Deployable = "Déployable";
@javax.persistence.Id
@GeneratedValue
private Long uniqueId;
private String deploymentName;
private String uuid;
@ManyToMany
private KieWorkbench kieWorkbench;
private KieProject projectName;
private String mainClass;
private String groupID;
private String artifactID;
private String processID;
private String projectVersion;
private String containerID;
private String branch;
private List<String> serverNames = new ArrayList<>();
private String status;
private List<String> classNameList;
private boolean disableRuleLogging;
private boolean enableHotDeploy;
private boolean useJWTToConnect;
private String jwtAPIToken;
public ProjectPersist() {
}
public ProjectPersist(String deploymentName, KieProject projectName, String mainClass, String groupID, String artifactID, String processID, String projectVersion, String containerID, List<String> serverNames, String status) {
this.deploymentName = deploymentName;
this.projectName = projectName;
this.mainClass = mainClass;
this.groupID = groupID;
this.artifactID = artifactID;
this.processID = processID;
this.projectVersion = projectVersion;
this.containerID = containerID;
this.serverNames = serverNames;
this.status = status;
}
public String getUuid() {
return uuid;
}
public String getDeploymentName() {
return deploymentName;
}
public void setDeploymentName(String deploymentName) {
this.deploymentName = deploymentName;
}
public KieProject getProjectName() {
return projectName;
}
public void setProjectName(KieProject projectName) {
this.projectName = projectName;
}
public String getMainClass() {
return mainClass;
}
public void setMainClass(String mainClass) {
this.mainClass = mainClass;
}
public String getGroupID() {
return groupID;
}
public void setGroupID(String groupID) {
this.groupID = groupID;
}
public String getArtifactID() {
return artifactID;
}
public void setArtifactID(String artifactID) {
this.artifactID = artifactID;
}
public String getProcessID() {
return processID;
}
public String getContainerID() {
return containerID;
}
public void setContainerID(String containerID) {
this.containerID = containerID;
}
public void setProcessID(String processID) {
this.processID = processID;
}
public String getProjectVersion() {
return projectVersion;
}
public void setProjectVersion(String projectVersion) {
this.projectVersion = projectVersion;
}
public List<String> getServerNames() {
return serverNames;
}
public void setServerName(List<String> serverNames) {
this.serverNames = serverNames;
}
public String getStatus() {
return status;
}
public void setStatus(String status) {
this.status = status;
}
public List<String> getClassNameList() {
return classNameList;
}
public void setClassNameList(List<String> classNameList) {
this.classNameList = classNameList;
}
public String getBranch() {
return branch;
}
public void setBranch(String branch) {
this.branch = branch;
}
public KieWorkbench getKieWorkbench() {
return kieWorkbench;
}
public void setKieWorkbench(KieWorkbench kieWorkbench) {
this.kieWorkbench = kieWorkbench;
}
public void setServerNames(List<String> serverNames) {
this.serverNames = serverNames;
}
public String getWorkspaceName() {
if (this.projectName != null) {
return projectName.getSpaceName();
}
return null;
}
public boolean isUseJWTToConnect() {
return useJWTToConnect;
}
public void setUseJWTToConnect(boolean useJWTToConnect) {
this.useJWTToConnect = useJWTToConnect;
}
public String getKieProjectName() {
if (this.projectName != null) {
return projectName.getName() + "-" + this.branch;
}
return null;
}
public boolean isDisableRuleLogging() {
return disableRuleLogging;
}
public void setDisableRuleLogging(boolean disableRuleLogging) {
this.disableRuleLogging = disableRuleLogging;
}
public boolean isEnableHotDeploy() {
return enableHotDeploy;
}
public void setEnableHotDeploy(boolean enableHotDeploy) {
this.enableHotDeploy = enableHotDeploy;
}
public String getJwtAPIToken() {
return jwtAPIToken;
}
public void setJwtAPIToken(String jwtAPIToken) {
this.jwtAPIToken = jwtAPIToken;
}
public ProjectPersist duplicate() {
ArrayList<String> listServerNames = new ArrayList<String>();
listServerNames.addAll(serverNames);
ProjectPersist duplicate = new ProjectPersist(deploymentName, projectName, mainClass, groupID, artifactID, processID, projectVersion, containerID, listServerNames, status);
duplicate.setEnableHotDeploy(enableHotDeploy);
duplicate.setJwtAPIToken(jwtAPIToken);
duplicate.setDisableRuleLogging(disableRuleLogging);
duplicate.setUseJWTToConnect(useJWTToConnect);
return duplicate;
}
}

View file

@ -0,0 +1,164 @@
package org.chtijbug.drools.proxy.persistence.model;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Table;
import javax.persistence.UniqueConstraint;
import java.util.Date;
@Entity
@Table(uniqueConstraints ={
@UniqueConstraint(columnNames={"serverName"}),
@UniqueConstraint(columnNames={"hostname"})
})
public class RuntimePersist {
public enum STATUS {
UP,
DOWN
}
@javax.persistence.Id
@GeneratedValue
private Long uniqueId;
private String serverName;
private String version;
private String branch;
private String hostname;
private String serverUrl;
private String serverPort;
private String sftpHost;
private String sftpPort;
private String status;
private Date creationDate;
private Date timeStamp;
public RuntimePersist(String serverName, String version, String hostname,String serverPort,String sftpPort,String sftpHost,String status) {
this.serverName = serverName;
this.version = version;
this.hostname = hostname;
this.serverPort = serverPort;
this.sftpPort = sftpPort;
this.sftpHost = sftpHost;
this.status=status;
this.creationDate = new Date();
}
public RuntimePersist(String serverName) {
this.serverName = serverName;
}
public RuntimePersist() {
}
public RuntimePersist duplicate(){
RuntimePersist duplicate = new RuntimePersist(serverName,version,hostname,serverPort,sftpPort,sftpHost,status);
duplicate.setServerUrl(this.serverUrl);
return duplicate;
}
public Long getUniqueId() {
return uniqueId;
}
public void setUniqueId(Long uniqueId) {
this.uniqueId = uniqueId;
}
public String getServerName() {
return serverName;
}
public void setServerName(String serverName) {
this.serverName = serverName;
}
public String getVersion() {
return version;
}
public void setVersion(String version) {
this.version = version;
}
public String getHostname() {
return hostname;
}
public void setHostname(String hostname) {
this.hostname = hostname;
}
public String getSftpPort() {
return sftpPort;
}
public void setSftpPort(String sftpPort) {
this.sftpPort = sftpPort;
}
public String getServerPort() {
return serverPort;
}
public void setServerPort(String serverPort) {
this.serverPort = serverPort;
}
public String getSftpHost() {
return sftpHost;
}
public void setSftpHost(String sftpHost) {
this.sftpHost = sftpHost;
}
public String getStatus() {
return status;
}
public void setStatus(String status) {
this.status = status;
}
public String getServerUrl() {
return serverUrl;
}
public void setServerUrl(String serverUrl) {
this.serverUrl = serverUrl;
}
public Date getCreationDate() {
return creationDate;
}
public Date getTimeStamp() {
return timeStamp;
}
public void setTimeStamp(Date timeStamp) {
this.timeStamp = timeStamp;
}
public String getBranch() {
return branch;
}
public void setBranch(String branch) {
this.branch = branch;
}
}

View file

@ -0,0 +1,99 @@
package org.chtijbug.drools.proxy.persistence.model;
import javax.persistence.*;
import java.util.ArrayList;
import java.util.List;
@Entity
@Table(uniqueConstraints = {
@UniqueConstraint(columnNames = {"login"})
})
public class User {
@javax.persistence.Id
@GeneratedValue
private Long uniqueId;
private String login;
private String wbName;
private String password;
public User() {
}
public User( String login, String password) {
this.uniqueId = uniqueId;
this.login = login;
this.password = password;
}
@OneToMany
private List<UserRoles> userRoles = new ArrayList<>();
@OneToMany
private List<UserGroups> userGroups = new ArrayList<>();
@ManyToMany
private Customer customer;
public Long getUniqueId() {
return uniqueId;
}
public void setUniqueId(Long uniqueId) {
this.uniqueId = uniqueId;
}
public String getLogin() {
return login;
}
public void setLogin(String login) {
this.login = login;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public List<UserRoles> getUserRoles() {
return userRoles;
}
public void setUserRoles(List<UserRoles> userRoles) {
this.userRoles = userRoles;
}
public List<UserGroups> getUserGroups() {
return userGroups;
}
public void setUserGroups(List<UserGroups> userGroups) {
this.userGroups = userGroups;
}
public String getWbName() {
return wbName;
}
public void setWbName(String wbName) {
this.wbName = wbName;
}
public Customer getCustomer() {
return customer;
}
public void setCustomer(Customer customer) {
this.customer = customer;
}
}

View file

@ -0,0 +1,111 @@
package org.chtijbug.drools.proxy.persistence.model;
import javax.persistence.*;
import java.util.Objects;
@Entity
@Table(uniqueConstraints ={
@UniqueConstraint(columnNames={"name"}),
@UniqueConstraint(columnNames={"spaceName"}),
@UniqueConstraint(columnNames={"projectName"})
})
public class UserGroups {
@Id
@GeneratedValue
private Long uniqueId;
private String name;
private String spaceName;
private String projectName;
@ManyToMany
private KieWorkbench kieWorkbench;
@ManyToMany
private ProjectPersist projectPersist;
@ManyToMany
private UserGroups workspaceUserGroup;
public UserGroups() {
}
public Long getUniqueId() {
return uniqueId;
}
public void setUniqueId(Long uniqueId) {
this.uniqueId = uniqueId;
}
public UserGroups( String name) {
this.name = name;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getSpaceName() {
return spaceName;
}
public void setSpaceName(String spaceName) {
this.spaceName = spaceName;
}
public String getProjectName() {
return projectName;
}
public void setProjectName(String projectName) {
this.projectName = projectName;
}
public KieWorkbench getKieWorkbench() {
return kieWorkbench;
}
public void setKieWorkbench(KieWorkbench kieWorkbench) {
this.kieWorkbench = kieWorkbench;
}
public ProjectPersist getProjectPersist() {
return projectPersist;
}
public void setProjectPersist(ProjectPersist projectPersist) {
this.projectPersist = projectPersist;
}
public UserGroups getWorkspaceUserGroup() {
return workspaceUserGroup;
}
public void setWorkspaceUserGroup(UserGroups workspaceUserGroup) {
this.workspaceUserGroup = workspaceUserGroup;
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
UserGroups that = (UserGroups) o;
return Objects.equals(name, that.name);
}
@Override
public int hashCode() {
return Objects.hash(name);
}
}

View file

@ -0,0 +1,56 @@
package org.chtijbug.drools.proxy.persistence.model;
import org.chtijbug.drools.proxy.persistence.types.JSONBUserType;
import org.hibernate.annotations.TypeDef;
import javax.persistence.*;
import java.util.Objects;
@Entity
@Table(uniqueConstraints = @UniqueConstraint(columnNames = {"name"})
)
public class UserRoles {
@Id
@GeneratedValue
private Long uniqueId;
private String name;
public UserRoles() {
}
public UserRoles( String name) {
this.name = name;
}
public Long getUniqueId() {
return uniqueId;
}
public void setUniqueId(Long uniqueId) {
this.uniqueId = uniqueId;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
UserRoles userRoles = (UserRoles) o;
return Objects.equals(name, userRoles.name);
}
@Override
public int hashCode() {
return Objects.hash(name);
}
}

View file

@ -0,0 +1,15 @@
package org.chtijbug.drools.proxy.persistence.repository;
import org.chtijbug.drools.proxy.persistence.model.BusinessTransactionAction;
import org.springframework.data.domain.PageRequest;
import org.springframework.data.domain.Sort;
import org.springframework.data.jpa.repository.JpaRepository;
import java.util.List;
public interface BusinessTransactionActionRepository extends JpaRepository<BusinessTransactionAction,Long> {
public List<BusinessTransactionAction> findAllByBusinessTransactionId(String businessTransactionId, Sort sort, PageRequest pageRequest);
}

View file

@ -0,0 +1,17 @@
package org.chtijbug.drools.proxy.persistence.repository;
import org.chtijbug.drools.proxy.persistence.model.BusinessTransactionPersistence;
import org.springframework.data.domain.PageRequest;
import org.springframework.data.jpa.repository.JpaRepository;
import java.util.List;
public interface BusinessTransactionPersistenceRepository extends JpaRepository<BusinessTransactionPersistence,Long> {
public BusinessTransactionPersistence findAllById(String id, PageRequest pageRequest);
public List<BusinessTransactionPersistence> findAllByTransactionId(String transactionId, PageRequest pageRequest);
}

View file

@ -0,0 +1,22 @@
package org.chtijbug.drools.proxy.persistence.repository;
import org.chtijbug.drools.proxy.persistence.model.ContainerPojoPersist;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;
import java.util.List;
@Repository
public interface ContainerRepository extends JpaRepository<ContainerPojoPersist, Long> {
ContainerPojoPersist findByServerNameAndContainerId(String serverName,String containerId);
List<ContainerPojoPersist> findByContainerId(String containerId);
List<ContainerPojoPersist> findByServerName(String serverName);
List<ContainerPojoPersist> findByProjectUUID(String projectUUID);
}

View file

@ -0,0 +1,24 @@
package org.chtijbug.drools.proxy.persistence.repository;
import org.chtijbug.drools.proxy.persistence.model.ContainerRuntimePojoPersist;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;
import java.util.List;
@Repository
public interface ContainerRuntimeRepository extends JpaRepository<ContainerRuntimePojoPersist, String> {
List<ContainerRuntimePojoPersist> findByServerNameAndContainerId(String serverName, String containerId);
List<ContainerRuntimePojoPersist> findByServerNameAndStatus(String serverName, String status);
List<ContainerRuntimePojoPersist> findByServerNameAndStatusAndHostname(String serverName, String status,String hostname);
List<ContainerRuntimePojoPersist> findByServerNameAndHostname(String serverName, String hostname);
List<ContainerRuntimePojoPersist> findByProjectUUID(String projectUUID);
List<ContainerRuntimePojoPersist> findByContainerId(String continuerID);
ContainerRuntimePojoPersist findByServerNameAndContainerIdAndHostname(String serverName, String containerId,String hostname);
}

View file

@ -0,0 +1,12 @@
package org.chtijbug.drools.proxy.persistence.repository;
import org.chtijbug.drools.proxy.persistence.model.Customer;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;
@Repository
public interface CustomerRepository extends JpaRepository<Customer, String> {
Customer findByName(String name);
Customer findByID(String ID);
}

View file

@ -0,0 +1,17 @@
package org.chtijbug.drools.proxy.persistence.repository;
import org.chtijbug.drools.proxy.persistence.model.GuidedRulesTemplateData;
import org.chtijbug.drools.proxy.persistence.model.GuidedRulesTemplateDefinition;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;
import java.util.List;
@Repository
public interface GuidedRulestemplateDataRepository extends JpaRepository<GuidedRulesTemplateData, String> {
GuidedRulesTemplateData findByGuidedRulesTemplateDefinitionAndLineID(GuidedRulesTemplateDefinition guidedRulesTemplateDefinition,String lineID);
List<GuidedRulesTemplateData> findByGuidedRulesTemplateDefinition(GuidedRulesTemplateDefinition guidedRulesTemplateDefinition);
}

View file

@ -0,0 +1,16 @@
package org.chtijbug.drools.proxy.persistence.repository;
import org.chtijbug.drools.proxy.persistence.model.GuidedRulesTemplateDefinition;
import org.chtijbug.drools.proxy.persistence.model.UserGroups;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;
import java.util.List;
@Repository
public interface GuidedRulestemplateDefinitionRepository extends JpaRepository<GuidedRulesTemplateDefinition, String> {
List<GuidedRulesTemplateDefinition> findByTemplateName(String assetName);
GuidedRulesTemplateDefinition findByTemplateNameAndProjectGroup(String assetName, UserGroups projectGroup);
}

View file

@ -0,0 +1,12 @@
package org.chtijbug.drools.proxy.persistence.repository;
import org.chtijbug.drools.proxy.persistence.model.KieWorkbench;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;
@Repository
public interface KieWorkbenchRepository extends JpaRepository<KieWorkbench, Long> {
KieWorkbench findByName(String name);
KieWorkbench findByID(String ID);
}

View file

@ -0,0 +1,22 @@
package org.chtijbug.drools.proxy.persistence.repository;
import org.chtijbug.drools.proxy.persistence.json.KieProject;
import org.chtijbug.drools.proxy.persistence.model.KieWorkbench;
import org.chtijbug.drools.proxy.persistence.model.ProjectPersist;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;
import java.util.List;
@Repository
public interface ProjectRepository extends JpaRepository<ProjectPersist, Long> {
public List<ProjectPersist> findByProjectName(KieProject projectName);
public ProjectPersist findByProjectNameAndBranch(KieProject projectName,String branch);
public ProjectPersist findByDeploymentName(String deploymentName);
public ProjectPersist findByUuid(String UUID);
public List<ProjectPersist> findByServerNamesIn(List<String> serverNames);
public List<ProjectPersist> findByServerNamesInAndDeploymentName(List<String> serverNames,String deploymentName);
public List<ProjectPersist> findByKieWorkbench(KieWorkbench kieWorkbench);
}

View file

@ -0,0 +1,14 @@
package org.chtijbug.drools.proxy.persistence.repository;
import org.chtijbug.drools.proxy.persistence.model.RuntimePersist;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;
import java.util.List;
@Repository
public interface RuntimeRepository extends JpaRepository<RuntimePersist, Long> {
public List<RuntimePersist> findByServerName(String serverName);
public List<RuntimePersist> findByServerNameAndHostname(String serverName,String hostname);
}

View file

@ -0,0 +1,18 @@
package org.chtijbug.drools.proxy.persistence.repository;
import org.chtijbug.drools.proxy.persistence.model.ProjectPersist;
import org.chtijbug.drools.proxy.persistence.model.UserGroups;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;
@Repository
public interface UserGroupsRepository extends JpaRepository<UserGroups, Long> {
UserGroups findByName(String login);
UserGroups findByID(String login);
UserGroups findUserGroupsByProjectPersist(ProjectPersist projectPersist);
UserGroups findBySpaceName(String spaceName);
UserGroups findByWorkspaceUserGroupAndProjectName(UserGroups workspaceUserGroups,String projectName);
}

View file

@ -0,0 +1,11 @@
package org.chtijbug.drools.proxy.persistence.repository;
import org.chtijbug.drools.proxy.persistence.model.User;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;
@Repository
public interface UserRepository extends JpaRepository<User, Long> {
User findByLogin(String login);
}

View file

@ -0,0 +1,12 @@
package org.chtijbug.drools.proxy.persistence.repository;
import org.chtijbug.drools.proxy.persistence.model.UserRoles;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;
@Repository
public interface UserRolesRepository extends JpaRepository<UserRoles, Long> {
UserRoles findByName(String login);
UserRoles findByID(String login);
}

View file

@ -0,0 +1,162 @@
/**
* Licensed under the Apache License, Version 2.0 (the "License"); you may not
* use this file except in compliance with the License. You may obtain a copy of
* the License at
* http://www.apache.org/licenses/LICENSE-2.0
* <p>
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
* License for the specific language governing permissions and limitations under
* the License.
*/
package org.chtijbug.drools.proxy.persistence.types;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.DeserializationFeature;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.SerializationFeature;
import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule;
import org.hibernate.HibernateException;
import org.hibernate.boot.registry.classloading.internal.ClassLoaderServiceImpl;
import org.hibernate.boot.registry.classloading.spi.ClassLoaderService;
import org.hibernate.engine.spi.SharedSessionContractImplementor;
import org.hibernate.type.SerializationException;
import org.hibernate.usertype.ParameterizedType;
import org.hibernate.usertype.UserType;
import org.postgresql.util.PGobject;
import java.io.IOException;
import java.io.Serializable;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Types;
import java.util.*;
import java.util.stream.Collectors;
public class JSONBUserType implements ParameterizedType, UserType {
public static final String JSONB_TYPE = "jsonb";;
public static final String CLASS = "CLASS";
private static final ObjectMapper objectMapper = new ObjectMapper().configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false).registerModule(new JavaTimeModule())
.configure(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS, false);
private static final ClassLoaderService classLoaderService = new ClassLoaderServiceImpl();
private Class jsonClassType;
public JSONBUserType() {
}
@Override
public Class<Object> returnedClass() {
return Object.class;
}
@Override
public int[] sqlTypes() {
return new int[]{Types.JAVA_OBJECT};
}
@Override
public void setParameterValues(Properties parameters) {
final String clazz = (String) parameters.get(CLASS);
jsonClassType = classLoaderService.classForName(clazz);
}
@SuppressWarnings("unchecked")
@Override
public Object deepCopy(Object value) throws HibernateException {
if (!(value instanceof Collection)) {
return value;
}
Collection<?> collection = (Collection) value;
Collection collectionClone = CollectionFactory.newInstance(collection.getClass());
collectionClone.addAll(collection.stream().map(this::deepCopy).collect(Collectors.toList()));
return collectionClone;
}
@Override
public boolean isMutable() {
return true;
}
@Override
public boolean equals(Object x, Object y) throws HibernateException {
if (x == y) {
return true;
}
if ((x == null) || (y == null)) {
return false;
}
return x.equals(y);
}
@Override
public int hashCode(Object x) throws HibernateException {
assert (x != null);
return x.hashCode();
}
@Override
public Object nullSafeGet(ResultSet resultSet, String[] names, SharedSessionContractImplementor sharedSessionContractImplementor, Object o) throws HibernateException, SQLException {
try {
final String json = resultSet.getString(names[0]);
return json == null ? null : objectMapper.readValue(json, jsonClassType);
} catch (IOException e) {
throw new HibernateException(e);
}
}
@Override
public void nullSafeSet(PreparedStatement st, Object value, int index, SharedSessionContractImplementor sharedSessionContractImplementor) throws HibernateException, SQLException {
try {
final String json = value == null ? null : objectMapper.writeValueAsString(value);
PGobject pgo = new PGobject();
pgo.setType(JSONB_TYPE);
pgo.setValue(json);
st.setObject(index, pgo);
} catch (JsonProcessingException e) {
throw new HibernateException(e);
}
}
@Override
public Object assemble(Serializable cached, Object owner) throws HibernateException {
return deepCopy(cached);
}
@Override
public Serializable disassemble(Object value) throws HibernateException {
Object deepCopy = deepCopy(value);
if (deepCopy != null && !(deepCopy instanceof Serializable)) {
throw new SerializationException(String.format("%s is not serializable class", value), null);
}
return (Serializable) deepCopy;
}
@Override
public Object replace(Object original, Object target, Object owner) throws HibernateException {
return deepCopy(original);
}
static final class CollectionFactory {
@SuppressWarnings("unchecked")
static <E, T extends Collection<E>> T newInstance(Class<T> collectionClass) {
if (List.class.isAssignableFrom(collectionClass)) {
return (T) new ArrayList<E>();
} else if (Set.class.isAssignableFrom(collectionClass)) {
return (T) new HashSet<E>();
} else {
throw new IllegalArgumentException("Unsupported collection type : " + collectionClass);
}
}
}
}

View file

@ -26,13 +26,13 @@
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-annotations</artifactId>
<version>2.9.7</version>
<version>${jackson.version}</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-annotations</artifactId>
<version>2.9.7</version>
<version>${jackson.version}</version>
<scope>compile</scope>
</dependency>
<dependency>

View file

@ -5,7 +5,7 @@
<parent>
<artifactId>drools-framework-business-proxy-parent</artifactId>
<groupId>com.pymmasoftware.jbpm</groupId>
<version>1.1-SNAPSHOT</version>
<version>1.2.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
@ -14,7 +14,7 @@
<dependencies>
<dependency>
<groupId>com.pymmasoftware.jbpm</groupId>
<artifactId>drools-framework-business-proxy-persistence</artifactId>
<artifactId>drools-framework-business-proxy-jpa</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
@ -25,7 +25,7 @@
<dependency>
<groupId>com.github.mkopylec</groupId>
<artifactId>charon-spring-boot-starter</artifactId>
<version>3.1.0</version>
<version>3.2.0</version>
</dependency>
<!-- Spring Boot -->
<dependency>

View file

@ -11,7 +11,8 @@ import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.Bean;
import org.springframework.data.mongodb.repository.config.EnableMongoRepositories;
import org.springframework.context.annotation.EnableAspectJAutoProxy;
import org.springframework.data.jpa.repository.config.EnableJpaRepositories;
import org.springframework.kafka.config.ConcurrentKafkaListenerContainerFactory;
import org.springframework.kafka.core.ConsumerFactory;
import org.springframework.kafka.core.DefaultKafkaConsumerFactory;
@ -21,7 +22,7 @@ import java.util.HashMap;
import java.util.Map;
@SpringBootApplication
@EnableMongoRepositories(basePackages = "org.chtijbug.drools.proxy.persistence.repository")
@EnableJpaRepositories(basePackages = "org.chtijbug.drools.proxy.persistence.repository")
public class DroolsBusinessReverseProxyServer {
@Value(value = "${kafka.bootstrapAddress}")

View file

@ -5,7 +5,7 @@
<parent>
<artifactId>pymma-jbpm-platform-parent</artifactId>
<groupId>com.pymmasoftware.jbpm</groupId>
<version>1.1-SNAPSHOT</version>
<version>1.2.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
@ -19,8 +19,9 @@
</properties>
<modules>
<module>drools-framework-business-proxy-app</module>
<module>drools-framework-business-proxy-persistence</module>
<!--module>drools-framework-business-proxy-persistence</module-->
<module>drools-framework-business-indexer-app</module>
<module>drools-framework-business-reverse-proxy</module>
<module>drools-framework-business-proxy-jpa</module>
</modules>
</project>