Start Dockerized

Dynamic configuration started
This commit is contained in:
Nicolas Héron 2019-03-06 19:34:48 +01:00
commit 945c57ddfd
44 changed files with 1544 additions and 321 deletions

View file

@ -8,7 +8,7 @@
<version>1.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<packaging>war</packaging>
<packaging>jar</packaging>
<artifactId>drools-framework-admin-console</artifactId>
<properties>
@ -220,32 +220,10 @@
<build>
<finalName>drools-framework-admin-console</finalName>
<pluginManagement>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<version>3.2.2</version>
<configuration>
<packagingExcludes>
%regex[WEB-INF/lib/slf4j-simple.*.jar],
%regex[WEB-INF/lib/tomcat.*.jar]
</packagingExcludes>
</configuration>
</plugin>
</plugins>
</pluginManagement>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<version>3.2.2</version>
</plugin>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<version>${spring-boot.version}</version>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-clean-plugin</artifactId>
@ -264,23 +242,17 @@
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<jvmArguments>-Dvaadin.productionMode</jvmArguments>
</configuration>
<executions>
<execution>
<goals>
<goal>repackage</goal>
</goals>
<configuration>
<classifier>spring-boot</classifier>
<mainClass>
org.chtijbug.drools.console.DroolsSpringBootConsoleApplication
</mainClass>
</configuration>
</execution>
</executions>
<configuration>
<executable>true</executable>
</configuration>
</plugin>
</plugins>
@ -288,11 +260,9 @@
<profiles>
<profile>
<!--profile>
<id>productionMode</id>
<!--activation>
<activeByDefault>true</activeByDefault>
</activation!-->
<dependencies>
<dependency>
@ -327,6 +297,130 @@
</plugin>
</plugins>
</build>
</profile-->
<profile>
<id>docker-build</id>
<build>
<plugins>
<plugin>
<groupId>io.fabric8</groupId>
<artifactId>docker-maven-plugin</artifactId>
<version>0.21.0</version>
<configuration>
<!--registry>192.168.1.184:12500</registry-->
<dockerHost>${docker.Host}</dockerHost>
<!-- this is for Mac and Amazon Linux -->
<!--dockerHost>unix:///var/run/docker.sock</dockerHost-->
<verbose>true</verbose>
<images>
<image>
<name>runtime-admin-console</name>
<build>
<dockerFileDir>${project.basedir}/src/main/docker</dockerFileDir>
<!--copies Jar to the maven directory (uses Assembly system)-->
<assembly>
<descriptorRef>artifact</descriptorRef>
</assembly>
<tags>
<tag>latest</tag>
</tags>
</build>
<run>
<extraHosts>
<host>mongodb:192.168.43.94</host>
<host>elasticsearchhost:192.168.43.94</host>
<host>kie-wb:192.168.43.94</host>
</extraHosts>
<ports>
<port>8200:8200</port>
</ports>
</run>
</image>
</images>
</configuration>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>build</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
</profile>
<profile>
<id>docker-deploy</id>
<build>
<plugins>
<plugin>
<groupId>io.fabric8</groupId>
<artifactId>docker-maven-plugin</artifactId>
<version>0.21.0</version>
<configuration>
<!--registry>192.168.1.184:12500</registry-->
<dockerHost>${docker.Host}</dockerHost>
<!-- this is for Mac and Amazon Linux -->
<!--dockerHost>unix:///var/run/docker.sock</dockerHost-->
<verbose>true</verbose>
<images>
<image>
<name>runtime-admin-console</name>
<build>
<dockerFileDir>${project.basedir}/src/main/docker</dockerFileDir>
<!--copies Jar to the maven directory (uses Assembly system)-->
<assembly>
<descriptorRef>artifact</descriptorRef>
</assembly>
<tags>
<tag>latest</tag>
</tags>
</build>
<run>
<extraHosts>
<host>mongodb:192.168.1.100</host>
</extraHosts>
</run>
</image>
</images>
</configuration>
<executions>
<execution>
<id>mydeploy</id>
<phase>deploy</phase>
<goals>
<goal>push</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
</profile>
</profiles>
</project>

View file

@ -0,0 +1,12 @@
FROM openjdk:8-jre-slim
ADD application.properties /application.properties
ADD maven/drools-framework-admin-console.jar app.jar
EXPOSE 8200
RUN bash -c 'touch /app.jar'
ENTRYPOINT ["java","-Dspring.config.location=file:./","-jar","/app.jar"]
#ENTRYPOINT ["java","-jar","/app.jar"]

View file

@ -0,0 +1,12 @@
spring.data.elasticsearch.cluster-nodes=elasticsearchhost:9300
spring.data.mongodb.database=businessProxyDB
spring.data.mongodb.host=mongodb:27017
server.port=${port:8200}
kie-wb.baseurl=http://kie-wb:8080/kie-wb/rest
kie-wb.username=admin
kie-wb.password=admin
spring.servlet.multipart.enabled=false

View file

@ -18,6 +18,7 @@ import org.chtijbug.guvnor.server.jaxrs.model.PlatformProjectResponse;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
@ -44,156 +45,161 @@ public class ProjectPersistService {
@Autowired
private RuntimeRepository runtimeRepository;
public ProjectPersistService(){
public ProjectPersistService() {
this.config = AppContext.getApplicationContext().getBean(KieConfigurationData.class);
}
public static String getPROJECT() {
return PROJECT;
}
public void saveIfnotExist(List<PlatformProjectResponse> platformProjectResponses){
public static void setPROJECT(String PROJECT) {
ProjectPersistService.PROJECT = PROJECT;
}
for(PlatformProjectResponse platformProjectResponse:platformProjectResponses) {
public void saveIfnotExist(List<PlatformProjectResponse> platformProjectResponses) {
ProjectPersist projectPersist = projectRepository.findByProjectName(new KeyProject(platformProjectResponse.getSpaceName(),platformProjectResponse.getName()));
for (PlatformProjectResponse platformProjectResponse : platformProjectResponses) {
ProjectPersist projectPersist = projectRepository.findByProjectName(new KeyProject(platformProjectResponse.getSpaceName(), platformProjectResponse.getName()));
if (projectPersist == null) {
projectPersist = platformProjectResponseToProjectPersist(platformProjectResponse);
projectRepository.save(projectPersist);
addProjectToSession(projectPersist,true);
addProjectToSession(projectPersist, true);
}else {
addProjectToSession(projectPersist,false);
} else {
addProjectToSession(projectPersist, false);
}
}
}
public HashMap<String,ProjectPersist> getProjectsSession() {
public HashMap<String, ProjectPersist> getProjectsSession() {
return (HashMap<String, ProjectPersist>) VaadinSession.getCurrent().getAttribute(PROJECT);
}
public void addProjectToSession(ProjectPersist projectPersist,boolean isModifiable) {
HashMap<String,ProjectPersist> projectPersists=getProjectsSession();
HashMap<String, ProjectPersist> projectPersists = getProjectsSession();
if(projectPersists==null){
projectPersists=new HashMap<>();
if (projectPersists == null) {
projectPersists = new HashMap<>();
}
if(isModifiable){
projectPersists.put(projectPersist.getProjectName().toString(),projectPersist);
}else {
if (isModifiable) {
projectPersists.put(projectPersist.getProjectName().toString(), projectPersist);
} else {
ProjectPersist tmp=projectPersists.get(projectPersist.getProjectName().toString());
if(tmp==null){
projectPersists.put(projectPersist.getProjectName().toString(),projectPersist);
ProjectPersist tmp = projectPersists.get(projectPersist.getProjectName().toString());
if (tmp == null) {
projectPersists.put(projectPersist.getProjectName().toString(), projectPersist);
}
}
VaadinSession.getCurrent().setAttribute(PROJECT, projectPersists);
}
public boolean associate(ProjectPersist projectPersist, RuntimePersist runtimePersist){
List<ProjectPersist> projectPersists=projectRepository.findByServerNameAndDeploymentName(runtimePersist.getServerName(),projectPersist.getDeploymentName());
public boolean associate(ProjectPersist projectPersist, List<RuntimePersist> runtimePersists) {
if(projectPersists.size()!=0){
return false;
}else {
projectPersist.setServerName(runtimePersist.getServerName());
projectPersist.setStatus(ProjectPersist.Deployable);
projectPersist.setContainerID(projectPersist.getDeploymentName()+"-"+projectPersist.getProjectName());
projectRepository.save(projectPersist);
addProjectToSession(projectPersist,true);
return true;
projectPersist.getServerNames().clear();
for (RuntimePersist runtimePersist : runtimePersists) {
List<String> names = new ArrayList<String>();
names.add(runtimePersist.getServerName());
List<ProjectPersist> projectPersists = projectRepository.findByServerNamesInAndDeploymentName(names, projectPersist.getDeploymentName());
//if (projectPersists.size() != 0) {
// return false;
// }
projectPersist.getServerNames().add(runtimePersist.getServerName());
}
projectPersist.setStatus(ProjectPersist.Deployable);
projectPersist.setContainerID(projectPersist.getDeploymentName() + "-" + projectPersist.getProjectName());
projectRepository.save(projectPersist);
addProjectToSession(projectPersist, true);
return true;
}
public boolean deployer(ProjectPersist projectPersist, AddLog addLog, UI ui){
public boolean deployer(ProjectPersist projectPersist, AddLog addLog, UI ui) {
waitForJobToBeEnded(config.getKiewbUrl(), userConnectedService.getUserConnected().getUserName(),
userConnectedService.getUserConnected().getUserPassword(), projectPersist, addLog,ui);
userConnectedService.getUserConnected().getUserPassword(), projectPersist, addLog, ui);
return false;
}
public ProjectPersist platformProjectResponseToProjectPersist(PlatformProjectResponse platformProjectResponse){
ProjectPersist projectPersist=new ProjectPersist();
public ProjectPersist platformProjectResponseToProjectPersist(PlatformProjectResponse platformProjectResponse) {
ProjectPersist projectPersist = new ProjectPersist();
projectPersist.setArtifactID(platformProjectResponse.getArtifactId());
projectPersist.setGroupID(platformProjectResponse.getGroupId());
projectPersist.setProjectName(new KeyProject(platformProjectResponse.getSpaceName(),platformProjectResponse.getName()));
projectPersist.setProjectName(new KeyProject(platformProjectResponse.getSpaceName(), platformProjectResponse.getName()));
projectPersist.setProjectVersion(platformProjectResponse.getVersion());
projectPersist.setStatus(ProjectPersist.ADEFINIR);
projectPersist.setClassNameList(platformProjectResponse.getJavaClasses());
return projectPersist;
}
public void waitForJobToBeEnded(String url, String username, String password,ProjectPersist projectPersist, AddLog workOnGoingView, UI ui) {
public void waitForJobToBeEnded(String url, String username, String password, ProjectPersist projectPersist, AddLog workOnGoingView, UI ui) {
UserConnected userConnected=userConnectedService.getUserConnected();
UserConnected userConnected = userConnectedService.getUserConnected();
Thread thread=new Thread(){
Thread thread = new Thread() {
public void run() {
JobStatus result = kieRepositoryService.buildProject(config.getKiewbUrl(), userConnected.getUserName(),
userConnected.getUserPassword(), projectPersist.getProjectName().getSpaceName(), projectPersist.getProjectName().getName(), "compile", workOnGoingView,ui);
userConnected.getUserPassword(), projectPersist.getProjectName().getSpaceName(), projectPersist.getProjectName().getName(), "compile", workOnGoingView, ui);
executeWrite(url,username,password,workOnGoingView,result.getJobId(),ui);
executeWrite(url, username, password, workOnGoingView, result.getJobId(), ui);
result = kieRepositoryService.buildProject(config.getKiewbUrl(), userConnected.getUserName(),
userConnected.getUserPassword(), projectPersist.getProjectName().getSpaceName(), projectPersist.getProjectName().getName(), "install", workOnGoingView,ui);
userConnected.getUserPassword(), projectPersist.getProjectName().getSpaceName(), projectPersist.getProjectName().getName(), "install", workOnGoingView, ui);
executeWrite(url, username, password, workOnGoingView, result.getJobId(), ui);
// ContainerPojoPersist toto = containerRepository.findByServerNameAndContainerId(projectPersist.getContainerID());
for (String serverName : projectPersist.getServerNames()) {
List<RuntimePersist> kieservers = runtimeRepository.findByServerName(serverName);
if (kieservers.size() == 1) {
ContainerPojoPersist existingContainer = containerRepository.findByServerNameAndContainerId(serverName, projectPersist.getContainerID());
if (existingContainer == null) {
ContainerPojoPersist newContainer = new ContainerPojoPersist();
newContainer.setStatus(ContainerPojoPersist.STATUS.TODEPLOY.toString());
newContainer.setClassName(projectPersist.getMainClass());
newContainer.setProcessID(projectPersist.getProcessID());
newContainer.setContainerId(projectPersist.getContainerID());
newContainer.setServerName(serverName);
newContainer.setGroupId(projectPersist.getGroupID());
newContainer.setArtifactId(projectPersist.getArtifactID());
newContainer.setVersion(projectPersist.getProjectVersion());
containerRepository.save(newContainer);
} else {
existingContainer.setStatus(ContainerPojoPersist.STATUS.TODEPLOY.toString());
containerRepository.save(existingContainer);
}
executeWrite(url,username,password,workOnGoingView,result.getJobId(),ui);
/**
if (projectPersist.getContainerID() != null) {
KieServerJobStatus jobresult = kieServerRepositoryService.stopContainer(config.getKieserverUrl(), config.getKieserverUserName(), config.getKieserverPassword(), projectPersist.getContainerID(), workOnGoingView,ui);
if (jobresult != null
&& "SUCCESS".equals(jobresult.getType())) {
}
}
**/
// ContainerPojoPersist toto = containerRepository.findByServerNameAndContainerId(projectPersist.getContainerID());
List<RuntimePersist> kieservers = runtimeRepository.findByServerName(projectPersist.getServerName());
if (kieservers.size()==1) {
ContainerPojoPersist existingContainer = containerRepository.findByServerNameAndContainerId(projectPersist.getServerName(),projectPersist.getContainerID());
if (existingContainer==null) {
ContainerPojoPersist newContainer = new ContainerPojoPersist();
newContainer.setStatus(ContainerPojoPersist.STATUS.TODEPLOY.toString());
newContainer.setClassName(projectPersist.getMainClass());
newContainer.setProcessID(projectPersist.getProcessID());
newContainer.setContainerId(projectPersist.getContainerID());
newContainer.setServerName(projectPersist.getServerName());
newContainer.setGroupId(projectPersist.getGroupID());
newContainer.setArtifactId(projectPersist.getArtifactID());
newContainer.setVersion(projectPersist.getProjectVersion());
containerRepository.save(newContainer);
}else{
existingContainer.setStatus(ContainerPojoPersist.STATUS.TODEPLOY.toString());
containerRepository.save(existingContainer);
//remove container from other runtime
List<ContainerPojoPersist> containerPojoPersists = containerRepository.findByContainerId(projectPersist.getContainerID());
for (ContainerPojoPersist container : containerPojoPersists){
if (projectPersist.getServerNames().contains(container.getServerName())==false){
container.setStatus(ContainerPojoPersist.STATUS.TODELETE.toString());
containerRepository.save(container);
}
/**
KieContainerResource newContainer = new KieContainerResource();
newContainer.setContainerId(projectPersist.getContainerID());
newContainer.setReleaseId(new ReleaseId());
newContainer.getReleaseId().setArtifactId(projectPersist.getArtifactID());
newContainer.getReleaseId().setGroupId(projectPersist.getGroupID());
newContainer.getReleaseId().setVersion(projectPersist.getProjectVersion());
KieContainerInfo createdContainer = kieServerRepositoryService.createContainerWithBusinessInterface(config.getKieserverUrl(), config.getKieserverUserName(), config.getKieserverPassword(), projectPersist, newContainer, workOnGoingView, ui);
**/
}
}
};
thread.start();
}
private void executeWrite(String url, String username, String password,AddLog workOnGoingView,String jobID,UI ui){
String isJobDone = "NO";
private void executeWrite(String url, String username, String password, AddLog workOnGoingView, String jobID, UI ui) {
String isJobDone = "NO";
while ("NO".equals(isJobDone)) {
JobStatus jobStatus = kieRepositoryService.getStatusJobID(url,
username,
@ -201,11 +207,11 @@ public class ProjectPersistService {
if ("DUPLICATE_RESOURCE".equals(jobStatus.getStatus())
|| "SUCCESS".equals(jobStatus.getStatus())) {
isJobDone = "YES";
workOnGoingView.addRow("JobID=" + jobID + " finished",ui);
workOnGoingView.addRow("JobID=" + jobID + " finished", ui);
} else if ("ACCEPTED".equals(jobStatus.getStatus())
|| ("APPROVED".equals(jobStatus.getStatus()))) {
try {
workOnGoingView.addRow("JobID=" + jobID + " not yet finished",ui);
workOnGoingView.addRow("JobID=" + jobID + " not yet finished", ui);
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
@ -218,14 +224,6 @@ public class ProjectPersistService {
}
}
public static String getPROJECT() {
return PROJECT;
}
public static void setPROJECT(String PROJECT) {
ProjectPersistService.PROJECT = PROJECT;
}
public ProjectRepository getProjectRepository() {
return projectRepository;
}

View file

@ -11,6 +11,8 @@ public class UserConnectedService {
public static String ASSET = "2";
public static String SPACE = "3";
public static String PROJECT = "4";
public static String CURRENTPROJECT = "5";
public UserConnected getUserConnected() {
return (UserConnected) VaadinSession.getCurrent().getAttribute(USER);
@ -41,10 +43,10 @@ public class UserConnectedService {
}
public void addProjectToSession(String projectName) {
VaadinSession.getCurrent().setAttribute(PROJECT, projectName);
VaadinSession.getCurrent().setAttribute(CURRENTPROJECT, projectName);
}
public String getProject() {
return (String) VaadinSession.getCurrent().getAttribute(PROJECT);
return (String) VaadinSession.getCurrent().getAttribute(CURRENTPROJECT);
}
}

View file

@ -10,8 +10,8 @@ import org.chtijbug.drools.console.service.util.AppContext;
import org.chtijbug.drools.console.view.DeploymentView;
import org.chtijbug.drools.proxy.persistence.model.ProjectPersist;
import org.chtijbug.drools.proxy.persistence.model.RuntimePersist;
import org.chtijbug.drools.proxy.persistence.repository.ProjectRepository;
import java.util.ArrayList;
import java.util.List;
public class AssociateProjectKie extends VerticalLayout {
@ -26,39 +26,40 @@ public class AssociateProjectKie extends VerticalLayout {
private ProjectPersistService projectPersistService;
public AssociateProjectKie(DeploymentView deploymentView,Dialog dialog, ProjectPersist projectPersist){
public AssociateProjectKie(DeploymentView deploymentView, Dialog dialog, ProjectPersist projectPersist) {
projectPersistService= AppContext.getApplicationContext().getBean(ProjectPersistService.class);
projectPersistService = AppContext.getApplicationContext().getBean(ProjectPersistService.class);
setClassName("creation-runtime-content");
label=new Label("Define your project : "+projectPersist.getProjectName());
label = new Label("Define the runtime(s) for the project : " + projectPersist.getProjectName());
label.setClassName("creation-runtime-title");
add(label);
label2=new Label("this step is essential before you can associate your project with a workbench");
label2 = new Label("This step is essential to be able to execute the rules defined in the project");
label2.setClassName("creation-runtime-title2");
add(label2);
gridRuntime=new GridRuntime();
gridRuntime = new GridRuntime(projectPersist);
add(gridRuntime);
associer=new Button("Associer");
associer = new Button("Link and Save");
associer.setEnabled(false);
associer.setClassName("login-application-connexion");
add(associer);
associer.addClickListener(buttonClickEvent -> {
List<RuntimePersist> lstToSave = new ArrayList<>();
for (RuntimePersist runtimePersist : gridRuntime.getSelectedItems()) {
lstToSave.add(runtimePersist);
}
if (lstToSave.size()>0) {
RuntimePersist runtimePersist=gridRuntime.getSelectedItems().stream().findFirst().get();
boolean tmp = projectPersistService.associate(projectPersist,lstToSave);
if(runtimePersist!=null) {
boolean tmp = projectPersistService.associate(projectPersist,runtimePersist);
if(tmp==true){
if (tmp == true) {
deploymentView.setDataProvider();
dialog.close();
}else {
} else {
associer.setEnabled(false);
Notification.show("There is already a project of this name on this runtime");
}
@ -66,10 +67,10 @@ public class AssociateProjectKie extends VerticalLayout {
});
gridRuntime.addSelectionListener(selectionEvent -> {
if(selectionEvent.getFirstSelectedItem()!=null&&selectionEvent.getFirstSelectedItem().isPresent()) {
if (selectionEvent.getFirstSelectedItem() != null && selectionEvent.getFirstSelectedItem().isPresent()) {
associer.setEnabled(true);
}else {
} else {
associer.setEnabled(false);
}
});

View file

@ -36,6 +36,7 @@ public class DefineProject extends VerticalLayout {
private UserConnectedService userConnectedService;
private ProjectPersistService projectPersistService;
private boolean createMode;
public DefineProject(DeploymentView deploymentView,Dialog dialog, ProjectPersist projectPersist){
@ -52,8 +53,12 @@ public class DefineProject extends VerticalLayout {
label2.setClassName("creation-runtime-title2");
add(label2);
nameDeploy=new TextFieldPerso("Name Deployment","",VaadinIcon.FILE_TEXT.create());
nameDeploy=new TextFieldPerso("Deployment Name ","",VaadinIcon.FILE_TEXT.create());
nameDeploy.getTextField().setRequired(true);
if (projectPersist.getDeploymentName()!=null
&& projectPersist.getDeploymentName().length()>0){
nameDeploy.getTextField().setValue((projectPersist.getDeploymentName()));
}
nameDeploy.getTextField().addValueChangeListener(textFieldStringComponentValueChangeEvent -> {
verify();
projectPersist.setDeploymentName(nameDeploy.getTextField().getValue().replaceAll(" ","_"));
@ -69,6 +74,10 @@ public class DefineProject extends VerticalLayout {
mainClass=new ComboBoxPerso("MainClass", VaadinIcon.TREE_TABLE.create());
mainClass.getComboBox().setItems(projectPersist.getClassNameList());
mainClass.getComboBox().setRequired(true);
if (projectPersist.getMainClass()!= null
&& projectPersist.getMainClass().length()>0){
mainClass.getComboBox().setValue("class="+(String)projectPersist.getMainClass());
}
mainClass.getComboBox().addValueChangeListener(textFieldStringComponentValueChangeEvent -> {
verify();
String mainClassName=(String)mainClass.getComboBox().getValue();
@ -82,6 +91,10 @@ public class DefineProject extends VerticalLayout {
processID=new TextFieldPerso("Process ID","",VaadinIcon.TASKS.create());
processID.getTextField().setRequired(true);
if (projectPersist.getProcessID()!= null
&& projectPersist.getProcessID().length()>0){
processID.getTextField().setValue(projectPersist.getProcessID());
}
processID.getTextField().setValueChangeMode(ValueChangeMode.EAGER);
processID.getTextField().addValueChangeListener(textFieldStringComponentValueChangeEvent -> {
verify();
@ -90,11 +103,20 @@ public class DefineProject extends VerticalLayout {
add(processID);
valider=new Button("Valider");
valider.setEnabled(false);
valider=new Button("Save");
if (projectPersist.getProcessID()!= null
&& projectPersist.getProcessID().length()>0){
valider.setEnabled(true);
createMode=false;
}else {
valider.setEnabled(false);
createMode=true;
}
valider.setClassName("login-application-connexion");
valider.addClickListener(buttonClickEvent -> {
projectPersist.setStatus(ProjectPersist.DEFINI);
if (createMode==true) {
projectPersist.setStatus(ProjectPersist.DEFINI);
}
projectPersistService.addProjectToSession(projectPersist,true);
projectPersistService.getProjectRepository().save(projectPersist);
deploymentView.setDataProvider();

View file

@ -14,6 +14,7 @@ import org.chtijbug.drools.proxy.persistence.model.ProjectPersist;
import org.chtijbug.drools.proxy.persistence.model.RuntimePersist;
import com.vaadin.flow.component.html.Label;
import java.util.ArrayList;
import java.util.List;
public class GridRuntime extends Grid<RuntimePersist> {
@ -24,6 +25,7 @@ public class GridRuntime extends Grid<RuntimePersist> {
private TextField version;
private TextField status;
private String strRuntimeName="Runtime Name";
@ -31,6 +33,7 @@ public class GridRuntime extends Grid<RuntimePersist> {
private String strVersion="Version";
private String strStatus="State";
private ProjectPersistService projectPersistService;
private RuntimeService runtimeService;
@ -38,14 +41,30 @@ public class GridRuntime extends Grid<RuntimePersist> {
private ListDataProvider<RuntimePersist> dataProvider;
private ConfigurableFilterDataProvider<RuntimePersist,Void,SerializablePredicate<RuntimePersist>> filterDataProvider;
private ProjectPersist projectPersist;
public GridRuntime(){
public GridRuntime(ProjectPersist projectPersist){
this.projectPersist = projectPersist;
init();
//dataProvider.get
for (RuntimePersist runtimePersist : dataProvider.getItems()){
if (projectPersist.getServerNames().contains(runtimePersist.getServerName())){
getSelectionModel().select(runtimePersist);
}
}
}
public GridRuntime() {
init();
}
private void init(){
projectPersistService = AppContext.getApplicationContext().getBean(ProjectPersistService.class);
runtimeService= AppContext.getApplicationContext().getBean(RuntimeService.class);
setClassName("deployment-grid-perso");
setSelectionMode(Grid.SelectionMode.SINGLE);
setSelectionMode(Grid.SelectionMode.MULTI);
Grid.Column<RuntimePersist> runtimeNameCo=addColumn(runtimePersist -> runtimePersist.getServerName());
runtimeName=new TextField(strRuntimeName);
@ -70,11 +89,18 @@ public class GridRuntime extends Grid<RuntimePersist> {
refreshtGrid(version.getValue(), strVersion);
});
versionCo.setHeader(version);
Grid.Column<RuntimePersist> statusCo=addColumn(runtimePersist -> runtimePersist.getStatus());
status=new TextField(strStatus);
status.setValueChangeMode(ValueChangeMode.EAGER);
status.addValueChangeListener(e -> {
refreshtGrid(status.getValue(), strVersion);
});
statusCo.setHeader(status);
addColumn(new ComponentRenderer<>(runtimePersist -> {
List<ProjectPersist> projectPersists=projectPersistService.getProjectRepository().findByServerName(runtimePersist.getServerName());
List<String> serverList = new ArrayList<>();
serverList.add(runtimePersist.getServerName());
List<ProjectPersist> projectPersists=projectPersistService.getProjectRepository().findByServerNamesIn(serverList);
Label label=new Label(projectPersists!=null?projectPersists.size()+"":"0");

View file

@ -19,91 +19,70 @@ import org.chtijbug.drools.console.service.ProjectPersistService;
import org.chtijbug.drools.console.service.util.AppContext;
import org.chtijbug.drools.console.vaadinComponent.Squelette.SqueletteComposant;
import org.chtijbug.drools.console.vaadinComponent.leftMenu.Action.DeploymentAction;
import org.chtijbug.drools.proxy.persistence.json.KeyProject;
import org.chtijbug.drools.proxy.persistence.model.ProjectPersist;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.Set;
@StyleSheet("css/accueil.css")
public class DeploymentView extends VerticalLayout implements AddLog{
public class DeploymentView extends VerticalLayout implements AddLog {
public static final String pageName="Deployment";
public static final String pageName = "Deployment";
//GRID composant
private Grid<ProjectPersist> projectPersistGrid;
private ListDataProvider<ProjectPersist> dataProvider;
private ConfigurableFilterDataProvider<ProjectPersist,Void,SerializablePredicate<ProjectPersist>> filterDataProvider;
private DeploymentAction deploymentAction;
private final String strNameDeploy = "Deploy name";
private final String strNameProject = "Project name";
private final String strGroupeId = "Groupe ID";
private final String strArtefactID = "Artefact ID";
//TEXTFIELD search
private TextField nameDeploy;
private TextField nameProject;
private TextField groupeId;
private TextField artifactId;
private TextField processId;
private TextField serverName;
private ComboBox status;
private final String strProcessID = "Process ID";
private final String strServerName = "Server Name";
private final String strStatus = "Status";
private Grid<ProjectPersist> projectPersistGrid;
private ListDataProvider<ProjectPersist> dataProvider;
private ConfigurableFilterDataProvider<ProjectPersist, Void, SerializablePredicate<ProjectPersist>> filterDataProvider;
private DeploymentAction deploymentAction;
//CONSTANTE Textfield
private final String strNameDeploy="Deploy name";
private final String strNameProject="Project name";
private final String strGroupeId="Groupe ID";
private final String strArtefactID="Artefact ID";
private final String strProcessID="Process ID";
private final String strServerName="Server Name";
private final String strStatus="Status";
private TextField nameDeploy;
private TextField nameProject;
private TextField groupeId;
private TextField artifactId;
private TextField processId;
private TextField serverName;
private ComboBox status;
//SERVICE
private ProjectPersistService projectPersistService;
private SqueletteComposant squeletteComposant;
public DeploymentView(SqueletteComposant squeletteComposant) {
this.squeletteComposant=squeletteComposant;
projectPersistService=AppContext.getApplicationContext().getBean(ProjectPersistService.class);
this.squeletteComposant = squeletteComposant;
projectPersistService = AppContext.getApplicationContext().getBean(ProjectPersistService.class);
setClassName("deployment-content");
add(new Label("Project"));
projectPersistGrid=new Grid<>();
projectPersistGrid = new Grid<>();
projectPersistGrid.setClassName("deployment-grid-perso");
projectPersistGrid.setSelectionMode(Grid.SelectionMode.SINGLE);
Grid.Column<ProjectPersist> deployNameCo=projectPersistGrid.addColumn(projectPersist -> projectPersist.getDeploymentName());
nameDeploy=new TextField(strNameDeploy);
Grid.Column<ProjectPersist> deployNameCo = projectPersistGrid.addColumn(projectPersist -> projectPersist.getDeploymentName());
nameDeploy = new TextField(strNameDeploy);
nameDeploy.setValueChangeMode(ValueChangeMode.EAGER);
nameDeploy.addValueChangeListener(e -> {
refreshtGrid(nameDeploy.getValue(), strNameDeploy);
});
deployNameCo.setHeader(nameDeploy);
Grid.Column<ProjectPersist> nameProjectCo=projectPersistGrid.addColumn(projectPersist -> projectPersist.getProjectName());
nameProject=new TextField(strNameProject);
Grid.Column<ProjectPersist> nameProjectCo = projectPersistGrid.addColumn(projectPersist -> projectPersist.getProjectName());
nameProject = new TextField(strNameProject);
nameProject.setValueChangeMode(ValueChangeMode.EAGER);
nameProject.addValueChangeListener(e -> {
refreshtGrid(nameProject.getValue(), strNameProject);
@ -111,26 +90,26 @@ public class DeploymentView extends VerticalLayout implements AddLog{
nameProjectCo.setHeader(nameProject);
projectPersistGrid.addColumn(projectPersist -> projectPersist.getMainClass()).setHeader("ClassName")
.setComparator((projectPersist,t1) -> projectPersist.getMainClass().compareTo(t1.getMainClass()));
.setComparator((projectPersist, t1) -> projectPersist.getMainClass().compareTo(t1.getMainClass()));
Grid.Column<ProjectPersist> groupIdCo=projectPersistGrid.addColumn(projectPersist -> projectPersist.getGroupID());
groupeId=new TextField(strGroupeId);
Grid.Column<ProjectPersist> groupIdCo = projectPersistGrid.addColumn(projectPersist -> projectPersist.getGroupID());
groupeId = new TextField(strGroupeId);
groupeId.setValueChangeMode(ValueChangeMode.EAGER);
groupeId.addValueChangeListener(e -> {
refreshtGrid(groupeId.getValue(), strGroupeId);
});
groupIdCo.setHeader(groupeId);
Grid.Column<ProjectPersist> artifactIDCO=projectPersistGrid.addColumn(projectPersist -> projectPersist.getArtifactID());
artifactId=new TextField(strArtefactID);
Grid.Column<ProjectPersist> artifactIDCO = projectPersistGrid.addColumn(projectPersist -> projectPersist.getArtifactID());
artifactId = new TextField(strArtefactID);
artifactId.setValueChangeMode(ValueChangeMode.EAGER);
artifactId.addValueChangeListener(e -> {
refreshtGrid(artifactId.getValue(), strArtefactID);
});
artifactIDCO.setHeader(artifactId);
Grid.Column<ProjectPersist> processIDco=projectPersistGrid.addColumn(projectPersist -> projectPersist.getProcessID());
processId=new TextField(strProcessID);
Grid.Column<ProjectPersist> processIDco = projectPersistGrid.addColumn(projectPersist -> projectPersist.getProcessID());
processId = new TextField(strProcessID);
processId.setValueChangeMode(ValueChangeMode.EAGER);
processId.addValueChangeListener(e -> {
refreshtGrid(processId.getValue(), strProcessID);
@ -138,8 +117,18 @@ public class DeploymentView extends VerticalLayout implements AddLog{
processIDco.setHeader(processId);
Grid.Column<ProjectPersist> serverNameCo=projectPersistGrid.addColumn(projectPersist -> projectPersist.getServerName());
serverName=new TextField(strServerName);
Grid.Column<ProjectPersist> serverNameCo = projectPersistGrid.addColumn(projectPersist -> {
String result = null;
for (String serverName : projectPersist.getServerNames()) {
if (result != null) {
result = result + ":" + serverName;
} else {
result = serverName;
}
}
return result;
});
serverName = new TextField(strServerName);
serverName.setValueChangeMode(ValueChangeMode.EAGER);
serverName.addValueChangeListener(e -> {
refreshtGrid(serverName.getValue(), strServerName);
@ -148,21 +137,21 @@ public class DeploymentView extends VerticalLayout implements AddLog{
projectPersistGrid.addColumn(projectPersist -> projectPersist.getProjectVersion()).setHeader("Version")
.setComparator((projectPersist,t1) -> projectPersist.getProjectVersion().compareTo(t1.getProjectVersion()));
.setComparator((projectPersist, t1) -> projectPersist.getProjectVersion().compareTo(t1.getProjectVersion()));
Grid.Column<ProjectPersist> statusCo=projectPersistGrid.addColumn(projectPersist -> projectPersist.getStatus());
status=new ComboBox(strProcessID);
Grid.Column<ProjectPersist> statusCo = projectPersistGrid.addColumn(projectPersist -> projectPersist.getStatus());
status = new ComboBox(strProcessID);
status.setClassName("deployment-combobox");
ArrayList<String> tmp=new ArrayList<>();
ArrayList<String> tmp = new ArrayList<>();
tmp.add(ProjectPersist.DEFINI);
tmp.add(ProjectPersist.Deployable);
tmp.add(ProjectPersist.ADEFINIR);
tmp.add(" ");
status.setItems(tmp);
status.addValueChangeListener(e -> {
refreshtGrid(status.getValue()!=null?status.getValue().toString():" ", strStatus);
refreshtGrid(status.getValue() != null ? status.getValue().toString() : " ", strStatus);
});
statusCo.setHeader(status);
@ -172,9 +161,9 @@ public class DeploymentView extends VerticalLayout implements AddLog{
projectPersistGrid.addSelectionListener(selectionEvent -> {
if(selectionEvent.getFirstSelectedItem()!=null&&selectionEvent.getFirstSelectedItem().isPresent()) {
if (selectionEvent.getFirstSelectedItem() != null && selectionEvent.getFirstSelectedItem().isPresent()) {
majAction(selectionEvent.getFirstSelectedItem().get());
}else {
} else {
getDeploymentAction().getAssociateKieServer().setEnabled(false);
getDeploymentAction().getDefinirProject().setEnabled(false);
getDeploymentAction().getDeployer().setEnabled(false);
@ -183,41 +172,40 @@ public class DeploymentView extends VerticalLayout implements AddLog{
//add(new ConsoleDeploy());
}
private void refreshtGrid(String value,String type){
private void refreshtGrid(String value, String type) {
filterDataProvider.setFilter(filterGrid(value.toUpperCase(),type));
filterDataProvider.setFilter(filterGrid(value.toUpperCase(), type));
projectPersistGrid.getDataProvider().refreshAll();
}
private SerializablePredicate<ProjectPersist> filterGrid(String value, String type){
private SerializablePredicate<ProjectPersist> filterGrid(String value, String type) {
SerializablePredicate<ProjectPersist> columnPredicate = null;
if(value.equals("")||value.equals(" ")||type.equals(" ")){
if (value.equals("") || value.equals(" ") || type.equals(" ")) {
columnPredicate = asset -> (true);
}else {
} else {
if (type.equals(strArtefactID)) {
columnPredicate = asset -> (
asset.getArtifactID()!=null&&asset.getArtifactID().toUpperCase().contains(value.toUpperCase()));
}else if(type.equals(strGroupeId)){
columnPredicate = asset -> (asset.getGroupID()!=null&&asset.getGroupID().toUpperCase().contains(value.toUpperCase()));
}
else if(type.equals(strNameDeploy)){
columnPredicate = asset -> (asset.getDeploymentName()!=null&&asset.getDeploymentName().toUpperCase().contains(value.toUpperCase()));
} else if(type.equals(strNameProject)){
columnPredicate = asset -> (asset.getProjectName()!=null&&asset.getProjectName().toString().toUpperCase().contains(value.toUpperCase()));
}else if(type.equals(strProcessID)){
columnPredicate = asset -> (asset.getProcessID()!=null&&asset.getProcessID().toUpperCase().contains(value.toUpperCase()));
}else if(type.equals(strStatus)){
columnPredicate = asset -> (asset.getStatus()!=null&&asset.getStatus().toUpperCase().equals(value.toUpperCase()));
}else if(type.equals(strServerName)){
columnPredicate = asset -> (asset.getServerName()!=null&&asset.getServerName().toUpperCase().equals(value.toUpperCase()));
asset.getArtifactID() != null && asset.getArtifactID().toUpperCase().contains(value.toUpperCase()));
} else if (type.equals(strGroupeId)) {
columnPredicate = asset -> (asset.getGroupID() != null && asset.getGroupID().toUpperCase().contains(value.toUpperCase()));
} else if (type.equals(strNameDeploy)) {
columnPredicate = asset -> (asset.getDeploymentName() != null && asset.getDeploymentName().toUpperCase().contains(value.toUpperCase()));
} else if (type.equals(strNameProject)) {
columnPredicate = asset -> (asset.getProjectName() != null && asset.getProjectName().toString().toUpperCase().contains(value.toUpperCase()));
} else if (type.equals(strProcessID)) {
columnPredicate = asset -> (asset.getProcessID() != null && asset.getProcessID().toUpperCase().contains(value.toUpperCase()));
} else if (type.equals(strStatus)) {
columnPredicate = asset -> (asset.getStatus() != null && asset.getStatus().toUpperCase().equals(value.toUpperCase()));
}
}
return columnPredicate;
}
public void setDataProvider(){
HashMap<String,ProjectPersist> projectPersists = projectPersistService.getProjectsSession();
if(projectPersists!=null) {
public void setDataProvider() {
HashMap<String, ProjectPersist> projectPersists = projectPersistService.getProjectsSession();
if (projectPersists != null) {
dataProvider = new ListDataProvider<>(projectPersists.values());
filterDataProvider = dataProvider.withConfigurableFilter();
@ -229,7 +217,8 @@ public class DeploymentView extends VerticalLayout implements AddLog{
}
}
public void reinitFilter(){
public void reinitFilter() {
artifactId.setValue("");
groupeId.setValue("");
@ -237,34 +226,36 @@ public class DeploymentView extends VerticalLayout implements AddLog{
nameProject.setValue("");
nameDeploy.setValue("");
}
public void majAction(ProjectPersist projectPersist){
if(projectPersist.getStatus().equals(ProjectPersist.DEFINI)){
public void majAction(ProjectPersist projectPersist) {
if (projectPersist.getStatus().equals(ProjectPersist.DEFINI)) {
getDeploymentAction().getAssociateKieServer().setEnabled(true);
getDeploymentAction().getDefinirProject().setEnabled(false);
getDeploymentAction().getDeployer().setEnabled(false);
}else if(projectPersist.getStatus().equals(ProjectPersist.ADEFINIR)){
} else if (projectPersist.getStatus().equals(ProjectPersist.ADEFINIR)) {
getDeploymentAction().getAssociateKieServer().setEnabled(false);
getDeploymentAction().getDefinirProject().setEnabled(true);
getDeploymentAction().getDeployer().setEnabled(false);
}else if(projectPersist.getStatus().equals(ProjectPersist.Deployable)){
} else if (projectPersist.getStatus().equals(ProjectPersist.Deployable)) {
getDeploymentAction().getAssociateKieServer().setEnabled(false);
getDeploymentAction().getDefinirProject().setEnabled(false);
getDeploymentAction().getAssociateKieServer().setEnabled(true);
getDeploymentAction().getDefinirProject().setEnabled(true);
getDeploymentAction().getDeployer().setEnabled(true);
}
}
@Override
public void addRow(String textToAdd,UI ui) {
public void addRow(String textToAdd, UI ui) {
ui.access(()->{
ui.access(() -> {
HorizontalLayout horizontalLayout=new HorizontalLayout();
HorizontalLayout horizontalLayout = new HorizontalLayout();
horizontalLayout.setClassName("console-row");
Label date=new Label(new Date()+" : ");
Label date = new Label(new Date() + " : ");
date.setClassName("console-date");
horizontalLayout.add(date);
horizontalLayout.add(new Label(textToAdd));
@ -277,14 +268,15 @@ public class DeploymentView extends VerticalLayout implements AddLog{
ui.getPushConfiguration().setPushMode(PushMode.AUTOMATIC);
ui.push();
}catch (Exception e){
} catch (Exception e) {
e.printStackTrace();
ui.getSession().unlock();
}finally {
} finally {
ui.getSession().unlock();
}
}
public Grid<ProjectPersist> getProjectPersistGrid() {
return projectPersistGrid;
}