| /* ==================================================================== |
| Licensed to the Apache Software Foundation (ASF) under one or more |
| contributor license agreements. See the NOTICE file distributed with |
| this work for additional information regarding copyright ownership. |
| The ASF licenses this file to You 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.apache.poi.ss.excelant; |
| |
| import org.apache.poi.ss.excelant.util.ExcelAntWorkbookUtil; |
| import org.apache.tools.ant.BuildException; |
| import org.apache.tools.ant.Project; |
| import org.apache.tools.ant.Task; |
| |
| /** |
| * This is the class that backs the <handler> tag in the Ant task. |
| * <p> |
| * Its purpose is to provide a way to manipulate a workbook in the course |
| * of an ExcelAnt task. The idea being to model a way for test writers to |
| * simulate the behaviors of the workbook. |
| * <p> |
| * Suppose, for example, you have a workbook that has a worksheet that |
| * reacts to values entered or selected by the user. It's possible in |
| * Excel to change other cells based on this but this isn't easily possible |
| * in POI. In ExcelAnt we handle this using the Handler, which is a Java |
| * class you write to manipulate the workbook. |
| * <p> |
| * In order to use this tag you must write a class that implements the |
| * <code>IExcelAntWorkbookHandler</code> interface. After writing the |
| * class you should package it and it's dependencies into a jar file to |
| * add as library in your Ant build file. |
| * |
| * @author Jon Svede ( jon [at] loquatic [dot] com ) |
| * @author Brian Bush ( brian [dot] bush [at] nrel [dot] gov ) |
| * |
| */ |
| public class ExcelAntHandlerTask extends Task { |
| |
| private String className ; |
| |
| private ExcelAntWorkbookUtil wbUtil ; |
| |
| public void setClassName( String cName ) { |
| className = cName ; |
| } |
| |
| protected void setEAWorkbookUtil( ExcelAntWorkbookUtil wkbkUtil ) { |
| wbUtil = wkbkUtil ; |
| } |
| |
| @Override |
| public void execute() throws BuildException { |
| log( "handling the workbook with class " + className, Project.MSG_INFO ) ; |
| try { |
| Class<?> clazz = Class.forName( className ) ; |
| Object handlerObj = clazz.newInstance() ; |
| if( handlerObj instanceof IExcelAntWorkbookHandler ) { |
| IExcelAntWorkbookHandler iHandler = (IExcelAntWorkbookHandler)handlerObj ; |
| iHandler.setWorkbook( wbUtil.getWorkbook() ) ; |
| iHandler.execute() ; |
| } |
| } catch( Exception e ) { |
| throw new BuildException( e.getMessage(), e ) ; |
| } |
| } |
| } |