kettle源代碼中新增作業類型方法_第1頁
kettle源代碼中新增作業類型方法_第2頁
kettle源代碼中新增作業類型方法_第3頁
kettle源代碼中新增作業類型方法_第4頁
kettle源代碼中新增作業類型方法_第5頁
已閱讀5頁,還剩74頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論