Files
tdi-studio-se/main/plugins/org.talend.designer.codegen/jet_stub/subprocess_header_java.skeleton
Oleksandr Zhelezniak 5b520754cb fix(TDI-49538): generate subjobpid in codegen (#8650)
* generate main part of subjobpid for MDC logs in code generation part, and add id to differentiate subjob in loop
2023-04-25 10:14:45 +03:00

118 lines
5.8 KiB
Plaintext

public class CLASS
{
// add the list of the connection names to avoid to declare two times the same name.
public String createPrivateClassInstance(INode node, String parentLastRoot, boolean force) {
return createPrivateClassInstance(node, parentLastRoot, force, new HashSet<String>());
}
public String createPrivateClassInstance(INode n, String parentLastRoot, boolean force, Set<String> names) {
String toReturn = "";
// declare root structs (all main outgoing connections)
for (IConnection conn : n.getOutgoingConnections()) {
if (conn.getLineStyle().equals(EConnectionType.FLOW_MAIN) || conn.getLineStyle().equals(EConnectionType.FLOW_MERGE)) {
if ((force)||(n.isSubProcessStart() || !(NodeUtil.isDataAutoPropagated(n)))) {
// new Instance
if (!names.contains(conn.getName())) {
toReturn += conn.getName() + "Struct " + conn.getName() + " = new " + conn.getName()
+ "Struct();\n";
names.add(conn.getName());
parentLastRoot = conn.getName();
}
} else {
// copy
if (!names.contains(conn.getName())) {
toReturn += parentLastRoot + "Struct " + conn.getName() + " = " + parentLastRoot + ";\n";
names.add(conn.getName());
}
}
if(!conn.getTarget().getComponent().useMerge()) {
toReturn += createPrivateClassInstance(conn.getTarget(), parentLastRoot, false, names);
}
} else if (conn.getLineStyle().equals(EConnectionType.ITERATE)||conn.getLineStyle().equals(EConnectionType.ON_ROWS_END)) {
toReturn += createPrivateClassInstance(conn.getTarget(), parentLastRoot, true, names);
}
}
return toReturn;
}
public String createPriveClassMethodDeclaration(INode n, String parentLastRoot, boolean force, Set<String> names) {
String toReturn = "";
// declare root structs (all main outgoing connections)
for (IConnection conn : n.getOutgoingConnections()) {
if (conn.getLineStyle().equals(EConnectionType.FLOW_MAIN) || conn.getLineStyle().equals(EConnectionType.FLOW_MERGE)) {
if ((force)||(n.isSubProcessStart() || !(NodeUtil.isDataAutoPropagated(n)))) {
// new Instance
if (!names.contains(conn.getName())) {
toReturn += conn.getName() + "Struct " + conn.getName() + ",";
names.add(conn.getName());
parentLastRoot = conn.getName();
}
} else {
// copy
if (!names.contains(conn.getName())) {
toReturn += parentLastRoot + "Struct " + conn.getName() + ",";
names.add(conn.getName());
}
}
if(!conn.getTarget().getComponent().useMerge()) {
toReturn += createPriveClassMethodDeclaration(conn.getTarget(), parentLastRoot, false, names);
}
} else if (conn.getLineStyle().equals(EConnectionType.ITERATE)||conn.getLineStyle().equals(EConnectionType.ON_ROWS_END)) {
toReturn += createPriveClassMethodDeclaration(conn.getTarget(), parentLastRoot, true, names);
}
}
return toReturn;
}
public String createPrivateClassMethodInstance(INode n, String parentLastRoot, boolean force, Set<String> names) {
String toReturn = "";
// declare root structs (all main outgoing connections)
for (IConnection conn : n.getOutgoingConnections()) {
if (conn.getLineStyle().equals(EConnectionType.FLOW_MAIN) || conn.getLineStyle().equals(EConnectionType.FLOW_MERGE)) {
if ((force) || (n.isSubProcessStart() || !(NodeUtil.isDataAutoPropagated(n)))) {
// new Instance
if (!names.contains(conn.getName())) {
toReturn += conn.getName() + ",";
names.add(conn.getName());
parentLastRoot = conn.getName();
}
} else {
// copy
if (!names.contains(conn.getName())) {
toReturn += conn.getName() + ",";
names.add(conn.getName());
}
}
if (!conn.getTarget().getComponent().useMerge()) {
toReturn += createPrivateClassMethodInstance(conn.getTarget(), parentLastRoot, false, names);
}
} else if (conn.getLineStyle().equals(EConnectionType.ITERATE)
|| conn.getLineStyle().equals(EConnectionType.ON_ROWS_END)) {
toReturn += createPrivateClassMethodInstance(conn.getTarget(), parentLastRoot, true, names);
}
}
return toReturn;
}
// copy from routine TalendString
private static String getAsciiRandomString(int length) {
java.security.SecureRandom random = new java.security.SecureRandom();
int cnt = 0;
StringBuilder builder = new StringBuilder();
char ch;
int end = 'z' + 1;
int start = ' ';
while (cnt < length) {
ch = (char) (random.nextInt(end - start) + start);
if (Character.isLetterOrDigit(ch)) {
builder.append(ch);
cnt++;
}
}
return builder.toString();
}
public String generate(Object argument) {
return "";
}
}