protected void convertSubSystemsAndRoot( String rootElement, MontiArcStringBuilder builder, boolean instantiate) { String simpleName = matlab.doGetSimpleNameLimiterBased(rootElement); if (getDeltaOperationForElement(rootElement) == DeltaOperation.REPLACE) { simpleName = simpleName.substring( simpleName.indexOf(DeltaSimulinkKeyWords.REPLACE_WITH) + DeltaSimulinkKeyWords.REPLACE_WITH.length()); } simpleName = simpleName.trim(); if (instantiate) { builder.startCreateInnerComponent(simpleName, simpleName); } else { builder.startCreateComponent(simpleName); } convertPorts(rootElement, builder); convertSubSystems(rootElement, builder); convertModelReferences(rootElement, builder); convertSignals(rootElement, builder); builder.endCreateInnerComponent(); }
public String convertModel(String path, String modelName) { if (matlab.isDisconnected()) { matlab.connect(); } MontiArcStringBuilder builder = new MontiArcStringBuilder(); if (matlab.isConnected()) { matlab.loadModel(path, modelName); builder.addPackage(MontiArcStringBuilder.EXPORT_PACKAGE); builder.startCreateComponent(modelName); convertPorts(modelName, builder); convertModelReferences(modelName, builder); convertSubSystems(modelName, builder); convertSignals(modelName, builder); builder.endCreateComponent(); } else { // TODO handle } return builder.getConvertedModel(); }
protected void convertSubSystems(String rootElement, MontiArcStringBuilder builder) { List<String> qualifiedSubSystems = loadSubSystems(rootElement); for (String qualifiedSubSystem : qualifiedSubSystems) { String unqualifiedSubSystem = getSimpleName(qualifiedSubSystem); builder.startCreateInnerComponent(unqualifiedSubSystem, unqualifiedSubSystem); convertPorts(qualifiedSubSystem, builder); convertSubSystems(qualifiedSubSystem, builder); convertModelReferences(qualifiedSubSystem, builder); convertSignals(qualifiedSubSystem, builder); builder.endCreateInnerComponent(); } }
protected void convertSignals(String rootName, MontiArcStringBuilder builder) { List<SimulinkSignal> signals = getSignals(rootName); for (SimulinkSignal signal : signals) { String srcBlockName = convertConnectorElement(signal.getSrcSimpleName(), signal.getSrcPortName()); String targetBlockName = convertConnectorElement(signal.getDstSimpleName(), signal.getDstPortName()); builder.createConnector(srcBlockName, targetBlockName); } }
protected void convertModelReferences(String modelName, MontiArcStringBuilder builder) { String[] qualifiedModelReferences = (String[]) matlab.returningFeval( "find_system", modelName, "SearchDepth", 1, "BlockType", SimulinkBlockType.ModelReference.toString()); if (qualifiedModelReferences != null) { for (int i = 0; i < qualifiedModelReferences.length; i++) { String qualifiedModelReference = qualifiedModelReferences[i]; String unqualifiedModelReference = getSimpleName(qualifiedModelReference); String typeOfReferencedModel = getModelType(qualifiedModelReference); builder.createComponentReference(typeOfReferencedModel, unqualifiedModelReference); } } }
protected void convertPorts(String rootElement, MontiArcStringBuilder builder) { List<SimulinkPort> inPorts = loadUnqualifiedPorts(rootElement, true); List<SimulinkPort> outPorts = loadUnqualifiedPorts(rootElement, false); builder.createPorts(inPorts, outPorts); }