Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[DROOLS-4647][DROOLS-4701][DROOLS-4732] -Update History (undo & redo actions) to support Background grid + import/export background #1257

Merged
merged 84 commits into from Nov 15, 2019
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
84 commits
Select commit Hold shift + click to select a range
cd42378
[DROOLS-4648] Move settings from SimulationDescriptor to specific tag.
gitgabrio Oct 18, 2019
098a9aa
[DROOLS-4648] Start and run. Principal features working
gitgabrio Oct 18, 2019
e133552
Merge remote-tracking branch 'origin/master' into DROOLS-4648
gitgabrio Oct 22, 2019
0c6c3e2
[DROOLS-4648] Adapting merge with master
gitgabrio Oct 23, 2019
9af2656
Merge remote-tracking branch 'origin/master' into DROOLS-4648
gitgabrio Oct 23, 2019
4a6659d
DROOLS-3727: Add temporary kogito related module configuration
Oct 23, 2019
4522076
[DROOLS-4648] Fixed tests for current iteration
gitgabrio Oct 23, 2019
95cd70b
Merge remote-tracking branch 'origin/master' into DROOLS-4648
gitgabrio Oct 23, 2019
39acba6
[DROOLS-4648] Implementing focus
gitgabrio Oct 25, 2019
93a0390
Merge remote-tracking branch 'origin/master' into DROOLS-4648
gitgabrio Oct 25, 2019
477dfa3
[DROOLS-4648] Implementing focus
gitgabrio Oct 28, 2019
86a8cae
[DROOLS-4648] Prepared tab switching
gitgabrio Oct 28, 2019
a739c28
[DROOLS-4648] Fixing/adding tests
gitgabrio Oct 28, 2019
cfe9e90
[DROOLS-4648] Following renaming on backend side
gitgabrio Oct 29, 2019
f29305b
[DROOLS-4648] Clean PR from not-related modifications
gitgabrio Oct 29, 2019
60c5d87
Merge remote-tracking branch 'origin/master' into DROOLS-4648
gitgabrio Oct 29, 2019
0e2d3f2
Merge remote-tracking branch 'origin/master' into DROOLS-4648
gitgabrio Oct 30, 2019
0243119
[DROOLS-4648] Merged with master. Fixed as per PR suggestions
gitgabrio Oct 30, 2019
f356252
[DROOLS-4648] Extend test coverage
gitgabrio Oct 30, 2019
8c974fc
[DROOLS-4648] Checkstyle
gitgabrio Oct 30, 2019
79328b3
[DROOLS-4648] Extend code coverage
gitgabrio Oct 31, 2019
a42c852
[DROOLS-4648] Fixed as per PR suggestion
gitgabrio Oct 31, 2019
024de11
[DROOLS-4648] Fixed as per PR suggestion
gitgabrio Nov 4, 2019
3d6eca4
[DROOLS-4647] Refactoring to pass information about edited grid insid…
gitgabrio Nov 4, 2019
42638a9
Merge remote-tracking branch 'gitgabrio/DROOLS-4648' into DROOLS-4647
gitgabrio Nov 4, 2019
1b67bfe
[DROOLS-4647] Fixed merge
gitgabrio Nov 4, 2019
b345711
[DROOLS-4647] Modification
gitgabrio Nov 5, 2019
2af8f76
Merge remote-tracking branch 'origin/master' into DROOLS-4647
gitgabrio Nov 5, 2019
6177541
[DROOLS-4647] Working switch tab on undo/redo
gitgabrio Nov 6, 2019
1bf1a46
[DROOLS-4647] Adapting ImportExport
gitgabrio Nov 7, 2019
9d39932
[DROOLS-4647] Add tests
gitgabrio Nov 7, 2019
fa03e79
[DROOLS-4647] Fix checkstyle
gitgabrio Nov 7, 2019
d40f6cf
[DROOLS-4647] Fix tests
gitgabrio Nov 8, 2019
38e9358
Merge remote-tracking branch 'origin/master' into DROOLS-4647
gitgabrio Nov 11, 2019
31513ba
[DROOLS-4647] Extend test coverage
gitgabrio Nov 11, 2019
5037223
[DROOLS-4732] Removed save button from Settings panel
danielezonca Nov 11, 2019
f892f57
[DROOLS-4732] Removed dead code
danielezonca Nov 11, 2019
8db5b63
DROOLS-4703: Context Menu Background
yesamer Nov 11, 2019
7aee43e
[DROOLS-4647] Moving scenariodescriptor population for simulation
gitgabrio Nov 11, 2019
01fa0e1
Merge remote-tracking branch 'origin/master' into DROOLS-4647
gitgabrio Nov 12, 2019
57d4fd5
[DROOLS-4647] Fixed merge and tests. Fixed import
gitgabrio Nov 12, 2019
4cb9d13
DROOLS-4703: BackgroundGrid context menu
yesamer Nov 12, 2019
09bf59e
Merge remote-tracking branch 'gitgabrio/DROOLS-4647' into DROOLS-4703-2
yesamer Nov 12, 2019
0d8423e
[DROOLS-4647] Add switch tests
gitgabrio Nov 12, 2019
39febd1
DROOLS-4703: BackgroundGrid context menu
yesamer Nov 12, 2019
249cbc6
[DROOLS-4647] Fixing not editable headers in background
gitgabrio Nov 12, 2019
4ece659
[DROOLS-4647] Fixing test tool (right panel) population for backgroun…
gitgabrio Nov 12, 2019
7ba0f8f
DROOLS-4647: Context Menu fixed
yesamer Nov 12, 2019
ef7976c
Merge remote-tracking branch 'gitgabrio/DROOLS-4647' into DROOLS-4703-2
yesamer Nov 13, 2019
c73349e
[DROOLS-4647] Fixing tests
gitgabrio Nov 13, 2019
5a80feb
DROOLS-4703: BackgroundGrid context menu
yesamer Nov 13, 2019
6c75815
[DROOLS-4647] Fixing labels on right test tool. Adapting tests
gitgabrio Nov 13, 2019
021c265
DROOLS-4703: BackgroundGrid context menu + tests
yesamer Nov 13, 2019
715e823
Merge remote-tracking branch 'yesamer/DROOLS-4703-2' into DROOLS-4647
gitgabrio Nov 13, 2019
cb26953
Merge remote-tracking branch 'origin/master' into DROOLS-4732
danielezonca Nov 13, 2019
eeea6cb
Merge remote-tracking branch 'gitgabrio/DROOLS-4647' into DROOLS-4703-2
yesamer Nov 13, 2019
2c25ac2
DROOLS-4703: Tests
yesamer Nov 13, 2019
7fd45bd
[DROOLS-4647] Fix merge/fix tests
gitgabrio Nov 13, 2019
2ba913b
[DROOLS-4647] Fix merge on tests
gitgabrio Nov 14, 2019
337f9b3
Merge remote-tracking branch 'origin/master' into DROOLS-4647
gitgabrio Nov 14, 2019
6495433
[DROOLS-4647] Implemented add menu item after. Fix merge with master …
gitgabrio Nov 14, 2019
047733f
[DROOLS-4647] Fix merge with master on tests
gitgabrio Nov 14, 2019
b3bd100
Merge remote-tracking branch 'danielezonca/DROOLS-4732' into DROOLS-4647
gitgabrio Nov 14, 2019
7309b14
[DROOLS-4647] Fix instances population on test tools (right panel). F…
gitgabrio Nov 14, 2019
52580b8
DROOLS-4703: BackgroundGrid context menu + tests
yesamer Nov 14, 2019
02ddbc8
DROOLS-4703: BackgroundGrid context menu + tests
yesamer Nov 14, 2019
072b67f
Revert "DROOLS-4703: BackgroundGrid context menu + tests"
gitgabrio Nov 14, 2019
be82fbc
Revert "DROOLS-4703: BackgroundGrid context menu + tests"
gitgabrio Nov 14, 2019
575f31e
Merge remote-tracking branch 'origin/master' into DROOLS-4647
danielezonca Nov 14, 2019
955b58e
DROOLS-4703: BackgroundGrid context menu + tests
yesamer Nov 14, 2019
78a5f81
DROOLS-4703-2 Fix merge/fix tests
gitgabrio Nov 13, 2019
3fe3113
DROOLS-4703: BackgroundGrid context menu
yesamer Nov 14, 2019
c090ca7
Merge remote-tracking branch 'origin/master' into DROOLS-4703-2
yesamer Nov 14, 2019
5dd4f38
DROOLS-4703: Tests
yesamer Nov 14, 2019
44a0e6f
Merge remote-tracking branch 'gitgabrio/DROOLS-4647' into DROOLS-4703-2
yesamer Nov 14, 2019
71e18f6
DROOLS-4703: Tests
yesamer Nov 14, 2019
6b36837
[DROOLS-4647] Fixed Background import on read only columns, added not…
danielezonca Nov 14, 2019
ba6136e
DROOLS-4703: Minor fixes
yesamer Nov 14, 2019
00f3ea7
DROOLS-4766: Factory setting and placeholder handling fixed.
yesamer Nov 15, 2019
c22868a
[DROOLS-4647] Remove direct access to context.getStatus().getSimulati…
gitgabrio Nov 15, 2019
185fe03
Merge remote-tracking branch 'yesamer/DROOLS-4766' into DROOLS-4647
gitgabrio Nov 15, 2019
bf40e2b
DROOLS-4703: Fixed prepend / append items naming
yesamer Nov 15, 2019
3c5d57c
Merge remote-tracking branch 'yesamer/DROOLS-4703-2' into DROOLS-4647
gitgabrio Nov 15, 2019
7f62cc8
Merge remote-tracking branch 'yesamer/DROOLS-4703-2' into DROOLS-4647
gitgabrio Nov 15, 2019
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
Expand Up @@ -15,30 +15,31 @@
*/
package org.drools.workbench.screens.scenariosimulation.service;

import org.drools.scenariosimulation.api.model.Simulation;
import org.drools.scenariosimulation.api.model.AbstractScesimData;
import org.drools.scenariosimulation.api.model.AbstractScesimModel;
import org.jboss.errai.bus.server.annotations.Remote;

/**
* This interface define the service to export and import data from a scenario
* This interface define the service to export and import data from a <code>AbstractScesimModel</code>
*/
@Remote
public interface ImportExportService {

/**
* This method export the given simulation to the requested type
* This method export the given <code>AbstractScesimModel</code> to the requested type
* @param type
* @param simulation
* @param scesimModel
* @return
*/
Object exportSimulation(ImportExportType type, Simulation simulation);
Object exportScesimModel(ImportExportType type, AbstractScesimModel<? extends AbstractScesimData> scesimModel);

/**
* This method parse the raw value and return a new simulation. The originalSimulation can be used to retrieve
* This method parse the raw value and return a new <code>AbstractScesimModel</code>. The <b>originalSimulation</b> can be used to retrieve
* some metadata not available in the export (i.e. FactMapping)
* @param type
* @param raw
* @param originalSimulation
* @param originalScesimModel
* @return
*/
Simulation importSimulation(ImportExportType type, Object raw, Simulation originalSimulation);
<T extends AbstractScesimData> AbstractScesimModel<T> importScesimModel(ImportExportType type, Object raw, AbstractScesimModel<T> originalScesimModel);
}
Expand Up @@ -18,7 +18,8 @@

import javax.enterprise.context.ApplicationScoped;

import org.drools.scenariosimulation.api.model.Simulation;
import org.drools.scenariosimulation.api.model.AbstractScesimData;
import org.drools.scenariosimulation.api.model.AbstractScesimModel;
import org.drools.workbench.screens.scenariosimulation.backend.server.importexport.ScenarioCsvImportExport;
import org.drools.workbench.screens.scenariosimulation.service.ImportExportService;
import org.drools.workbench.screens.scenariosimulation.service.ImportExportType;
Expand All @@ -32,11 +33,11 @@ public class ImportExportServiceImpl implements ImportExportService {
protected ScenarioCsvImportExport scenarioCsvImportExport = new ScenarioCsvImportExport();

@Override
public Object exportSimulation(ImportExportType type, Simulation simulation) {
public Object exportScesimModel(ImportExportType type, AbstractScesimModel<? extends AbstractScesimData> scesimModel) {
try {
switch (type) {
case CSV:
return scenarioCsvImportExport.exportData(simulation);
return scenarioCsvImportExport.exportData(scesimModel);
default:
throw new IllegalArgumentException("Impossible to parse " + type);
}
Expand All @@ -46,11 +47,11 @@ public Object exportSimulation(ImportExportType type, Simulation simulation) {
}

@Override
public Simulation importSimulation(ImportExportType type, Object raw, Simulation originalSimulation) {
public <T extends AbstractScesimData> AbstractScesimModel<T> importScesimModel(ImportExportType type, Object raw, AbstractScesimModel<T> originalScesimModel) {
try {
switch (type) {
case CSV:
return scenarioCsvImportExport.importData((String) raw, originalSimulation);
return scenarioCsvImportExport.importData((String) raw, originalScesimModel);
default:
throw new IllegalArgumentException("Impossible to parse " + type);
}
Expand Down
Expand Up @@ -26,28 +26,28 @@
import org.apache.commons.csv.CSVParser;
import org.apache.commons.csv.CSVPrinter;
import org.apache.commons.csv.CSVRecord;
import org.drools.scenariosimulation.api.model.AbstractScesimData;
import org.drools.scenariosimulation.api.model.AbstractScesimModel;
import org.drools.scenariosimulation.api.model.FactMapping;
import org.drools.scenariosimulation.api.model.FactMappingType;
import org.drools.scenariosimulation.api.model.FactMappingValue;
import org.drools.scenariosimulation.api.model.Scenario;
import org.drools.scenariosimulation.api.model.Simulation;

public class ScenarioCsvImportExport {

public static final int HEADER_SIZE = 3;

public String exportData(Simulation simulation) throws IOException {
public String exportData(AbstractScesimModel<? extends AbstractScesimData> scesimModel) throws IOException {
StringBuilder stringBuilder = new StringBuilder();
List<FactMapping> factMappings = simulation.getScesimModelDescriptor().getUnmodifiableFactMappings();
List<FactMapping> factMappings = scesimModel.getScesimModelDescriptor().getUnmodifiableFactMappings();

CSVPrinter printer = new CSVPrinter(stringBuilder, CSVFormat.DEFAULT);

generateHeader(factMappings, printer);

for (Scenario scenario : simulation.getUnmodifiableData()) {
for (AbstractScesimData scesimData : scesimModel.getUnmodifiableData()) {
List<Object> values = new ArrayList<>();
for (FactMapping factMapping : factMappings) {
Optional<FactMappingValue> factMappingValue = scenario.getFactMappingValue(factMapping.getFactIdentifier(),
Optional<FactMappingValue> factMappingValue = scesimData.getFactMappingValue(factMapping.getFactIdentifier(),
factMapping.getExpressionIdentifier());
values.add(factMappingValue.map(FactMappingValue::getRawValue).orElse(""));
}
Expand All @@ -59,11 +59,11 @@ public String exportData(Simulation simulation) throws IOException {
return stringBuilder.toString();
}

public Simulation importData(String raw, Simulation originalSimulation) throws IOException {
public <T extends AbstractScesimData> AbstractScesimModel<T> importData(String raw, AbstractScesimModel<T> originalScesimModel) throws IOException {

CSVParser csvParser = CSVFormat.DEFAULT.parse(new StringReader(raw));

Simulation toReturn = originalSimulation.cloneModel();
AbstractScesimModel<T> toReturn = originalScesimModel.cloneModel();
toReturn.clearDatas();

List<FactMapping> factMappings = toReturn.getScesimModelDescriptor().getUnmodifiableFactMappings();
Expand All @@ -75,14 +75,14 @@ public Simulation importData(String raw, Simulation originalSimulation) throws I
csvRecords = csvRecords.subList(HEADER_SIZE, csvRecords.size());

for (CSVRecord csvRecord : csvRecords) {
Scenario scenarioToFill = toReturn.addData();
T scesimDataToFill = toReturn.addData();
if (csvRecord.size() != factMappings.size()) {
throw new IllegalArgumentException("Malformed row " + csvRecord);
}
for (int i = 0; i < factMappings.size(); i += 1) {
FactMapping factMapping = factMappings.get(i);
String valueToImport = "".equals(csvRecord.get(i)) ? null : csvRecord.get(i);
scenarioToFill.addMappingValue(factMapping.getFactIdentifier(),
scesimDataToFill.addMappingValue(factMapping.getFactIdentifier(),
factMapping.getExpressionIdentifier(),
valueToImport);
}
Expand Down
Expand Up @@ -58,6 +58,8 @@ public Simulation createSimulation(Path context, String dmnFilePath) {
final FactModelTuple factModelTuple = getFactModelTuple(context, dmnFilePath);
Simulation toReturn = new Simulation();
ScesimModelDescriptor simulationDescriptor = toReturn.getScesimModelDescriptor();
simulationDescriptor.addFactMapping(FactIdentifier.INDEX.getName(), FactIdentifier.INDEX, ExpressionIdentifier.INDEX);
simulationDescriptor.addFactMapping(FactIdentifier.DESCRIPTION.getName(), FactIdentifier.DESCRIPTION, ExpressionIdentifier.DESCRIPTION);
ScenarioWithIndex scenarioWithIndex = createScesimDataWithIndex(toReturn, simulationDescriptor, ScenarioWithIndex::new);

AtomicInteger id = new AtomicInteger(1);
Expand Down
Expand Up @@ -17,6 +17,8 @@

import javax.enterprise.context.ApplicationScoped;

import org.drools.scenariosimulation.api.model.ExpressionIdentifier;
import org.drools.scenariosimulation.api.model.FactIdentifier;
import org.drools.scenariosimulation.api.model.ScenarioSimulationModel;
import org.drools.scenariosimulation.api.model.ScenarioWithIndex;
import org.drools.scenariosimulation.api.model.ScesimModelDescriptor;
Expand All @@ -34,6 +36,8 @@ public class RULESimulationSettingsCreationStrategy implements SimulationSetting
public Simulation createSimulation(Path context, String value) {
Simulation toReturn = new Simulation();
ScesimModelDescriptor simulationDescriptor = toReturn.getScesimModelDescriptor();
simulationDescriptor.addFactMapping(FactIdentifier.INDEX.getName(), FactIdentifier.INDEX, ExpressionIdentifier.INDEX);
simulationDescriptor.addFactMapping(FactIdentifier.DESCRIPTION.getName(), FactIdentifier.DESCRIPTION, ExpressionIdentifier.DESCRIPTION);
ScenarioWithIndex scenarioWithIndex = createScesimDataWithIndex(toReturn, simulationDescriptor, ScenarioWithIndex::new);

// Add GIVEN Fact
Expand Down
Expand Up @@ -44,8 +44,6 @@ public interface SimulationSettingsCreationStrategy {
Settings createSettings(Path context, String value);

default <T extends AbstractScesimData, E extends ScesimDataWithIndex<T>> E createScesimDataWithIndex(AbstractScesimModel<T> abstractScesimModel, ScesimModelDescriptor simulationDescriptor, BiFunction<Integer, T, E> producer) {
simulationDescriptor.addFactMapping(FactIdentifier.INDEX.getName(), FactIdentifier.INDEX, ExpressionIdentifier.INDEX);
simulationDescriptor.addFactMapping(FactIdentifier.DESCRIPTION.getName(), FactIdentifier.DESCRIPTION, ExpressionIdentifier.DESCRIPTION);
T scenario = abstractScesimModel.addData();
scenario.setDescription(null);
int index = abstractScesimModel.getUnmodifiableData().indexOf(scenario) + 1;
Expand Down
Expand Up @@ -39,12 +39,12 @@
public class ImportExportServiceImplTest {

@Mock
ScenarioCsvImportExport scenarioCsvImportExportMock;
private ScenarioCsvImportExport scenarioCsvImportExportMock;

@Mock
Simulation simulationMock;
private Simulation simulationMock;

ImportExportServiceImpl importExportService;
private ImportExportServiceImpl importExportService;

@Before
public void setup() {
Expand All @@ -56,25 +56,25 @@ public void setup() {
}

@Test
public void exportSimulation() throws IOException {
importExportService.exportSimulation(ImportExportType.CSV, simulationMock);
public void exportScesimModel() throws IOException {
importExportService.exportScesimModel(ImportExportType.CSV, simulationMock);
verify(scenarioCsvImportExportMock, times(1)).exportData(eq(simulationMock));

when(scenarioCsvImportExportMock.exportData(any())).thenThrow(new IllegalStateException());
assertThatThrownBy(() -> importExportService
.exportSimulation(ImportExportType.CSV, simulationMock))
.exportScesimModel(ImportExportType.CSV, simulationMock))
.isInstanceOf(GenericPortableException.class);
}

@Test
public void importSimulation() throws IOException {
public void importScesimModel() throws IOException {
String raw = "";
importExportService.importSimulation(ImportExportType.CSV, raw, simulationMock);
importExportService.importScesimModel(ImportExportType.CSV, raw, simulationMock);
verify(scenarioCsvImportExportMock, times(1)).importData(eq(raw), eq(simulationMock));

when(scenarioCsvImportExportMock.importData(anyString(), any())).thenThrow(new IllegalStateException());
assertThatThrownBy(() -> importExportService
.importSimulation(ImportExportType.CSV, raw, simulationMock))
.importScesimModel(ImportExportType.CSV, raw, simulationMock))
.isInstanceOf(GenericPortableException.class);
}
}
Expand Up @@ -21,6 +21,7 @@

import org.apache.commons.csv.CSVFormat;
import org.apache.commons.csv.CSVPrinter;
import org.drools.scenariosimulation.api.model.AbstractScesimModel;
import org.drools.scenariosimulation.api.model.ExpressionIdentifier;
import org.drools.scenariosimulation.api.model.FactIdentifier;
import org.drools.scenariosimulation.api.model.FactMapping;
Expand All @@ -38,14 +39,14 @@

public class ScenarioCsvImportExportTest {

static String instanceName = "instanceName";
static String propertyName = "propertyName";
private static String instanceName = "instanceName";
private static String propertyName = "propertyName";

CSVPrinter printer;
private CSVPrinter printer;

ScenarioCsvImportExport scenarioCsvImportExport;
private ScenarioCsvImportExport scenarioCsvImportExport;

StringBuilder output;
private StringBuilder output;

@Before
public void setup() throws IOException {
Expand Down Expand Up @@ -76,13 +77,13 @@ public void importData() throws IOException {
"Index,Description,property1,property2,property3\r\n" +
"1,My Scenario,value1,value2,";

Simulation simulation = scenarioCsvImportExport.importData(rawCSV, originalSimulation);
AbstractScesimModel retrieved = scenarioCsvImportExport.importData(rawCSV, originalSimulation);

assertEquals(1, simulation.getUnmodifiableData().size());
assertEquals(1, retrieved.getUnmodifiableData().size());

assertEquals("value1", simulation.getDataByIndex(0).getFactMappingValue(simulation.getScesimModelDescriptor().getFactMappingByIndex(2)).get().getRawValue());
assertEquals("value2", simulation.getDataByIndex(0).getFactMappingValue(simulation.getScesimModelDescriptor().getFactMappingByIndex(3)).get().getRawValue());
assertNull(simulation.getDataByIndex(0).getFactMappingValue(simulation.getScesimModelDescriptor().getFactMappingByIndex(4)).get().getRawValue());
assertEquals("value1", retrieved.getDataByIndex(0).getFactMappingValue(retrieved.getScesimModelDescriptor().getFactMappingByIndex(2)).get().getRawValue());
assertEquals("value2", retrieved.getDataByIndex(0).getFactMappingValue(retrieved.getScesimModelDescriptor().getFactMappingByIndex(3)).get().getRawValue());
assertNull(retrieved.getDataByIndex(0).getFactMappingValue(retrieved.getScesimModelDescriptor().getFactMappingByIndex(4)).get().getRawValue());

assertThatThrownBy(() -> scenarioCsvImportExport.importData("", originalSimulation))
.isInstanceOf(IllegalArgumentException.class)
Expand Down