|
Lines 225-233
Link Here
|
| 225 |
import org.eclipse.ocl.utilities.UMLReflection; |
225 |
import org.eclipse.ocl.utilities.UMLReflection; |
| 226 |
import org.eclipse.osgi.util.NLS; |
226 |
import org.eclipse.osgi.util.NLS; |
| 227 |
|
227 |
|
| 228 |
import com.ibm.icu.lang.UCharacter; |
|
|
| 229 |
|
| 230 |
|
| 231 |
public class QvtOperationalVisitorCS |
228 |
public class QvtOperationalVisitorCS |
| 232 |
extends AbstractOCLAnalyzer<EPackage, EClassifier, EOperation, EStructuralFeature, EEnumLiteral, EParameter, EObject, |
229 |
extends AbstractOCLAnalyzer<EPackage, EClassifier, EOperation, EStructuralFeature, EEnumLiteral, EParameter, EObject, |
| 233 |
CallOperationAction, SendSignalAction, Constraint, EClass, EObject> { // FIXME - changed in M3.4 migration |
230 |
CallOperationAction, SendSignalAction, Constraint, EClass, EObject> { // FIXME - changed in M3.4 migration |
|
Lines 4454-4510
Link Here
|
| 4454 |
annotation.getReferences().add(element); |
4451 |
annotation.getReferences().add(element); |
| 4455 |
return annotation; |
4452 |
return annotation; |
| 4456 |
} |
4453 |
} |
| 4457 |
|
|
|
| 4458 |
@Override |
| 4459 |
protected org.eclipse.ocl.expressions.StringLiteralExp<EClassifier> stringLiteralExpCS( |
| 4460 |
StringLiteralExpCS stringLiteralExpCS, |
| 4461 |
Environment<EPackage, EClassifier, EOperation, EStructuralFeature, EEnumLiteral, EParameter, EObject, CallOperationAction, SendSignalAction, Constraint, EClass, EObject> env) { |
| 4462 |
|
| 4463 |
StringLiteralExp<EClassifier> astNode = oclFactory.createStringLiteralExp(); |
| 4464 |
initASTMapping(env, astNode, stringLiteralExpCS); |
| 4465 |
String stringLiteral = stringLiteralExpCS.getStringSymbol(); |
| 4466 |
List<String> singlelineStringLiterals = splitMultilineStringLiteral(stringLiteral); |
| 4467 |
String[] processedSinglelineStringLiterals = new String[singlelineStringLiterals.size()]; |
| 4468 |
for (int i = 0; i < processedSinglelineStringLiterals.length; i++) { |
| 4469 |
processedSinglelineStringLiterals[i] = processSinglelineStringLiteral(singlelineStringLiterals.get(i)); |
| 4470 |
} |
| 4471 |
StringBuilder stringBuilder = new StringBuilder(); |
| 4472 |
for (String processedSinglelineStringLiteral : processedSinglelineStringLiterals) { |
| 4473 |
stringBuilder.append(processedSinglelineStringLiteral); |
| 4474 |
} |
| 4475 |
astNode.setStringSymbol(stringBuilder.toString()); |
| 4476 |
astNode.setType(env.getOCLStandardLibrary().getString()); |
| 4477 |
|
| 4478 |
TRACE("stringLiteralExpCS", "String: " + stringLiteralExpCS.getSymbol());//$NON-NLS-2$//$NON-NLS-1$ |
| 4479 |
|
| 4480 |
return astNode; |
| 4481 |
} |
| 4482 |
|
| 4483 |
private List<String> splitMultilineStringLiteral(String stringLiteral) { |
| 4484 |
List<String> singlelineStringLiterals = new ArrayList<String>(); |
| 4485 |
char quote = stringLiteral.charAt(0); |
| 4486 |
boolean isInQuotes = true; |
| 4487 |
int leftIndex = 1; |
| 4488 |
for (int i = 1, n = stringLiteral.length(); i < n; i++) { |
| 4489 |
char ch = stringLiteral.charAt(i); |
| 4490 |
if (isInQuotes) { |
| 4491 |
if ((ch == quote) |
| 4492 |
&& (stringLiteral.charAt(i - 1) != '\\')) { |
| 4493 |
singlelineStringLiterals.add(stringLiteral.substring(leftIndex, i)); |
| 4494 |
isInQuotes = false; |
| 4495 |
} |
| 4496 |
} else { |
| 4497 |
if (!UCharacter.isWhitespace(ch)) { |
| 4498 |
quote = ch; |
| 4499 |
leftIndex = i + 1; |
| 4500 |
isInQuotes = true; |
| 4501 |
} |
| 4502 |
} |
| 4503 |
} |
| 4504 |
return singlelineStringLiterals; |
| 4505 |
} |
| 4506 |
|
| 4507 |
private String processSinglelineStringLiteral(String rawString) { |
| 4508 |
return rawString; |
| 4509 |
} |
| 4510 |
} |
4454 |
} |