Usage of Mongodb and Login Module using mongo

This commit is contained in:
Nicolas Héron 2020-01-03 14:40:00 +01:00
commit 657a0f9a03
54 changed files with 1003 additions and 3963 deletions

View file

@ -1,30 +1,45 @@
package org.chtijbug.drools.console;
import org.chtijbug.drools.console.middle.DababaseContentInit;
import org.chtijbug.drools.console.service.model.kie.KieConfigurationData;
import org.chtijbug.drools.console.service.util.ApplicationContextProvider;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.boot.context.event.ApplicationReadyEvent;
import org.springframework.boot.web.servlet.support.SpringBootServletInitializer;
import org.springframework.context.annotation.*;
import org.springframework.context.event.EventListener;
import org.springframework.data.mongodb.repository.config.EnableMongoRepositories;
@Configuration
@SpringBootApplication
@ComponentScan({"org.chtijbug.drools.proxy.persistence"})
@EnableMongoRepositories("org.chtijbug.drools.proxy.persistence.repository")
@PropertySource("classpath:application.properties")
@ImportResource("classpath:applicationContext.xml")
public class DroolsSpringBootConsoleApplication extends SpringBootServletInitializer {
@Bean
@Value("${kie-wb.baseurl}")
private String kiewbUrl;
@Autowired
private DababaseContentInit dababaseContentInit;
@Bean(name = "applicationContext")
public ApplicationContextProvider getAppplicationContext() {
ApplicationContextProvider applicationContextProvider = new ApplicationContextProvider();
return applicationContextProvider;
}
@Bean
public KieConfigurationData createKieConfigurationData(){
KieConfigurationData kieConfigurationData = new KieConfigurationData();
kieConfigurationData.setKiewbUrl(kiewbUrl);
return kieConfigurationData;
}
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
return application.sources(DroolsSpringBootConsoleApplication.class);
@ -34,6 +49,10 @@ public class DroolsSpringBootConsoleApplication extends SpringBootServletInitial
SpringApplication.run(DroolsSpringBootConsoleApplication.class, args);
}
@EventListener(ApplicationReadyEvent.class)
public void InitPlatform(){
dababaseContentInit.initDatabaseIfNecessary();
}
}

View file

@ -0,0 +1,102 @@
package org.chtijbug.drools.console.middle;
import org.chtijbug.drools.proxy.persistence.model.*;
import org.chtijbug.drools.proxy.persistence.repository.*;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
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;
@Autowired
private UserRepository userRepository;
@Autowired
private UserRolesRepository userRolesRepository;
@Autowired
private UserGroupsRepository userGroupsRepository;
@Autowired
private KieWorkbenchRepository kieWorkbenchRepository;
@Autowired
private CustomerRepository customerRepository;
public void initDatabaseIfNecessary(){
User adminUser = userRepository.findByLogin("admin");
if (adminUser==null){
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"));
adminUser = new User(UUID.randomUUID().toString(),"admin","adminPymma00@");
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);
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);
}
}
}

View file

@ -10,6 +10,7 @@ import org.chtijbug.drools.console.vaadinComponent.componentView.service.dtmodel
import org.drools.workbench.models.guided.dtable.backend.GuidedDTXMLPersistence;
import org.drools.workbench.models.guided.dtable.shared.model.GuidedDecisionTable52;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.DependsOn;
import org.springframework.stereotype.Service;
import java.io.*;
@ -18,6 +19,7 @@ import java.util.HashMap;
import java.util.List;
@Service
@DependsOn("applicationContext")
public class DecisionTableExcelService {
@Value("${adminConsole.tmpdir}")

View file

@ -7,7 +7,6 @@ import com.offbytwo.jenkins.model.View;
import org.apache.commons.io.IOUtils;
import org.chtijbug.drools.console.service.model.gitlab.GitLabConfigurationData;
import org.chtijbug.drools.console.service.model.jenkins.JenkinsConfigurationData;
import org.chtijbug.drools.console.service.model.kie.KieConfigurationData;
import org.chtijbug.drools.console.service.util.AppContext;
import org.springframework.core.io.ClassPathResource;
import org.springframework.stereotype.Service;
@ -23,7 +22,6 @@ public class JenkinsService {
JenkinsServer jenkins = null;
public void createJobForRepo(String jenkinsServerUrl, String username, String password, String viewName, String groupId, String artifactId, String pomXml, String nexusName, String nexusUrl, String jdkVersion) throws URISyntaxException, IOException {
KieConfigurationData configKie = AppContext.getApplicationContext().getBean(KieConfigurationData.class);
GitLabConfigurationData configGitLab = AppContext.getApplicationContext().getBean(GitLabConfigurationData.class);
JenkinsConfigurationData jenkinsConfigurationData = AppContext.getApplicationContext().getBean(JenkinsConfigurationData.class);

View file

@ -6,6 +6,8 @@ import org.apache.commons.codec.binary.Base64;
import org.chtijbug.drools.console.AddLog;
import org.chtijbug.drools.console.service.model.UserConnected;
import org.chtijbug.drools.console.service.model.kie.JobStatus;
import org.chtijbug.drools.proxy.persistence.model.User;
import org.chtijbug.drools.proxy.persistence.repository.UserRepository;
import org.chtijbug.guvnor.server.jaxrs.api.UserLoginInformation;
import org.chtijbug.guvnor.server.jaxrs.jaxb.Asset;
import org.chtijbug.guvnor.server.jaxrs.model.PlatformProjectResponse;
@ -13,6 +15,7 @@ import org.drools.workbench.models.guided.template.backend.RuleTemplateModelXMLP
import org.drools.workbench.models.guided.template.shared.TemplateModel;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.*;
import org.springframework.stereotype.Service;
import org.springframework.web.client.RequestCallback;
@ -27,23 +30,25 @@ public class KieRepositoryService {
private static Logger logger = LoggerFactory.getLogger(KieRepositoryService.class);
@Autowired
private UserRepository userRepository;
private RestTemplate restTemplateKiewb = new RestTemplate();
private ObjectMapper mapper = new ObjectMapper();
private String pojoToStringMethod(String assetContent,List<HashMap<String,Object>> objects){
private String pojoToStringMethod(String assetContent, List<HashMap<String, Object>> objects) {
TemplateModel model = RuleTemplateModelXMLPersistenceImpl.getInstance().unmarshal(assetContent);
int i=0;
int i = 0;
model.clearRows();
for(HashMap<String,Object> t:objects){
for (HashMap<String, Object> t : objects) {
List<String> row=new ArrayList<>();
for (Map.Entry<String,Object> entry:t.entrySet()){
row.add(String.valueOf(entry.getValue()));
List<String> row = new ArrayList<>();
for (Map.Entry<String, Object> entry : t.entrySet()) {
row.add(String.valueOf(entry.getValue()));
}
model.addRow(i,row.toArray(new String[row.size()]));
model.addRow(i, row.toArray(new String[row.size()]));
i++;
}
@ -51,7 +56,7 @@ public class KieRepositoryService {
return RuleTemplateModelXMLPersistenceImpl.getInstance().marshal(model);
}
public void updateAssetSource(String url, String username, String password, String spaceName, String projectName, String assetName,String assetSource) {
public void updateAssetSource(String url, String username, String password, String spaceName, String projectName, String assetName, String assetSource) {
String assetContent = getAssetSource(url,
username,
@ -76,11 +81,11 @@ public class KieRepositoryService {
return extractedValue;
});
// restTemplateKiewb.exchange(completeurl, HttpMethod.POST, requestCallBack(content, username, password), void.class);
// restTemplateKiewb.exchange(completeurl, HttpMethod.POST, requestCallBack(content, username, password), void.class);
System.out.println("");
}
public String getAssetSource(String url, String username, String password, String spaceName, String projectName, String assetName) {
public String getAssetSource(String url, String username, String password, String spaceName, String projectName, String assetName) {
String completeurl = url + "/chtijbug/" + spaceName + "/" + projectName + "/assets/" + assetName + "/source";
logger.info("url moteur reco : " + completeurl);
ResponseEntity<String> response = restTemplateKiewb
@ -122,30 +127,43 @@ public class KieRepositoryService {
}
public UserConnected login(String url, String username, String password) {
User user = userRepository.findByLogin(username);
String completeurl = url + "/chtijbug/login";
logger.info("url moteur reco : " + completeurl);
ResponseEntity<UserLoginInformation> response = restTemplateKiewb
.execute(completeurl, HttpMethod.GET, requestCallback(null, username, password), clientHttpResponse -> {
UserLoginInformation extractedResponse = null;
if (clientHttpResponse.getBody() != null) {
Scanner s = new Scanner(clientHttpResponse.getBody()).useDelimiter("\\A");
String result = s.hasNext() ? s.next() : "";
extractedResponse = mapper.readValue(result, UserLoginInformation.class);
if (user != null && user.getPassword().equals(password)) {
if (user.getCustomer()!= null &&
user.getCustomer().getKieWorkbench()!= null
&& user.getCustomer().getKieWorkbench().getInternalUrl()!= null){
completeurl = user.getCustomer().getKieWorkbench().getInternalUrl()+"/rest/chtijbug/login";
}
}
ResponseEntity<UserLoginInformation> extractedValue = new ResponseEntity<>(extractedResponse, clientHttpResponse.getHeaders(), clientHttpResponse.getStatusCode());
return extractedValue;
});
UserConnected userConnected = new UserConnected();
logger.info("url moteur reco : " + completeurl);
ResponseEntity<UserLoginInformation> response = restTemplateKiewb
.execute(completeurl, HttpMethod.GET, requestCallback(null, username, password), clientHttpResponse -> {
UserLoginInformation extractedResponse = null;
if (clientHttpResponse.getBody() != null) {
Scanner s = new Scanner(clientHttpResponse.getBody()).useDelimiter("\\A");
String result = s.hasNext() ? s.next() : "";
extractedResponse = mapper.readValue(result, UserLoginInformation.class);
UserLoginInformation responseBody = response.getBody();
userConnected.setUserName(username);
userConnected.setUserPassword(password);
userConnected.setUserPassword(password);
userConnected.getProjectResponses().addAll(responseBody.getProjects());
userConnected.setUserName(username);
}
ResponseEntity<UserLoginInformation> extractedValue = new ResponseEntity<>(extractedResponse, clientHttpResponse.getHeaders(), clientHttpResponse.getStatusCode());
return extractedValue;
});
UserConnected userConnected = new UserConnected();
return userConnected;
UserLoginInformation responseBody = response.getBody();
userConnected.setUserName(username);
userConnected.setUserPassword(password);
userConnected.setUserPassword(password);
userConnected.getProjectResponses().addAll(responseBody.getProjects());
userConnected.getRoles().addAll(responseBody.getRoles());
userConnected.setUserName(username);
return userConnected;
} else {
return null;
}
}
public List<Asset> getListAssets(String url, String username, String password, String spaceName, String projectName) {
@ -187,7 +205,7 @@ public class KieRepositoryService {
JobStatus reponseMoteur;
reponseMoteur = response.getBody();
workOnGoingView.addRow(reponseMoteur.toString(),ui);
workOnGoingView.addRow(reponseMoteur.toString(), ui);
return reponseMoteur;
}
@ -213,8 +231,8 @@ public class KieRepositoryService {
return reponseMoteur;
}
private HttpEntity requestCallBack(final Object content, String username, String password){
HttpHeaders httpHeaders=new HttpHeaders();
private HttpEntity requestCallBack(final Object content, String username, String password) {
HttpHeaders httpHeaders = new HttpHeaders();
httpHeaders.add(
HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON_VALUE);
httpHeaders.add(
@ -225,7 +243,7 @@ public class KieRepositoryService {
String authHeader = "Basic " + new String(encodedAuth);
httpHeaders.add(
HttpHeaders.AUTHORIZATION, authHeader);
HttpEntity httpEntity=new HttpEntity(content,httpHeaders);
HttpEntity httpEntity = new HttpEntity(content, httpHeaders);
return httpEntity;
@ -234,11 +252,11 @@ public class KieRepositoryService {
private RequestCallback requestCallback(final Object content, String username, String password) {
return clientHttpRequest -> {
if (content != null) {
if (content instanceof String){
String stringContent = (String)content;
stringContent=stringContent.replace("\"","");
if (content instanceof String) {
String stringContent = (String) content;
stringContent = stringContent.replace("\"", "");
mapper.writeValue(clientHttpRequest.getBody(), stringContent);
}else {
} else {
mapper.writeValue(clientHttpRequest.getBody(), content);
}
}

View file

@ -7,7 +7,7 @@ import org.chtijbug.drools.console.service.model.UserConnected;
import org.chtijbug.drools.console.service.model.kie.JobStatus;
import org.chtijbug.drools.console.service.model.kie.KieConfigurationData;
import org.chtijbug.drools.console.service.util.AppContext;
import org.chtijbug.drools.proxy.persistence.json.KeyProject;
import org.chtijbug.drools.proxy.persistence.json.KieProject;
import org.chtijbug.drools.proxy.persistence.model.ContainerPojoPersist;
import org.chtijbug.drools.proxy.persistence.model.ContainerRuntimePojoPersist;
import org.chtijbug.drools.proxy.persistence.model.ProjectPersist;
@ -67,7 +67,7 @@ public class ProjectPersistService {
for (PlatformProjectResponse platformProjectResponse : platformProjectResponses) {
ProjectPersist projectPersist = projectRepository.findByProjectName(new KeyProject(platformProjectResponse.getSpaceName(), platformProjectResponse.getName()));
ProjectPersist projectPersist = projectRepository.findByProjectName(new KieProject(platformProjectResponse.getSpaceName(), platformProjectResponse.getName()));
if (projectPersist == null) {
projectPersist = platformProjectResponseToProjectPersist(platformProjectResponse);
@ -158,7 +158,7 @@ public class ProjectPersistService {
ProjectPersist projectPersist = new ProjectPersist();
projectPersist.setArtifactID(platformProjectResponse.getArtifactId());
projectPersist.setGroupID(platformProjectResponse.getGroupId());
projectPersist.setProjectName(new KeyProject(platformProjectResponse.getSpaceName(), platformProjectResponse.getName()));
projectPersist.setProjectName(new KieProject(platformProjectResponse.getSpaceName(), platformProjectResponse.getName()));
projectPersist.setProjectVersion(platformProjectResponse.getVersion());
projectPersist.setStatus(ProjectPersist.ADEFINIR);
projectPersist.setClassNameList(platformProjectResponse.getJavaClasses());

View file

@ -1,7 +1,6 @@
package org.chtijbug.drools.console.vaadinComponent.leftMenu.Action;
import com.vaadin.flow.component.button.Button;
import com.vaadin.flow.component.dialog.Dialog;
import com.vaadin.flow.component.icon.VaadinIcon;
import com.vaadin.flow.component.orderedlayout.VerticalLayout;
import org.chtijbug.drools.console.service.ProjectPersistService;
@ -30,7 +29,7 @@ public class DeploymentAction extends VerticalLayout {
projectPersistService= AppContext.getApplicationContext().getBean(ProjectPersistService.class);
definirProject =new Button("Défine your project", VaadinIcon.CODE.create());
definirProject =new Button("Define your project", VaadinIcon.CODE.create());
definirProject.setClassName("leftMenu-global-button");
definirProject.setEnabled(false);
add(definirProject);

View file

@ -104,9 +104,12 @@ public class FormulaireComposant extends VerticalLayout {
}
});
add(login);
password.getPasswordField().setValue(configKie.getPassword());
username.getTextField().setValue(configKie.getUserName());
if (configKie.getPassword()!= null) {
password.getPasswordField().setValue(configKie.getPassword());
}
if (configKie.getUserName()!= null) {
username.getTextField().setValue(configKie.getUserName());
}
}
public void verifyValidity(){

View file

@ -41,7 +41,11 @@ public class MenuPrincipal extends HorizontalLayout {
public MenuPrincipal(SqueletteComposant squeletteComposant){
userConnectedService= AppContext.getApplicationContext().getBean(UserConnectedService.class);
boolean isAdmin=false;
if (userConnectedService.getUserConnected().getRoles() != null
&& userConnectedService.getUserConnected().getRoles().contains("admin")){
isAdmin=true;
}
addClassName("menu-principal-menubar-content");
InputStreamFactory inputStreamFactory=new InputStreamFactory() {
@ -74,7 +78,7 @@ public class MenuPrincipal extends HorizontalLayout {
}
});
deployement=new Button("Déployment");
deployement=new Button("Artifact");
deployement.setClassName("menu-principal-button");
add(deployement);
deployement.addClickListener(buttonClickEvent -> {

View file

@ -1,5 +1,7 @@
server.port=${port:8200}
kie-wb.baseurl=http://localhost:8080/kie-wb/rest
kie-wb.mainwbintern=http://localhost:8080/kie-wb
kie-wb.mainwbextern=http://localhost:8080/kie-wb
kie-wb.username=admin
kie-wb.password=admin

View file

@ -1,34 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xmlns="http://www.springframework.org/schema/beans"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-4.1.xsd">
<context:component-scan base-package="org.chtijbug.drools.console"/>
<bean class="org.chtijbug.drools.console.service.model.kie.KieConfigurationData">
<property name="userName" value="${kie-wb.username}"/>
<property name="password" value="${kie-wb.password}"/>
<property name="kiewbUrl" value="${kie-wb.baseurl}"/>
</bean>
<!--bean class="org.chtijbug.drools.console.service.model.gitlab.GitLabConfigurationData">
<property name="url" value="${gitlab.url}"/>
<property name="token" value="${gitlab.token}"/>
<property name="groupName" value="${gitlab.group}"/>
<property name="baseUrl" value="${gitlab.baseurl}"/>
</bean>
<bean class="org.chtijbug.drools.console.service.model.jenkins.JenkinsConfigurationData">
<property name="url" value="${jenkins.url}"/>
<property name="username" value="${jenkins.username}"/>
<property name="password" value="${jenkins.password}"/>
<property name="credentials" value="${jenkins.credentials}"/>
<property name="nexusName" value="${jenkins.nexusName}"/>
<property name="nexusUrl" value="${jenkins.nexusUrl}"/>
<property name="jdkVersion" value="${jenkins.jdkVersion}"/>
<property name="groupName" value="${jenkins.group}"/>
</bean-->
<bean name="applicationContext" class="org.chtijbug.drools.console.service.util.ApplicationContextProvider"/>
</beans>