editing rule template work

This commit is contained in:
Nicolas Héron 2018-12-13 16:41:47 +01:00
commit e19bb642ca
52 changed files with 406 additions and 212 deletions

View file

@ -4,6 +4,7 @@ import com.vaadin.event.FieldEvents;
import com.vaadin.navigator.View;
import com.vaadin.navigator.ViewChangeListener;
import com.vaadin.ui.*;
import org.chtijbug.drools.console.service.KieRepositoryService;
import org.chtijbug.drools.console.service.model.UserConnected;
import org.chtijbug.drools.console.service.model.kie.KieConfigurationData;
import org.chtijbug.drools.console.service.util.AppContext;
@ -13,12 +14,18 @@ public class WelcomeView extends VerticalLayout implements View {
private UserConnected userConnected;
private TextField userNameTextField;
private PasswordField userpasswdTextField;
private Button loginButton;
private Button logoutButton;
private KieRepositoryService kieRepositoryService;
private KieConfigurationData configKie;
public WelcomeView(UserConnected userConnected, MenuBar menuBar) {
this.kieRepositoryService = AppContext.getApplicationContext().getBean(KieRepositoryService.class);
this.userConnected = userConnected;
final VerticalLayout layout = new VerticalLayout();
layout.addComponent(menuBar);
KieConfigurationData configKie = AppContext.getApplicationContext().getBean(KieConfigurationData.class);
this.configKie = AppContext.getApplicationContext().getBean(KieConfigurationData.class);
// GitLabConfigurationData configGitLab = AppContext.getApplicationContext().getBean(GitLabConfigurationData.class);
// JenkinsConfigurationData jenkinsConfigurationData = AppContext.getApplicationContext().getBean(JenkinsConfigurationData.class);
@ -45,6 +52,31 @@ public class WelcomeView extends VerticalLayout implements View {
userConnected.setUserPassword(configKie.getPassword());
userpasswdTextField.addTextChangeListener((FieldEvents.TextChangeListener) textChangeEvent -> userConnected.setUserPassword(textChangeEvent.getText()));
userHorizontal.addComponent(userpasswdTextField);
loginButton = new Button("login");
userHorizontal.addComponent(loginButton);
logoutButton = new Button("logout");
logoutButton.setEnabled(false);
userHorizontal.addComponent(logoutButton);
loginButton.addClickListener((Button.ClickListener) event -> {
UserConnected connected = kieRepositoryService.login(this.configKie.getKiewbUrl(), userConnected.getUserName(), userConnected.getUserPassword());
userConnected.getProjectResponses().clear();
userConnected.getProjectResponses().addAll(connected.getProjectResponses());
userConnected.getRoles().clear();
userConnected.getRoles().addAll(connected.getRoles());
loginButton.setEnabled(false);
logoutButton.setEnabled(true);
userConnected.setConnected(true);
});
logoutButton.addClickListener((Button.ClickListener) event -> {
userConnected.getRoles().clear();
userConnected.getProjectResponses().clear();
userConnected.setConnected(false);
loginButton.setEnabled(true);
logoutButton.setEnabled(false);
});
}
@Override

View file

@ -3,8 +3,10 @@ package org.chtijbug.drools.console.service;
import com.fasterxml.jackson.databind.ObjectMapper;
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.drools.guvnor.server.jaxrs.jaxb.Asset;
import org.chtijbug.guvnor.server.jaxrs.api.UserLoginInformation;
import org.chtijbug.guvnor.server.jaxrs.jaxb.Asset;
import org.guvnor.rest.client.ProjectResponse;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@ -74,6 +76,33 @@ public class KieRepositoryService {
return reponseMoteur;
}
public UserConnected login(String url, String username, String password) {
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);
}
ResponseEntity<UserLoginInformation> extractedValue = new ResponseEntity<>(extractedResponse, clientHttpResponse.getHeaders(), clientHttpResponse.getStatusCode());
return extractedValue;
});
UserConnected userConnected = new UserConnected();
UserLoginInformation responseBody = response.getBody();
userConnected.setUserName(username);
userConnected.setUserPassword(password);
userConnected.setUserPassword(password);
userConnected.getProjectResponses().addAll(responseBody.getProjects());
userConnected.setUserName(username);
return userConnected;
}
public List<Asset> getListAssets(String url, String username, String password, String spaceName, String projectName) {
String completeurl = url + "/chtijbug/" + spaceName + "/" + projectName + "/assets";
logger.info("url moteur reco : " + completeurl);

View file

@ -1,10 +1,21 @@
package org.chtijbug.drools.console.service.model;
import org.guvnor.rest.client.ProjectResponse;
import java.util.ArrayList;
import java.util.List;
public class UserConnected {
private String userName;
private String userPassword;
private List<ProjectResponse> projectResponses = new ArrayList<>();
private List<String> roles = new ArrayList<>();
private boolean connected;
public UserConnected() {
}
@ -28,4 +39,30 @@ public class UserConnected {
public void setUserPassword(String userPassword) {
this.userPassword = userPassword;
}
public List<ProjectResponse> getProjectResponses() {
return projectResponses;
}
public void setProjectResponses(List<ProjectResponse> projectResponses) {
this.projectResponses = projectResponses;
}
public List<String> getRoles() {
return roles;
}
public void setRoles(List<String> roles) {
this.roles = roles;
}
public boolean getConnected() {
return connected;
}
public void setConnected(boolean connected) {
this.connected = connected;
}
}

View file

@ -1,17 +1,31 @@
package org.chtijbug.drools.console.view;
import com.fasterxml.jackson.dataformat.xml.XmlMapper;
import com.vaadin.data.Container;
import com.vaadin.data.Item;
import com.vaadin.navigator.View;
import com.vaadin.navigator.ViewChangeListener;
import com.vaadin.ui.Button;
import com.vaadin.ui.HorizontalLayout;
import com.vaadin.ui.Table;
import com.vaadin.ui.VerticalLayout;
import org.chtijbug.drools.console.AddLog;
import org.chtijbug.drools.console.service.KieRepositoryService;
import org.chtijbug.drools.console.service.model.UserConnected;
import org.chtijbug.drools.console.service.model.kie.KieConfigurationData;
import org.chtijbug.drools.console.service.util.AppContext;
import org.drools.guvnor.server.jaxrs.jaxb.Asset;
import org.chtijbug.guvnor.server.jaxrs.jaxb.Asset;
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.vaadin.haijian.ExcelExporter;
import org.vaadin.winnid.excelimporttable.ExcelImportTable;
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Locale;
public class AssetEditView extends VerticalLayout implements AddLog, View {
@ -22,6 +36,12 @@ public class AssetEditView extends VerticalLayout implements AddLog, View {
private XmlMapper mapper = new XmlMapper();
private String spaceName;
private String projectName;
private Table assetTable;
private Button startUpdate;
private Button commitUpdate;
private Button undoUpdate;
private ExcelExporter excelExporter;
private ExcelImportTable excelImportTable;
public AssetEditView(UserConnected userConnected, String spaceName, String projectName, Asset assetToUpdate) {
this.userConnected = userConnected;
@ -32,7 +52,105 @@ public class AssetEditView extends VerticalLayout implements AddLog, View {
this.config = AppContext.getApplicationContext().getBean(KieConfigurationData.class);
String assetContent = kieRepositoryService.getAssetSource(config.getKiewbUrl(), userConnected.getUserName(), userConnected.getUserPassword(), spaceName, projectName, assetToUpdate.getTitle());
TemplateModel model = RuleTemplateModelXMLPersistenceImpl.getInstance().unmarshal(assetContent);
System.out.println("coucou");
HorizontalLayout actionButtons = new HorizontalLayout();
this.addComponent(actionButtons);
startUpdate = new Button("Update");
actionButtons.addComponent(startUpdate);
startUpdate.addClickListener((Button.ClickListener) event -> {
startUpdate.setEnabled(false);
commitUpdate.setEnabled(true);
undoUpdate.setEnabled(true);
assetTable.setEditable(true);
excelExporter.setEnabled(false);
excelImportTable.setEnabled(false);
});
commitUpdate = new Button("Commit");
commitUpdate.setEnabled(false);
commitUpdate.addClickListener((Button.ClickListener) event -> {
startUpdate.setEnabled(true);
commitUpdate.setEnabled(false);
undoUpdate.setEnabled(false);
assetTable.setEditable(false);
excelExporter.setEnabled(true);
excelImportTable.setEnabled(false);
});
actionButtons.addComponent(commitUpdate);
undoUpdate = new Button("undo");
undoUpdate.setEnabled(false);
undoUpdate.addClickListener((Button.ClickListener) event -> {
startUpdate.setEnabled(true);
commitUpdate.setEnabled(false);
undoUpdate.setEnabled(false);
assetTable.setEditable(false);
fillTable(model);
excelExporter.setEnabled(true);
excelImportTable.setEnabled(false);
});
actionButtons.addComponent(undoUpdate);
InterpolationVariable[] variablesList = model.getInterpolationVariablesList();
assetTable = new Table("Data");
this.addComponent(assetTable);
assetTable.setSelectable(true);
assetTable.setMultiSelect(false);
for (InterpolationVariable i : variablesList) {
if (i.getDataType().equals("String")) {
assetTable.addContainerProperty(i.getVarName(), String.class, null);
} else if (i.getDataType().equals("Date")) {
assetTable.addContainerProperty(i.getVarName(), Date.class, null);
} else {
assetTable.addContainerProperty(i.getVarName(), String.class, null);
}
}
fillTable(model);
assetTable.setSizeFull();
excelExporter = new ExcelExporter();
excelExporter.setDateFormat("dd-MM-yyyy");
excelExporter.setLocale(Locale.FRANCE);
excelExporter.setTableToBeExported(assetTable);
excelExporter.setCaption("Export to Excel");
actionButtons.addComponent(excelExporter);
excelExporter.setEnabled(true);
excelImportTable = new ExcelImportTable(assetTable);
excelImportTable.setLocale(Locale.FRANCE);
actionButtons.addComponent(excelImportTable);
}
private void fillTable(TemplateModel model) {
InterpolationVariable[] variablesList = model.getInterpolationVariablesList();
DateFormat format = new SimpleDateFormat("dd-MMM-yyyy", Locale.FRANCE);
String[][] contenuTable = model.getTableAsArray();
Container dataSource = assetTable.getContainerDataSource();
dataSource.removeAllItems();
for (int i = 0; i < model.getRowsCount(); i++) {
String[] ligne = contenuTable[i];
Object newItemId = assetTable.addItem();
Item row1 = assetTable.getItem(newItemId);
int k = 0;
for (InterpolationVariable j : variablesList) {
if (j.getDataType().equals("String")) {
row1.getItemProperty(j.getVarName()).setValue(ligne[k]);
} else if (j.getDataType().equals("Date")) {
try {
row1.getItemProperty(j.getVarName()).setValue(format.parse(ligne[k]));
} catch (ParseException e) {
row1.getItemProperty(j.getVarName()).setValue(new Date());
}
} else {
row1.getItemProperty(j.getVarName()).setValue(ligne[k]);
}
k++;
}
}
}
@Override

View file

@ -59,6 +59,7 @@ public class DeploymentView extends VerticalLayout implements AddLog, View {
spaceContainer =
new BeanItemContainer<ProjectResponse>(ProjectResponse.class);
ComboBox spaceSelection = new ComboBox("Project", spaceContainer);
spaceSelection.setNullSelectionAllowed(false);
@ -147,10 +148,8 @@ public class DeploymentView extends VerticalLayout implements AddLog, View {
}
public void refreshCombo() {
List<ProjectResponse> projectResponses = kieRepositoryService.getListSpaces2(config.getKiewbUrl(), userConnected.getUserName(), userConnected.getUserPassword());
spaceContainer.removeAllItems();
spaceContainer.addAll(projectResponses);
spaceContainer.addAll(userConnected.getProjectResponses());
}
@ -188,6 +187,7 @@ public class DeploymentView extends VerticalLayout implements AddLog, View {
@Override
public void enter(ViewChangeListener.ViewChangeEvent viewChangeEvent) {
spaceContainer.removeAllItems();
spaceContainer.addAll(userConnected.getProjectResponses());
}
}

View file

@ -15,7 +15,7 @@ import org.chtijbug.drools.console.service.KieServerRepositoryService;
import org.chtijbug.drools.console.service.model.UserConnected;
import org.chtijbug.drools.console.service.model.kie.KieConfigurationData;
import org.chtijbug.drools.console.service.util.AppContext;
import org.drools.guvnor.server.jaxrs.jaxb.Asset;
import org.chtijbug.guvnor.server.jaxrs.jaxb.Asset;
import org.guvnor.rest.client.ProjectResponse;
import java.util.List;
@ -140,15 +140,15 @@ public class TableLikeArtefactView extends VerticalLayout implements AddLog, Vie
public void refreshList() {
List<ProjectResponse> projectResponses = kieRepositoryService.getListSpaces2(config.getKiewbUrl(), userConnected.getUserName(), userConnected.getUserPassword());
spaceContainer.removeAllItems();
spaceContainer.addAll(projectResponses);
spaceContainer.addAll(userConnected.getProjectResponses());
}
@Override
public void enter(ViewChangeListener.ViewChangeEvent viewChangeEvent) {
spaceContainer.removeAllItems();
spaceContainer.addAll(userConnected.getProjectResponses());
}
@Override