\r
boolean scheduleExists(String name);\r
\r
+ ArrayList<String> getSteps();\r
}\r
import java.net.URL;\r
import java.net.URLClassLoader;\r
import java.nio.file.FileSystems;\r
+import java.nio.file.FileVisitResult;\r
+import java.nio.file.FileVisitor;\r
import java.nio.file.Files;\r
import java.nio.file.Path;\r
import java.nio.file.Paths;\r
+import java.nio.file.SimpleFileVisitor;\r
+import java.nio.file.attribute.BasicFileAttributes;\r
import java.nio.file.attribute.DosFileAttributeView;\r
import java.util.AbstractMap.SimpleEntry;\r
import java.util.ArrayList;\r
private final Map<String, IJobStepExecutor> executors = new LinkedHashMap<String, IJobStepExecutor>();\r
private final Map<String, IProgram> programs = new LinkedHashMap<String, IProgram>();\r
private final ArrayList<Entry<String, BasicDBObject>> schedules = new ArrayList<Entry<String, BasicDBObject>>();\r
+ private ArrayList<String> steps = new ArrayList<String>();\r
private URLClassLoader stepsClassLoader;\r
private boolean resetStepClassLoader;\r
private GroovyClassLoader groovyClassLoader;\r
public void load(IJobEngine jobEngine, boolean autoStart) throws Exception {\r
loadExecutors(jobEngine, autoStart);\r
loadSchedules();\r
+ loadSteps();\r
+ }\r
+\r
+ private void loadSteps() {\r
+ FileVisitor<Path> visitor = new SimpleFileVisitor<Path>() {\r
+\r
+ @Override\r
+ public FileVisitResult visitFileFailed(Path path, IOException exc) throws IOException {\r
+ return FileVisitResult.CONTINUE;\r
+ }\r
+\r
+ @Override\r
+ public FileVisitResult visitFile(Path path, BasicFileAttributes attrs) throws IOException {\r
+ steps.add(path.getFileName().toString().replace(".java", ""));\r
+ return FileVisitResult.CONTINUE;\r
+ }\r
+\r
+ @Override\r
+ public FileVisitResult preVisitDirectory(Path dir, BasicFileAttributes attrs) throws IOException {\r
+ return FileVisitResult.CONTINUE;\r
+ }\r
+\r
+ @Override\r
+ public FileVisitResult postVisitDirectory(Path dir, IOException exc) throws IOException {\r
+ return FileVisitResult.CONTINUE;\r
+ }\r
+ };\r
+\r
+ try {\r
+ Files.walkFileTree(Paths.get(DIR_STEPS), visitor);\r
+ } catch (IOException e) {\r
+ logger.info("e: {}", e.getCause().toString());\r
+ } catch (Exception e) {\r
+ logger.info("e: {}", e.getCause().toString());\r
+ }\r
}\r
\r
@Override\r
resetStepClassLoader = true;\r
}\r
\r
+ public ArrayList<String> getSteps() {\r
+ return steps;\r
+ }\r
+\r
+ public void setSteps(ArrayList<String> steps) {\r
+ this.steps = steps;\r
+ }\r
+\r
}\r
<!DOCTYPE xml>\r
<zk xmlns:h="xhtml">\r
+ <div viewModel="@id('jem2') @init('user.jobengine.zk.model.JobEditorModel2')" hflex="1">\r
+ <combobox model="@load(jem2.steps)" value="@bind(each)" onChange="@global-command('selectNewStep', evt=event)" >\r
+ <comboitem label="@load(each)"/>\r
+ </combobox>\r
+ <button viewModel="@id('jfcm2') @init('user.jobengine.zk.model.JobFlowChartModel')" \r
+ iconSclass="z-icon-plus" onClick="@command('addNewStep')" />\r
+ </div>\r
+ \r
<div viewModel="@id('jfcm2') @init('user.jobengine.zk.model.JobFlowChartModel')" vflex="1" hflex="1" >\r
<div vflex="1" hflex="1" >\r
<h:canvas id="myCanvas" width="550px" height="550px"/>\r
</div>\r
<div id="flowchartDataListener" onFlowchartDataChanged="@command('onFlowchartDataChanged')" />\r
- <button label="Save" onClick="@command('getFlowchartData')"/>\r
+ <button label="Mentés" onClick="@command('getFlowchartData')"/>\r
<button id="deleteButton" iconSclass="z-icon-trash-o" onClick="@command('onDeletePressed', evt=event)"/>\r
</div>\r
<h:script src="/js/diagramflowjs.js" />\r
private BasicDBObject editingJob = new BasicDBObject();\r
private ListModelList<BasicDBObject> selectedJobs;\r
private ArrayList<String> dataTypes = new ArrayList<String>();\r
+ private ArrayList<String> steps = new ArrayList<String>();\r
private int numberOfNewParams = 1;\r
\r
@AfterCompose\r
\r
@NotifyChange({ "editingJob", "selectedJob" })\r
public void setSelectedJob(BasicDBObject selectedJob) {\r
- logger.info("setSelectedJob");\r
if (selectedJob == null) {\r
this.selectedJob = null;\r
this.editingJob = null;\r
if (jobEngine == null)\r
jobEngine = ComponentBinder.getJobEngine();\r
\r
+ steps = jobEngine.getJobEngineConfiguration().getSteps();\r
initJobList();\r
}\r
\r
dataTypes.add("com.ibm.nosql.json.api.BasicDBList");\r
dataTypes.add("com.ibm.nosql.json.api.BasicDBObject");\r
}\r
+\r
+ public ArrayList<String> getSteps() {\r
+ return steps;\r
+ }\r
+\r
+ public void setSteps(ArrayList<String> steps) {\r
+ this.steps = steps;\r
+ }\r
}
\ No newline at end of file
import org.zkoss.json.JSONObject;\r
import org.zkoss.zk.ui.Component;\r
import org.zkoss.zk.ui.event.Event;\r
+import org.zkoss.zk.ui.event.InputEvent;\r
import org.zkoss.zk.ui.event.SelectEvent;\r
import org.zkoss.zk.ui.select.Selectors;\r
import org.zkoss.zk.ui.util.Clients;\r
private static final Logger logger = LogManager.getLogger();\r
private String selectedTabID = "tab0";\r
private BasicDBObject selectedJob;\r
+ private String selectedNewStep = "";\r
\r
@AfterCompose\r
public void afterCompose(@ContextParam(ContextType.VIEW) Component view) {\r
logger.info("converted document: {}", XMLUtils.getStringFromDocument(document));\r
}\r
\r
+ @Command\r
+ public void addNewStep() {\r
+ logger.info("addNewStep");\r
+ if (!selectedNewStep.isEmpty()) {\r
+ Clients.evalJavaScript("model.addNode(new model.node(100, 100, 100, 100, connectorsForStep, \""\r
+ + selectedNewStep + "\", \"\", \"RectangleWithGradient\", null, null));\r\n model.draw();");\r
+ }\r
+ }\r
+\r
+ @GlobalCommand\r
+ public void selectNewStep(@BindingParam("evt") InputEvent event) {\r
+ logger.info("selectNewStep");\r
+ selectedNewStep = event.getValue();\r
+ }\r
+\r
@Command\r
public void onDeletePressed(@ContextParam(ContextType.TRIGGER_EVENT) Event event) {\r
Clients.evalJavaScript("deleteSelectedElement();");\r