commit
01d9886720
23 changed files with 1222 additions and 247 deletions
|
|
@ -244,7 +244,16 @@
|
|||
<artifactId>springfox-boot-starter</artifactId>
|
||||
<version>3.0.0</version>
|
||||
</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>
|
||||
|
||||
<build>
|
||||
|
|
|
|||
|
|
@ -14,7 +14,7 @@ import org.apache.kafka.common.serialization.StringSerializer;
|
|||
import org.chtijbug.drools.KieContainerResponse;
|
||||
import org.chtijbug.drools.ReverseProxyUpdate;
|
||||
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.util.ApplicationContextProvider;
|
||||
import org.chtijbug.drools.console.service.wbconnector.KieBusinessCentralConnector;
|
||||
|
|
@ -92,7 +92,7 @@ public class DroolsSpringBootConsoleApplication extends SpringBootServletInitial
|
|||
private String sslKeystoreType;
|
||||
|
||||
@Autowired
|
||||
private DababaseContentInit dababaseContentInit;
|
||||
private DababaseContentUpdate dababaseContentUpdate;
|
||||
@Autowired
|
||||
private KieBusinessCentralConnector kieBusinessCentralConnector;
|
||||
@Autowired
|
||||
|
|
@ -218,7 +218,7 @@ public class DroolsSpringBootConsoleApplication extends SpringBootServletInitial
|
|||
|
||||
@EventListener(ApplicationReadyEvent.class)
|
||||
public void initPlatform(){
|
||||
dababaseContentInit.initDatabaseIfNecessary();
|
||||
dababaseContentUpdate.initDatabaseIfNecessary();
|
||||
/**
|
||||
for (KieWorkbench kieWorkbench: kieWorkbenchRepository.findAll()) {
|
||||
Map<String, KieContainerResource> kies = new HashMap<>();
|
||||
|
|
@ -275,7 +275,7 @@ public class DroolsSpringBootConsoleApplication extends SpringBootServletInitial
|
|||
.select()
|
||||
.apis(RequestHandlerSelectors.basePackage("org.chtijbug.drools.console.restexpose"))
|
||||
//.paths(PathSelectors.regex("/api/wb./wb.*"))
|
||||
.paths(PathSelectors.regex("/api/wb.*"))
|
||||
.paths(PathSelectors.regex("/api.*"))
|
||||
.build()
|
||||
.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;
|
||||
|
||||
import com.fasterxml.jackson.databind.ObjectMapper;
|
||||
import io.swagger.annotations.*;
|
||||
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.JobService;
|
||||
import org.chtijbug.drools.console.service.KieRepositoryService;
|
||||
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.drools.proxy.persistence.model.*;
|
||||
import org.chtijbug.drools.proxy.persistence.repository.*;
|
||||
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.drools.workbench.models.datamodel.rule.InterpolationVariable;
|
||||
import org.drools.workbench.models.datamodel.rule.util.InterpolationVariableCollector;
|
||||
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.kie.server.api.model.KieServerInfo;
|
||||
import org.kie.soup.project.datamodel.oracle.DataType;
|
||||
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.*;
|
||||
|
|
@ -30,11 +34,15 @@ import org.springframework.web.client.RestTemplate;
|
|||
|
||||
import javax.ws.rs.core.Response;
|
||||
import javax.ws.rs.core.Variant;
|
||||
import java.math.BigDecimal;
|
||||
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
|
||||
@RequestMapping("/api/wb")
|
||||
@RequestMapping("/api/asset")
|
||||
@Api("/api/asset")
|
||||
public class AssetServiceExpose {
|
||||
|
||||
@Autowired
|
||||
|
|
@ -53,108 +61,353 @@ public class AssetServiceExpose {
|
|||
@Autowired
|
||||
private UserRepository userRepository;
|
||||
|
||||
@Autowired
|
||||
private GuidedRulestemplateDefinitionRepository guidedRulestemplateDefinitionRepository;
|
||||
|
||||
@Autowired
|
||||
private GuidedRulestemplateDataRepository guidedRulestemplateDataRepository;
|
||||
|
||||
@Autowired
|
||||
private UserRolesRepository userRolesRepository;
|
||||
|
||||
@Autowired
|
||||
private JobService jobService;
|
||||
|
||||
@Autowired
|
||||
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},
|
||||
produces = {javax.ws.rs.core.MediaType.APPLICATION_JSON, javax.ws.rs.core.MediaType.APPLICATION_XML})
|
||||
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());
|
||||
|
||||
@ApiOperation(value = "Get Template dta", notes = "Sends back data of a guided rule template", response = GuidedRuleTemplate.class)
|
||||
@ApiResponses({
|
||||
@ApiResponse(code = 201, message = "Created", response = GuidedRuleTemplate.class)
|
||||
})
|
||||
public Response getTemplateData(@PathVariable("spaceName") String spaceName, @PathVariable("projectName") String projectName, @PathVariable("templateName") String templateName) {
|
||||
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);
|
||||
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();
|
||||
}
|
||||
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);
|
||||
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();
|
||||
return Response.status(Response.Status.CREATED).entity(guidedRuleTemplate).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) {
|
||||
return clientHttpRequest -> {
|
||||
|
|
@ -180,5 +433,18 @@ public class AssetServiceExpose {
|
|||
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;
|
||||
|
||||
import io.swagger.annotations.Api;
|
||||
import org.chtijbug.drools.console.service.IndexerService;
|
||||
import org.chtijbug.drools.proxy.persistence.model.BusinessTransactionAction;
|
||||
import org.chtijbug.drools.proxy.persistence.model.BusinessTransactionPersistence;
|
||||
|
|
@ -13,7 +14,8 @@ import javax.servlet.http.HttpServletResponse;
|
|||
import java.util.List;
|
||||
|
||||
@RestController
|
||||
@RequestMapping("/api/elasticSearch")
|
||||
@RequestMapping("/api/logging")
|
||||
@Api("/api/logging")
|
||||
public class ElasticSearchExpose {
|
||||
|
||||
@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;
|
||||
}
|
||||
|
||||
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);
|
||||
if (userGroups == null) {
|
||||
UserGroups projectGroup = new UserGroups(UUID.randomUUID().toString(), "prj_" + projectName);
|
||||
|
|
@ -114,15 +114,16 @@ public class ProjectPersistService {
|
|||
projectGroup.setProjectName(projectName);
|
||||
projectGroup.setProjectPersist(projectPersist);
|
||||
projectGroup.setWorkspaceUserGroup(workspaceUserGroup);
|
||||
userGroupsRepository.save(projectGroup);
|
||||
projectGroup = userGroupsRepository.save(projectGroup);
|
||||
User groupUser = new User(UUID.randomUUID().toString(), "prj_user_" + projectName, "adminadmin99#");
|
||||
groupUser.getUserGroups().add(projectGroup);
|
||||
groupUser.getUserRoles().add(userRolesRepository.findByName("analyst"));
|
||||
userRepository.save(groupUser);
|
||||
} else {
|
||||
userGroups.setWorkspaceUserGroup(workspaceUserGroup);
|
||||
userGroupsRepository.save(userGroups);
|
||||
userGroups=userGroupsRepository.save(userGroups);
|
||||
}
|
||||
return userGroups;
|
||||
}
|
||||
|
||||
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>
|
||||
<module>drools-framework-admin-console</module>
|
||||
<module>drools-framework-admin-dto</module>
|
||||
</modules>
|
||||
</project>
|
||||
|
|
@ -40,6 +40,17 @@
|
|||
<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>
|
||||
<dependency>
|
||||
<groupId>com.pymmasoftware.jbpm</groupId>
|
||||
<artifactId>drools-framework-admin-dto</artifactId>
|
||||
<version>1.1-SNAPSHOT</version>
|
||||
<scope>compile</scope>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
<build>
|
||||
<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.Document;
|
||||
|
||||
import java.util.Objects;
|
||||
|
||||
@Document
|
||||
public class UserGroups {
|
||||
@Id
|
||||
|
|
@ -90,4 +92,16 @@ public class UserGroups {
|
|||
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.mapping.Document;
|
||||
|
||||
import java.util.Objects;
|
||||
|
||||
@Document
|
||||
public class UserRoles {
|
||||
|
||||
|
|
@ -36,4 +38,17 @@ public class UserRoles {
|
|||
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);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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.stereotype.Repository;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@Repository
|
||||
public interface UserGroupsRepository extends MongoRepository<UserGroups, String> {
|
||||
|
||||
|
|
@ -12,4 +14,6 @@ public interface UserGroupsRepository extends MongoRepository<UserGroups, String
|
|||
UserGroups findByID(String login);
|
||||
|
||||
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>
|
||||
<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>
|
||||
<npm.version>6.11.3</npm.version>
|
||||
<frontend-maven-plugin.version>1.8.0</frontend-maven-plugin.version>
|
||||
|
|
|
|||
Loading…
Add table
editor.link_modal.header
Reference in a new issue