/*! ****************************************************************************** * * 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.awt.Dimension; import jxl.format.Colour; import jxl.format.UnderlineStyle; import jxl.write.WritableCellFormat; import jxl.write.WritableFont; import jxl.write.WritableFont.FontName; import jxl.write.WriteException; public class ExcelFontMap { public static Colour getColour( int stepValue, Colour defaultColour ) { Colour retval = null; if ( defaultColour != null ) { retval = defaultColour; } if ( stepValue != ExcelOutputMeta.FONT_COLOR_NONE ) { switch ( stepValue ) { case ExcelOutputMeta.FONT_COLOR_BLACK: retval = Colour.BLACK; break; case ExcelOutputMeta.FONT_COLOR_WHITE: retval = Colour.WHITE; break; case ExcelOutputMeta.FONT_COLOR_RED: retval = Colour.RED; break; case ExcelOutputMeta.FONT_COLOR_BRIGHT_GREEN: retval = Colour.BRIGHT_GREEN; break; case ExcelOutputMeta.FONT_COLOR_BLUE: retval = Colour.BLUE; break; case ExcelOutputMeta.FONT_COLOR_YELLOW: retval = Colour.YELLOW; break; case ExcelOutputMeta.FONT_COLOR_PINK: retval = Colour.PINK; break; case ExcelOutputMeta.FONT_COLOR_TURQUOISE: retval = Colour.TURQUOISE; break; case ExcelOutputMeta.FONT_COLOR_DARK_RED: retval = Colour.DARK_RED; break; case ExcelOutputMeta.FONT_COLOR_GREEN: retval = Colour.GREEN; break; case ExcelOutputMeta.FONT_COLOR_DARK_BLUE: retval = Colour.DARK_BLUE; break; case ExcelOutputMeta.FONT_COLOR_DARK_YELLOW: retval = Colour.DARK_YELLOW; break; case ExcelOutputMeta.FONT_COLOR_VIOLET: retval = Colour.VIOLET; break; case ExcelOutputMeta.FONT_COLOR_TEAL: retval = Colour.TEAL; break; case ExcelOutputMeta.FONT_COLOR_GREY_25pct: retval = Colour.GREY_25_PERCENT; break; case ExcelOutputMeta.FONT_COLOR_GREY_50pct: retval = Colour.GRAY_50; break; case ExcelOutputMeta.FONT_COLOR_GREY_80pct: retval = Colour.GRAY_80; break; case ExcelOutputMeta.FONT_COLOR_PERIWINKLEpct: retval = Colour.PERIWINKLE; break; case ExcelOutputMeta.FONT_COLOR_PLUM: retval = Colour.PLUM; break; case ExcelOutputMeta.FONT_COLOR_IVORY: retval = Colour.IVORY; break; case ExcelOutputMeta.FONT_COLOR_LIGHT_TURQUOISE: retval = Colour.LIGHT_TURQUOISE; break; case ExcelOutputMeta.FONT_COLOR_DARK_PURPLE: retval = Colour.DARK_PURPLE; break; case ExcelOutputMeta.FONT_COLOR_CORAL: retval = Colour.CORAL; break; case ExcelOutputMeta.FONT_COLOR_OCEAN_BLUE: retval = Colour.OCEAN_BLUE; break; case ExcelOutputMeta.FONT_COLOR_ICE_BLUE: retval = Colour.ICE_BLUE; break; case ExcelOutputMeta.FONT_COLOR_TURQOISE: retval = Colour.TURQUOISE; break; case ExcelOutputMeta.FONT_COLOR_SKY_BLUE: retval = Colour.SKY_BLUE; break; case ExcelOutputMeta.FONT_COLOR_LIGHT_GREEN: retval = Colour.LIGHT_GREEN; break; case ExcelOutputMeta.FONT_COLOR_VERY_LIGHT_YELLOW: retval = Colour.VERY_LIGHT_YELLOW; break; case ExcelOutputMeta.FONT_COLOR_PALE_BLUE: retval = Colour.PALE_BLUE; break; case ExcelOutputMeta.FONT_COLOR_ROSE: retval = Colour.ROSE; break; case ExcelOutputMeta.FONT_COLOR_LAVENDER: retval = Colour.LAVENDER; break; case ExcelOutputMeta.FONT_COLOR_TAN: retval = Colour.TAN; break; case ExcelOutputMeta.FONT_COLOR_LIGHT_BLUE: retval = Colour.LIGHT_BLUE; break; case ExcelOutputMeta.FONT_COLOR_AQUA: retval = Colour.AQUA; break; case ExcelOutputMeta.FONT_COLOR_LIME: retval = Colour.LIME; break; case ExcelOutputMeta.FONT_COLOR_GOLD: retval = Colour.GOLD; break; case ExcelOutputMeta.FONT_COLOR_LIGHT_ORANGE: retval = Colour.LIGHT_ORANGE; break; case ExcelOutputMeta.FONT_COLOR_ORANGE: retval = Colour.ORANGE; break; case ExcelOutputMeta.FONT_COLOR_BLUE_GREY: retval = Colour.BLUE_GREY; break; case ExcelOutputMeta.FONT_COLOR_GREY_40pct: retval = Colour.GREY_40_PERCENT; break; case ExcelOutputMeta.FONT_COLOR_DARK_TEAL: retval = Colour.DARK_TEAL; break; case ExcelOutputMeta.FONT_COLOR_SEA_GREEN: retval = Colour.SEA_GREEN; break; case ExcelOutputMeta.FONT_COLOR_DARK_GREEN: retval = Colour.DARK_GREEN; break; case ExcelOutputMeta.FONT_COLOR_OLIVE_GREEN: retval = Colour.OLIVE_GREEN; break; case ExcelOutputMeta.FONT_COLOR_BROWN: retval = Colour.BROWN; break; default: break; } } return retval; } public static WritableCellFormat getOrientation( int stepValue, WritableCellFormat cellFormat ) throws WriteException { if ( stepValue != ExcelOutputMeta.FONT_ORIENTATION_HORIZONTAL ) { switch ( stepValue ) { case ExcelOutputMeta.FONT_ORIENTATION_MINUS_45: cellFormat.setOrientation( jxl.format.Orientation.MINUS_45 ); break; case ExcelOutputMeta.FONT_ORIENTATION_MINUS_90: cellFormat.setOrientation( jxl.format.Orientation.MINUS_90 ); break; case ExcelOutputMeta.FONT_ORIENTATION_PLUS_45: cellFormat.setOrientation( jxl.format.Orientation.PLUS_45 ); break; case ExcelOutputMeta.FONT_ORIENTATION_PLUS_90: cellFormat.setOrientation( jxl.format.Orientation.PLUS_90 ); break; case ExcelOutputMeta.FONT_ORIENTATION_STACKED: cellFormat.setOrientation( jxl.format.Orientation.STACKED ); break; case ExcelOutputMeta.FONT_ORIENTATION_VERTICAL: cellFormat.setOrientation( jxl.format.Orientation.VERTICAL ); break; default: break; } } return cellFormat; } public static FontName getFontName( int stepValue ) { FontName headerFontName = WritableFont.ARIAL; switch ( stepValue ) { case ExcelOutputMeta.FONT_NAME_COURIER: headerFontName = WritableFont.COURIER; break; case ExcelOutputMeta.FONT_NAME_TAHOMA: headerFontName = WritableFont.TAHOMA; break; case ExcelOutputMeta.FONT_NAME_TIMES: headerFontName = WritableFont.TIMES; break; default: break; } return headerFontName; } public static UnderlineStyle getUnderlineStyle( int stepValue ) { UnderlineStyle underline = UnderlineStyle.NO_UNDERLINE; switch ( stepValue ) { case ExcelOutputMeta.FONT_UNDERLINE_SINGLE: underline = UnderlineStyle.SINGLE; break; case ExcelOutputMeta.FONT_UNDERLINE_SINGLE_ACCOUNTING: underline = UnderlineStyle.SINGLE_ACCOUNTING; break; case ExcelOutputMeta.FONT_UNDERLINE_DOUBLE: underline = UnderlineStyle.DOUBLE; break; case ExcelOutputMeta.FONT_UNDERLINE_DOUBLE_ACCOUNTING: underline = UnderlineStyle.DOUBLE_ACCOUNTING; break; default: break; } return underline; } public static WritableCellFormat getAlignment( int stepValue, WritableCellFormat format ) throws WriteException { if ( stepValue != ExcelOutputMeta.FONT_ALIGNMENT_LEFT ) { switch ( stepValue ) { case ExcelOutputMeta.FONT_ALIGNMENT_RIGHT: format.setAlignment( jxl.format.Alignment.RIGHT ); break; case ExcelOutputMeta.FONT_ALIGNMENT_CENTER: format.setAlignment( jxl.format.Alignment.CENTRE ); break; case ExcelOutputMeta.FONT_ALIGNMENT_FILL: format.setAlignment( jxl.format.Alignment.FILL ); break; case ExcelOutputMeta.FONT_ALIGNMENT_GENERAL: format.setAlignment( jxl.format.Alignment.GENERAL ); break; case ExcelOutputMeta.FONT_ALIGNMENT_JUSTIFY: format.setAlignment( jxl.format.Alignment.JUSTIFY ); break; default: break; } } return format; } public static Dimension getImageDimension( String filename ) throws Exception { Dimension m = new Dimension(); // java.awt.Dimension dim= new java.awt.Dimension(); java.awt.Toolkit toolkit = java.awt.Toolkit.getDefaultToolkit(); /** lecture de l'image : */ java.awt.Image image = toolkit.getImage( filename ); int height = image.getHeight( null ); int width = image.getWidth( null ); boolean continueLoop = true; long timeStart = System.currentTimeMillis(); while ( continueLoop ) { height = image.getHeight( null ); width = image.getWidth( null ); // Let's check the limit time if ( height > -1 ) { continueLoop = false; } else { // Update Time value long now = System.currentTimeMillis(); // Let's check the limit time if ( now >= ( timeStart + 10000 ) ) { throw new Exception( "Time out! Can not load image [" + filename + "]!" ); } try { Thread.sleep( 1000 ); } catch ( Exception e ) { // handling this exception would be kind of silly. } } } m.height = height; m.width = width; return m; } }