/* * To change this template, choose Tools | Templates * and open the template in the editor. */ package org.hpccsystems.pentaho.job.saltspecificity; import java.util.ArrayList; import java.util.Iterator; import java.util.List; import org.hpccsystems.eclguifeatures.AutoPopulate; import org.hpccsystems.recordlayout.RecordBO; import org.hpccsystems.recordlayout.RecordList; import org.hpccsystems.saltui.hygiene.*; //import org.hpccsystems.saltui.EntryBO; //import org.hpccsystems.saltui.EntryList; //import org.hpccsystems.saltui.HygieneRuleBO; //import org.hpccsystems.saltui.HygieneRuleList; import org.pentaho.di.cluster.SlaveServer; import org.pentaho.di.compatibility.Value; import org.pentaho.di.core.Const; import org.pentaho.di.core.Result; import org.pentaho.di.core.RowMetaAndData; import org.pentaho.di.core.database.DatabaseMeta; import org.pentaho.di.core.exception.KettleException; import org.pentaho.di.core.exception.KettleXMLException; import org.pentaho.di.core.xml.XMLHandler; import org.pentaho.di.job.JobMeta; import org.pentaho.di.job.entry.JobEntryBase; import org.pentaho.di.job.entry.JobEntryInterface; import org.pentaho.di.repository.ObjectId; import org.pentaho.di.repository.Repository; import org.w3c.dom.Node; import org.hpccsystems.ecljobentrybase.*; import org.hpccsystems.javaecl.SaltGenerateSpecificities; import org.hpccsystems.javaecl.SaltHygieneReport; /** * * @author ChambersJ */ public class SALTSpecificity extends ECLJobEntry{//extends JobEntryBase implements Cloneable, JobEntryInterface { private String datasetName; private String layout; private String idField; public String getDatasetName() { return datasetName; } public void setDatasetName(String datasetName) { this.datasetName = datasetName; } public String getLayout() { return layout; } public void setLayout(String layout) { this.layout = layout; } public String getIdField() { return idField; } public void setIdField(String idField) { this.idField = idField; } @Override public Result execute(Result prevResult, int k) throws KettleException { Result result = modifyResults(prevResult); if(result.isStopped()){ return result; } AutoPopulate ap = new AutoPopulate(); String jobNameNoSpace = ""; JobMeta jobMeta = super.parentJob.getJobMeta(); try{ String jobName = ap.getGlobalVariable(jobMeta.getJobCopies(),"jobName"); jobNameNoSpace = jobName.replace(" ", "_"); this.setLayout(ap.getDatasetsField("record_name", this.getDatasetName(),jobMeta.getJobCopies())); }catch (Exception e){ System.out.println("Error Parsing existing Global Variables "); System.out.println(e.toString()); e.printStackTrace(); } SaltGenerateSpecificities ssr = new SaltGenerateSpecificities(); ssr.setDatasetName(datasetName); ssr.setName(this.getName()); ssr.setSaltLib(jobNameNoSpace + "module"); ssr.setRecordName(layout); logBasic("{Dataset Job} Execute = " + ssr.ecl()); logBasic("{Dataset Job} Previous =" + result.getLogText()); result.setResult(true); RowMetaAndData data = new RowMetaAndData(); data.addValue("ecl", Value.VALUE_TYPE_STRING, ssr.ecl()); List list = result.getRows(); list.add(data); String eclCode = parseEclFromRowData(list); /* String eclCode = ""; if (list == null) { list = new ArrayList(); } else { for (int i = 0; i < list.size(); i++) { RowMetaAndData rowData = (RowMetaAndData) list.get(i); String code = rowData.getString("ecl", null); if (code != null) { eclCode += code; } } logBasic("{Dataset Job} ECL Code =" + eclCode); } */ result.setRows(list); result.setLogText("ECLDataset executed, ECL code added"); return result; } @Override public void loadXML(Node node, List<DatabaseMeta> list, List<SlaveServer> list1, Repository rpstr) throws KettleXMLException { try { super.loadXML(node, list, list1); if(XMLHandler.getNodeValue(XMLHandler.getSubNode(node, "datasetName")) != null) setDatasetName(XMLHandler.getNodeValue(XMLHandler.getSubNode(node, "datasetName"))); if(XMLHandler.getNodeValue(XMLHandler.getSubNode(node, "layout")) != null) setLayout(XMLHandler.getNodeValue(XMLHandler.getSubNode(node, "layout"))); if(XMLHandler.getNodeValue(XMLHandler.getSubNode(node, "idField")) != null) setIdField(XMLHandler.getNodeValue(XMLHandler.getSubNode(node, "idField"))); } catch (Exception e) { throw new KettleXMLException("ECL Dataset Job Plugin Unable to read step info from XML node", e); } } public String getXML() { String retval = ""; retval += super.getXML(); retval += " <datasetName><![CDATA[" + datasetName + "]]></datasetName>" + Const.CR; retval += " <layout><![CDATA[" + layout + "]]></layout>" + Const.CR; retval += " <idField><![CDATA[" + this.idField + "]]></idField>" + Const.CR; return retval; } public void loadRep(Repository rep, ObjectId id_jobentry, List<DatabaseMeta> databases, List<SlaveServer> slaveServers) throws KettleException { try { if(rep.getStepAttributeString(id_jobentry, "datasetName") != null) datasetName = rep.getStepAttributeString(id_jobentry, "datasetName"); //$NON-NLS-1$ if(rep.getStepAttributeString(id_jobentry, "layout") != null) layout = rep.getStepAttributeString(id_jobentry, "layout"); //$NON-NLS-1$ if(rep.getStepAttributeString(id_jobentry, "idField") != null) this.setIdField(rep.getStepAttributeString(id_jobentry, "idField")); //$NON-NLS-1$ } catch (Exception e) { throw new KettleException("Unexpected Exception", e); } } public void saveRep(Repository rep, ObjectId id_job) throws KettleException { try { rep.saveStepAttribute(id_job, getObjectId(), "datasetName", datasetName); //$NON-NLS-1$ rep.saveStepAttribute(id_job, getObjectId(), "layout", layout); //$NON-NLS-1$ rep.saveStepAttribute(id_job, getObjectId(), "idField", this.getIdField()); //$NON-NLS-1$ } catch (Exception e) { throw new KettleException("Unable to save info into repository" + id_job, e); } } }