




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、kettle源代碼中新增作業類型方法樣例中航信研發中心數據服務部 李永江目錄1在作業相關入口中增加新作業類型配置項22 在作業相關屬性文件中增加新作業類型配置項24 增加作業類型對應的設計器編輯窗口類文件371在作業相關入口中增加新作業類型配置項在src下的kettle-job-entries.xml文件中增加新增作業類型的對應項。如下所示: <job-entry id="SYM_ENCRYPT_FILES"> <description>i18n:org.pentaho.di.job.entry:JobEntry.SymmetricEncryptFi
2、les.TypeDesc</description><classname>org.pentaho.di.job.entries.symencryptfiles.JobEntrySymmetricEncryptFiles</classname><category>i18n:org.pentaho.di.job:JobCategory.Category.FileEncryption</category><tooltip>i18n:org.pentaho.di.job.entry:JobEntry.SymmetricEncryp
3、tFiles.Tooltip</tooltip><iconfile>ui/images/DESEncrypt.png</iconfile></job-entry> 2 在作業相關屬性文件中增加新作業類型配置項在src下的包org.pentaho.di.job.entry.messages中找到messages_en_US.properties文件,在文件尾部添加JobEntry.SymmetricEncryptFiles.TypeDesc=Symmetric EncryptionJobEntry.SymmetricEncryptFiles.Too
4、ltip=Symmetric Encryption.如果要中文描述可以在messages_zh_CN.properties文件尾加上JobEntry.SymmetricEncryptFiles.TypeDesc=u5BF9u79F0u7B97u6CD5u52A0u5BC6u6587u4EF6JobEntry.SymmetricEncryptFiles.Tooltip=u4F7Fu7528u5BF9u79F0u7B97u6CD5u52A0u5BC6u6587u4EF63添加作業務類型實現文件及對應的屬性文件在src下的包org.pentaho.di.job.entries下添加symencryp
5、tfiles目錄,并在這個目錄下添加文件JobEntrySymmetricEncryptFiles。并在個目錄下添加子目錄messages和其下的文件messages_en_US.properties。文件分別如下:/* * * Pentaho Data Integration * * Copyright (C) 2002-2012 by Pentaho : * * * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in
6、 compliance with * the License. You may obtain a copy of the License at * * /licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIO
7、NS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */package org.pentaho.di.job.entries.symencryptfiles;import static org.pentaho.di.job.entry.validator.AbstractFileValidator.putVariableSpace;import stat
8、ic org.pentaho.di.job.entry.validator.AndValidator.putValidators;import static org.pentaho.di.job.entry.validator.JobEntryValidatorUtils.andValidator;import static org.pentaho.di.job.entry.validator.JobEntryValidatorUtils.fileExistsValidator;import static org.pentaho.di.job.entry.validator.JobEntryV
9、alidatorUtils.notNullValidator;import java.io.*;import java.util.List;import java.util.regex.Matcher;import java.util.regex.Pattern;import java.text.SimpleDateFormat;import java.util.Date;import org.w3c.dom.Node;import org.pentaho.di.cluster.SlaveServer;import org.pentaho.di.core.CheckResultInterfac
10、e;import org.pentaho.di.core.Const;import org.pentaho.di.core.Result;import org.pentaho.di.core.ResultFile;import org.pentaho.di.core.RowMetaAndData;import org.pentaho.di.core.database.DatabaseMeta;import org.pentaho.di.core.exception.KettleDatabaseException;import org.pentaho.di.core.exception.Kett
11、leException;import org.pentaho.di.core.exception.KettleXMLException;import org.pentaho.di.core.vfs.KettleVFS;import org.pentaho.di.core.xml.XMLHandler;import org.pentaho.di.i18n.BaseMessages;import org.pentaho.di.job.Job;import org.pentaho.di.job.JobMeta;import org.pentaho.di.job.entry.JobEntryBase;
12、import org.pentaho.di.job.entry.JobEntryInterface;import org.pentaho.di.job.entry.validator.ValidatorContext;import org.pentaho.di.repository.ObjectId;import org.pentaho.di.repository.Repository;import mons.vfs.FileObject;import mons.vfs.FileType;import mons.vfs.FileSelectInfo;import mons.vfs.AllFil
13、eSelector;/* * This defines a 'symmetric decrypt files' job entry. * * author Samatar Hassan * since 25-02-2008 */public class JobEntrySymmetricEncryptFiles extends JobEntryBase implements Cloneable, JobEntryInterfaceprivate static Class<?> PKG = JobEntrySymmetricEncryptFiles.class; /
14、for i18n purposes, needed by Translator2! $NON-NLS-1$private SimpleDateFormat daf;private Encryptable encryptor;public boolean arg_from_previous;public boolean include_subfolders;public boolean add_result_filesname;public boolean destination_is_a_file;public boolean create_destination_folder;public
15、String source_filefolder;public String destination_filefolder;public String wildcard;private String nr_errors_less_than;private String success_condition;public String SUCCESS_IF_AT_LEAST_X_FILES_UN_ZIPPED="success_when_at_least"public String SUCCESS_IF_ERRORS_LESS="success_if_errors_l
16、ess"public String SUCCESS_IF_NO_ERRORS="success_if_no_errors"private String encryptionType;public String Encryption_Type_AES="aes"public String Encryption_Type_DES="des"private boolean add_date;private boolean add_time;private boolean SpecifyFormat;private String d
17、ate_time_format;private boolean AddDateBeforeExtension;private boolean DoNotKeepFolderStructure;private String iffileexists;private String destinationFolder;private String ifmovedfileexists;private String moved_date_time_format;private boolean AddMovedDateBeforeExtension;private boolean add_moved_da
18、te;private boolean add_moved_time;private boolean SpecifyMoveFormat;public boolean create_move_to_folder;private int NrErrors=0;private int NrSuccess=0;private boolean successConditionBroken=false;private boolean successConditionBrokenExit=false;private int limitFiles=0;public JobEntrySymmetricEncry
19、ptFiles(String n)super(n, "");create_move_to_folder=false;SpecifyMoveFormat=false;add_moved_date=false;add_moved_time=false;AddMovedDateBeforeExtension=false;moved_date_time_format=null;ifmovedfileexists="do_nothing"destinationFolder=null;DoNotKeepFolderStructure=false;arg_from_p
20、revious=false;source_filefolder=null;destination_filefolder=null;wildcard=null;include_subfolders=false;add_result_filesname=false;destination_is_a_file=false;create_destination_folder=false;nr_errors_less_than="10"success_condition=SUCCESS_IF_NO_ERRORS;add_date=false;add_time=false;Specif
21、yFormat=false;date_time_format=null;AddDateBeforeExtension=false;iffileexists="do_nothing"encryptionType = Encryption_Type_DES;setID(-1L);public JobEntrySymmetricEncryptFiles()this("");public Object clone()JobEntrySymmetricEncryptFiles je = (JobEntrySymmetricEncryptFiles) super.c
22、lone();return je; public String getXML()StringBuffer retval = new StringBuffer(300);retval.append(super.getXML();retval.append(" ").append(XMLHandler.addTagValue("encryptionType", encryptionType);retval.append(" ").append(XMLHandler.addTagValue("arg_from_previous&q
23、uot;, arg_from_previous);retval.append(" ").append(XMLHandler.addTagValue("include_subfolders", include_subfolders);retval.append(" ").append(XMLHandler.addTagValue("add_result_filesname", add_result_filesname);retval.append(" ").append(XMLHandler.ad
24、dTagValue("destination_is_a_file", destination_is_a_file);retval.append(" ").append(XMLHandler.addTagValue("create_destination_folder", create_destination_folder);retval.append(" ").append(XMLHandler.addTagValue("add_date", add_date);retval.append(&q
25、uot; ").append(XMLHandler.addTagValue("add_time", add_time);retval.append(" ").append(XMLHandler.addTagValue("SpecifyFormat", SpecifyFormat);retval.append(" ").append(XMLHandler.addTagValue("date_time_format", date_time_format);retval.append(&qu
26、ot; ").append(XMLHandler.addTagValue("nr_errors_less_than", nr_errors_less_than);retval.append(" ").append(XMLHandler.addTagValue("success_condition", success_condition);retval.append(" ").append(XMLHandler.addTagValue("AddDateBeforeExtension",
27、AddDateBeforeExtension);retval.append(" ").append(XMLHandler.addTagValue("DoNotKeepFolderStructure", DoNotKeepFolderStructure);retval.append(" ").append(XMLHandler.addTagValue("iffileexists", iffileexists);retval.append(" ").append(XMLHandler.addTagV
28、alue("destinationFolder", destinationFolder);retval.append(" ").append(XMLHandler.addTagValue("ifmovedfileexists", ifmovedfileexists);retval.append(" ").append(XMLHandler.addTagValue("moved_date_time_format", moved_date_time_format);retval.append(&qu
29、ot; ").append(XMLHandler.addTagValue("create_move_to_folder", create_move_to_folder);retval.append(" ").append(XMLHandler.addTagValue("add_moved_date", add_moved_date);retval.append(" ").append(XMLHandler.addTagValue("add_moved_time", add_moved_
30、time);retval.append(" ").append(XMLHandler.addTagValue("SpecifyMoveFormat", SpecifyMoveFormat);retval.append(" ").append(XMLHandler.addTagValue("AddMovedDateBeforeExtension", AddMovedDateBeforeExtension);retval.append(" <fields>").append(Const.
31、CR);if (source_filefolder!=null)for (int i=0;i<source_filefolder.length;i+)retval.append(" <field>").append(Const.CR);retval.append(" ").append(XMLHandler.addTagValue("source_filefolder", source_filefolderi);retval.append(" ").append(XMLHandler.addTag
32、Value("destination_filefolder", destination_filefolderi);retval.append(" ").append(XMLHandler.addTagValue("wildcard", wildcardi);retval.append(" </field>").append(Const.CR);retval.append(" </fields>").append(Const.CR);return retval.toStri
33、ng();public void loadXML(Node entrynode, List<DatabaseMeta> databases, List<SlaveServer> slaveServers, Repository rep) throws KettleXMLExceptiontrysuper.loadXML(entrynode, databases, slaveServers);encryptionType = XMLHandler.getTagValue(entrynode, "encryptionType") ;arg_from_pr
34、evious = "Y".equalsIgnoreCase(XMLHandler.getTagValue(entrynode, "arg_from_previous") );include_subfolders = "Y".equalsIgnoreCase(XMLHandler.getTagValue(entrynode, "include_subfolders") );add_result_filesname = "Y".equalsIgnoreCase(XMLHandler.getTagVa
35、lue(entrynode, "add_result_filesname") );destination_is_a_file = "Y".equalsIgnoreCase(XMLHandler.getTagValue(entrynode, "destination_is_a_file") );create_destination_folder = "Y".equalsIgnoreCase(XMLHandler.getTagValue(entrynode, "create_destination_folde
36、r") );add_date = "Y".equalsIgnoreCase(XMLHandler.getTagValue(entrynode, "add_date");add_time = "Y".equalsIgnoreCase(XMLHandler.getTagValue(entrynode, "add_time");SpecifyFormat = "Y".equalsIgnoreCase(XMLHandler.getTagValue(entrynode, "Specif
37、yFormat");AddDateBeforeExtension = "Y".equalsIgnoreCase(XMLHandler.getTagValue(entrynode, "AddDateBeforeExtension");DoNotKeepFolderStructure = "Y".equalsIgnoreCase(XMLHandler.getTagValue(entrynode, "DoNotKeepFolderStructure");date_time_format = XMLHandler
38、.getTagValue(entrynode, "date_time_format");nr_errors_less_than = XMLHandler.getTagValue(entrynode, "nr_errors_less_than");success_condition = XMLHandler.getTagValue(entrynode, "success_condition");iffileexists = XMLHandler.getTagValue(entrynode, "iffileexists"
39、;);destinationFolder = XMLHandler.getTagValue(entrynode, "destinationFolder");ifmovedfileexists = XMLHandler.getTagValue(entrynode, "ifmovedfileexists");moved_date_time_format = XMLHandler.getTagValue(entrynode, "moved_date_time_format");AddMovedDateBeforeExtension = &q
40、uot;Y".equalsIgnoreCase(XMLHandler.getTagValue(entrynode, "AddMovedDateBeforeExtension");create_move_to_folder = "Y".equalsIgnoreCase(XMLHandler.getTagValue(entrynode, "create_move_to_folder");add_moved_date = "Y".equalsIgnoreCase(XMLHandler.getTagValue(e
41、ntrynode, "add_moved_date");add_moved_time = "Y".equalsIgnoreCase(XMLHandler.getTagValue(entrynode, "add_moved_time");SpecifyMoveFormat = "Y".equalsIgnoreCase(XMLHandler.getTagValue(entrynode, "SpecifyMoveFormat");Node fields = XMLHandler.getSubNode(
42、entrynode, "fields");/ How many field arguments?int nrFields = XMLHandler.countNodes(fields, "field");source_filefolder = new StringnrFields;destination_filefolder = new StringnrFields;wildcard = new StringnrFields;/ Read them all.for (int i = 0; i < nrFields; i+)Node fnode =
43、XMLHandler.getSubNodeByNr(fields, "field", i);source_filefolderi = XMLHandler.getTagValue(fnode, "source_filefolder");destination_filefolderi = XMLHandler.getTagValue(fnode, "destination_filefolder");wildcardi = XMLHandler.getTagValue(fnode, "wildcard");catch(
44、KettleXMLException xe)throw new KettleXMLException(BaseMessages.getString(PKG, "JobSymmetricEncryptFiles.Error.Exception.UnableLoadXML"), xe);public void loadRep(Repository rep, ObjectId id_jobentry, List<DatabaseMeta> databases, List<SlaveServer> slaveServers) throws KettleExc
45、eptiontryencryptionType = rep.getJobEntryAttributeString(id_jobentry, "encryptionType");arg_from_previous = rep.getJobEntryAttributeBoolean(id_jobentry, "arg_from_previous");include_subfolders = rep.getJobEntryAttributeBoolean(id_jobentry, "include_subfolders");add_resu
46、lt_filesname = rep.getJobEntryAttributeBoolean(id_jobentry, "add_result_filesname");destination_is_a_file = rep.getJobEntryAttributeBoolean(id_jobentry, "destination_is_a_file");create_destination_folder = rep.getJobEntryAttributeBoolean(id_jobentry, "create_destination_fold
47、er");nr_errors_less_than = rep.getJobEntryAttributeString(id_jobentry, "nr_errors_less_than");success_condition = rep.getJobEntryAttributeString(id_jobentry, "success_condition");add_date = rep.getJobEntryAttributeBoolean(id_jobentry, "add_date"); add_time = rep.ge
48、tJobEntryAttributeBoolean(id_jobentry, "add_time"); SpecifyFormat = rep.getJobEntryAttributeBoolean(id_jobentry, "SpecifyFormat"); date_time_format = rep.getJobEntryAttributeString(id_jobentry, "date_time_format");AddDateBeforeExtension = rep.getJobEntryAttributeBoolean
49、(id_jobentry, "AddDateBeforeExtension");DoNotKeepFolderStructure = rep.getJobEntryAttributeBoolean(id_jobentry, "DoNotKeepFolderStructure");iffileexists = rep.getJobEntryAttributeString(id_jobentry, "iffileexists");destinationFolder = rep.getJobEntryAttributeString(id_j
50、obentry, "destinationFolder");ifmovedfileexists = rep.getJobEntryAttributeString(id_jobentry, "ifmovedfileexists");moved_date_time_format = rep.getJobEntryAttributeString(id_jobentry, "moved_date_time_format");AddMovedDateBeforeExtension = rep.getJobEntryAttributeBoolea
51、n(id_jobentry, "AddMovedDateBeforeExtension");create_move_to_folder = rep.getJobEntryAttributeBoolean(id_jobentry, "create_move_to_folder");add_moved_date = rep.getJobEntryAttributeBoolean(id_jobentry, "add_moved_date"); add_moved_time = rep.getJobEntryAttributeBoolean(
52、id_jobentry, "add_moved_time"); SpecifyMoveFormat = rep.getJobEntryAttributeBoolean(id_jobentry, "SpecifyMoveFormat"); / How many arguments?int argnr = rep.countNrJobEntryAttributes(id_jobentry, "source_filefolder");source_filefolder = new Stringargnr;destination_filefo
53、lder = new Stringargnr;wildcard = new Stringargnr;/ Read them all.for (int a=0;a<argnr;a+) source_filefoldera= rep.getJobEntryAttributeString(id_jobentry, a, "source_filefolder");destination_filefoldera= rep.getJobEntryAttributeString(id_jobentry, a, "destination_filefolder");
54、wildcarda= rep.getJobEntryAttributeString(id_jobentry, a, "wildcard");catch(KettleException dbe)throw new KettleException(BaseMessages.getString(PKG, "JobSymmetricEncryptFiles.Error.Exception.UnableLoadRep")+id_jobentry, dbe);public void saveRep(Repository rep, ObjectId id_job) t
55、hrows KettleExceptiontryrep.saveJobEntryAttribute(id_job, getObjectId(), "encryptionType", encryptionType);rep.saveJobEntryAttribute(id_job, getObjectId(), "arg_from_previous", arg_from_previous);rep.saveJobEntryAttribute(id_job, getObjectId(), "include_subfolders", inc
56、lude_subfolders);rep.saveJobEntryAttribute(id_job, getObjectId(), "add_result_filesname", add_result_filesname);rep.saveJobEntryAttribute(id_job, getObjectId(), "destination_is_a_file", destination_is_a_file);rep.saveJobEntryAttribute(id_job, getObjectId(), "create_destinati
57、on_folder", create_destination_folder);rep.saveJobEntryAttribute(id_job, getObjectId(), "nr_errors_less_than", nr_errors_less_than);rep.saveJobEntryAttribute(id_job, getObjectId(), "success_condition", success_condition);rep.saveJobEntryAttribute(id_job, getObjectId(), "
58、;add_date", add_date);rep.saveJobEntryAttribute(id_job, getObjectId(), "add_time", add_time);rep.saveJobEntryAttribute(id_job, getObjectId(), "SpecifyFormat", SpecifyFormat);rep.saveJobEntryAttribute(id_job, getObjectId(), "date_time_format", date_time_format);rep.saveJobEntryAttribute(id_job, getObjectId(), "AddDateBeforeExtension", AddDateBeforeExtension);rep.saveJobEntryAtt
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二手房買賣合同違約責任追究協議
- 財務報表風險敞口應對效果評估合同
- 材料疲勞斷裂數據校正合同
- 生態農業園區場地合作經營與產品銷售協議
- 邊疆地區古代商業貿易考古合同
- 高端裝備制造廠房租賃與智能化改造協議
- 大學刑法考試題及答案
- 群體健康策略課件
- 調研安全生產工作方案
- 安全總監個人述職報告3
- 2024年廣東省中考物理試卷(含答案逐題解析)
- 武術專業個人簡歷模板范文
- LD水電站智慧工程建設方案研究
- DB37-T 4384-2021 混凝土橋梁有效預應力無損檢測技術規程
- 竣工財務決算報表模板
- 2021利達JB-QG-LD988EL JB-QT-LD988EL 火災報警控制器 消防聯動控制器調試手冊
- 2024年中鐵(天津)軌道交通投資建設限公司運營管理人員招聘5人高頻考題難、易錯點模擬試題(共500題)附帶答案詳解
- 創傷中心匯報
- 裝配式結構吊裝施工計算書
- 2024安徽蕪湖市中江城建集團限公司下屬子公司社會招聘60人公開引進高層次人才和急需緊缺人才筆試參考題庫(共500題)答案詳解版
- 放射科疑難病例分析討論記錄
評論
0/150
提交評論