use of ch.hsr.servicecutter.api.model.SolverResult in project context-mapper-dsl by ContextMapper.
the class CMLByServiceCutterOutputGenerationHandler method execute.
@Override
public Object execute(ExecutionEvent event) throws ExecutionException {
ISelection selection = HandlerUtil.getCurrentSelection(event);
if (selection instanceof IStructuredSelection) {
IStructuredSelection structuredSelection = (IStructuredSelection) selection;
Object firstElement = structuredSelection.getFirstElement();
if (firstElement instanceof IFile) {
IFile file = (IFile) firstElement;
IProject project = file.getProject();
final EclipseResourceFileSystemAccess2 fsa = fileAccessProvider.get();
fsa.setProject(project);
fsa.setMonitor(new NullProgressMonitor());
URI uri = URI.createPlatformResourceURI(file.getFullPath().toString(), true);
URI resolvedFile = CommonPlugin.resolve(uri);
IFile jsonFile = ResourcesPlugin.getWorkspace().getRoot().getFile(new Path(resolvedFile.toFileString()));
try {
ServiceCutterOutputModelFactory modelFactory = new ServiceCutterOutputModelFactory();
SolverResult solverResult = modelFactory.createFromJsonFile(jsonFile.getFullPath().toFile());
generator.doGenerate(resourceSetProvider.get(project), uri, solverResult);
} catch (ServiceCutterOutputModelReadingException e) {
MessageDialog.openError(HandlerUtil.getActiveShell(event), "Input Error", e.getMessage());
} catch (Exception e) {
String message = e.getMessage() != null && !"".equals(e.getMessage()) ? e.getMessage() : e.getClass().getName() + " occurred in " + this.getClass().getName();
Status status = new Status(IStatus.ERROR, DslActivator.PLUGIN_ID, message, e);
StatusManager.getManager().handle(status);
ErrorDialog.openError(HandlerUtil.getActiveShell(event), "Error", "Exception occured during execution of command!", status);
}
}
}
return null;
}
use of ch.hsr.servicecutter.api.model.SolverResult in project context-mapper-dsl by ContextMapper.
the class NewServiceCutContextMapGenerator method generateFromContextMappingModel.
@Override
protected void generateFromContextMappingModel(ContextMappingModel model, IFileSystemAccess2 fsa, URI inputFileURI) {
checkPreconditions(model);
String fileBaseName = inputFileURI.trimFileExtension().lastSegment();
// prepare service cutter input
EntityRelationDiagram erdInput = new ContextMappingModelToServiceCutterERDConverter().convert(fileBaseName, model);
ServiceCutterContextBuilder contextBuilder = new ServiceCutterContextBuilder(erdInput);
SolverConfiguration solverConfig = getSolverConfiguration();
contextBuilder.withCustomSolverConfiguration(solverConfig);
contextBuilder.withUserRepresentations(getUserRepresentations(inputFileURI));
ServiceCutterContext context = contextBuilder.build();
// calculate new service cut
SolverResult result = new ServiceCutter(context).generateDecomposition();
ContextMappingModel newServiceCutModel = new ServiceCutterOutputToContextMappingModelConverter(contextMappingModel, context, getSCLModel(inputFileURI).eResource().getURI()).convert(result);
// save new CML file
int counter = 1;
String baseFileName = inputFileURI.trimFileExtension().lastSegment() + "_" + solverConfig.getAlgorithm().toString().replace(" ", "_") + "_Cut_";
URI fileName = inputFileURI.trimFileExtension().trimSegments(1).appendSegment(baseFileName + counter).appendFileExtension("cml");
while (resourceSet.getURIConverter().exists(fileName, null)) {
counter++;
fileName = inputFileURI.trimFileExtension().trimSegments(1).appendSegment(baseFileName + counter).appendFileExtension("cml");
}
Resource resource = resourceSet.createResource(fileName);
resource.getContents().add(newServiceCutModel);
try {
resource.save(null);
} catch (IOException e) {
throw new RuntimeException("Saving CML model was not possible.", e);
}
// save scoring as graphviz DOT file
fsa.generateFile(fileName.trimFileExtension().lastSegment() + ".gv", generateGraphvizScoringRepresentation(context));
}
use of ch.hsr.servicecutter.api.model.SolverResult in project context-mapper-dsl by ContextMapper.
the class ServiceCutterOutputModelFactoryTest method canCreateFromFile.
@Test
void canCreateFromFile() {
// given
ServiceCutterOutputModelFactory factory = new ServiceCutterOutputModelFactory();
// when
SolverResult solverResult = factory.createFromJsonFile(integTestFile);
// then
assertNotNull(solverResult);
assertEquals(3, solverResult.getServices().size());
assertEquals(3, solverResult.getRelations().size());
assertEquals(2, solverResult.getUseCaseResponsibility().size());
}
use of ch.hsr.servicecutter.api.model.SolverResult in project context-mapper-dsl by ContextMapper.
the class ServiceCutterOutputToContextMappingModelConverterTest method testWithSampleFile.
@Test
void testWithSampleFile() {
// given
SolverResult solverResult = new ServiceCutterOutputModelFactory().createFromJsonFile(sampleFile);
// when
ContextMappingModel contextMappingModel = this.converter.convert(solverResult);
ContextMap contextMap = contextMappingModel.getMap();
// then
assertEquals(3, contextMap.getBoundedContexts().size());
assertEquals(3, contextMap.getRelationships().size());
}
Aggregations