| /* |
| * 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.cocoon.components.elementprocessor.impl.poi.hssf.elements; |
| |
| import org.apache.cocoon.components.elementprocessor.types.Attribute; |
| import org.apache.cocoon.components.elementprocessor.types.BooleanConverter; |
| import org.apache.cocoon.components.elementprocessor.types.BooleanResult; |
| import org.apache.cocoon.components.elementprocessor.types.NumericConverter; |
| import org.apache.cocoon.components.elementprocessor.types.NumericResult; |
| import org.apache.cocoon.components.elementprocessor.types.Validator; |
| |
| import java.io.IOException; |
| |
| /** |
| * No-op implementation of ElementProcessor to handle the "ColInfo" |
| * tag |
| * |
| * This element has several attributes and has no content |
| * |
| * @author Marc Johnson (marc_johnson27591@hotmail.com) |
| * @version CVS $Id$ |
| */ |
| public class EPColInfo extends BaseElementProcessor { |
| |
| // column number |
| private NumericResult _no; |
| |
| // size, in points |
| private NumericResult _unit; |
| |
| // top margin, in points |
| private NumericResult _margin_a; |
| |
| // bottom margin, in points |
| private NumericResult _margin_b; |
| |
| // true if size is explicitly set |
| private BooleanResult _hard_size; |
| |
| // true if column is hidden |
| private BooleanResult _hidden; |
| |
| // true if column is collapsed |
| private BooleanResult _collapsed; |
| |
| // outline level |
| private NumericResult _outline_level; |
| |
| // rle count |
| private NumericResult _count; |
| private static final String _no_attribute = "No"; |
| private static final String _unit_attribute = "Unit"; |
| private static final String _margin_a_attribute = "MarginA"; |
| private static final String _margin_b_attribute = "MarginB"; |
| private static final String _hard_size_attribute = "HardSize"; |
| private static final String _hidden_attribute = "Hidden"; |
| private static final String _collapsed_attribute = "Collapsed"; |
| private static final String _outline_level_attribute = "OutlineLevel"; |
| private static final String _count_attribute = "Count"; |
| private static final Validator _margin_validator = new Validator() { |
| public IOException validate(final Number number) { |
| int val = number.intValue(); |
| |
| return (val >= 0 && val <= 7) ? null |
| : new IOException("\"" + number + "\" is not a legal value"); |
| } |
| }; |
| |
| private static final Attribute[] _implied_attributes = |
| { |
| new Attribute(_hard_size_attribute, "0"), |
| new Attribute(_hidden_attribute, "0"), |
| new Attribute(_collapsed_attribute, "0"), |
| new Attribute(_outline_level_attribute, "0"), |
| new Attribute(_count_attribute, "1") |
| }; |
| |
| /** |
| * constructor |
| */ |
| public EPColInfo() { |
| super(_implied_attributes); |
| _no = null; |
| _unit = null; |
| _margin_a = null; |
| _margin_b = null; |
| _hard_size = null; |
| _hidden = null; |
| _collapsed = null; |
| _outline_level = null; |
| _count = null; |
| } |
| |
| /** |
| * @return column number |
| * @exception IOException |
| */ |
| public int getColumnNo() throws IOException { |
| if (_no == null) { |
| _no = NumericConverter.extractNonNegativeInteger( |
| getValue(_no_attribute)); |
| } |
| return _no.intValue(); |
| } |
| |
| /** |
| * @return column size in points |
| * @exception IOException |
| */ |
| public double getPoints() throws IOException { |
| if (_unit == null) { |
| _unit = NumericConverter.extractDouble(getValue(_unit_attribute)); |
| } |
| return _unit.doubleValue(); |
| } |
| |
| /** |
| * @return top margin |
| * @exception IOException |
| */ |
| public int getTopMargin() throws IOException { |
| if (_margin_a == null) { |
| _margin_a = NumericConverter.extractInteger( |
| getValue(_margin_a_attribute), _margin_validator); |
| } |
| return _margin_a.intValue(); |
| } |
| |
| /** |
| * @return bottom margin |
| * @exception IOException |
| */ |
| public int getBottomMargin() throws IOException { |
| if (_margin_b == null) { |
| _margin_b = NumericConverter.extractInteger( |
| getValue(_margin_b_attribute), _margin_validator); |
| } |
| return _margin_b.intValue(); |
| } |
| |
| /** |
| * @return hard size |
| * @exception IOException |
| */ |
| public boolean getHardSize() throws IOException { |
| if (_hard_size == null) { |
| _hard_size = |
| BooleanConverter.extractBoolean(getValue(_hard_size_attribute)); |
| } |
| return _hard_size.booleanValue(); |
| } |
| |
| /** |
| * @return hidden state |
| * @exception IOException |
| */ |
| public boolean getHidden() throws IOException { |
| if (_hidden == null) { |
| _hidden = |
| BooleanConverter.extractBoolean(getValue(_hidden_attribute)); |
| } |
| return _hidden.booleanValue(); |
| } |
| |
| /** |
| * @return collapsed state |
| * @exception IOException |
| */ |
| public boolean getCollapsed() throws IOException { |
| if (_collapsed == null) { |
| _collapsed = |
| BooleanConverter.extractBoolean(getValue(_collapsed_attribute)); |
| } |
| return _collapsed.booleanValue(); |
| } |
| |
| /** |
| * @return outline level |
| * @exception IOException |
| */ |
| public int getOutlineLevel() throws IOException { |
| if (_outline_level == null) { |
| _outline_level = |
| NumericConverter.extractInteger( |
| getValue(_outline_level_attribute)); |
| } |
| return _outline_level.intValue(); |
| } |
| |
| /** |
| * @return rle count |
| * @exception IOException |
| */ |
| public int getRLECount() throws IOException { |
| if (_count == null) { |
| _count = |
| NumericConverter.extractInteger(getValue(_count_attribute)); |
| } |
| return _count.intValue(); |
| } |
| |
| /** |
| * Set this column's width |
| * @exception IOException |
| */ |
| public void endProcessing() throws IOException { |
| getSheet().setColumnWidth(getColumnNo(), getPoints()); |
| } |
| } // end public class EPColInfo |