use of ch.hsr.servicecutter.api.ServiceCutterContextBuilder 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));
}
Aggregations