#308
authorSweidan Omar <TFS\sweidan.omar>
Mon, 10 Jan 2022 10:24:32 +0000 (10:24 +0000)
committerSweidan Omar <TFS\sweidan.omar>
Mon, 10 Jan 2022 10:24:32 +0000 (10:24 +0000)
git-tfs-id: [http://tfs.userrendszerhaz.hu:8080/tfs/DefaultCollection]$/MediaCube;C32686

server/user.jobengine.osgi.server/src/user/jobengine/server/ast/JobTemplate.java

index 90a63b33cbaa79682f2f57fa6687f7830b8010df..ad940586991d3854dddbd9f0b06467cd1762a634 100644 (file)
@@ -5,10 +5,14 @@ import java.util.HashMap;
 import java.util.List;\r
 import java.util.Map;\r
 \r
+import org.apache.logging.log4j.LogManager;\r
+import org.apache.logging.log4j.Logger;\r
+\r
 /**\r
  * Gyökér osztály.\r
  */\r
 public class JobTemplate extends AST {\r
+       private static final Logger logger = LogManager.getLogger(JobTemplate.class);\r
 \r
        private CommandSequence commandSequence = null;\r
        private DeclarationSequence declarationSequence = null;\r
@@ -98,37 +102,54 @@ public class JobTemplate extends AST {
                List<String> inputvariables = new ArrayList<>();\r
                List<String> inputparameters = new ArrayList<>();\r
                List<String> errors = new ArrayList<>();\r
+\r
                if (declarationSequence != null) {\r
                        for (Declaration declaration : declarationSequence.getDeclarations()) {\r
-                               if (declaration instanceof ParameterDeclaration)\r
+                               if (declaration instanceof ParameterDeclaration) {\r
                                        parameters.put(declaration.getName(), declaration.getType());\r
-                               if (declaration instanceof VariableDeclaration)\r
+                               }\r
+                               if (declaration instanceof VariableDeclaration) {\r
                                        variables.put(declaration.getName(), declaration.getType());\r
+                               }\r
                        }\r
                }\r
 \r
                if (commandSequence != null) {\r
                        for (Command command : commandSequence.getCommands()) {\r
                                if (command instanceof CallJobStepCommand) {\r
+\r
                                        ParameterSequence inputParameterSequence = ((CallJobStepCommand) command)\r
                                                        .getInputParameterSequence();\r
                                        if (inputParameterSequence != null) {\r
                                                for (Parameter parameter : inputParameterSequence.getParameters()) {\r
-                                                       if (!(parameter instanceof InputParameter))\r
+                                                       if (!(parameter instanceof InputParameter)) {\r
                                                                throw new Exception(((CallJobStepCommand) command).getType()\r
                                                                                + ": class cast problem with input parameter name " + parameter.toString());\r
+                                                       }\r
 \r
                                                        Expression expression = ((InputParameter) parameter).getExpression();\r
-                                                       if (expression instanceof VariableExpression) {\r
-                                                               if (!inputvariables.contains(expression.getName()))\r
-                                                                       inputvariables.add(expression.getName());\r
-                                                       }\r
-                                                       if (expression instanceof ParameterExpression) {\r
-                                                               if (!inputparameters.contains(expression.getName()))\r
-                                                                       inputparameters.add(expression.getName());\r
+                                                       if (expression != null) {\r
+                                                               if (expression instanceof VariableExpression) {\r
+                                                                       if (commandSequence.getCommands().get(0).equals(command)) {\r
+                                                                               // Egy paraméter tévesen változóként lett hivatkozva\r
+                                                                               if (parameters.containsKey(expression.getName())) {\r
+                                                                                       if (errors.isEmpty()) {\r
+                                                                                               errors.add(\r
+                                                                                                               String.format("Parameter %s is used as variable.", parameter));\r
+                                                                                       }\r
+                                                                               }\r
+                                                                       }\r
+                                                                       if (!inputvariables.contains(expression.getName()))\r
+                                                                               inputvariables.add(expression.getName());\r
+                                                               }\r
+                                                               if (expression instanceof ParameterExpression) {\r
+                                                                       if (!inputparameters.contains(expression.getName()))\r
+                                                                               inputparameters.add(expression.getName());\r
+                                                               }\r
                                                        }\r
                                                }\r
                                        }\r
+\r
                                        ParameterSequence outputParameterSequence = ((CallJobStepCommand) command)\r
                                                        .getOutputParameterSequence();\r
                                        if (outputParameterSequence != null) {\r
@@ -137,22 +158,34 @@ public class JobTemplate extends AST {
                                                                throw new Exception(((CallJobStepCommand) command).getType()\r
                                                                                + ": class cast problem with output parameter name " + parameter.toString());\r
                                                        VariableName name = ((OutputParameter) parameter).getVariableName();\r
-                                                       if (!inputvariables.contains(name.getName()))\r
-                                                               inputvariables.add(name.getName());\r
+                                                       if (name != null) {\r
+                                                               if (!inputvariables.contains(name.getName()))\r
+                                                                       inputvariables.add(name.getName());\r
+                                                       } else {\r
+                                                               if (errors.isEmpty()) {\r
+                                                                       errors.add("A " + ((CallJobStepCommand) command).getType()\r
+                                                                                       + "folyamat kimeneti paramétere hibásan lett megadva a template fájlban!");\r
+                                                               }\r
+                                                       }\r
                                                }\r
                                        }\r
                                }\r
                        }\r
 \r
-                       for (String input : inputvariables) {\r
-                               if (!variables.containsKey(input))\r
-                                       errors.add(String.format("Variable declaration missing for '%s'.", input));\r
+                       for (String inputvariable : inputvariables) {\r
+                               if (!variables.containsKey(inputvariable)) {\r
+                                       if (errors.isEmpty()) {\r
+                                               errors.add(String.format("Variable declaration missing for '%s'.", inputvariable));\r
+                                       }\r
+                               }\r
                        }\r
-                       for (String input : inputparameters) {\r
-                               if (!parameters.containsKey(input))\r
-                                       errors.add(String.format("Parameter declaration missing for '%s'.", input));\r
+                       for (String inputparameter : inputparameters) {\r
+                               if (!parameters.containsKey(inputparameter)) {\r
+                                       if (errors.isEmpty()) {\r
+                                               errors.add(String.format("Parameter declaration missing for '%s'.", inputparameter));\r
+                                       }\r
+                               }\r
                        }\r
-\r
                }\r
 \r
                if (errors.size() > 0) {\r
@@ -160,6 +193,7 @@ public class JobTemplate extends AST {
                        errors.forEach(e -> sb.append(e));\r
                        throw new Exception("JobTemplate validation error: " + sb.toString());\r
                }\r
+\r
                return errors;\r
        }\r
 \r