int count = graph.getModel().getChildCount(root);// root可以理解为面板,其children为面板中的节点和边 for (int i = 0; i < count; i++) { mxCell cell = (mxCell) graph.getModel().getChildAt(root, i); // graph中的vertex和edge都是root下的孩子节点。 if (cell.isVertex()) { Element e = (Element) cell.getValue(); if (PropsUI.JOB_JOBENTRY_NAME.equals(e.getTagName())) { JobEntryDecoder jobEntryDecoder = (JobEntryDecoder) PluginFactory.getBean(cell.getAttribute("ctype")); JobEntryCopy je = jobEntryDecoder.decodeStep(cell, jobMeta.getDatabases(), jobMeta.getMetaStore()); if (je.isSpecial() && je.isMissing()) { jobMeta.addMissingEntry((MissingEntry) je.getEntry()); } JobEntryCopy prev = jobMeta.findJobEntry(je.getName(), 0, true); if (prev != null) { if (je.getNr() == 0) { int idx = jobMeta.indexOfJobEntry(prev); jobMeta.removeJobEntry(idx); } else if (je.getNr() > 0) { je.setEntry(prev.getEntry()); // See if entry already exists... prev = jobMeta.findJobEntry(je.getName(), je.getNr(), true); if (prev != null) { int idx = jobMeta.indexOfJobEntry(prev); jobMeta.removeJobEntry(idx); } } } jobMeta.addJobEntry(je); } } else if (cell.isEdge()) { JobHopMeta hopinf = JobHopMetaCodec.decode(jobMeta, cell); jobMeta.addJobHop(hopinf); } }这段代码是什么意思
时间: 2024-02-10 08:21:53 浏览: 52
这段代码是对一个Pentaho数据集成中的作业(job)进行解码的过程。该作业包含了一些步骤(job entry)和连接(hop)。
具体来说,该代码首先获取到根节点(root)下的所有子节点(包括步骤和连接),然后遍历这些节点。对于每个节点,如果它是一个步骤节点,就获取它对应的XML元素(Element),并通过工厂类(PluginFactory)获取该步骤对应的解码器(JobEntryDecoder)。然后使用解码器对该步骤进行解码,得到一个JobEntryCopy对象,并将它加入到作业中(jobMeta)。如果该步骤是一个特殊的步骤(例如MissingEntry),则将其加入到作业的缺失步骤列表中。如果该步骤已经存在于作业中,则更新该步骤的信息。
如果该节点是一个连接节点,则使用JobHopMetaCodec解码器对该连接进行解码,并将其加入到作业中。
总之,该代码实现了对作业中所有步骤和连接的解码过程,并将解码后的结果存储到作业中。
阅读全文