commit
01d9886720
23 changed files with 1222 additions and 247 deletions
|
|
@ -244,7 +244,16 @@
|
||||||
<artifactId>springfox-boot-starter</artifactId>
|
<artifactId>springfox-boot-starter</artifactId>
|
||||||
<version>3.0.0</version>
|
<version>3.0.0</version>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>io.springfox</groupId>
|
||||||
|
<artifactId>springfox-swagger-ui</artifactId>
|
||||||
|
<version>3.0.0</version>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>io.springfox</groupId>
|
||||||
|
<artifactId>springfox-swagger-ui</artifactId>
|
||||||
|
<version>3.0.0</version>
|
||||||
|
</dependency>
|
||||||
</dependencies>
|
</dependencies>
|
||||||
|
|
||||||
<build>
|
<build>
|
||||||
|
|
|
||||||
|
|
@ -14,7 +14,7 @@ import org.apache.kafka.common.serialization.StringSerializer;
|
||||||
import org.chtijbug.drools.KieContainerResponse;
|
import org.chtijbug.drools.KieContainerResponse;
|
||||||
import org.chtijbug.drools.ReverseProxyUpdate;
|
import org.chtijbug.drools.ReverseProxyUpdate;
|
||||||
import org.chtijbug.drools.common.KafkaTopicConstants;
|
import org.chtijbug.drools.common.KafkaTopicConstants;
|
||||||
import org.chtijbug.drools.console.middle.DababaseContentInit;
|
import org.chtijbug.drools.console.middle.DababaseContentUpdate;
|
||||||
import org.chtijbug.drools.console.service.model.kie.KieConfigurationData;
|
import org.chtijbug.drools.console.service.model.kie.KieConfigurationData;
|
||||||
import org.chtijbug.drools.console.service.util.ApplicationContextProvider;
|
import org.chtijbug.drools.console.service.util.ApplicationContextProvider;
|
||||||
import org.chtijbug.drools.console.service.wbconnector.KieBusinessCentralConnector;
|
import org.chtijbug.drools.console.service.wbconnector.KieBusinessCentralConnector;
|
||||||
|
|
@ -92,7 +92,7 @@ public class DroolsSpringBootConsoleApplication extends SpringBootServletInitial
|
||||||
private String sslKeystoreType;
|
private String sslKeystoreType;
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
private DababaseContentInit dababaseContentInit;
|
private DababaseContentUpdate dababaseContentUpdate;
|
||||||
@Autowired
|
@Autowired
|
||||||
private KieBusinessCentralConnector kieBusinessCentralConnector;
|
private KieBusinessCentralConnector kieBusinessCentralConnector;
|
||||||
@Autowired
|
@Autowired
|
||||||
|
|
@ -218,7 +218,7 @@ public class DroolsSpringBootConsoleApplication extends SpringBootServletInitial
|
||||||
|
|
||||||
@EventListener(ApplicationReadyEvent.class)
|
@EventListener(ApplicationReadyEvent.class)
|
||||||
public void initPlatform(){
|
public void initPlatform(){
|
||||||
dababaseContentInit.initDatabaseIfNecessary();
|
dababaseContentUpdate.initDatabaseIfNecessary();
|
||||||
/**
|
/**
|
||||||
for (KieWorkbench kieWorkbench: kieWorkbenchRepository.findAll()) {
|
for (KieWorkbench kieWorkbench: kieWorkbenchRepository.findAll()) {
|
||||||
Map<String, KieContainerResource> kies = new HashMap<>();
|
Map<String, KieContainerResource> kies = new HashMap<>();
|
||||||
|
|
@ -275,7 +275,7 @@ public class DroolsSpringBootConsoleApplication extends SpringBootServletInitial
|
||||||
.select()
|
.select()
|
||||||
.apis(RequestHandlerSelectors.basePackage("org.chtijbug.drools.console.restexpose"))
|
.apis(RequestHandlerSelectors.basePackage("org.chtijbug.drools.console.restexpose"))
|
||||||
//.paths(PathSelectors.regex("/api/wb./wb.*"))
|
//.paths(PathSelectors.regex("/api/wb./wb.*"))
|
||||||
.paths(PathSelectors.regex("/api/wb.*"))
|
.paths(PathSelectors.regex("/api.*"))
|
||||||
.build()
|
.build()
|
||||||
.pathMapping("/swagger");
|
.pathMapping("/swagger");
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,155 +0,0 @@
|
||||||
package org.chtijbug.drools.console.middle;
|
|
||||||
|
|
||||||
import org.chtijbug.drools.console.service.KieRepositoryService;
|
|
||||||
import org.chtijbug.drools.console.service.ProjectPersistService;
|
|
||||||
import org.chtijbug.drools.console.service.model.UserConnected;
|
|
||||||
import org.chtijbug.drools.proxy.persistence.model.*;
|
|
||||||
import org.chtijbug.drools.proxy.persistence.repository.*;
|
|
||||||
import org.chtijbug.guvnor.server.jaxrs.model.PlatformProjectData;
|
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
|
||||||
import org.springframework.beans.factory.annotation.Value;
|
|
||||||
import org.springframework.scheduling.annotation.Scheduled;
|
|
||||||
import org.springframework.stereotype.Service;
|
|
||||||
|
|
||||||
import java.util.UUID;
|
|
||||||
|
|
||||||
@Service
|
|
||||||
public class DababaseContentInit {
|
|
||||||
|
|
||||||
@Value("${kie-wb.mainwbintern}")
|
|
||||||
private String mainwbUrlIntern;
|
|
||||||
|
|
||||||
@Value("${kie-wb.mainwbextern}")
|
|
||||||
private String mainwbExtern;
|
|
||||||
|
|
||||||
@Value("${kie-wb.baseurl}")
|
|
||||||
private String kiewbUrl;
|
|
||||||
|
|
||||||
@Autowired
|
|
||||||
private UserRepository userRepository;
|
|
||||||
|
|
||||||
@Autowired
|
|
||||||
private UserRolesRepository userRolesRepository;
|
|
||||||
|
|
||||||
@Autowired
|
|
||||||
private UserGroupsRepository userGroupsRepository;
|
|
||||||
|
|
||||||
@Autowired
|
|
||||||
private KieWorkbenchRepository kieWorkbenchRepository;
|
|
||||||
|
|
||||||
@Autowired
|
|
||||||
private CustomerRepository customerRepository;
|
|
||||||
|
|
||||||
@Autowired
|
|
||||||
private KieRepositoryService kieRepositoryService;
|
|
||||||
|
|
||||||
@Autowired
|
|
||||||
private ProjectPersistService projectPersistService;
|
|
||||||
|
|
||||||
public void initDatabaseIfNecessary() {
|
|
||||||
/**
|
|
||||||
* admin The administrator
|
|
||||||
* analyst The analyst
|
|
||||||
* developer The developer
|
|
||||||
* manager The manager
|
|
||||||
* user The end user
|
|
||||||
* kiemgmt KIE management user
|
|
||||||
*/
|
|
||||||
User adminUser = userRepository.findByLogin("admin");
|
|
||||||
if (adminUser == null) {
|
|
||||||
this.initDatabase();
|
|
||||||
}else{
|
|
||||||
this.synchronizeDatabaseWithWorkbenches();
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
private void initDatabase(){
|
|
||||||
userRolesRepository.save(new UserRoles(UUID.randomUUID().toString(), "process-admin"));
|
|
||||||
userRolesRepository.save(new UserRoles(UUID.randomUUID().toString(), "manager"));
|
|
||||||
userRolesRepository.save(new UserRoles(UUID.randomUUID().toString(), "admin"));
|
|
||||||
userRolesRepository.save(new UserRoles(UUID.randomUUID().toString(), "analyst"));
|
|
||||||
userRolesRepository.save(new UserRoles(UUID.randomUUID().toString(), "rest-all"));
|
|
||||||
userRolesRepository.save(new UserRoles(UUID.randomUUID().toString(), "developer"));
|
|
||||||
userRolesRepository.save(new UserRoles(UUID.randomUUID().toString(), "rest-project"));
|
|
||||||
userRolesRepository.save(new UserRoles(UUID.randomUUID().toString(), "user"));
|
|
||||||
|
|
||||||
|
|
||||||
userGroupsRepository.save(new UserGroups(UUID.randomUUID().toString(), "kiemgmt"));
|
|
||||||
userGroupsRepository.save(new UserGroups(UUID.randomUUID().toString(), "admingroup"));
|
|
||||||
userGroupsRepository.save(new UserGroups(UUID.randomUUID().toString(), "demogroup"));
|
|
||||||
|
|
||||||
User adminUser = new User(UUID.randomUUID().toString(), "admin", "adminadmin99#");
|
|
||||||
adminUser.getUserGroups().add(userGroupsRepository.findByName("kiemgmt"));
|
|
||||||
adminUser.getUserGroups().add(userGroupsRepository.findByName("admingroup"));
|
|
||||||
adminUser.getUserRoles().add(userRolesRepository.findByName("admin"));
|
|
||||||
adminUser.getUserRoles().add(userRolesRepository.findByName("analyst"));
|
|
||||||
adminUser.getUserRoles().add(userRolesRepository.findByName("rest-all"));
|
|
||||||
userRepository.save(adminUser);
|
|
||||||
|
|
||||||
User nheronUser = new User(UUID.randomUUID().toString(), "nheron", "adminnheron00@");
|
|
||||||
nheronUser.getUserGroups().add(userGroupsRepository.findByName("kiemgmt"));
|
|
||||||
nheronUser.getUserGroups().add(userGroupsRepository.findByName("admingroup"));
|
|
||||||
nheronUser.getUserRoles().add(userRolesRepository.findByName("admin"));
|
|
||||||
nheronUser.getUserRoles().add(userRolesRepository.findByName("analyst"));
|
|
||||||
nheronUser.getUserRoles().add(userRolesRepository.findByName("rest-all"));
|
|
||||||
userRepository.save(nheronUser);
|
|
||||||
|
|
||||||
KieWorkbench mainWorkbench = new KieWorkbench();
|
|
||||||
mainWorkbench.setID(UUID.randomUUID().toString());
|
|
||||||
mainWorkbench.setName("demo");
|
|
||||||
mainWorkbench.setExternalUrl(mainwbExtern);
|
|
||||||
mainWorkbench.setInternalUrl(mainwbUrlIntern);
|
|
||||||
mainWorkbench = kieWorkbenchRepository.save(mainWorkbench);
|
|
||||||
|
|
||||||
UserConnected userConnected = kieRepositoryService.getUserContent(mainWorkbench.getExternalUrl() + "/rest",
|
|
||||||
nheronUser.getLogin(), nheronUser.getPassword(), mainWorkbench.getName());
|
|
||||||
for (PlatformProjectData platformProjectData : userConnected.getProjectResponses()) {
|
|
||||||
String projectName = platformProjectData.getName();
|
|
||||||
String workspaceName = platformProjectData.getSpaceName();
|
|
||||||
ProjectPersist projectPersist=projectPersistService.saveorUpdateProject(platformProjectData, mainWorkbench);
|
|
||||||
UserGroups workspaceUserGroups=projectPersistService.createWorkSpaceGroupIfNeeded(workspaceName, mainWorkbench);
|
|
||||||
projectPersistService.createProjectGroupIfNeeded(projectName, mainWorkbench,projectPersist,workspaceUserGroups);
|
|
||||||
|
|
||||||
//platformProjectData.getJavaClasses()
|
|
||||||
|
|
||||||
|
|
||||||
}
|
|
||||||
Customer demCustomer = new Customer();
|
|
||||||
demCustomer.setKieWorkbench(mainWorkbench);
|
|
||||||
demCustomer.setName("demoCustomer");
|
|
||||||
demCustomer.setID(UUID.randomUUID().toString());
|
|
||||||
customerRepository.save(demCustomer);
|
|
||||||
User demoUser = new User(UUID.randomUUID().toString(), "demo", "demo");
|
|
||||||
demoUser.getUserGroups().add(userGroupsRepository.findByName("demogroup"));
|
|
||||||
demoUser.getUserRoles().add(userRolesRepository.findByName("user"));
|
|
||||||
demoUser.getUserRoles().add(userRolesRepository.findByName("rest-all"));
|
|
||||||
demoUser.getUserRoles().add(userRolesRepository.findByName("analyst"));
|
|
||||||
demoUser.setWbName(mainWorkbench.getName());
|
|
||||||
demoUser.setCustomer(demCustomer);
|
|
||||||
userRepository.save(demoUser);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Scheduled(cron = "0 0 0/1 * * ?")
|
|
||||||
public void synchronizeDatabaseWithWorkbenches(){
|
|
||||||
for (KieWorkbench kieWorkbench : kieWorkbenchRepository.findAll()){
|
|
||||||
User nheronUser = userRepository.findByLogin("nheron");
|
|
||||||
UserConnected userConnected = kieRepositoryService.getUserContent(kieWorkbench.getExternalUrl() + "/rest",
|
|
||||||
nheronUser.getLogin(), nheronUser.getPassword(), kieWorkbench.getName());
|
|
||||||
for (PlatformProjectData platformProjectData : userConnected.getProjectResponses()) {
|
|
||||||
|
|
||||||
String projectName = platformProjectData.getName();
|
|
||||||
String workspaceName = platformProjectData.getSpaceName();
|
|
||||||
ProjectPersist projectPersist=projectPersistService.saveorUpdateProject(platformProjectData, kieWorkbench);
|
|
||||||
UserGroups workSpaceGroupIfNeeded = projectPersistService.createWorkSpaceGroupIfNeeded(workspaceName, kieWorkbench);
|
|
||||||
projectPersistService.createProjectGroupIfNeeded(projectName, kieWorkbench,projectPersist,workSpaceGroupIfNeeded);
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
@ -0,0 +1,243 @@
|
||||||
|
package org.chtijbug.drools.console.middle;
|
||||||
|
|
||||||
|
import org.chtijbug.drools.console.dto.VariableData;
|
||||||
|
import org.chtijbug.drools.console.dto.VariableDefinition;
|
||||||
|
import org.chtijbug.drools.console.service.KieRepositoryService;
|
||||||
|
import org.chtijbug.drools.console.service.ProjectPersistService;
|
||||||
|
import org.chtijbug.drools.console.service.model.UserConnected;
|
||||||
|
import org.chtijbug.drools.proxy.persistence.model.*;
|
||||||
|
import org.chtijbug.drools.proxy.persistence.repository.*;
|
||||||
|
import org.chtijbug.guvnor.server.jaxrs.jaxb.Asset;
|
||||||
|
import org.chtijbug.guvnor.server.jaxrs.model.PlatformProjectData;
|
||||||
|
import org.drools.workbench.models.datamodel.rule.InterpolationVariable;
|
||||||
|
import org.drools.workbench.models.guided.template.backend.RuleTemplateModelXMLPersistenceImpl;
|
||||||
|
import org.drools.workbench.models.guided.template.shared.TemplateModel;
|
||||||
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
import org.springframework.beans.factory.annotation.Value;
|
||||||
|
import org.springframework.scheduling.annotation.Scheduled;
|
||||||
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
|
import java.math.BigDecimal;
|
||||||
|
import java.util.HashMap;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
|
import java.util.UUID;
|
||||||
|
|
||||||
|
@Service
|
||||||
|
public class DababaseContentUpdate {
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@Value("${kie-wb.mainwbintern}")
|
||||||
|
private String mainwbUrlIntern;
|
||||||
|
|
||||||
|
@Value("${kie-wb.mainwbextern}")
|
||||||
|
private String mainwbExtern;
|
||||||
|
|
||||||
|
@Value("${kie-wb.baseurl}")
|
||||||
|
private String kiewbUrl;
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private UserRepository userRepository;
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private UserRolesRepository userRolesRepository;
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private UserGroupsRepository userGroupsRepository;
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private KieWorkbenchRepository kieWorkbenchRepository;
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private GuidedRulestemplateDefinitionRepository guidedRulestemplateDefinitionRepository;
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private GuidedRulestemplateDataRepository guidedRulestemplateDataRepository;
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private CustomerRepository customerRepository;
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private KieRepositoryService kieRepositoryService;
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private ProjectPersistService projectPersistService;
|
||||||
|
|
||||||
|
public void initDatabaseIfNecessary() {
|
||||||
|
/**
|
||||||
|
* admin The administrator
|
||||||
|
* analyst The analyst
|
||||||
|
* developer The developer
|
||||||
|
* manager The manager
|
||||||
|
* user The end user
|
||||||
|
* kiemgmt KIE management user
|
||||||
|
*/
|
||||||
|
User adminUser = userRepository.findByLogin("admin");
|
||||||
|
if (adminUser == null) {
|
||||||
|
this.initDatabase();
|
||||||
|
} else {
|
||||||
|
this.synchronizeDatabaseWithWorkbenches();
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
private void initDatabase() {
|
||||||
|
userRolesRepository.save(new UserRoles(UUID.randomUUID().toString(), "process-admin"));
|
||||||
|
userRolesRepository.save(new UserRoles(UUID.randomUUID().toString(), "manager"));
|
||||||
|
userRolesRepository.save(new UserRoles(UUID.randomUUID().toString(), "admin"));
|
||||||
|
userRolesRepository.save(new UserRoles(UUID.randomUUID().toString(), "analyst"));
|
||||||
|
userRolesRepository.save(new UserRoles(UUID.randomUUID().toString(), "rest-all"));
|
||||||
|
userRolesRepository.save(new UserRoles(UUID.randomUUID().toString(), "developer"));
|
||||||
|
userRolesRepository.save(new UserRoles(UUID.randomUUID().toString(), "rest-project"));
|
||||||
|
userRolesRepository.save(new UserRoles(UUID.randomUUID().toString(), "user"));
|
||||||
|
|
||||||
|
|
||||||
|
userGroupsRepository.save(new UserGroups(UUID.randomUUID().toString(), "kiemgmt"));
|
||||||
|
userGroupsRepository.save(new UserGroups(UUID.randomUUID().toString(), "admingroup"));
|
||||||
|
userGroupsRepository.save(new UserGroups(UUID.randomUUID().toString(), "demogroup"));
|
||||||
|
|
||||||
|
User adminUser = new User(UUID.randomUUID().toString(), "admin", "adminadmin99#");
|
||||||
|
adminUser.getUserGroups().add(userGroupsRepository.findByName("kiemgmt"));
|
||||||
|
adminUser.getUserGroups().add(userGroupsRepository.findByName("admingroup"));
|
||||||
|
adminUser.getUserRoles().add(userRolesRepository.findByName("admin"));
|
||||||
|
adminUser.getUserRoles().add(userRolesRepository.findByName("analyst"));
|
||||||
|
adminUser.getUserRoles().add(userRolesRepository.findByName("rest-all"));
|
||||||
|
userRepository.save(adminUser);
|
||||||
|
|
||||||
|
User nheronUser = new User(UUID.randomUUID().toString(), "nheron", "adminnheron00@");
|
||||||
|
nheronUser.getUserGroups().add(userGroupsRepository.findByName("kiemgmt"));
|
||||||
|
nheronUser.getUserGroups().add(userGroupsRepository.findByName("admingroup"));
|
||||||
|
nheronUser.getUserRoles().add(userRolesRepository.findByName("admin"));
|
||||||
|
nheronUser.getUserRoles().add(userRolesRepository.findByName("analyst"));
|
||||||
|
nheronUser.getUserRoles().add(userRolesRepository.findByName("rest-all"));
|
||||||
|
userRepository.save(nheronUser);
|
||||||
|
|
||||||
|
KieWorkbench mainWorkbench = new KieWorkbench();
|
||||||
|
mainWorkbench.setID(UUID.randomUUID().toString());
|
||||||
|
mainWorkbench.setName("demo");
|
||||||
|
mainWorkbench.setExternalUrl(mainwbExtern);
|
||||||
|
mainWorkbench.setInternalUrl(mainwbUrlIntern);
|
||||||
|
mainWorkbench = kieWorkbenchRepository.save(mainWorkbench);
|
||||||
|
|
||||||
|
UserConnected userConnected = kieRepositoryService.getUserContent(mainWorkbench.getExternalUrl() + "/rest",
|
||||||
|
nheronUser.getLogin(), nheronUser.getPassword(), mainWorkbench.getName());
|
||||||
|
for (PlatformProjectData platformProjectData : userConnected.getProjectResponses()) {
|
||||||
|
String projectName = platformProjectData.getName();
|
||||||
|
String workspaceName = platformProjectData.getSpaceName();
|
||||||
|
ProjectPersist projectPersist = projectPersistService.saveorUpdateProject(platformProjectData, mainWorkbench);
|
||||||
|
UserGroups workspaceUserGroups = projectPersistService.createWorkSpaceGroupIfNeeded(workspaceName, mainWorkbench);
|
||||||
|
projectPersistService.createProjectGroupIfNeeded(projectName, mainWorkbench, projectPersist, workspaceUserGroups);
|
||||||
|
|
||||||
|
//platformProjectData.getJavaClasses()
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
Customer demCustomer = new Customer();
|
||||||
|
demCustomer.setKieWorkbench(mainWorkbench);
|
||||||
|
demCustomer.setName("demoCustomer");
|
||||||
|
demCustomer.setID(UUID.randomUUID().toString());
|
||||||
|
customerRepository.save(demCustomer);
|
||||||
|
User demoUser = new User(UUID.randomUUID().toString(), "demo", "demo");
|
||||||
|
demoUser.getUserGroups().add(userGroupsRepository.findByName("demogroup"));
|
||||||
|
demoUser.getUserRoles().add(userRolesRepository.findByName("user"));
|
||||||
|
demoUser.getUserRoles().add(userRolesRepository.findByName("rest-all"));
|
||||||
|
demoUser.getUserRoles().add(userRolesRepository.findByName("analyst"));
|
||||||
|
demoUser.setWbName(mainWorkbench.getName());
|
||||||
|
demoUser.setCustomer(demCustomer);
|
||||||
|
userRepository.save(demoUser);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void updateOrCreateLineGuidedRuleTemplate(UserGroups spaceGroup,UserGroups projectGroup,String assetName, GuidedRulesTemplateData guidedRulesTemplateData){
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@Scheduled(cron = "0 0 0/1 * * ?")
|
||||||
|
public void synchronizeDatabaseWithWorkbenches() {
|
||||||
|
guidedRulestemplateDefinitionRepository.deleteAll();
|
||||||
|
guidedRulestemplateDataRepository.deleteAll();
|
||||||
|
for (KieWorkbench kieWorkbench : kieWorkbenchRepository.findAll()) {
|
||||||
|
User nheronUser = userRepository.findByLogin("nheron");
|
||||||
|
UserConnected userConnected = kieRepositoryService.getUserContent(kieWorkbench.getExternalUrl() + "/rest",
|
||||||
|
nheronUser.getLogin(), nheronUser.getPassword(), kieWorkbench.getName());
|
||||||
|
for (PlatformProjectData platformProjectData : userConnected.getProjectResponses()) {
|
||||||
|
|
||||||
|
String projectName = platformProjectData.getName();
|
||||||
|
String workspaceName = platformProjectData.getSpaceName();
|
||||||
|
ProjectPersist projectPersist = projectPersistService.saveorUpdateProject(platformProjectData, kieWorkbench);
|
||||||
|
UserGroups workSpaceGroupIfNeeded = projectPersistService.createWorkSpaceGroupIfNeeded(workspaceName, kieWorkbench);
|
||||||
|
UserGroups projectGroupIfNeeded = projectPersistService.createProjectGroupIfNeeded(projectName, kieWorkbench, projectPersist, workSpaceGroupIfNeeded);
|
||||||
|
|
||||||
|
List<Asset> assets = kieRepositoryService.getListAssets(kieWorkbench.getExternalUrl() + "/rest", nheronUser.getLogin(), nheronUser.getPassword(), workspaceName, projectName);
|
||||||
|
for (Asset asset : assets) {
|
||||||
|
if (asset.getTitle().contains(".template")) {
|
||||||
|
|
||||||
|
GuidedRulesTemplateDefinition guidedRulesTemplateDefinition = guidedRulestemplateDefinitionRepository.findByTemplateNameAndProjectGroup(asset.getTitle(), projectGroupIfNeeded);
|
||||||
|
if (guidedRulesTemplateDefinition == null) {
|
||||||
|
guidedRulesTemplateDefinition = new GuidedRulesTemplateDefinition();
|
||||||
|
guidedRulesTemplateDefinition.setTemplateName(asset.getTitle());
|
||||||
|
|
||||||
|
guidedRulesTemplateDefinition.setProjectGroup(projectGroupIfNeeded);
|
||||||
|
|
||||||
|
}
|
||||||
|
String assetSource = kieRepositoryService.getAssetSource(kieWorkbench.getExternalUrl() + "/rest", nheronUser.getLogin(), nheronUser.getPassword(), workspaceName, projectName, asset.getTitle());
|
||||||
|
TemplateModel model = RuleTemplateModelXMLPersistenceImpl.getInstance().unmarshal(assetSource);
|
||||||
|
guidedRulesTemplateDefinition.getVariables().clear();
|
||||||
|
for (InterpolationVariable interpolationVariable : model.getInterpolationVariablesList()) {
|
||||||
|
VariableDefinition variableDefinition = new VariableDefinition();
|
||||||
|
variableDefinition.setVarName(interpolationVariable.getVarName());
|
||||||
|
variableDefinition.setDataType(interpolationVariable.getDataType());
|
||||||
|
variableDefinition.setFactField(interpolationVariable.getFactField());
|
||||||
|
variableDefinition.setFactType(interpolationVariable.getFactType());
|
||||||
|
variableDefinition.setOperator(interpolationVariable.getOperator());
|
||||||
|
guidedRulesTemplateDefinition.getVariables().add(variableDefinition);
|
||||||
|
}
|
||||||
|
guidedRulesTemplateDefinition = guidedRulestemplateDefinitionRepository.save(guidedRulesTemplateDefinition);
|
||||||
|
Map<String, VariableDefinition> variableDefinitionMap = new HashMap<>();
|
||||||
|
for (VariableDefinition variableDefinition : guidedRulesTemplateDefinition.getVariables()) {
|
||||||
|
variableDefinitionMap.put(variableDefinition.getVarName(), variableDefinition);
|
||||||
|
}
|
||||||
|
Map<String, List<String>> dataTable = model.getTable();
|
||||||
|
int nbRows = model.getRowsCount();
|
||||||
|
for (int i = 0; i < nbRows; i++) {
|
||||||
|
GuidedRulesTemplateData guidedRulesTemplateData=guidedRulestemplateDataRepository.findByGuidedRulesTemplateDefinitionAndLineID(guidedRulesTemplateDefinition,String.valueOf(i));
|
||||||
|
String colid = dataTable.get(TemplateModel.ID_COLUMN_NAME).get(i);
|
||||||
|
if (guidedRulesTemplateData==null) {
|
||||||
|
guidedRulesTemplateData = new GuidedRulesTemplateData();
|
||||||
|
guidedRulesTemplateData.setGuidedRulesTemplateDefinition(guidedRulesTemplateDefinition);
|
||||||
|
guidedRulesTemplateData.setLineID(colid);
|
||||||
|
}
|
||||||
|
|
||||||
|
for (VariableDefinition variableDefinition : guidedRulesTemplateDefinition.getVariables()) {
|
||||||
|
String data = dataTable.get(variableDefinition.getVarName()).get(i);
|
||||||
|
VariableData variableData= new VariableData();
|
||||||
|
variableData.setVarName(variableDefinition.getVarName());
|
||||||
|
if ("String".equals(variableDefinition.getDataType())){
|
||||||
|
variableData.setStringValue(data);
|
||||||
|
}else if ("Long".equals(variableDefinition.getDataType())){
|
||||||
|
if (data!=null && data.length()>0) {
|
||||||
|
variableData.setLongValue(Long.parseLong(data));
|
||||||
|
}
|
||||||
|
}else if ("Double".equals(variableDefinition.getDataType())){
|
||||||
|
if (data!=null && data.length()>0) {
|
||||||
|
variableData.setDoubleValue(Double.parseDouble(data));
|
||||||
|
}
|
||||||
|
}else if ("BigDecimal".equals(variableDefinition.getDataType())){
|
||||||
|
if (data!=null && data.length()>0) {
|
||||||
|
variableData.setBigDecimalValue(BigDecimal.valueOf(Double.parseDouble(data)));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
guidedRulesTemplateData.getRows().add(variableData);
|
||||||
|
}
|
||||||
|
guidedRulestemplateDataRepository.save(guidedRulesTemplateData);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
@ -1,27 +1,31 @@
|
||||||
package org.chtijbug.drools.console.restexpose;
|
package org.chtijbug.drools.console.restexpose;
|
||||||
|
|
||||||
import com.fasterxml.jackson.databind.ObjectMapper;
|
import com.fasterxml.jackson.databind.ObjectMapper;
|
||||||
|
import io.swagger.annotations.*;
|
||||||
import org.apache.commons.codec.binary.Base64;
|
import org.apache.commons.codec.binary.Base64;
|
||||||
|
import org.chtijbug.drools.console.dto.GuidedRuleTemplate;
|
||||||
|
import org.chtijbug.drools.console.dto.GuidedRuleTemplateDataRow;
|
||||||
|
import org.chtijbug.drools.console.dto.VariableData;
|
||||||
|
import org.chtijbug.drools.console.dto.VariableDefinition;
|
||||||
|
import org.chtijbug.drools.console.middle.DababaseContentUpdate;
|
||||||
import org.chtijbug.drools.console.service.IndexerService;
|
import org.chtijbug.drools.console.service.IndexerService;
|
||||||
import org.chtijbug.drools.console.service.JobService;
|
import org.chtijbug.drools.console.service.JobService;
|
||||||
|
import org.chtijbug.drools.console.service.KieRepositoryService;
|
||||||
import org.chtijbug.drools.console.service.ProjectPersistService;
|
import org.chtijbug.drools.console.service.ProjectPersistService;
|
||||||
import org.chtijbug.drools.proxy.persistence.model.KieWorkbench;
|
import org.chtijbug.drools.proxy.persistence.model.*;
|
||||||
import org.chtijbug.drools.proxy.persistence.model.User;
|
import org.chtijbug.drools.proxy.persistence.repository.*;
|
||||||
import org.chtijbug.drools.proxy.persistence.model.UserGroups;
|
|
||||||
import org.chtijbug.drools.proxy.persistence.repository.KieWorkbenchRepository;
|
|
||||||
import org.chtijbug.drools.proxy.persistence.repository.UserGroupsRepository;
|
|
||||||
import org.chtijbug.drools.proxy.persistence.repository.UserRepository;
|
|
||||||
import org.chtijbug.guvnor.server.jaxrs.model.PlatformProjectData;
|
import org.chtijbug.guvnor.server.jaxrs.model.PlatformProjectData;
|
||||||
import org.guvnor.rest.client.CreateProjectJobRequest;
|
import org.drools.workbench.models.datamodel.rule.InterpolationVariable;
|
||||||
import org.guvnor.rest.client.CreateProjectRequest;
|
import org.drools.workbench.models.datamodel.rule.util.InterpolationVariableCollector;
|
||||||
import org.guvnor.rest.client.Space;
|
import org.drools.workbench.models.datamodel.rule.visitors.RuleModelVisitor;
|
||||||
|
import org.drools.workbench.models.guided.template.backend.RuleTemplateModelXMLPersistenceImpl;
|
||||||
|
import org.drools.workbench.models.guided.template.shared.TemplateModel;
|
||||||
import org.guvnor.rest.client.SpaceRequest;
|
import org.guvnor.rest.client.SpaceRequest;
|
||||||
import org.kie.server.api.model.KieServerInfo;
|
import org.kie.server.api.model.KieServerInfo;
|
||||||
|
import org.kie.soup.project.datamodel.oracle.DataType;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.http.HttpHeaders;
|
import org.springframework.http.HttpHeaders;
|
||||||
import org.springframework.http.HttpMethod;
|
|
||||||
import org.springframework.http.MediaType;
|
import org.springframework.http.MediaType;
|
||||||
import org.springframework.http.ResponseEntity;
|
|
||||||
import org.springframework.security.core.Authentication;
|
import org.springframework.security.core.Authentication;
|
||||||
import org.springframework.security.core.context.SecurityContextHolder;
|
import org.springframework.security.core.context.SecurityContextHolder;
|
||||||
import org.springframework.web.bind.annotation.*;
|
import org.springframework.web.bind.annotation.*;
|
||||||
|
|
@ -30,11 +34,15 @@ import org.springframework.web.client.RestTemplate;
|
||||||
|
|
||||||
import javax.ws.rs.core.Response;
|
import javax.ws.rs.core.Response;
|
||||||
import javax.ws.rs.core.Variant;
|
import javax.ws.rs.core.Variant;
|
||||||
|
import java.math.BigDecimal;
|
||||||
import java.nio.charset.StandardCharsets;
|
import java.nio.charset.StandardCharsets;
|
||||||
import java.util.Scanner;
|
import java.util.*;
|
||||||
|
|
||||||
|
import static org.drools.workbench.models.guided.template.shared.TemplateModel.ID_COLUMN_NAME;
|
||||||
|
|
||||||
@RestController
|
@RestController
|
||||||
@RequestMapping("/api/wb")
|
@RequestMapping("/api/asset")
|
||||||
|
@Api("/api/asset")
|
||||||
public class AssetServiceExpose {
|
public class AssetServiceExpose {
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
|
|
@ -53,108 +61,353 @@ public class AssetServiceExpose {
|
||||||
@Autowired
|
@Autowired
|
||||||
private UserRepository userRepository;
|
private UserRepository userRepository;
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private GuidedRulestemplateDefinitionRepository guidedRulestemplateDefinitionRepository;
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private GuidedRulestemplateDataRepository guidedRulestemplateDataRepository;
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private UserRolesRepository userRolesRepository;
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
private JobService jobService;
|
private JobService jobService;
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
private ProjectPersistService projectPersistService;
|
private ProjectPersistService projectPersistService;
|
||||||
|
|
||||||
@PostMapping(value = "/spaces",
|
@Autowired
|
||||||
|
private KieRepositoryService kieRepositoryService;
|
||||||
|
|
||||||
|
@GetMapping(value = "/{spaceName}/{projectName}/grt/{templateName}/data",
|
||||||
consumes = {javax.ws.rs.core.MediaType.APPLICATION_JSON, javax.ws.rs.core.MediaType.APPLICATION_XML},
|
consumes = {javax.ws.rs.core.MediaType.APPLICATION_JSON, javax.ws.rs.core.MediaType.APPLICATION_XML},
|
||||||
produces = {javax.ws.rs.core.MediaType.APPLICATION_JSON, javax.ws.rs.core.MediaType.APPLICATION_XML})
|
produces = {javax.ws.rs.core.MediaType.APPLICATION_JSON, javax.ws.rs.core.MediaType.APPLICATION_XML})
|
||||||
public Response createWorkSpace(@RequestBody PlatformProjectData request) {
|
@ApiOperation(value = "Get Template dta", notes = "Sends back data of a guided rule template", response = GuidedRuleTemplate.class)
|
||||||
String wbName = "demo";
|
@ApiResponses({
|
||||||
if (request.getWbName() != null
|
@ApiResponse(code = 201, message = "Created", response = GuidedRuleTemplate.class)
|
||||||
&& !request.getWbName().isEmpty()) {
|
})
|
||||||
wbName = request.getWbName();
|
public Response getTemplateData(@PathVariable("spaceName") String spaceName, @PathVariable("projectName") String projectName, @PathVariable("templateName") String templateName) {
|
||||||
}
|
|
||||||
KieWorkbench kieWorkbench = kieWorkbenchRepository.findByName(wbName);
|
|
||||||
if (kieWorkbench == null) {
|
|
||||||
return Response.status(Response.Status.NOT_FOUND).entity("Workbench not found").build();
|
|
||||||
}
|
|
||||||
String completeurl = kieWorkbench.getExternalUrl() + "/rest/spaces";
|
|
||||||
Space space = new Space();
|
|
||||||
space.setName(request.getSpaceName());
|
|
||||||
space.setDescription(request.getDescription());
|
|
||||||
space.setDefaultGroupId(request.getGroupId());
|
|
||||||
Authentication authentication = SecurityContextHolder.getContext().getAuthentication();
|
|
||||||
String currentPrincipalName = authentication.getName();
|
|
||||||
space.setOwner(authentication.getName());
|
|
||||||
|
|
||||||
User connectedUser = userRepository.findByLogin(currentPrincipalName);
|
|
||||||
ResponseEntity<SpaceRequest> response = restTemplateKiewb
|
|
||||||
.execute(completeurl, HttpMethod.POST, requestCallback(space, connectedUser.getLogin(), connectedUser.getPassword()), clientHttpResponse -> {
|
|
||||||
SpaceRequest extractedResponse = null;
|
|
||||||
if (clientHttpResponse.getBody() != null) {
|
|
||||||
Scanner s = new Scanner(clientHttpResponse.getBody()).useDelimiter("\\A");
|
|
||||||
String result = s.hasNext() ? s.next() : "";
|
|
||||||
extractedResponse = mapper.readValue(result, SpaceRequest.class);
|
|
||||||
|
|
||||||
}
|
|
||||||
return new ResponseEntity<>(extractedResponse, clientHttpResponse.getHeaders(), clientHttpResponse.getStatusCode());
|
|
||||||
});
|
|
||||||
projectPersistService.createWorkSpaceGroupIfNeeded(request.getSpaceName(),kieWorkbench);
|
|
||||||
jobService.executeWrite(kieWorkbench.getExternalUrl()+"/rest", connectedUser.getLogin(), connectedUser.getPassword(), null, response.getBody().getJobId(), null);
|
|
||||||
Variant variant = Variant.mediaTypes(javax.ws.rs.core.MediaType.APPLICATION_JSON_TYPE).add().build().get(0);
|
|
||||||
return Response.status(Response.Status.CREATED).entity(response.getBody()).variant(variant).build();
|
|
||||||
}
|
|
||||||
|
|
||||||
@PostMapping(value = "/spaces/{spaceName}/projects",
|
|
||||||
consumes = {javax.ws.rs.core.MediaType.APPLICATION_JSON, javax.ws.rs.core.MediaType.APPLICATION_XML},
|
|
||||||
produces = {javax.ws.rs.core.MediaType.APPLICATION_JSON, javax.ws.rs.core.MediaType.APPLICATION_XML})
|
|
||||||
public Response createProject(@PathVariable("spaceName") String spaceName,@RequestBody PlatformProjectData request) {
|
|
||||||
String wbName = "demo";
|
|
||||||
if (request.getWbName() != null
|
|
||||||
&& !request.getWbName().isEmpty()) {
|
|
||||||
wbName = request.getWbName();
|
|
||||||
}
|
|
||||||
KieWorkbench kieWorkbench = kieWorkbenchRepository.findByName(wbName);
|
|
||||||
if (kieWorkbench == null) {
|
|
||||||
return Response.status(Response.Status.NOT_FOUND).entity("Workbench not found").build();
|
|
||||||
}
|
|
||||||
String completeurl = kieWorkbench.getExternalUrl() + "/rest/spaces/"+spaceName+"/projects";
|
|
||||||
CreateProjectRequest projectRequest = new CreateProjectRequest();
|
|
||||||
|
|
||||||
projectRequest.setName(request.getName());
|
|
||||||
projectRequest.setGroupId(request.getGroupId());
|
|
||||||
projectRequest.setVersion(request.getVersion());
|
|
||||||
projectRequest.setDescription(request.getDescription());
|
|
||||||
|
|
||||||
Authentication authentication = SecurityContextHolder.getContext().getAuthentication();
|
Authentication authentication = SecurityContextHolder.getContext().getAuthentication();
|
||||||
String currentPrincipalName = authentication.getName();
|
String currentPrincipalName = authentication.getName();
|
||||||
|
|
||||||
User connectedUser = userRepository.findByLogin(currentPrincipalName);
|
User connectedUser = userRepository.findByLogin(currentPrincipalName);
|
||||||
ResponseEntity<CreateProjectJobRequest> response = restTemplateKiewb
|
UserGroups userGroupsSpace = userGroupsRepository.findBySpaceName(spaceName);
|
||||||
.execute(completeurl, HttpMethod.POST, requestCallback(projectRequest, connectedUser.getLogin(), connectedUser.getPassword()), clientHttpResponse -> {
|
if (userGroupsSpace == null) {
|
||||||
CreateProjectJobRequest extractedResponse = null;
|
return Response.status(Response.Status.NOT_FOUND).entity("Space not found").build();
|
||||||
if (clientHttpResponse.getBody() != null) {
|
}
|
||||||
Scanner s = new Scanner(clientHttpResponse.getBody()).useDelimiter("\\A");
|
|
||||||
String result = s.hasNext() ? s.next() : "";
|
|
||||||
extractedResponse = mapper.readValue(result, CreateProjectJobRequest.class);
|
UserGroups userGroupsProject = userGroupsRepository.findByWorkspaceUserGroupAndProjectName(userGroupsSpace, projectName);
|
||||||
|
if (userGroupsProject == null) {
|
||||||
|
return Response.status(Response.Status.NOT_FOUND).entity("Project not found").build();
|
||||||
|
}
|
||||||
|
if (!connectedUser.getUserRoles().contains(userRolesRepository.findByName("admin"))
|
||||||
|
&& !connectedUser.getUserGroups().contains(userGroupsSpace)
|
||||||
|
&& !connectedUser.getUserGroups().contains(userGroupsProject)) {
|
||||||
|
return Response.status(Response.Status.NOT_FOUND).entity("User not allowed to access workspace/project").build();
|
||||||
|
}
|
||||||
|
GuidedRulesTemplateDefinition guidedRulesTemplateDefinition = guidedRulestemplateDefinitionRepository.findByTemplateNameAndProjectGroup(templateName, userGroupsProject);
|
||||||
|
if (guidedRulesTemplateDefinition == null) {
|
||||||
|
return Response.status(Response.Status.NOT_FOUND).entity("Guided rule template not found").build();
|
||||||
|
}
|
||||||
|
GuidedRuleTemplate guidedRuleTemplate = new GuidedRuleTemplate();
|
||||||
|
for (VariableDefinition elt : guidedRulesTemplateDefinition.getVariables()) {
|
||||||
|
guidedRuleTemplate.getDefinitionList().put(elt.getVarName(), elt.getDataType());
|
||||||
|
}
|
||||||
|
|
||||||
|
guidedRuleTemplate.setName(templateName);
|
||||||
|
guidedRuleTemplate.setSpaceName(spaceName);
|
||||||
|
guidedRuleTemplate.setProjectName(projectName);
|
||||||
|
if (userGroupsSpace.getKieWorkbench() != null) {
|
||||||
|
guidedRuleTemplate.setWorkbenchName(userGroupsSpace.getKieWorkbench().getName());
|
||||||
|
}
|
||||||
|
List<GuidedRulesTemplateData> guidedRulesTemplateDatas = guidedRulestemplateDataRepository.findByGuidedRulesTemplateDefinition(guidedRulesTemplateDefinition);
|
||||||
|
|
||||||
|
for (GuidedRulesTemplateData elt : guidedRulesTemplateDatas) {
|
||||||
|
GuidedRuleTemplateDataRow guidedRuleTemplateDataRow = new GuidedRuleTemplateDataRow();
|
||||||
|
guidedRuleTemplate.getRows().add(guidedRuleTemplateDataRow);
|
||||||
|
guidedRuleTemplateDataRow.setLineID(elt.getLineID());
|
||||||
|
for (VariableData elt2 : elt.getRows()) {
|
||||||
|
if (elt2.getVarName()!= null) {
|
||||||
|
if (elt2.getStringValue() != null) {
|
||||||
|
guidedRuleTemplateDataRow.getDataList().put(elt2.getVarName(), elt2.getStringValue());
|
||||||
|
} else if (elt2.getBigDecimalValue() != null) {
|
||||||
|
guidedRuleTemplateDataRow.getDataList().put(elt2.getVarName(), elt2.getBigDecimalValue());
|
||||||
|
} else if (elt2.getDoubleValue() != null) {
|
||||||
|
guidedRuleTemplateDataRow.getDataList().put(elt2.getVarName(), elt2.getDoubleValue());
|
||||||
|
} else if (elt2.getLongValue() != null) {
|
||||||
|
guidedRuleTemplateDataRow.getDataList().put(elt2.getVarName(), elt2.getLongValue());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
return new ResponseEntity<>(extractedResponse, clientHttpResponse.getHeaders(), clientHttpResponse.getStatusCode());
|
|
||||||
});
|
|
||||||
jobService.executeWrite(kieWorkbench.getExternalUrl()+"/rest", connectedUser.getLogin(), connectedUser.getPassword(), null, response.getBody().getJobId(), null);
|
|
||||||
|
|
||||||
completeurl = kieWorkbench.getExternalUrl() + "/rest/chtijbug/"+spaceName+"/"+projectRequest.getName()+"/dependency";
|
|
||||||
ResponseEntity<PlatformProjectData> response2 = restTemplateKiewb
|
|
||||||
.execute(completeurl, HttpMethod.PUT, requestCallback(request, connectedUser.getLogin(), connectedUser.getPassword()), clientHttpResponse -> {
|
|
||||||
PlatformProjectData extractedResponse = null;
|
|
||||||
if (clientHttpResponse.getBody() != null) {
|
|
||||||
Scanner s = new Scanner(clientHttpResponse.getBody()).useDelimiter("\\A");
|
|
||||||
String result = s.hasNext() ? s.next() : "";
|
|
||||||
extractedResponse = mapper.readValue(result, PlatformProjectData.class);
|
|
||||||
|
|
||||||
}
|
|
||||||
return new ResponseEntity<>(extractedResponse, clientHttpResponse.getHeaders(), clientHttpResponse.getStatusCode());
|
|
||||||
});
|
|
||||||
|
|
||||||
|
|
||||||
Variant variant = Variant.mediaTypes(javax.ws.rs.core.MediaType.APPLICATION_JSON_TYPE).add().build().get(0);
|
Variant variant = Variant.mediaTypes(javax.ws.rs.core.MediaType.APPLICATION_JSON_TYPE).add().build().get(0);
|
||||||
UserGroups workspaceUsergroup = userGroupsRepository.findByName("wrk_" + spaceName);
|
return Response.status(Response.Status.CREATED).entity(guidedRuleTemplate).variant(variant).build();
|
||||||
projectPersistService.createProjectGroupIfNeeded(request.getName(),kieWorkbench,null,workspaceUsergroup);
|
}
|
||||||
return Response.status(Response.Status.CREATED).entity(response2.getBody()).variant(variant).build();
|
|
||||||
|
@PutMapping(value = "/{spaceName}/{projectName}/grt/{templateName}/data/{lineID}",
|
||||||
|
consumes = {javax.ws.rs.core.MediaType.APPLICATION_JSON, javax.ws.rs.core.MediaType.APPLICATION_XML},
|
||||||
|
produces = {javax.ws.rs.core.MediaType.APPLICATION_JSON, javax.ws.rs.core.MediaType.APPLICATION_XML})
|
||||||
|
@ApiOperation(value = "update Template dta row", notes = "updates row of a guided rule template", response = GuidedRuleTemplateDataRow.class)
|
||||||
|
@ApiResponses({
|
||||||
|
@ApiResponse(code = 200, message = "OK", response = GuidedRuleTemplateDataRow.class)
|
||||||
|
})
|
||||||
|
public Response updateTemplateData(@PathVariable("spaceName") String spaceName, @PathVariable("projectName") String projectName,
|
||||||
|
@PathVariable("templateName") String templateName, @PathVariable("lineID") String lineID,
|
||||||
|
@RequestBody GuidedRuleTemplateDataRow updatedRow) {
|
||||||
|
Authentication authentication = SecurityContextHolder.getContext().getAuthentication();
|
||||||
|
String currentPrincipalName = authentication.getName();
|
||||||
|
|
||||||
|
User connectedUser = userRepository.findByLogin(currentPrincipalName);
|
||||||
|
UserGroups userGroupsSpace = userGroupsRepository.findBySpaceName(spaceName);
|
||||||
|
if (userGroupsSpace == null) {
|
||||||
|
return Response.status(Response.Status.NOT_FOUND).entity("Space not found").build();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
UserGroups userGroupsProject = userGroupsRepository.findByWorkspaceUserGroupAndProjectName(userGroupsSpace, projectName);
|
||||||
|
if (userGroupsProject == null) {
|
||||||
|
return Response.status(Response.Status.NOT_FOUND).entity("Project not found").build();
|
||||||
|
}
|
||||||
|
if (!connectedUser.getUserRoles().contains(userRolesRepository.findByName("admin"))
|
||||||
|
&& !connectedUser.getUserGroups().contains(userGroupsSpace)
|
||||||
|
&& !connectedUser.getUserGroups().contains(userGroupsProject)) {
|
||||||
|
return Response.status(Response.Status.NOT_FOUND).entity("User not allowed to access workspace/project").build();
|
||||||
|
}
|
||||||
|
GuidedRulesTemplateDefinition guidedRulesTemplateDefinition = guidedRulestemplateDefinitionRepository.findByTemplateNameAndProjectGroup(templateName, userGroupsProject);
|
||||||
|
if (guidedRulesTemplateDefinition == null) {
|
||||||
|
return Response.status(Response.Status.NOT_FOUND).entity("Guided rule template not found").build();
|
||||||
|
}
|
||||||
|
if (updatedRow == null) {
|
||||||
|
return Response.status(Response.Status.NO_CONTENT).entity("No data ").build();
|
||||||
|
}
|
||||||
|
|
||||||
|
GuidedRulesTemplateData guidedRulesTemplateData = guidedRulestemplateDataRepository.findByGuidedRulesTemplateDefinitionAndLineID(guidedRulesTemplateDefinition, lineID);
|
||||||
|
if (guidedRulesTemplateData == null) {
|
||||||
|
return Response.status(Response.Status.NO_CONTENT).entity("Line ID not existing ").build();
|
||||||
|
}
|
||||||
|
Map<String, VariableDefinition> defData = new HashMap<>();
|
||||||
|
for (VariableDefinition dataDefinition : guidedRulesTemplateDefinition.getVariables()) {
|
||||||
|
defData.put(dataDefinition.getVarName(), dataDefinition);
|
||||||
|
}
|
||||||
|
String assetSource = kieRepositoryService.getAssetSource(userGroupsSpace.getKieWorkbench().getExternalUrl() + "/rest", connectedUser.getLogin(), connectedUser.getPassword(), spaceName, projectName, templateName);
|
||||||
|
TemplateModel model = RuleTemplateModelXMLPersistenceImpl.getInstance().unmarshal(assetSource);
|
||||||
|
Object[] indexes = model.getTable().get(ID_COLUMN_NAME).toArray();
|
||||||
|
int foundIndex=0;
|
||||||
|
boolean found=false;
|
||||||
|
for (Object o : indexes){
|
||||||
|
if (o.equals(lineID)){
|
||||||
|
found=true;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
foundIndex++;
|
||||||
|
}
|
||||||
|
if (found) {
|
||||||
|
Map<InterpolationVariable, Integer> variableIntegerMap = this.getInterpolationVariables(model);
|
||||||
|
String[] rowContent = new String[variableIntegerMap.size() - 1];
|
||||||
|
|
||||||
|
for (Map.Entry<InterpolationVariable, Integer> entry : variableIntegerMap.entrySet()) {
|
||||||
|
if (!entry.getKey().getVarName().equals(ID_COLUMN_NAME)) {
|
||||||
|
|
||||||
|
Object data = updatedRow.getDataList().get(entry.getKey().getVarName());
|
||||||
|
if (data != null) {
|
||||||
|
model.setValue(entry.getKey().getVarName(), foundIndex, data.toString());
|
||||||
|
} else {
|
||||||
|
model.setValue(entry.getKey().getVarName(), foundIndex, "");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
String newAssetSource=RuleTemplateModelXMLPersistenceImpl.getInstance().marshal(model);
|
||||||
|
kieRepositoryService.updateAssetSource(userGroupsSpace.getKieWorkbench().getExternalUrl() + "/rest", connectedUser.getLogin(), connectedUser.getPassword(), spaceName, projectName, templateName,newAssetSource);
|
||||||
|
|
||||||
|
Enumeration e = updatedRow.getDataList().keys();
|
||||||
|
while (e.hasMoreElements()) {
|
||||||
|
String variableName = (String) e.nextElement();
|
||||||
|
Object variableData = updatedRow.getDataList().get(variableName);
|
||||||
|
for (VariableData variableData1 : guidedRulesTemplateData.getRows()) {
|
||||||
|
VariableDefinition dataDefinition = defData.get(variableData1.getVarName());
|
||||||
|
if (dataDefinition.getVarName().equals(variableName)) {
|
||||||
|
if ("String".equals(dataDefinition.getDataType())) {
|
||||||
|
variableData1.setStringValue((String) variableData);
|
||||||
|
} else if ("Long".equals(dataDefinition.getDataType())) {
|
||||||
|
if (variableData != null) {
|
||||||
|
Long ll = (Long) variableData;
|
||||||
|
variableData1.setLongValue(ll);
|
||||||
|
}
|
||||||
|
} else if ("Double".equals(dataDefinition.getDataType())) {
|
||||||
|
if (variableData != null) {
|
||||||
|
Double dd = (Double) variableData;
|
||||||
|
variableData1.setDoubleValue(dd);
|
||||||
|
}
|
||||||
|
} else if ("BigDecimal".equals(dataDefinition.getDataType())) {
|
||||||
|
if (variableData != null) {
|
||||||
|
BigDecimal bg = (BigDecimal) variableData;
|
||||||
|
variableData1.setBigDecimalValue(bg);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
guidedRulestemplateDataRepository.save(guidedRulesTemplateData);
|
||||||
|
Variant variant = Variant.mediaTypes(javax.ws.rs.core.MediaType.APPLICATION_JSON_TYPE).add().build().get(0);
|
||||||
|
return Response.status(Response.Status.OK).entity(updatedRow).variant(variant).build();
|
||||||
|
}else{
|
||||||
|
Variant variant = Variant.mediaTypes(javax.ws.rs.core.MediaType.APPLICATION_JSON_TYPE).add().build().get(0);
|
||||||
|
return Response.status(Response.Status.NOT_FOUND).entity(updatedRow).variant(variant).build();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@PostMapping(value = "/{spaceName}/{projectName}/grt/{templateName}/data",
|
||||||
|
consumes = {javax.ws.rs.core.MediaType.APPLICATION_JSON, javax.ws.rs.core.MediaType.APPLICATION_XML},
|
||||||
|
produces = {javax.ws.rs.core.MediaType.APPLICATION_JSON, javax.ws.rs.core.MediaType.APPLICATION_XML})
|
||||||
|
@ApiOperation(value = "create Template dta row", notes = "creates row of a guided rule template", response = GuidedRuleTemplateDataRow.class)
|
||||||
|
@ApiResponses({
|
||||||
|
@ApiResponse(code = 200, message = "OK", response = GuidedRuleTemplateDataRow.class)
|
||||||
|
})
|
||||||
|
|
||||||
|
|
||||||
|
public Response createTemplateData(@PathVariable("spaceName") String spaceName, @PathVariable("projectName") String projectName,
|
||||||
|
@PathVariable("templateName") String templateName,
|
||||||
|
@RequestBody GuidedRuleTemplateDataRow updatedRow) {
|
||||||
|
Authentication authentication = SecurityContextHolder.getContext().getAuthentication();
|
||||||
|
String currentPrincipalName = authentication.getName();
|
||||||
|
|
||||||
|
User connectedUser = userRepository.findByLogin(currentPrincipalName);
|
||||||
|
UserGroups userGroupsSpace = userGroupsRepository.findBySpaceName(spaceName);
|
||||||
|
if (userGroupsSpace == null) {
|
||||||
|
return Response.status(Response.Status.NOT_FOUND).entity("Space not found").build();
|
||||||
|
}
|
||||||
|
UserGroups userGroupsProject = userGroupsRepository.findByWorkspaceUserGroupAndProjectName(userGroupsSpace, projectName);
|
||||||
|
if (userGroupsProject == null) {
|
||||||
|
return Response.status(Response.Status.NOT_FOUND).entity("Project not found").build();
|
||||||
|
}
|
||||||
|
if (!connectedUser.getUserRoles().contains(userRolesRepository.findByName("admin"))
|
||||||
|
&& !connectedUser.getUserGroups().contains(userGroupsSpace)
|
||||||
|
&& !connectedUser.getUserGroups().contains(userGroupsProject)) {
|
||||||
|
return Response.status(Response.Status.NOT_FOUND).entity("User not allowed to access workspace/project").build();
|
||||||
|
}
|
||||||
|
GuidedRulesTemplateDefinition guidedRulesTemplateDefinition = guidedRulestemplateDefinitionRepository.findByTemplateNameAndProjectGroup(templateName, userGroupsProject);
|
||||||
|
if (guidedRulesTemplateDefinition == null) {
|
||||||
|
return Response.status(Response.Status.NOT_FOUND).entity("Guided rule template not found").build();
|
||||||
|
}
|
||||||
|
if (updatedRow == null) {
|
||||||
|
return Response.status(Response.Status.NO_CONTENT).entity("No data ").build();
|
||||||
|
}
|
||||||
|
|
||||||
|
GuidedRulesTemplateData guidedRulesTemplateData = new GuidedRulesTemplateData();
|
||||||
|
guidedRulesTemplateData.setGuidedRulesTemplateDefinition(guidedRulesTemplateDefinition);
|
||||||
|
Map<String, VariableDefinition> defData = new HashMap<>();
|
||||||
|
for (VariableDefinition dataDefinition : guidedRulesTemplateDefinition.getVariables()) {
|
||||||
|
defData.put(dataDefinition.getVarName(), dataDefinition);
|
||||||
|
}
|
||||||
|
String assetSource = kieRepositoryService.getAssetSource(userGroupsSpace.getKieWorkbench().getExternalUrl() + "/rest", connectedUser.getLogin(), connectedUser.getPassword(), spaceName, projectName, templateName);
|
||||||
|
TemplateModel model = RuleTemplateModelXMLPersistenceImpl.getInstance().unmarshal(assetSource);
|
||||||
|
Map<InterpolationVariable, Integer> variableIntegerMap = this.getInterpolationVariables(model);
|
||||||
|
String[] rowContent = new String[variableIntegerMap.size()-1];
|
||||||
|
|
||||||
|
for (Map.Entry<InterpolationVariable, Integer> entry : variableIntegerMap.entrySet()){
|
||||||
|
if (!entry.getKey().getVarName().equals(ID_COLUMN_NAME)) {
|
||||||
|
Object data = updatedRow.getDataList().get(entry.getKey().getVarName());
|
||||||
|
if (data != null) {
|
||||||
|
rowContent[entry.getValue()] = data.toString();
|
||||||
|
} else {
|
||||||
|
rowContent[entry.getValue()] = "";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
String lineID = model.addRow(rowContent);
|
||||||
|
guidedRulesTemplateData.setLineID(lineID);
|
||||||
|
|
||||||
|
String newAssetSource=RuleTemplateModelXMLPersistenceImpl.getInstance().marshal(model);
|
||||||
|
kieRepositoryService.updateAssetSource(userGroupsSpace.getKieWorkbench().getExternalUrl() + "/rest", connectedUser.getLogin(), connectedUser.getPassword(), spaceName, projectName, templateName,newAssetSource);
|
||||||
|
|
||||||
|
Enumeration e = updatedRow.getDataList().keys();
|
||||||
|
while (e.hasMoreElements()) {
|
||||||
|
String variableName = (String) e.nextElement();
|
||||||
|
Object variableData = updatedRow.getDataList().get(variableName);
|
||||||
|
VariableData variableData1 = new VariableData();
|
||||||
|
guidedRulesTemplateData.getRows().add(variableData1);
|
||||||
|
variableData1.setVarName(variableName);
|
||||||
|
VariableDefinition dataDefinition = defData.get(variableName);
|
||||||
|
if (dataDefinition!= null
|
||||||
|
&& dataDefinition.getVarName().equals(variableName)) {
|
||||||
|
if ("String".equals(dataDefinition.getDataType())) {
|
||||||
|
variableData1.setStringValue((String) variableData);
|
||||||
|
} else if ("Long".equals(dataDefinition.getDataType())) {
|
||||||
|
if (variableData != null) {
|
||||||
|
Long ll = (Long) variableData;
|
||||||
|
variableData1.setLongValue(ll);
|
||||||
|
}
|
||||||
|
} else if ("Double".equals(dataDefinition.getDataType())) {
|
||||||
|
if (variableData != null) {
|
||||||
|
Double dd = (Double) variableData;
|
||||||
|
variableData1.setDoubleValue(dd);
|
||||||
|
}
|
||||||
|
} else if ("BigDecimal".equals(dataDefinition.getDataType())) {
|
||||||
|
if (variableData != null) {
|
||||||
|
BigDecimal bg = (BigDecimal) variableData;
|
||||||
|
variableData1.setBigDecimalValue(bg);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
guidedRulestemplateDataRepository.save(guidedRulesTemplateData);
|
||||||
|
Variant variant = Variant.mediaTypes(javax.ws.rs.core.MediaType.APPLICATION_JSON_TYPE).add().build().get(0);
|
||||||
|
updatedRow.setLineID(lineID);
|
||||||
|
return Response.status(Response.Status.OK).entity(updatedRow).variant(variant).build();
|
||||||
|
}
|
||||||
|
|
||||||
|
@DeleteMapping(value = "/{spaceName}/{projectName}/grt/{templateName}/data/{lineID}",
|
||||||
|
consumes = {javax.ws.rs.core.MediaType.APPLICATION_JSON, javax.ws.rs.core.MediaType.APPLICATION_XML},
|
||||||
|
produces = {javax.ws.rs.core.MediaType.APPLICATION_JSON, javax.ws.rs.core.MediaType.APPLICATION_XML})
|
||||||
|
@ApiOperation(value = "delete Template dta row", notes = "deletes row of a guided rule template", response = GuidedRuleTemplateDataRow.class)
|
||||||
|
@ApiResponses({
|
||||||
|
@ApiResponse(code = 200, message = "OK", response = Response.class)
|
||||||
|
})
|
||||||
|
public Response deleteemplateData(@PathVariable("spaceName") String spaceName, @PathVariable("projectName") String projectName,
|
||||||
|
@PathVariable("templateName") String templateName, @PathVariable("lineID") String lineID) {
|
||||||
|
Authentication authentication = SecurityContextHolder.getContext().getAuthentication();
|
||||||
|
String currentPrincipalName = authentication.getName();
|
||||||
|
|
||||||
|
User connectedUser = userRepository.findByLogin(currentPrincipalName);
|
||||||
|
UserGroups userGroupsSpace = userGroupsRepository.findBySpaceName(spaceName);
|
||||||
|
if (userGroupsSpace == null) {
|
||||||
|
return Response.status(Response.Status.NOT_FOUND).entity("Space not found").build();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
UserGroups userGroupsProject = userGroupsRepository.findByWorkspaceUserGroupAndProjectName(userGroupsSpace, projectName);
|
||||||
|
if (userGroupsProject == null) {
|
||||||
|
return Response.status(Response.Status.NOT_FOUND).entity("Project not found").build();
|
||||||
|
}
|
||||||
|
if (!connectedUser.getUserRoles().contains(userRolesRepository.findByName("admin"))
|
||||||
|
&& !connectedUser.getUserGroups().contains(userGroupsSpace)
|
||||||
|
&& !connectedUser.getUserGroups().contains(userGroupsProject)) {
|
||||||
|
return Response.status(Response.Status.NOT_FOUND).entity("User not allowed to access workspace/project").build();
|
||||||
|
}
|
||||||
|
GuidedRulesTemplateDefinition guidedRulesTemplateDefinition = guidedRulestemplateDefinitionRepository.findByTemplateNameAndProjectGroup(templateName, userGroupsProject);
|
||||||
|
if (guidedRulesTemplateDefinition == null) {
|
||||||
|
return Response.status(Response.Status.NOT_FOUND).entity("Guided rule template not found").build();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
GuidedRulesTemplateData guidedRulesTemplateData = guidedRulestemplateDataRepository.findByGuidedRulesTemplateDefinitionAndLineID(guidedRulesTemplateDefinition, lineID);
|
||||||
|
if (guidedRulesTemplateData == null) {
|
||||||
|
return Response.status(Response.Status.NOT_FOUND).entity("Line ID not existing ").build();
|
||||||
|
}
|
||||||
|
String assetSource = kieRepositoryService.getAssetSource(userGroupsSpace.getKieWorkbench().getExternalUrl() + "/rest", connectedUser.getLogin(), connectedUser.getPassword(), spaceName, projectName, templateName);
|
||||||
|
TemplateModel model = RuleTemplateModelXMLPersistenceImpl.getInstance().unmarshal(assetSource);
|
||||||
|
model.removeRowById(lineID);
|
||||||
|
String newAssetSource=RuleTemplateModelXMLPersistenceImpl.getInstance().marshal(model);
|
||||||
|
kieRepositoryService.updateAssetSource(userGroupsSpace.getKieWorkbench().getExternalUrl() + "/rest", connectedUser.getLogin(), connectedUser.getPassword(), spaceName, projectName, templateName,newAssetSource);
|
||||||
|
|
||||||
|
guidedRulestemplateDataRepository.delete(guidedRulesTemplateData);
|
||||||
|
Variant variant = Variant.mediaTypes(javax.ws.rs.core.MediaType.APPLICATION_JSON_TYPE).add().build().get(0);
|
||||||
|
return Response.status(Response.Status.OK).variant(variant).build();
|
||||||
}
|
}
|
||||||
private RequestCallback requestCallback(final Object content, String username, String password) {
|
private RequestCallback requestCallback(final Object content, String username, String password) {
|
||||||
return clientHttpRequest -> {
|
return clientHttpRequest -> {
|
||||||
|
|
@ -180,5 +433,18 @@ public class AssetServiceExpose {
|
||||||
HttpHeaders.AUTHORIZATION, authHeader);
|
HttpHeaders.AUTHORIZATION, authHeader);
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
private Map<InterpolationVariable, Integer> getInterpolationVariables(TemplateModel templateModel) {
|
||||||
|
final Map<InterpolationVariable, Integer> variables = new HashMap<InterpolationVariable, Integer>();
|
||||||
|
|
||||||
|
new RuleModelVisitor(variables).visit(templateModel);
|
||||||
|
|
||||||
|
final Map<InterpolationVariable, Integer> result = new InterpolationVariableCollector(variables).getMap();
|
||||||
|
|
||||||
|
InterpolationVariable id = new InterpolationVariable(ID_COLUMN_NAME,
|
||||||
|
DataType.TYPE_NUMERIC_LONG);
|
||||||
|
result.put(id,
|
||||||
|
result.size());
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,6 @@
|
||||||
package org.chtijbug.drools.console.restexpose;
|
package org.chtijbug.drools.console.restexpose;
|
||||||
|
|
||||||
|
import io.swagger.annotations.Api;
|
||||||
import org.chtijbug.drools.console.service.IndexerService;
|
import org.chtijbug.drools.console.service.IndexerService;
|
||||||
import org.chtijbug.drools.proxy.persistence.model.BusinessTransactionAction;
|
import org.chtijbug.drools.proxy.persistence.model.BusinessTransactionAction;
|
||||||
import org.chtijbug.drools.proxy.persistence.model.BusinessTransactionPersistence;
|
import org.chtijbug.drools.proxy.persistence.model.BusinessTransactionPersistence;
|
||||||
|
|
@ -13,7 +14,8 @@ import javax.servlet.http.HttpServletResponse;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
@RestController
|
@RestController
|
||||||
@RequestMapping("/api/elasticSearch")
|
@RequestMapping("/api/logging")
|
||||||
|
@Api("/api/logging")
|
||||||
public class ElasticSearchExpose {
|
public class ElasticSearchExpose {
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,194 @@
|
||||||
|
package org.chtijbug.drools.console.restexpose;
|
||||||
|
|
||||||
|
import com.fasterxml.jackson.databind.ObjectMapper;
|
||||||
|
import io.swagger.annotations.Api;
|
||||||
|
import io.swagger.annotations.ApiOperation;
|
||||||
|
import io.swagger.annotations.ApiResponse;
|
||||||
|
import io.swagger.annotations.ApiResponses;
|
||||||
|
import io.swagger.v3.oas.annotations.OpenAPIDefinition;
|
||||||
|
import org.apache.commons.codec.binary.Base64;
|
||||||
|
import org.chtijbug.drools.console.service.IndexerService;
|
||||||
|
import org.chtijbug.drools.console.service.JobService;
|
||||||
|
import org.chtijbug.drools.console.service.ProjectPersistService;
|
||||||
|
import org.chtijbug.drools.proxy.persistence.model.KieWorkbench;
|
||||||
|
import org.chtijbug.drools.proxy.persistence.model.User;
|
||||||
|
import org.chtijbug.drools.proxy.persistence.model.UserGroups;
|
||||||
|
import org.chtijbug.drools.proxy.persistence.repository.KieWorkbenchRepository;
|
||||||
|
import org.chtijbug.drools.proxy.persistence.repository.UserGroupsRepository;
|
||||||
|
import org.chtijbug.drools.proxy.persistence.repository.UserRepository;
|
||||||
|
import org.chtijbug.guvnor.server.jaxrs.model.PlatformProjectData;
|
||||||
|
import org.guvnor.rest.client.CreateProjectJobRequest;
|
||||||
|
import org.guvnor.rest.client.CreateProjectRequest;
|
||||||
|
import org.guvnor.rest.client.Space;
|
||||||
|
import org.guvnor.rest.client.SpaceRequest;
|
||||||
|
import org.kie.server.api.model.KieServerInfo;
|
||||||
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
import org.springframework.http.HttpHeaders;
|
||||||
|
import org.springframework.http.HttpMethod;
|
||||||
|
import org.springframework.http.MediaType;
|
||||||
|
import org.springframework.http.ResponseEntity;
|
||||||
|
import org.springframework.security.core.Authentication;
|
||||||
|
import org.springframework.security.core.context.SecurityContextHolder;
|
||||||
|
import org.springframework.web.bind.annotation.*;
|
||||||
|
import org.springframework.web.client.RequestCallback;
|
||||||
|
import org.springframework.web.client.RestTemplate;
|
||||||
|
|
||||||
|
import javax.ws.rs.core.Response;
|
||||||
|
import javax.ws.rs.core.Variant;
|
||||||
|
import java.nio.charset.StandardCharsets;
|
||||||
|
import java.util.Scanner;
|
||||||
|
|
||||||
|
@RestController
|
||||||
|
@RequestMapping("/api/wb")
|
||||||
|
@Api("/api/wb")
|
||||||
|
public class ProjectWorkspaceServiceExpose {
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private IndexerService indexerService;
|
||||||
|
|
||||||
|
private RestTemplate restTemplateKiewb = new RestTemplate();
|
||||||
|
|
||||||
|
private ObjectMapper mapper = new ObjectMapper();
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private KieWorkbenchRepository kieWorkbenchRepository;
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private UserGroupsRepository userGroupsRepository;
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private UserRepository userRepository;
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private JobService jobService;
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private ProjectPersistService projectPersistService;
|
||||||
|
|
||||||
|
@PostMapping(value = "/spaces",
|
||||||
|
consumes = {javax.ws.rs.core.MediaType.APPLICATION_JSON, javax.ws.rs.core.MediaType.APPLICATION_XML},
|
||||||
|
produces = {javax.ws.rs.core.MediaType.APPLICATION_JSON, javax.ws.rs.core.MediaType.APPLICATION_XML})
|
||||||
|
@ApiOperation(value = "Create Workspace", notes = "Creating a workspace in specified workbench name in body", response = SpaceRequest.class)
|
||||||
|
@ApiResponses({
|
||||||
|
@ApiResponse(code = 201, message = "Created", response = SpaceRequest.class)
|
||||||
|
})
|
||||||
|
public Response createWorkSpace(@RequestBody PlatformProjectData request) {
|
||||||
|
String wbName = "demo";
|
||||||
|
if (request.getWbName() != null
|
||||||
|
&& !request.getWbName().isEmpty()) {
|
||||||
|
wbName = request.getWbName();
|
||||||
|
}
|
||||||
|
KieWorkbench kieWorkbench = kieWorkbenchRepository.findByName(wbName);
|
||||||
|
if (kieWorkbench == null) {
|
||||||
|
return Response.status(Response.Status.NOT_FOUND).entity("Workbench not found").build();
|
||||||
|
}
|
||||||
|
String completeurl = kieWorkbench.getExternalUrl() + "/rest/spaces";
|
||||||
|
Space space = new Space();
|
||||||
|
space.setName(request.getSpaceName());
|
||||||
|
space.setDescription(request.getDescription());
|
||||||
|
space.setDefaultGroupId(request.getGroupId());
|
||||||
|
Authentication authentication = SecurityContextHolder.getContext().getAuthentication();
|
||||||
|
String currentPrincipalName = authentication.getName();
|
||||||
|
space.setOwner(authentication.getName());
|
||||||
|
|
||||||
|
User connectedUser = userRepository.findByLogin(currentPrincipalName);
|
||||||
|
ResponseEntity<SpaceRequest> response = restTemplateKiewb
|
||||||
|
.execute(completeurl, HttpMethod.POST, requestCallback(space, connectedUser.getLogin(), connectedUser.getPassword()), clientHttpResponse -> {
|
||||||
|
SpaceRequest extractedResponse = null;
|
||||||
|
if (clientHttpResponse.getBody() != null) {
|
||||||
|
Scanner s = new Scanner(clientHttpResponse.getBody()).useDelimiter("\\A");
|
||||||
|
String result = s.hasNext() ? s.next() : "";
|
||||||
|
extractedResponse = mapper.readValue(result, SpaceRequest.class);
|
||||||
|
|
||||||
|
}
|
||||||
|
return new ResponseEntity<>(extractedResponse, clientHttpResponse.getHeaders(), clientHttpResponse.getStatusCode());
|
||||||
|
});
|
||||||
|
projectPersistService.createWorkSpaceGroupIfNeeded(request.getSpaceName(),kieWorkbench);
|
||||||
|
jobService.executeWrite(kieWorkbench.getExternalUrl()+"/rest", connectedUser.getLogin(), connectedUser.getPassword(), null, response.getBody().getJobId(), null);
|
||||||
|
Variant variant = Variant.mediaTypes(javax.ws.rs.core.MediaType.APPLICATION_JSON_TYPE).add().build().get(0);
|
||||||
|
return Response.status(Response.Status.CREATED).entity(response.getBody()).variant(variant).build();
|
||||||
|
}
|
||||||
|
|
||||||
|
@PostMapping(value = "/spaces/{spaceName}/projects",
|
||||||
|
consumes = {javax.ws.rs.core.MediaType.APPLICATION_JSON, javax.ws.rs.core.MediaType.APPLICATION_XML},
|
||||||
|
produces = {javax.ws.rs.core.MediaType.APPLICATION_JSON, javax.ws.rs.core.MediaType.APPLICATION_XML})
|
||||||
|
public Response createProject(@PathVariable("spaceName") String spaceName,@RequestBody PlatformProjectData request) {
|
||||||
|
String wbName = "demo";
|
||||||
|
if (request.getWbName() != null
|
||||||
|
&& !request.getWbName().isEmpty()) {
|
||||||
|
wbName = request.getWbName();
|
||||||
|
}
|
||||||
|
KieWorkbench kieWorkbench = kieWorkbenchRepository.findByName(wbName);
|
||||||
|
if (kieWorkbench == null) {
|
||||||
|
return Response.status(Response.Status.NOT_FOUND).entity("Workbench not found").build();
|
||||||
|
}
|
||||||
|
String completeurl = kieWorkbench.getExternalUrl() + "/rest/spaces/"+spaceName+"/projects";
|
||||||
|
CreateProjectRequest projectRequest = new CreateProjectRequest();
|
||||||
|
|
||||||
|
projectRequest.setName(request.getName());
|
||||||
|
projectRequest.setGroupId(request.getGroupId());
|
||||||
|
projectRequest.setVersion(request.getVersion());
|
||||||
|
projectRequest.setDescription(request.getDescription());
|
||||||
|
|
||||||
|
Authentication authentication = SecurityContextHolder.getContext().getAuthentication();
|
||||||
|
String currentPrincipalName = authentication.getName();
|
||||||
|
|
||||||
|
User connectedUser = userRepository.findByLogin(currentPrincipalName);
|
||||||
|
ResponseEntity<CreateProjectJobRequest> response = restTemplateKiewb
|
||||||
|
.execute(completeurl, HttpMethod.POST, requestCallback(projectRequest, connectedUser.getLogin(), connectedUser.getPassword()), clientHttpResponse -> {
|
||||||
|
CreateProjectJobRequest extractedResponse = null;
|
||||||
|
if (clientHttpResponse.getBody() != null) {
|
||||||
|
Scanner s = new Scanner(clientHttpResponse.getBody()).useDelimiter("\\A");
|
||||||
|
String result = s.hasNext() ? s.next() : "";
|
||||||
|
extractedResponse = mapper.readValue(result, CreateProjectJobRequest.class);
|
||||||
|
|
||||||
|
}
|
||||||
|
return new ResponseEntity<>(extractedResponse, clientHttpResponse.getHeaders(), clientHttpResponse.getStatusCode());
|
||||||
|
});
|
||||||
|
jobService.executeWrite(kieWorkbench.getExternalUrl()+"/rest", connectedUser.getLogin(), connectedUser.getPassword(), null, response.getBody().getJobId(), null);
|
||||||
|
|
||||||
|
completeurl = kieWorkbench.getExternalUrl() + "/rest/chtijbug/"+spaceName+"/"+projectRequest.getName()+"/dependency";
|
||||||
|
ResponseEntity<PlatformProjectData> response2 = restTemplateKiewb
|
||||||
|
.execute(completeurl, HttpMethod.PUT, requestCallback(request, connectedUser.getLogin(), connectedUser.getPassword()), clientHttpResponse -> {
|
||||||
|
PlatformProjectData extractedResponse = null;
|
||||||
|
if (clientHttpResponse.getBody() != null) {
|
||||||
|
Scanner s = new Scanner(clientHttpResponse.getBody()).useDelimiter("\\A");
|
||||||
|
String result = s.hasNext() ? s.next() : "";
|
||||||
|
extractedResponse = mapper.readValue(result, PlatformProjectData.class);
|
||||||
|
|
||||||
|
}
|
||||||
|
return new ResponseEntity<>(extractedResponse, clientHttpResponse.getHeaders(), clientHttpResponse.getStatusCode());
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
|
Variant variant = Variant.mediaTypes(javax.ws.rs.core.MediaType.APPLICATION_JSON_TYPE).add().build().get(0);
|
||||||
|
UserGroups workspaceUsergroup = userGroupsRepository.findByName("wrk_" + spaceName);
|
||||||
|
projectPersistService.createProjectGroupIfNeeded(request.getName(),kieWorkbench,null,workspaceUsergroup);
|
||||||
|
return Response.status(Response.Status.CREATED).entity(response2.getBody()).variant(variant).build();
|
||||||
|
}
|
||||||
|
private RequestCallback requestCallback(final Object content, String username, String password) {
|
||||||
|
return clientHttpRequest -> {
|
||||||
|
|
||||||
|
if (content != null) {
|
||||||
|
if (content instanceof KieServerInfo) {
|
||||||
|
KieServerInfo kieServerSetup = (KieServerInfo) content;
|
||||||
|
|
||||||
|
mapper.writeValue(clientHttpRequest.getBody(), kieServerSetup);
|
||||||
|
} else {
|
||||||
|
mapper.writeValue(clientHttpRequest.getBody(), content);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
clientHttpRequest.getHeaders().add(
|
||||||
|
HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON_VALUE);
|
||||||
|
clientHttpRequest.getHeaders().add(
|
||||||
|
HttpHeaders.ACCEPT, MediaType.APPLICATION_JSON_VALUE);
|
||||||
|
String auth = username + ":" + password;
|
||||||
|
byte[] encodedAuth = Base64.encodeBase64(
|
||||||
|
auth.getBytes(StandardCharsets.UTF_8));
|
||||||
|
String authHeader = "Basic " + new String(encodedAuth);
|
||||||
|
clientHttpRequest.getHeaders().add(
|
||||||
|
HttpHeaders.AUTHORIZATION, authHeader);
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
@ -106,7 +106,7 @@ public class ProjectPersistService {
|
||||||
return projectPersist;
|
return projectPersist;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void createProjectGroupIfNeeded(String projectName, KieWorkbench kieWorkbench, ProjectPersist projectPersist, UserGroups workspaceUserGroup) {
|
public UserGroups createProjectGroupIfNeeded(String projectName, KieWorkbench kieWorkbench, ProjectPersist projectPersist, UserGroups workspaceUserGroup) {
|
||||||
UserGroups userGroups = userGroupsRepository.findByName("prj_" + projectName);
|
UserGroups userGroups = userGroupsRepository.findByName("prj_" + projectName);
|
||||||
if (userGroups == null) {
|
if (userGroups == null) {
|
||||||
UserGroups projectGroup = new UserGroups(UUID.randomUUID().toString(), "prj_" + projectName);
|
UserGroups projectGroup = new UserGroups(UUID.randomUUID().toString(), "prj_" + projectName);
|
||||||
|
|
@ -114,15 +114,16 @@ public class ProjectPersistService {
|
||||||
projectGroup.setProjectName(projectName);
|
projectGroup.setProjectName(projectName);
|
||||||
projectGroup.setProjectPersist(projectPersist);
|
projectGroup.setProjectPersist(projectPersist);
|
||||||
projectGroup.setWorkspaceUserGroup(workspaceUserGroup);
|
projectGroup.setWorkspaceUserGroup(workspaceUserGroup);
|
||||||
userGroupsRepository.save(projectGroup);
|
projectGroup = userGroupsRepository.save(projectGroup);
|
||||||
User groupUser = new User(UUID.randomUUID().toString(), "prj_user_" + projectName, "adminadmin99#");
|
User groupUser = new User(UUID.randomUUID().toString(), "prj_user_" + projectName, "adminadmin99#");
|
||||||
groupUser.getUserGroups().add(projectGroup);
|
groupUser.getUserGroups().add(projectGroup);
|
||||||
groupUser.getUserRoles().add(userRolesRepository.findByName("analyst"));
|
groupUser.getUserRoles().add(userRolesRepository.findByName("analyst"));
|
||||||
userRepository.save(groupUser);
|
userRepository.save(groupUser);
|
||||||
} else {
|
} else {
|
||||||
userGroups.setWorkspaceUserGroup(workspaceUserGroup);
|
userGroups.setWorkspaceUserGroup(workspaceUserGroup);
|
||||||
userGroupsRepository.save(userGroups);
|
userGroups=userGroupsRepository.save(userGroups);
|
||||||
}
|
}
|
||||||
|
return userGroups;
|
||||||
}
|
}
|
||||||
|
|
||||||
public UserGroups createWorkSpaceGroupIfNeeded(String workSpaceName, KieWorkbench kieWorkbench) {
|
public UserGroups createWorkSpaceGroupIfNeeded(String workSpaceName, KieWorkbench kieWorkbench) {
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,15 @@
|
||||||
|
<?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-admin-console-parent</artifactId>
|
||||||
|
<groupId>com.pymmasoftware.jbpm</groupId>
|
||||||
|
<version>1.1-SNAPSHOT</version>
|
||||||
|
</parent>
|
||||||
|
<modelVersion>4.0.0</modelVersion>
|
||||||
|
|
||||||
|
<artifactId>drools-framework-admin-dto</artifactId>
|
||||||
|
|
||||||
|
|
||||||
|
</project>
|
||||||
|
|
@ -0,0 +1,68 @@
|
||||||
|
package org.chtijbug.drools.console.dto;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.Hashtable;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
public class GuidedRuleTemplate {
|
||||||
|
|
||||||
|
private String workbenchName;
|
||||||
|
|
||||||
|
private String spaceName;
|
||||||
|
|
||||||
|
private String projectName;
|
||||||
|
|
||||||
|
private String name;
|
||||||
|
|
||||||
|
private Hashtable definitionList = new Hashtable();
|
||||||
|
|
||||||
|
private List<GuidedRuleTemplateDataRow> rows = new ArrayList<>();
|
||||||
|
|
||||||
|
public String getWorkbenchName() {
|
||||||
|
return workbenchName;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setWorkbenchName(String workbenchName) {
|
||||||
|
this.workbenchName = workbenchName;
|
||||||
|
}
|
||||||
|
|
||||||
|
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 String getName() {
|
||||||
|
return name;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setName(String name) {
|
||||||
|
this.name = name;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Hashtable getDefinitionList() {
|
||||||
|
return definitionList;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setDefinitionList(Hashtable definitionList) {
|
||||||
|
this.definitionList = definitionList;
|
||||||
|
}
|
||||||
|
|
||||||
|
public List<GuidedRuleTemplateDataRow> getRows() {
|
||||||
|
return rows;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setRows(List<GuidedRuleTemplateDataRow> rows) {
|
||||||
|
this.rows = rows;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,28 @@
|
||||||
|
package org.chtijbug.drools.console.dto;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.Hashtable;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
public class GuidedRuleTemplateDataRow {
|
||||||
|
|
||||||
|
private String lineID;
|
||||||
|
|
||||||
|
private Hashtable dataList = new Hashtable();
|
||||||
|
|
||||||
|
public String getLineID() {
|
||||||
|
return lineID;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setLineID(String lineID) {
|
||||||
|
this.lineID = lineID;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Hashtable getDataList() {
|
||||||
|
return dataList;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setDataList(Hashtable dataList) {
|
||||||
|
this.dataList = dataList;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,51 @@
|
||||||
|
package org.chtijbug.drools.console.dto;
|
||||||
|
|
||||||
|
import java.math.BigDecimal;
|
||||||
|
|
||||||
|
public class VariableData {
|
||||||
|
private String varName;
|
||||||
|
private String stringValue;
|
||||||
|
private Long longValue;
|
||||||
|
private Double doubleValue;
|
||||||
|
private BigDecimal bigDecimalValue;
|
||||||
|
|
||||||
|
public String getVarName() {
|
||||||
|
return varName;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setVarName(String varName) {
|
||||||
|
this.varName = varName;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getStringValue() {
|
||||||
|
return stringValue;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setStringValue(String stringValue) {
|
||||||
|
this.stringValue = stringValue;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Long getLongValue() {
|
||||||
|
return longValue;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setLongValue(Long longValue) {
|
||||||
|
this.longValue = longValue;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Double getDoubleValue() {
|
||||||
|
return doubleValue;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setDoubleValue(Double doubleValue) {
|
||||||
|
this.doubleValue = doubleValue;
|
||||||
|
}
|
||||||
|
|
||||||
|
public BigDecimal getBigDecimalValue() {
|
||||||
|
return bigDecimalValue;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setBigDecimalValue(BigDecimal bigDecimalValue) {
|
||||||
|
this.bigDecimalValue = bigDecimalValue;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,49 @@
|
||||||
|
package org.chtijbug.drools.console.dto;
|
||||||
|
|
||||||
|
public class VariableDefinition {
|
||||||
|
private String varName;
|
||||||
|
private String dataType;
|
||||||
|
private String factType;
|
||||||
|
private String factField;
|
||||||
|
private String operator;
|
||||||
|
|
||||||
|
public String getVarName() {
|
||||||
|
return varName;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setVarName(String varName) {
|
||||||
|
this.varName = varName;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getDataType() {
|
||||||
|
return dataType;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setDataType(String dataType) {
|
||||||
|
this.dataType = dataType;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getFactType() {
|
||||||
|
return factType;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setFactType(String factType) {
|
||||||
|
this.factType = factType;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getFactField() {
|
||||||
|
return factField;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setFactField(String factField) {
|
||||||
|
this.factField = factField;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getOperator() {
|
||||||
|
return operator;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setOperator(String operator) {
|
||||||
|
this.operator = operator;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -13,5 +13,6 @@
|
||||||
|
|
||||||
<modules>
|
<modules>
|
||||||
<module>drools-framework-admin-console</module>
|
<module>drools-framework-admin-console</module>
|
||||||
|
<module>drools-framework-admin-dto</module>
|
||||||
</modules>
|
</modules>
|
||||||
</project>
|
</project>
|
||||||
|
|
@ -40,6 +40,17 @@
|
||||||
<artifactId>drools-framework-runtime-entity</artifactId>
|
<artifactId>drools-framework-runtime-entity</artifactId>
|
||||||
<version>${project.version}</version>
|
<version>${project.version}</version>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>com.pymmasoftware.jbpm</groupId>
|
||||||
|
<artifactId>drools-framework-admin-dto</artifactId>
|
||||||
|
<version>${project.version}</version>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>com.pymmasoftware.jbpm</groupId>
|
||||||
|
<artifactId>drools-framework-admin-dto</artifactId>
|
||||||
|
<version>1.1-SNAPSHOT</version>
|
||||||
|
<scope>compile</scope>
|
||||||
|
</dependency>
|
||||||
</dependencies>
|
</dependencies>
|
||||||
<build>
|
<build>
|
||||||
<plugins>
|
<plugins>
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,61 @@
|
||||||
|
package org.chtijbug.drools.proxy.persistence.model;
|
||||||
|
|
||||||
|
|
||||||
|
import org.chtijbug.drools.console.dto.VariableData;
|
||||||
|
import org.springframework.data.annotation.Id;
|
||||||
|
import org.springframework.data.mongodb.core.index.Indexed;
|
||||||
|
import org.springframework.data.mongodb.core.mapping.DBRef;
|
||||||
|
import org.springframework.data.mongodb.core.mapping.Document;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
@Document
|
||||||
|
public class GuidedRulesTemplateData {
|
||||||
|
|
||||||
|
@Id
|
||||||
|
@Indexed
|
||||||
|
private String ID;
|
||||||
|
|
||||||
|
@DBRef
|
||||||
|
@Indexed(unique = false)
|
||||||
|
GuidedRulesTemplateDefinition guidedRulesTemplateDefinition;
|
||||||
|
|
||||||
|
@Indexed(unique = false)
|
||||||
|
private String lineID;
|
||||||
|
|
||||||
|
private List<VariableData> rows = new ArrayList<>();
|
||||||
|
|
||||||
|
|
||||||
|
public String getID() {
|
||||||
|
return ID;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setID(String ID) {
|
||||||
|
this.ID = ID;
|
||||||
|
}
|
||||||
|
|
||||||
|
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;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,61 @@
|
||||||
|
package org.chtijbug.drools.proxy.persistence.model;
|
||||||
|
|
||||||
|
|
||||||
|
import org.chtijbug.drools.console.dto.VariableDefinition;
|
||||||
|
import org.springframework.data.annotation.Id;
|
||||||
|
import org.springframework.data.mongodb.core.index.Indexed;
|
||||||
|
import org.springframework.data.mongodb.core.mapping.DBRef;
|
||||||
|
import org.springframework.data.mongodb.core.mapping.Document;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
@Document
|
||||||
|
public class GuidedRulesTemplateDefinition {
|
||||||
|
|
||||||
|
@Id
|
||||||
|
@Indexed
|
||||||
|
private String ID;
|
||||||
|
|
||||||
|
@Indexed(unique = false)
|
||||||
|
private String templateName;
|
||||||
|
|
||||||
|
@DBRef
|
||||||
|
private UserGroups projectGroup;
|
||||||
|
|
||||||
|
private List<VariableDefinition> variables = new ArrayList<>();
|
||||||
|
|
||||||
|
public String getID() {
|
||||||
|
return ID;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setID(String ID) {
|
||||||
|
this.ID = ID;
|
||||||
|
}
|
||||||
|
|
||||||
|
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;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -5,6 +5,8 @@ import org.springframework.data.mongodb.core.index.Indexed;
|
||||||
import org.springframework.data.mongodb.core.mapping.DBRef;
|
import org.springframework.data.mongodb.core.mapping.DBRef;
|
||||||
import org.springframework.data.mongodb.core.mapping.Document;
|
import org.springframework.data.mongodb.core.mapping.Document;
|
||||||
|
|
||||||
|
import java.util.Objects;
|
||||||
|
|
||||||
@Document
|
@Document
|
||||||
public class UserGroups {
|
public class UserGroups {
|
||||||
@Id
|
@Id
|
||||||
|
|
@ -90,4 +92,16 @@ public class UserGroups {
|
||||||
this.workspaceUserGroup = 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);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -4,6 +4,8 @@ import org.springframework.data.annotation.Id;
|
||||||
import org.springframework.data.mongodb.core.index.Indexed;
|
import org.springframework.data.mongodb.core.index.Indexed;
|
||||||
import org.springframework.data.mongodb.core.mapping.Document;
|
import org.springframework.data.mongodb.core.mapping.Document;
|
||||||
|
|
||||||
|
import java.util.Objects;
|
||||||
|
|
||||||
@Document
|
@Document
|
||||||
public class UserRoles {
|
public class UserRoles {
|
||||||
|
|
||||||
|
|
@ -36,4 +38,17 @@ public class UserRoles {
|
||||||
public void setName(String name) {
|
public void setName(String name) {
|
||||||
this.name = 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);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,19 @@
|
||||||
|
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.chtijbug.drools.proxy.persistence.model.KieWorkbench;
|
||||||
|
import org.chtijbug.drools.proxy.persistence.model.UserGroups;
|
||||||
|
import org.springframework.data.mongodb.repository.MongoRepository;
|
||||||
|
import org.springframework.stereotype.Repository;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
@Repository
|
||||||
|
public interface GuidedRulestemplateDataRepository extends MongoRepository<GuidedRulesTemplateData, String> {
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
GuidedRulesTemplateData findByGuidedRulesTemplateDefinitionAndLineID(GuidedRulesTemplateDefinition guidedRulesTemplateDefinition,String lineID);
|
||||||
|
List<GuidedRulesTemplateData> findByGuidedRulesTemplateDefinition(GuidedRulesTemplateDefinition guidedRulesTemplateDefinition);
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,18 @@
|
||||||
|
package org.chtijbug.drools.proxy.persistence.repository;
|
||||||
|
|
||||||
|
import org.chtijbug.drools.proxy.persistence.model.GuidedRulesTemplateDefinition;
|
||||||
|
import org.chtijbug.drools.proxy.persistence.model.KieWorkbench;
|
||||||
|
import org.chtijbug.drools.proxy.persistence.model.RuntimePersist;
|
||||||
|
import org.chtijbug.drools.proxy.persistence.model.UserGroups;
|
||||||
|
import org.springframework.data.mongodb.repository.MongoRepository;
|
||||||
|
import org.springframework.stereotype.Repository;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
@Repository
|
||||||
|
public interface GuidedRulestemplateDefinitionRepository extends MongoRepository<GuidedRulesTemplateDefinition, String> {
|
||||||
|
|
||||||
|
List<GuidedRulesTemplateDefinition> findByTemplateName(String assetName);
|
||||||
|
|
||||||
|
GuidedRulesTemplateDefinition findByTemplateNameAndProjectGroup(String assetName, UserGroups projectGroup);
|
||||||
|
}
|
||||||
|
|
@ -5,6 +5,8 @@ import org.chtijbug.drools.proxy.persistence.model.UserGroups;
|
||||||
import org.springframework.data.mongodb.repository.MongoRepository;
|
import org.springframework.data.mongodb.repository.MongoRepository;
|
||||||
import org.springframework.stereotype.Repository;
|
import org.springframework.stereotype.Repository;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
@Repository
|
@Repository
|
||||||
public interface UserGroupsRepository extends MongoRepository<UserGroups, String> {
|
public interface UserGroupsRepository extends MongoRepository<UserGroups, String> {
|
||||||
|
|
||||||
|
|
@ -12,4 +14,6 @@ public interface UserGroupsRepository extends MongoRepository<UserGroups, String
|
||||||
UserGroups findByID(String login);
|
UserGroups findByID(String login);
|
||||||
|
|
||||||
UserGroups findUserGroupsByProjectPersist(ProjectPersist projectPersist);
|
UserGroups findUserGroupsByProjectPersist(ProjectPersist projectPersist);
|
||||||
|
UserGroups findBySpaceName(String spaceName);
|
||||||
|
UserGroups findByWorkspaceUserGroupAndProjectName(UserGroups workspaceUserGroups,String projectName);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
2
pom.xml
2
pom.xml
|
|
@ -18,7 +18,7 @@
|
||||||
|
|
||||||
<properties>
|
<properties>
|
||||||
<fabri8.plugin.version>0.34.1</fabri8.plugin.version>
|
<fabri8.plugin.version>0.34.1</fabri8.plugin.version>
|
||||||
<jbpm.version>7.45.0.Final</jbpm.version>
|
<jbpm.version>7.46.0.Final</jbpm.version>
|
||||||
<node.version>v10.16.3</node.version>
|
<node.version>v10.16.3</node.version>
|
||||||
<npm.version>6.11.3</npm.version>
|
<npm.version>6.11.3</npm.version>
|
||||||
<frontend-maven-plugin.version>1.8.0</frontend-maven-plugin.version>
|
<frontend-maven-plugin.version>1.8.0</frontend-maven-plugin.version>
|
||||||
|
|
|
||||||
Loading…
Add table
editor.link_modal.header
Reference in a new issue