Java tutorial
/*! ****************************************************************************** * * Pentaho Data Integration * * Copyright (C) 2002-2013 by Pentaho : http://www.pentaho.com * ******************************************************************************* * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/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 CONDITIONS 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.trans.steps.exceloutput; import java.text.SimpleDateFormat; import java.util.Date; import java.util.List; import java.util.Map; import org.apache.commons.vfs.FileObject; import org.pentaho.di.core.CheckResult; import org.pentaho.di.core.CheckResultInterface; import org.pentaho.di.core.Const; import org.pentaho.di.core.database.DatabaseMeta; import org.pentaho.di.core.encryption.Encr; import org.pentaho.di.core.exception.KettleException; import org.pentaho.di.core.exception.KettleXMLException; import org.pentaho.di.core.row.RowMeta; import org.pentaho.di.core.row.RowMetaInterface; import org.pentaho.di.core.variables.VariableSpace; import org.pentaho.di.core.vfs.KettleVFS; import org.pentaho.di.core.xml.XMLHandler; import org.pentaho.di.i18n.BaseMessages; import org.pentaho.di.repository.ObjectId; import org.pentaho.di.repository.Repository; import org.pentaho.di.resource.ResourceDefinition; import org.pentaho.di.resource.ResourceNamingInterface; import org.pentaho.di.trans.Trans; import org.pentaho.di.trans.TransMeta; import org.pentaho.di.trans.step.BaseStepMeta; import org.pentaho.di.trans.step.StepDataInterface; import org.pentaho.di.trans.step.StepInterface; import org.pentaho.di.trans.step.StepMeta; import org.pentaho.di.trans.step.StepMetaInjectionInterface; import org.pentaho.di.trans.step.StepMetaInterface; import org.pentaho.metastore.api.IMetaStore; import org.w3c.dom.Node; /** * Metadata of the Excel Output step. * * @author Matt * @since on 6-sep-2006 */ public class ExcelOutputMeta extends BaseStepMeta implements StepMetaInterface { private static Class<?> PKG = ExcelOutputMeta.class; // for i18n purposes, needed by Translator2!! public static final int FONT_NAME_ARIAL = 0; public static final int FONT_NAME_COURIER = 1; public static final int FONT_NAME_TAHOMA = 2; public static final int FONT_NAME_TIMES = 3; public static final String[] font_name_code = { "arial", "courier", "tahoma", "times" }; public static final String[] font_name_desc = { BaseMessages.getString(PKG, "ExcelOutputMeta.font_name.Arial"), BaseMessages.getString(PKG, "ExcelOutputMeta.font_name.Courier"), BaseMessages.getString(PKG, "ExcelOutputMeta.font_name.Tahoma"), BaseMessages.getString(PKG, "ExcelOutputMeta.font_name.Times") }; public static final int FONT_UNDERLINE_NO = 0; public static final int FONT_UNDERLINE_SINGLE = 1; public static final int FONT_UNDERLINE_SINGLE_ACCOUNTING = 2; public static final int FONT_UNDERLINE_DOUBLE = 3; public static final int FONT_UNDERLINE_DOUBLE_ACCOUNTING = 4; public static final String[] font_underline_code = { "no", "single", "single_accounting", "double", "double_accounting" }; public static final String[] font_underline_desc = { BaseMessages.getString(PKG, "ExcelOutputMeta.font_underline.No"), BaseMessages.getString(PKG, "ExcelOutputMeta.font_underline.Single"), BaseMessages.getString(PKG, "ExcelOutputMeta.font_underline.SingleAccounting"), BaseMessages.getString(PKG, "ExcelOutputMeta.font_underline.Double"), BaseMessages.getString(PKG, "ExcelOutputMeta.font_underline.DoubleAccounting") }; public static final int FONT_ORIENTATION_HORIZONTAL = 0; public static final int FONT_ORIENTATION_MINUS_45 = 1; public static final int FONT_ORIENTATION_MINUS_90 = 2; public static final int FONT_ORIENTATION_PLUS_45 = 3; public static final int FONT_ORIENTATION_PLUS_90 = 4; public static final int FONT_ORIENTATION_STACKED = 5; public static final int FONT_ORIENTATION_VERTICAL = 6; public static final String[] font_orientation_code = { "horizontal", "minus_45", "minus_90", "plus_45", "plus_90", "stacked", "vertical" }; public static final String[] font_orientation_desc = { BaseMessages.getString(PKG, "ExcelOutputMeta.font_orientation.Horizontal"), BaseMessages.getString(PKG, "ExcelOutputMeta.font_orientation.Minus_45"), BaseMessages.getString(PKG, "ExcelOutputMeta.font_orientation.Minus_90"), BaseMessages.getString(PKG, "ExcelOutputMeta.font_orientation.Plus_45"), BaseMessages.getString(PKG, "ExcelOutputMeta.font_orientation.Plus_90"), BaseMessages.getString(PKG, "ExcelOutputMeta.font_orientation.Stacked"), BaseMessages.getString(PKG, "ExcelOutputMeta.font_orientation.Vertical") }; public static final int FONT_COLOR_NONE = 0; public static final int FONT_COLOR_BLACK = 1; public static final int FONT_COLOR_WHITE = 2; public static final int FONT_COLOR_RED = 3; public static final int FONT_COLOR_BRIGHT_GREEN = 4; public static final int FONT_COLOR_BLUE = 5; public static final int FONT_COLOR_YELLOW = 6; public static final int FONT_COLOR_PINK = 7; public static final int FONT_COLOR_TURQUOISE = 8; public static final int FONT_COLOR_DARK_RED = 9; public static final int FONT_COLOR_GREEN = 10; public static final int FONT_COLOR_DARK_BLUE = 11; public static final int FONT_COLOR_DARK_YELLOW = 12; public static final int FONT_COLOR_VIOLET = 13; public static final int FONT_COLOR_TEAL = 14; public static final int FONT_COLOR_GREY_25pct = 15; public static final int FONT_COLOR_GREY_50pct = 16; public static final int FONT_COLOR_PERIWINKLEpct = 17; public static final int FONT_COLOR_PLUM = 18; public static final int FONT_COLOR_IVORY = 19; public static final int FONT_COLOR_LIGHT_TURQUOISE = 20; public static final int FONT_COLOR_DARK_PURPLE = 21; public static final int FONT_COLOR_CORAL = 22; public static final int FONT_COLOR_OCEAN_BLUE = 23; public static final int FONT_COLOR_ICE_BLUE = 24; public static final int FONT_COLOR_TURQOISE = 25; public static final int FONT_COLOR_SKY_BLUE = 26; public static final int FONT_COLOR_LIGHT_GREEN = 27; public static final int FONT_COLOR_VERY_LIGHT_YELLOW = 28; public static final int FONT_COLOR_PALE_BLUE = 29; public static final int FONT_COLOR_ROSE = 30; public static final int FONT_COLOR_LAVENDER = 31; public static final int FONT_COLOR_TAN = 32; public static final int FONT_COLOR_LIGHT_BLUE = 33; public static final int FONT_COLOR_AQUA = 34; public static final int FONT_COLOR_LIME = 35; public static final int FONT_COLOR_GOLD = 36; public static final int FONT_COLOR_LIGHT_ORANGE = 37; public static final int FONT_COLOR_ORANGE = 38; public static final int FONT_COLOR_BLUE_GREY = 39; public static final int FONT_COLOR_GREY_40pct = 40; public static final int FONT_COLOR_DARK_TEAL = 41; public static final int FONT_COLOR_SEA_GREEN = 42; public static final int FONT_COLOR_DARK_GREEN = 43; public static final int FONT_COLOR_OLIVE_GREEN = 44; public static final int FONT_COLOR_BROWN = 45; public static final int FONT_COLOR_GREY_80pct = 46; public static final String[] font_color_code = { "none", "black", "white", "red", "bright_green", "blue", "yellow", "pink", "turquoise", "dark_red", "green", "dark_blue", "dark_yellow", "violet", "teal", "grey_25pct", "grey_50pct", "periwinklepct", "plum", "ivory", "light_turquoise", "dark_purple", "coral", "ocean_blue", "ice_blue", "turqoise", "sky_blue", "light_green", "very_light_yellow", "pale_blue", "rose", "lavender", "tan", "light_blue", "aqua", "lime", "gold", "light_orange", "orange", "blue_grey", "grey_40pct", "dark_teal", "sea_green", "dark_green", "olive_green", "brown", "grey_80pct" }; public static final String[] font_color_desc = { BaseMessages.getString(PKG, "ExcelOutputMeta.font_color.None"), BaseMessages.getString(PKG, "ExcelOutputMeta.font_color.BLACK"), BaseMessages.getString(PKG, "ExcelOutputMeta.font_color.WHITE"), BaseMessages.getString(PKG, "ExcelOutputMeta.font_color.RED"), BaseMessages.getString(PKG, "ExcelOutputMeta.font_color.BRIGHT_GREEN"), BaseMessages.getString(PKG, "ExcelOutputMeta.font_color.BLUE"), BaseMessages.getString(PKG, "ExcelOutputMeta.font_color.YELLOW"), BaseMessages.getString(PKG, "ExcelOutputMeta.font_color.PINK"), BaseMessages.getString(PKG, "ExcelOutputMeta.font_color.TURQUOISE"), BaseMessages.getString(PKG, "ExcelOutputMeta.font_color.DARK_RED"), BaseMessages.getString(PKG, "ExcelOutputMeta.font_color.GREEN"), BaseMessages.getString(PKG, "ExcelOutputMeta.font_color.DARK_BLUE"), BaseMessages.getString(PKG, "ExcelOutputMeta.font_color.DARK_YELLOW"), BaseMessages.getString(PKG, "ExcelOutputMeta.font_color.VIOLET"), BaseMessages.getString(PKG, "ExcelOutputMeta.font_color.TEAL"), BaseMessages.getString(PKG, "ExcelOutputMeta.font_color.GREY_25pct"), BaseMessages.getString(PKG, "ExcelOutputMeta.font_color.GREY_50pct"), BaseMessages.getString(PKG, "ExcelOutputMeta.font_color.PERIWINKLEpct"), BaseMessages.getString(PKG, "ExcelOutputMeta.font_color.PLUM"), BaseMessages.getString(PKG, "ExcelOutputMeta.font_color.IVORY"), BaseMessages.getString(PKG, "ExcelOutputMeta.font_color.LIGHT_TURQUOISE"), BaseMessages.getString(PKG, "ExcelOutputMeta.font_color.DARK_PURPLE"), BaseMessages.getString(PKG, "ExcelOutputMeta.font_color.CORAL"), BaseMessages.getString(PKG, "ExcelOutputMeta.font_color.OCEAN_BLUE"), BaseMessages.getString(PKG, "ExcelOutputMeta.font_color.ICE_BLUE"), BaseMessages.getString(PKG, "ExcelOutputMeta.font_color.TURQOISE"), BaseMessages.getString(PKG, "ExcelOutputMeta.font_color.SKY_BLUE"), BaseMessages.getString(PKG, "ExcelOutputMeta.font_color.LIGHT_GREEN"), BaseMessages.getString(PKG, "ExcelOutputMeta.font_color.VERY_LIGHT_YELLOW"), BaseMessages.getString(PKG, "ExcelOutputMeta.font_color.PALE_BLUE"), BaseMessages.getString(PKG, "ExcelOutputMeta.font_color.ROSE"), BaseMessages.getString(PKG, "ExcelOutputMeta.font_color.LAVENDER"), BaseMessages.getString(PKG, "ExcelOutputMeta.font_color.TAN"), BaseMessages.getString(PKG, "ExcelOutputMeta.font_color.LIGHT_BLUE"), BaseMessages.getString(PKG, "ExcelOutputMeta.font_color.AQUA"), BaseMessages.getString(PKG, "ExcelOutputMeta.font_color.LIME"), BaseMessages.getString(PKG, "ExcelOutputMeta.font_color.GOLD"), BaseMessages.getString(PKG, "ExcelOutputMeta.font_color.LIGHT_ORANGE"), BaseMessages.getString(PKG, "ExcelOutputMeta.font_color.ORANGE"), BaseMessages.getString(PKG, "ExcelOutputMeta.font_color.BLUE_GREY"), BaseMessages.getString(PKG, "ExcelOutputMeta.font_color.GREY_40pct"), BaseMessages.getString(PKG, "ExcelOutputMeta.font_color.DARK_TEAL"), BaseMessages.getString(PKG, "ExcelOutputMeta.font_color.SEA_GREEN"), BaseMessages.getString(PKG, "ExcelOutputMeta.font_color.DARK_GREEN"), BaseMessages.getString(PKG, "ExcelOutputMeta.font_color.OLIVE_GREEN"), BaseMessages.getString(PKG, "ExcelOutputMeta.font_color.BROWN"), BaseMessages.getString(PKG, "ExcelOutputMeta.font_color.GREY_80pct") }; public static final int FONT_ALIGNMENT_LEFT = 0; public static final int FONT_ALIGNMENT_RIGHT = 1; public static final int FONT_ALIGNMENT_CENTER = 2; public static final int FONT_ALIGNMENT_FILL = 3; public static final int FONT_ALIGNMENT_GENERAL = 4; public static final int FONT_ALIGNMENT_JUSTIFY = 5; public static final String[] font_alignment_code = { "left", "right", "center", "fill", "general", "justify" }; public static final String[] font_alignment_desc = { BaseMessages.getString(PKG, "ExcelOutputMeta.font_alignment.Left"), BaseMessages.getString(PKG, "ExcelOutputMeta.font_alignment.Right"), BaseMessages.getString(PKG, "ExcelOutputMeta.font_alignment.Center"), BaseMessages.getString(PKG, "ExcelOutputMeta.font_alignment.Fill"), BaseMessages.getString(PKG, "ExcelOutputMeta.font_alignment.General"), BaseMessages.getString(PKG, "ExcelOutputMeta.font_alignment.Justify") }; public static final int DEFAULT_FONT_SIZE = 10; public static final int DEFAULT_ROW_HEIGHT = 255; public static final int DEFAULT_ROW_WIDTH = 255; private int header_font_name; private String header_font_size; private boolean header_font_bold; private boolean header_font_italic; private int header_font_underline; private int header_font_orientation; private int header_font_color; private int header_background_color; private String header_row_height; private int header_alignment; private String header_image; // Row font private int row_font_name; private String row_font_size; private int row_font_color; private int row_background_color; /** The base name of the output file */ private String fileName; /** The file extention in case of a generated filename */ private String extension; /** The password to protect the sheet */ private String password; /** Add a header at the top of the file? */ private boolean headerEnabled; /** Add a footer at the bottom of the file? */ private boolean footerEnabled; /** if this value is larger then 0, the text file is split up into parts of this number of lines */ private int splitEvery; /** Flag: add the stepnr in the filename */ private boolean stepNrInFilename; /** Flag: add the date in the filename */ private boolean dateInFilename; /** Flag: add the filenames to result filenames */ private boolean addToResultFilenames; /** Flag: protect the sheet */ private boolean protectsheet; /** Flag: add the time in the filename */ private boolean timeInFilename; /** Flag: use a template */ private boolean templateEnabled; /** the excel template */ private String templateFileName; /** Flag: append when template */ private boolean templateAppend; /** the excel sheet name */ private String sheetname; /** Flag : use temporary files while writing? */ private boolean usetempfiles; /** Temporary directory **/ private String tempdirectory; /* THE FIELD SPECIFICATIONS ... */ /** The output fields */ private ExcelField[] outputFields; /** The encoding to use for reading: null or empty string means system default encoding */ private String encoding; /** Calculated value ... */ private String newline; /** Flag : append workbook? */ private boolean append; /** Flag : Do not open new file when transformation start */ private boolean doNotOpenNewFileInit; /** Flag: create parent folder when necessary */ private boolean createparentfolder; private boolean SpecifyFormat; private String date_time_format; /** Flag : auto size columns? */ private boolean autosizecolums; /** Flag : write null field values as blank Excel cells? */ private boolean nullIsBlank; public ExcelOutputMeta() { super(); // allocate BaseStepMeta } /** * @return Returns the createparentfolder. */ public boolean isCreateParentFolder() { return createparentfolder; } /** * @param createparentfolder * The createparentfolder to set. */ public void setCreateParentFolder(boolean createparentfolder) { this.createparentfolder = createparentfolder; } /** * @return Returns the dateInFilename. */ public boolean isDateInFilename() { return dateInFilename; } /** * @param dateInFilename * The dateInFilename to set. */ public void setDateInFilename(boolean dateInFilename) { this.dateInFilename = dateInFilename; } /** * @return Returns the extension. */ public String getExtension() { return extension; } /** * @param extension * The extension to set. */ public void setExtension(String extension) { this.extension = extension; } /** * @return Returns the fileName. */ public String getFileName() { return fileName; } /** * @return Returns the password. */ public String getPassword() { return password; } /** * @return Returns the sheet name. */ public String getSheetname() { return sheetname; } /** * @param sheetname * The sheet name. */ public void setSheetname(String sheetname) { this.sheetname = sheetname; } /** * @param fileName * The fileName to set. */ public void setFileName(String fileName) { this.fileName = fileName; } /** * @param password * teh passwoed to set. */ public void setPassword(String password) { this.password = password; } /** * @return Returns the footer. */ public boolean isFooterEnabled() { return footerEnabled; } /** * @param footer * The footer to set. */ public void setFooterEnabled(boolean footer) { this.footerEnabled = footer; } /** * @return Returns the autosizecolums. */ public boolean isAutoSizeColums() { return autosizecolums; } /** * @param autosizecolums * The autosizecolums to set. */ public void setAutoSizeColums(boolean autosizecolums) { this.autosizecolums = autosizecolums; } public void setTempDirectory(String directory) { this.tempdirectory = directory; } public String getTempDirectory() { return tempdirectory; } /** * @return Returns whether or not null values are written as blank cells. */ public boolean isNullBlank() { return nullIsBlank; } /** * @param setNullIsBlank * The boolean indicating whether or not to write null values as blank cells */ public void setNullIsBlank(boolean nullIsBlank) { this.nullIsBlank = nullIsBlank; } /** * @return Returns the header. */ public boolean isHeaderEnabled() { return headerEnabled; } /** * @param header * The header to set. */ public void setHeaderEnabled(boolean header) { this.headerEnabled = header; } public boolean isSpecifyFormat() { return SpecifyFormat; } public void setSpecifyFormat(boolean SpecifyFormat) { this.SpecifyFormat = SpecifyFormat; } public String getDateTimeFormat() { return date_time_format; } public void setDateTimeFormat(String date_time_format) { this.date_time_format = date_time_format; } /** * @return Returns the newline. */ public String getNewline() { return newline; } /** * @param newline * The newline to set. */ public void setNewline(String newline) { this.newline = newline; } /** * @return Returns the splitEvery. */ public int getSplitEvery() { return splitEvery; } /** * @return Returns the add to result filesname. */ public boolean isAddToResultFiles() { return addToResultFilenames; } /** * @param addtoresultfilenamesin * The addtoresultfilenames to set. */ public void setAddToResultFiles(boolean addtoresultfilenamesin) { this.addToResultFilenames = addtoresultfilenamesin; } /** * @param splitEvery * The splitEvery to set. */ public void setSplitEvery(int splitEvery) { this.splitEvery = splitEvery; } /** * @return Returns the stepNrInFilename. */ public boolean isStepNrInFilename() { return stepNrInFilename; } /** * @param stepNrInFilename * The stepNrInFilename to set. */ public void setStepNrInFilename(boolean stepNrInFilename) { this.stepNrInFilename = stepNrInFilename; } /** * @return Returns the timeInFilename. */ public boolean isTimeInFilename() { return timeInFilename; } /** * @return Returns the protectsheet. */ public boolean isSheetProtected() { return protectsheet; } /** * @param timeInFilename * The timeInFilename to set. */ public void setTimeInFilename(boolean timeInFilename) { this.timeInFilename = timeInFilename; } /** * @param protectsheet * the value to set. */ public void setProtectSheet(boolean protectsheet) { this.protectsheet = protectsheet; } /** * @return Returns the usetempfile. */ public boolean isUseTempFiles() { return usetempfiles; } /** * @param usetempfiles * The usetempfiles to set. */ public void setUseTempFiles(boolean usetempfiles) { this.usetempfiles = usetempfiles; } /** * @return Returns the outputFields. */ public ExcelField[] getOutputFields() { return outputFields; } /** * @param outputFields * The outputFields to set. */ public void setOutputFields(ExcelField[] outputFields) { this.outputFields = outputFields; } /** * @return The desired encoding of output file, null or empty if the default system encoding needs to be used. */ public String getEncoding() { return encoding; } /** * @param encoding * The desired encoding of output file, null or empty if the default system encoding needs to be used. */ public void setEncoding(String encoding) { this.encoding = encoding; } /** * @return Returns the template. */ public boolean isTemplateEnabled() { return templateEnabled; } /** * @param template * The template to set. */ public void setTemplateEnabled(boolean template) { this.templateEnabled = template; } /** * @return Returns the templateAppend. */ public boolean isTemplateAppend() { return templateAppend; } /** * @param templateAppend * The templateAppend to set. */ public void setTemplateAppend(boolean templateAppend) { this.templateAppend = templateAppend; } /** * @return Returns the templateFileName. */ public String getTemplateFileName() { return templateFileName; } /** * @param templateFileName * The templateFileName to set. */ public void setTemplateFileName(String templateFileName) { this.templateFileName = templateFileName; } /** * @return Returns the "do not open new file at init" flag. */ public boolean isDoNotOpenNewFileInit() { return doNotOpenNewFileInit; } /** * @param doNotOpenNewFileInit * The "do not open new file at init" flag to set. */ public void setDoNotOpenNewFileInit(boolean doNotOpenNewFileInit) { this.doNotOpenNewFileInit = doNotOpenNewFileInit; } /** * @return Returns the append. */ public boolean isAppend() { return append; } /** * @param append * The append to set. */ public void setAppend(boolean append) { this.append = append; } public void loadXML(Node stepnode, List<DatabaseMeta> databases, IMetaStore metaStore) throws KettleXMLException { readData(stepnode); } public void allocate(int nrfields) { outputFields = new ExcelField[nrfields]; } public Object clone() { ExcelOutputMeta retval = (ExcelOutputMeta) super.clone(); int nrfields = outputFields.length; retval.allocate(nrfields); for (int i = 0; i < nrfields; i++) { retval.outputFields[i] = (ExcelField) outputFields[i].clone(); } return retval; } private void readData(Node stepnode) throws KettleXMLException { try { headerEnabled = "Y".equalsIgnoreCase(XMLHandler.getTagValue(stepnode, "header")); footerEnabled = "Y".equalsIgnoreCase(XMLHandler.getTagValue(stepnode, "footer")); encoding = XMLHandler.getTagValue(stepnode, "encoding"); append = "Y".equalsIgnoreCase(XMLHandler.getTagValue(stepnode, "append")); String addToResult = XMLHandler.getTagValue(stepnode, "add_to_result_filenames"); if (Const.isEmpty(addToResult)) { addToResultFilenames = true; } else { addToResultFilenames = "Y".equalsIgnoreCase(addToResult); } fileName = XMLHandler.getTagValue(stepnode, "file", "name"); extension = XMLHandler.getTagValue(stepnode, "file", "extention"); doNotOpenNewFileInit = "Y" .equalsIgnoreCase(XMLHandler.getTagValue(stepnode, "file", "do_not_open_newfile_init")); createparentfolder = "Y" .equalsIgnoreCase(XMLHandler.getTagValue(stepnode, "file", "create_parent_folder")); stepNrInFilename = "Y".equalsIgnoreCase(XMLHandler.getTagValue(stepnode, "file", "split")); dateInFilename = "Y".equalsIgnoreCase(XMLHandler.getTagValue(stepnode, "file", "add_date")); timeInFilename = "Y".equalsIgnoreCase(XMLHandler.getTagValue(stepnode, "file", "add_time")); SpecifyFormat = "Y".equalsIgnoreCase(XMLHandler.getTagValue(stepnode, "file", "SpecifyFormat")); date_time_format = XMLHandler.getTagValue(stepnode, "file", "date_time_format"); usetempfiles = "Y".equalsIgnoreCase(XMLHandler.getTagValue(stepnode, "file", "usetempfiles")); tempdirectory = XMLHandler.getTagValue(stepnode, "file", "tempdirectory"); autosizecolums = "Y".equalsIgnoreCase(XMLHandler.getTagValue(stepnode, "file", "autosizecolums")); nullIsBlank = "Y".equalsIgnoreCase(XMLHandler.getTagValue(stepnode, "file", "nullisblank")); protectsheet = "Y".equalsIgnoreCase(XMLHandler.getTagValue(stepnode, "file", "protect_sheet")); password = Encr .decryptPasswordOptionallyEncrypted(XMLHandler.getTagValue(stepnode, "file", "password")); splitEvery = Const.toInt(XMLHandler.getTagValue(stepnode, "file", "splitevery"), 0); templateEnabled = "Y".equalsIgnoreCase(XMLHandler.getTagValue(stepnode, "template", "enabled")); templateAppend = "Y".equalsIgnoreCase(XMLHandler.getTagValue(stepnode, "template", "append")); templateFileName = XMLHandler.getTagValue(stepnode, "template", "filename"); sheetname = XMLHandler.getTagValue(stepnode, "file", "sheetname"); Node fields = XMLHandler.getSubNode(stepnode, "fields"); int nrfields = XMLHandler.countNodes(fields, "field"); allocate(nrfields); for (int i = 0; i < nrfields; i++) { Node fnode = XMLHandler.getSubNodeByNr(fields, "field", i); outputFields[i] = new ExcelField(); outputFields[i].setName(XMLHandler.getTagValue(fnode, "name")); outputFields[i].setType(XMLHandler.getTagValue(fnode, "type")); outputFields[i].setFormat(XMLHandler.getTagValue(fnode, "format")); } Node customnode = XMLHandler.getSubNode(stepnode, "custom"); header_font_name = getFontNameByCode( Const.NVL(XMLHandler.getTagValue(customnode, "header_font_name"), "")); header_font_size = Const.NVL(XMLHandler.getTagValue(customnode, "header_font_size"), "" + DEFAULT_FONT_SIZE); header_font_bold = "Y".equalsIgnoreCase(XMLHandler.getTagValue(customnode, "header_font_bold")); header_font_italic = "Y".equalsIgnoreCase(XMLHandler.getTagValue(customnode, "header_font_italic")); header_font_underline = getFontUnderlineByCode( Const.NVL(XMLHandler.getTagValue(customnode, "header_font_underline"), "")); header_font_orientation = getFontOrientationByCode( Const.NVL(XMLHandler.getTagValue(customnode, "header_font_orientation"), "")); header_font_color = getFontColorByCode( Const.NVL(XMLHandler.getTagValue(customnode, "header_font_color"), "" + FONT_COLOR_BLACK)); header_background_color = getFontColorByCode( Const.NVL(XMLHandler.getTagValue(customnode, "header_background_color"), "" + FONT_COLOR_NONE)); header_row_height = XMLHandler.getTagValue(customnode, "header_row_height"); header_alignment = getFontAlignmentByCode( Const.NVL(XMLHandler.getTagValue(customnode, "header_alignment"), "")); header_image = XMLHandler.getTagValue(customnode, "header_image"); // Row font row_font_name = getFontNameByCode(Const.NVL(XMLHandler.getTagValue(customnode, "row_font_name"), "")); row_font_size = Const.NVL(XMLHandler.getTagValue(customnode, "row_font_size"), "" + DEFAULT_FONT_SIZE); row_font_color = getFontColorByCode( Const.NVL(XMLHandler.getTagValue(customnode, "row_font_color"), "" + FONT_COLOR_BLACK)); row_background_color = getFontColorByCode( Const.NVL(XMLHandler.getTagValue(customnode, "row_background_color"), "" + FONT_COLOR_NONE)); } catch (Exception e) { throw new KettleXMLException("Unable to load step info from XML", e); } } public String getNewLine(String fformat) { String nl = System.getProperty("line.separator"); if (fformat != null) { if (fformat.equalsIgnoreCase("DOS")) { nl = "\r\n"; } else if (fformat.equalsIgnoreCase("UNIX")) { nl = "\n"; } } return nl; } public void setDefault() { usetempfiles = false; tempdirectory = null; header_font_name = FONT_NAME_ARIAL; header_font_size = "" + DEFAULT_FONT_SIZE; header_font_bold = false; header_font_italic = false; header_font_underline = FONT_UNDERLINE_NO; header_font_orientation = FONT_ORIENTATION_HORIZONTAL; header_font_color = FONT_COLOR_BLACK; header_background_color = FONT_COLOR_NONE; header_row_height = "" + DEFAULT_ROW_HEIGHT; header_alignment = FONT_ALIGNMENT_LEFT; header_image = null; row_font_name = FONT_NAME_ARIAL; row_font_size = "" + DEFAULT_FONT_SIZE; row_font_color = FONT_COLOR_BLACK; row_background_color = FONT_COLOR_NONE; autosizecolums = false; headerEnabled = true; footerEnabled = false; fileName = "file"; extension = "xls"; doNotOpenNewFileInit = false; createparentfolder = false; stepNrInFilename = false; dateInFilename = false; timeInFilename = false; date_time_format = null; SpecifyFormat = false; addToResultFilenames = true; protectsheet = false; splitEvery = 0; templateEnabled = false; templateAppend = false; templateFileName = "template.xls"; sheetname = "Sheet1"; append = false; nullIsBlank = false; int i, nrfields = 0; allocate(nrfields); for (i = 0; i < nrfields; i++) { outputFields[i] = new ExcelField(); outputFields[i].setName("field" + i); outputFields[i].setType("Number"); outputFields[i].setFormat(" 0,000,000.00;-0,000,000.00"); } } public String[] getFiles(VariableSpace space) { int copies = 1; int splits = 1; if (stepNrInFilename) { copies = 3; } if (splitEvery != 0) { splits = 3; } int nr = copies * splits; if (nr > 1) { nr++; } String[] retval = new String[nr]; int i = 0; for (int copy = 0; copy < copies; copy++) { for (int split = 0; split < splits; split++) { retval[i] = buildFilename(space, copy, split); i++; } } if (i < nr) { retval[i] = "..."; } return retval; } public String buildFilename(VariableSpace space, int stepnr, int splitnr) { SimpleDateFormat daf = new SimpleDateFormat(); // Replace possible environment variables... String retval = space.environmentSubstitute(fileName); String realextension = space.environmentSubstitute(extension); Date now = new Date(); if (SpecifyFormat && !Const.isEmpty(date_time_format)) { daf.applyPattern(date_time_format); String dt = daf.format(now); retval += dt; } else { if (dateInFilename) { daf.applyPattern("yyyMMdd"); String d = daf.format(now); retval += "_" + d; } if (timeInFilename) { daf.applyPattern("HHmmss"); String t = daf.format(now); retval += "_" + t; } } if (stepNrInFilename) { retval += "_" + stepnr; } if (splitEvery > 0) { retval += "_" + splitnr; } if (realextension != null && realextension.length() != 0) { retval += "." + realextension; } return retval; } public void getFields(RowMetaInterface r, String name, RowMetaInterface[] info, StepMeta nextStep, VariableSpace space, Repository repository, IMetaStore metaStore) { if (r == null) { r = new RowMeta(); // give back values } // No values are added to the row in this type of step } public String getXML() { StringBuffer retval = new StringBuffer(800); retval.append(" ").append(XMLHandler.addTagValue("header", headerEnabled)); retval.append(" ").append(XMLHandler.addTagValue("footer", footerEnabled)); retval.append(" ").append(XMLHandler.addTagValue("encoding", encoding)); retval.append(" " + XMLHandler.addTagValue("append", append)); retval.append(" " + XMLHandler.addTagValue("add_to_result_filenames", addToResultFilenames)); retval.append(" <file>").append(Const.CR); retval.append(" ").append(XMLHandler.addTagValue("name", fileName)); retval.append(" ").append(XMLHandler.addTagValue("extention", extension)); retval.append(" ").append(XMLHandler.addTagValue("do_not_open_newfile_init", doNotOpenNewFileInit)); retval.append(" ").append(XMLHandler.addTagValue("create_parent_folder", createparentfolder)); retval.append(" ").append(XMLHandler.addTagValue("split", stepNrInFilename)); retval.append(" ").append(XMLHandler.addTagValue("add_date", dateInFilename)); retval.append(" ").append(XMLHandler.addTagValue("add_time", timeInFilename)); retval.append(" ").append(XMLHandler.addTagValue("SpecifyFormat", SpecifyFormat)); retval.append(" ").append(XMLHandler.addTagValue("date_time_format", date_time_format)); retval.append(" ").append(XMLHandler.addTagValue("sheetname", sheetname)); retval.append(" ").append(XMLHandler.addTagValue("autosizecolums", autosizecolums)); retval.append(" ").append(XMLHandler.addTagValue("nullisblank", nullIsBlank)); retval.append(" ").append(XMLHandler.addTagValue("protect_sheet", protectsheet)); retval.append(" ") .append(XMLHandler.addTagValue("password", Encr.encryptPasswordIfNotUsingVariables(password))); retval.append(" ").append(XMLHandler.addTagValue("splitevery", splitEvery)); retval.append(" ").append(XMLHandler.addTagValue("usetempfiles", usetempfiles)); retval.append(" ").append(XMLHandler.addTagValue("tempdirectory", tempdirectory)); retval.append(" </file>").append(Const.CR); retval.append(" <template>").append(Const.CR); retval.append(" ").append(XMLHandler.addTagValue("enabled", templateEnabled)); retval.append(" ").append(XMLHandler.addTagValue("append", templateAppend)); retval.append(" ").append(XMLHandler.addTagValue("filename", templateFileName)); retval.append(" </template>").append(Const.CR); retval.append(" <fields>").append(Const.CR); for (int i = 0; i < outputFields.length; i++) { ExcelField field = outputFields[i]; if (field.getName() != null && field.getName().length() != 0) { retval.append(" <field>").append(Const.CR); retval.append(" ").append(XMLHandler.addTagValue("name", field.getName())); retval.append(" ").append(XMLHandler.addTagValue("type", field.getTypeDesc())); retval.append(" ").append(XMLHandler.addTagValue("format", field.getFormat())); retval.append(" </field>").append(Const.CR); } } retval.append(" </fields>").append(Const.CR); retval.append(" <custom>" + Const.CR); retval.append(" " + XMLHandler.addTagValue("header_font_name", getFontNameCode(header_font_name))); retval.append(" " + XMLHandler.addTagValue("header_font_size", header_font_size)); retval.append(" " + XMLHandler.addTagValue("header_font_bold", header_font_bold)); retval.append(" " + XMLHandler.addTagValue("header_font_italic", header_font_italic)); retval.append(" " + XMLHandler.addTagValue("header_font_underline", getFontUnderlineCode(header_font_underline))); retval.append(" " + XMLHandler.addTagValue("header_font_orientation", getFontOrientationCode(header_font_orientation))); retval.append(" " + XMLHandler.addTagValue("header_font_color", getFontColorCode(header_font_color))); retval.append(" " + XMLHandler.addTagValue("header_background_color", getFontColorCode(header_background_color))); retval.append(" " + XMLHandler.addTagValue("header_row_height", header_row_height)); retval.append(" " + XMLHandler.addTagValue("header_alignment", getFontAlignmentCode(header_alignment))); retval.append(" " + XMLHandler.addTagValue("header_image", header_image)); // row font retval.append(" " + XMLHandler.addTagValue("row_font_name", getFontNameCode(row_font_name))); retval.append(" " + XMLHandler.addTagValue("row_font_size", row_font_size)); retval.append(" " + XMLHandler.addTagValue("row_font_color", getFontColorCode(row_font_color))); retval.append( " " + XMLHandler.addTagValue("row_background_color", getFontColorCode(row_background_color))); retval.append(" </custom>" + Const.CR); return retval.toString(); } public void readRep(Repository rep, IMetaStore metaStore, ObjectId id_step, List<DatabaseMeta> databases) throws KettleException { try { headerEnabled = rep.getStepAttributeBoolean(id_step, "header"); footerEnabled = rep.getStepAttributeBoolean(id_step, "footer"); encoding = rep.getStepAttributeString(id_step, "encoding"); append = rep.getStepAttributeBoolean(id_step, "append"); String addToResult = rep.getStepAttributeString(id_step, "add_to_result_filenames"); if (Const.isEmpty(addToResult)) { addToResultFilenames = true; } else { addToResultFilenames = rep.getStepAttributeBoolean(id_step, "add_to_result_filenames"); } fileName = rep.getStepAttributeString(id_step, "file_name"); extension = rep.getStepAttributeString(id_step, "file_extention"); usetempfiles = rep.getStepAttributeBoolean(id_step, "usetempfiles"); tempdirectory = rep.getStepAttributeString(id_step, "tempdirectory"); doNotOpenNewFileInit = rep.getStepAttributeBoolean(id_step, "do_not_open_newfile_init"); createparentfolder = rep.getStepAttributeBoolean(id_step, "create_parent_folder"); splitEvery = (int) rep.getStepAttributeInteger(id_step, "file_split"); stepNrInFilename = rep.getStepAttributeBoolean(id_step, "file_add_stepnr"); dateInFilename = rep.getStepAttributeBoolean(id_step, "file_add_date"); timeInFilename = rep.getStepAttributeBoolean(id_step, "file_add_time"); SpecifyFormat = rep.getStepAttributeBoolean(id_step, "SpecifyFormat"); date_time_format = rep.getStepAttributeString(id_step, "date_time_format"); autosizecolums = rep.getStepAttributeBoolean(id_step, "autosizecolums"); nullIsBlank = rep.getStepAttributeBoolean(id_step, "nullisblank"); protectsheet = rep.getStepAttributeBoolean(id_step, "protect_sheet"); password = Encr.decryptPasswordOptionallyEncrypted(rep.getStepAttributeString(id_step, "password")); templateEnabled = rep.getStepAttributeBoolean(id_step, "template_enabled"); templateAppend = rep.getStepAttributeBoolean(id_step, "template_append"); templateFileName = rep.getStepAttributeString(id_step, "template_filename"); sheetname = rep.getStepAttributeString(id_step, "sheetname"); int nrfields = rep.countNrStepAttributes(id_step, "field_name"); allocate(nrfields); for (int i = 0; i < nrfields; i++) { outputFields[i] = new ExcelField(); outputFields[i].setName(rep.getStepAttributeString(id_step, i, "field_name")); outputFields[i].setType(rep.getStepAttributeString(id_step, i, "field_type")); outputFields[i].setFormat(rep.getStepAttributeString(id_step, i, "field_format")); } // Header font header_font_name = getFontNameByCode( Const.NVL(rep.getStepAttributeString(id_step, "header_font_name"), "")); header_font_size = Const.NVL(rep.getStepAttributeString(id_step, "header_font_size"), "" + DEFAULT_FONT_SIZE); header_font_bold = rep.getStepAttributeBoolean(id_step, "header_font_bold"); header_font_italic = rep.getStepAttributeBoolean(id_step, "header_font_italic"); header_font_underline = getFontUnderlineByCode( Const.NVL(rep.getStepAttributeString(id_step, "header_font_underline"), "")); header_font_orientation = getFontOrientationByCode( Const.NVL(rep.getStepAttributeString(id_step, "header_font_orientation"), "")); header_font_color = getFontColorByCode( Const.NVL(rep.getStepAttributeString(id_step, "header_font_color"), "" + FONT_COLOR_BLACK)); header_background_color = getFontColorByCode(Const .NVL(rep.getStepAttributeString(id_step, "header_background_color"), "" + FONT_COLOR_NONE)); header_row_height = rep.getStepAttributeString(id_step, "header_row_height"); header_alignment = getFontAlignmentByCode( Const.NVL(rep.getStepAttributeString(id_step, "header_alignment"), "")); header_image = rep.getStepAttributeString(id_step, "header_image"); // row font row_font_name = getFontNameByCode(Const.NVL(rep.getStepAttributeString(id_step, "row_font_name"), "")); row_font_size = Const.NVL(rep.getStepAttributeString(id_step, "row_font_size"), "" + DEFAULT_FONT_SIZE); row_font_color = getFontColorByCode( Const.NVL(rep.getStepAttributeString(id_step, "row_font_color"), "" + FONT_COLOR_BLACK)); row_background_color = getFontColorByCode( Const.NVL(rep.getStepAttributeString(id_step, "row_background_color"), "" + FONT_COLOR_NONE)); } catch (Exception e) { throw new KettleException("Unexpected error reading step information from the repository", e); } } private static String getFontNameCode(int i) { if (i < 0 || i >= font_name_code.length) { return font_name_code[0]; } return font_name_code[i]; } private static String getFontUnderlineCode(int i) { if (i < 0 || i >= font_underline_code.length) { return font_underline_code[0]; } return font_underline_code[i]; } private static String getFontAlignmentCode(int i) { if (i < 0 || i >= font_alignment_code.length) { return font_alignment_code[0]; } return font_alignment_code[i]; } private static String getFontOrientationCode(int i) { if (i < 0 || i >= font_orientation_code.length) { return font_orientation_code[0]; } return font_orientation_code[i]; } private static String getFontColorCode(int i) { if (i < 0 || i >= font_color_code.length) { return font_color_code[0]; } return font_color_code[i]; } public void saveRep(Repository rep, IMetaStore metaStore, ObjectId id_transformation, ObjectId id_step) throws KettleException { try { rep.saveStepAttribute(id_transformation, id_step, "header", headerEnabled); rep.saveStepAttribute(id_transformation, id_step, "footer", footerEnabled); rep.saveStepAttribute(id_transformation, id_step, "encoding", encoding); rep.saveStepAttribute(id_transformation, id_step, "append", append); rep.saveStepAttribute(id_transformation, id_step, "add_to_result_filenames", addToResultFilenames); rep.saveStepAttribute(id_transformation, id_step, "file_name", fileName); rep.saveStepAttribute(id_transformation, id_step, "do_not_open_newfile_init", doNotOpenNewFileInit); rep.saveStepAttribute(id_transformation, id_step, "create_parent_folder", createparentfolder); rep.saveStepAttribute(id_transformation, id_step, "file_extention", extension); rep.saveStepAttribute(id_transformation, id_step, "file_split", splitEvery); rep.saveStepAttribute(id_transformation, id_step, "file_add_stepnr", stepNrInFilename); rep.saveStepAttribute(id_transformation, id_step, "file_add_date", dateInFilename); rep.saveStepAttribute(id_transformation, id_step, "file_add_time", timeInFilename); rep.saveStepAttribute(id_transformation, id_step, "SpecifyFormat", SpecifyFormat); rep.saveStepAttribute(id_transformation, id_step, "date_time_format", date_time_format); rep.saveStepAttribute(id_transformation, id_step, "tempdirectory", tempdirectory); rep.saveStepAttribute(id_transformation, id_step, "usetempfiles", usetempfiles); rep.saveStepAttribute(id_transformation, id_step, "autosizecolums", autosizecolums); rep.saveStepAttribute(id_transformation, id_step, "nullisblank", nullIsBlank); rep.saveStepAttribute(id_transformation, id_step, "protect_sheet", protectsheet); rep.saveStepAttribute(id_transformation, id_step, "password", Encr.encryptPasswordIfNotUsingVariables(password)); rep.saveStepAttribute(id_transformation, id_step, "template_enabled", templateEnabled); rep.saveStepAttribute(id_transformation, id_step, "template_append", templateAppend); rep.saveStepAttribute(id_transformation, id_step, "template_filename", templateFileName); rep.saveStepAttribute(id_transformation, id_step, "sheetname", sheetname); for (int i = 0; i < outputFields.length; i++) { ExcelField field = outputFields[i]; rep.saveStepAttribute(id_transformation, id_step, i, "field_name", field.getName()); rep.saveStepAttribute(id_transformation, id_step, i, "field_type", field.getTypeDesc()); rep.saveStepAttribute(id_transformation, id_step, i, "field_format", field.getFormat()); } rep.saveStepAttribute(id_transformation, id_step, "header_font_name", getFontNameCode(header_font_name)); rep.saveStepAttribute(id_transformation, id_step, "header_font_size", header_font_size); rep.saveStepAttribute(id_transformation, id_step, "header_font_bold", header_font_bold); rep.saveStepAttribute(id_transformation, id_step, "header_font_italic", header_font_italic); rep.saveStepAttribute(id_transformation, id_step, "header_font_underline", getFontUnderlineCode(header_font_underline)); rep.saveStepAttribute(id_transformation, id_step, "header_font_orientation", getFontOrientationCode(header_font_orientation)); rep.saveStepAttribute(id_transformation, id_step, "header_font_color", getFontColorCode(header_font_color)); rep.saveStepAttribute(id_transformation, id_step, "header_background_color", getFontColorCode(header_background_color)); rep.saveStepAttribute(id_transformation, id_step, "header_row_height", header_row_height); rep.saveStepAttribute(id_transformation, id_step, "header_alignment", getFontAlignmentCode(header_alignment)); rep.saveStepAttribute(id_transformation, id_step, "header_image", header_image); // row font rep.saveStepAttribute(id_transformation, id_step, "row_font_name", getFontNameCode(row_font_name)); rep.saveStepAttribute(id_transformation, id_step, "row_font_size", row_font_size); rep.saveStepAttribute(id_transformation, id_step, "row_font_color", getFontColorCode(row_font_color)); rep.saveStepAttribute(id_transformation, id_step, "row_background_color", getFontColorCode(row_background_color)); } catch (Exception e) { throw new KettleException("Unable to save step information to the repository for id_step=" + id_step, e); } } public void check(List<CheckResultInterface> remarks, TransMeta transMeta, StepMeta stepMeta, RowMetaInterface prev, String[] input, String[] output, RowMetaInterface info, VariableSpace space, Repository repository, IMetaStore metaStore) { CheckResult cr; // Check output fields if (prev != null && prev.size() > 0) { cr = new CheckResult(CheckResultInterface.TYPE_RESULT_OK, BaseMessages.getString(PKG, "ExcelOutputMeta.CheckResult.FieldsReceived", "" + prev.size()), stepMeta); remarks.add(cr); String error_message = ""; boolean error_found = false; // Starting from selected fields in ... for (int i = 0; i < outputFields.length; i++) { int idx = prev.indexOfValue(outputFields[i].getName()); if (idx < 0) { error_message += "\t\t" + outputFields[i].getName() + Const.CR; error_found = true; } } if (error_found) { error_message = BaseMessages.getString(PKG, "ExcelOutputMeta.CheckResult.FieldsNotFound", error_message); cr = new CheckResult(CheckResultInterface.TYPE_RESULT_ERROR, error_message, stepMeta); remarks.add(cr); } else { cr = new CheckResult(CheckResultInterface.TYPE_RESULT_OK, BaseMessages.getString(PKG, "ExcelOutputMeta.CheckResult.AllFieldsFound"), stepMeta); remarks.add(cr); } } // See if we have input streams leading to this step! if (input.length > 0) { cr = new CheckResult(CheckResultInterface.TYPE_RESULT_OK, BaseMessages.getString(PKG, "ExcelOutputMeta.CheckResult.ExpectedInputOk"), stepMeta); remarks.add(cr); } else { cr = new CheckResult(CheckResultInterface.TYPE_RESULT_ERROR, BaseMessages.getString(PKG, "ExcelOutputMeta.CheckResult.ExpectedInputError"), stepMeta); remarks.add(cr); } cr = new CheckResult(CheckResultInterface.TYPE_RESULT_COMMENT, BaseMessages.getString(PKG, "ExcelOutputMeta.CheckResult.FilesNotChecked"), stepMeta); remarks.add(cr); } /** * @param space * the variable space to use * @param definitions * @param resourceNamingInterface * @param repository * The repository to optionally load other resources from (to be converted to XML) * @param metaStore * the metaStore in which non-kettle metadata could reside. * * @return the filename of the exported resource */ public String exportResources(VariableSpace space, Map<String, ResourceDefinition> definitions, ResourceNamingInterface resourceNamingInterface, Repository repository, IMetaStore metaStore) throws KettleException { try { // The object that we're modifying here is a copy of the original! // So let's change the filename from relative to absolute by grabbing the file object... // if (!Const.isEmpty(fileName)) { FileObject fileObject = KettleVFS.getFileObject(space.environmentSubstitute(fileName), space); fileName = resourceNamingInterface.nameResource(fileObject, space, true); } return null; } catch (Exception e) { throw new KettleException(e); } } public StepInterface getStep(StepMeta stepMeta, StepDataInterface stepDataInterface, int cnr, TransMeta transMeta, Trans trans) { return new ExcelOutput(stepMeta, stepDataInterface, cnr, transMeta, trans); } public StepDataInterface getStepData() { return new ExcelOutputData(); } @Override public StepMetaInjectionInterface getStepMetaInjectionInterface() { return new ExcelOutputMetaInjection(this); } public String[] getUsedLibraries() { return new String[] { "jxl.jar", }; } public static String getFontNameDesc(int i) { if (i < 0 || i >= font_name_desc.length) { return font_name_desc[0]; } return font_name_desc[i]; } public static String getFontUnderlineDesc(int i) { if (i < 0 || i >= font_underline_desc.length) { return font_underline_desc[0]; } return font_underline_desc[i]; } public static String getFontOrientationDesc(int i) { if (i < 0 || i >= font_orientation_desc.length) { return font_orientation_desc[0]; } return font_orientation_desc[i]; } public static String getFontColorDesc(int i) { if (i < 0 || i >= font_color_desc.length) { return font_color_desc[0]; } return font_color_desc[i]; } public static String getFontAlignmentDesc(int i) { if (i < 0 || i >= font_alignment_desc.length) { return font_alignment_desc[0]; } return font_alignment_desc[i]; } public int getHeaderFontName() { return header_font_name; } public int getRowFontName() { return row_font_name; } public int getHeaderFontUnderline() { return header_font_underline; } public int getHeaderFontOrientation() { return header_font_orientation; } public int getHeaderAlignment() { return header_alignment; } public int getHeaderFontColor() { return header_font_color; } public int getRowFontColor() { return row_font_color; } public int getHeaderBackGroundColor() { return header_background_color; } public int getRowBackGroundColor() { return row_background_color; } public static int getFontNameByDesc(String tt) { if (tt == null) { return 0; } for (int i = 0; i < font_name_desc.length; i++) { if (font_name_desc[i].equalsIgnoreCase(tt)) { return i; } } // If this fails, try to match using the code. return getFontNameByCode(tt); } private static int getFontNameByCode(String tt) { if (tt == null) { return 0; } for (int i = 0; i < font_name_code.length; i++) { if (font_name_code[i].equalsIgnoreCase(tt)) { return i; } } return 0; } public static int getFontUnderlineByDesc(String tt) { if (tt == null) { return 0; } for (int i = 0; i < font_underline_desc.length; i++) { if (font_underline_desc[i].equalsIgnoreCase(tt)) { return i; } } // If this fails, try to match using the code. return getFontUnderlineByCode(tt); } public static int getFontOrientationByDesc(String tt) { if (tt == null) { return 0; } for (int i = 0; i < font_orientation_desc.length; i++) { if (font_orientation_desc[i].equalsIgnoreCase(tt)) { return i; } } // If this fails, try to match using the code. return getFontOrientationByCode(tt); } private static int getFontUnderlineByCode(String tt) { if (tt == null) { return 0; } for (int i = 0; i < font_underline_code.length; i++) { if (font_underline_code[i].equalsIgnoreCase(tt)) { return i; } } return 0; } private static int getFontOrientationByCode(String tt) { if (tt == null) { return 0; } for (int i = 0; i < font_orientation_code.length; i++) { if (font_orientation_code[i].equalsIgnoreCase(tt)) { return i; } } return 0; } public static int getFontColorByDesc(String tt) { if (tt == null) { return 0; } for (int i = 0; i < font_color_desc.length; i++) { if (font_color_desc[i].equalsIgnoreCase(tt)) { return i; } } // If this fails, try to match using the code. return getFontColorByCode(tt); } public static int getFontAlignmentByDesc(String tt) { if (tt == null) { return 0; } for (int i = 0; i < font_alignment_desc.length; i++) { if (font_alignment_desc[i].equalsIgnoreCase(tt)) { return i; } } // If this fails, try to match using the code. return getFontAlignmentByCode(tt); } private static int getFontAlignmentByCode(String tt) { if (tt == null) { return 0; } for (int i = 0; i < font_alignment_code.length; i++) { if (font_alignment_code[i].equalsIgnoreCase(tt)) { return i; } } return 0; } private static int getFontColorByCode(String tt) { if (tt == null) { return 0; } for (int i = 0; i < font_color_code.length; i++) { if (font_color_code[i].equalsIgnoreCase(tt)) { return i; } } return 0; } public void setHeaderFontName(int fontname) { this.header_font_name = fontname; } public void setRowFontName(int fontname) { this.row_font_name = fontname; } public void setHeaderFontUnderline(int fontunderline) { this.header_font_underline = fontunderline; } public void setHeaderFontOrientation(int fontorientation) { this.header_font_orientation = fontorientation; } public void setHeaderFontColor(int fontcolor) { this.header_font_color = fontcolor; } public void setRowFontColor(int fontcolor) { this.row_font_color = fontcolor; } public void setHeaderBackGroundColor(int fontcolor) { this.header_background_color = fontcolor; } public void setRowBackGroundColor(int fontcolor) { this.row_background_color = fontcolor; } public void setHeaderAlignment(int alignment) { this.header_alignment = alignment; } public void setHeaderFontSize(String fontsize) { this.header_font_size = fontsize; } public void setRowFontSize(String fontsize) { this.row_font_size = fontsize; } public String getHeaderFontSize() { return this.header_font_size; } public String getRowFontSize() { return this.row_font_size; } public void setHeaderImage(String image) { this.header_image = image; } public String getHeaderImage() { return this.header_image; } public void setHeaderRowHeight(String height) { this.header_row_height = height; } public String getHeaderRowHeight() { return this.header_row_height; } public boolean isHeaderFontBold() { return this.header_font_bold; } public void setHeaderFontItalic(boolean fontitalic) { this.header_font_italic = fontitalic; } public boolean isHeaderFontItalic() { return this.header_font_italic; } public void setHeaderFontBold(boolean font_bold) { this.header_font_bold = font_bold; } }