1*1a37d047SAndrew Rist /************************************************************** 2cdf0e10cSrcweir * 3*1a37d047SAndrew Rist * Licensed to the Apache Software Foundation (ASF) under one 4*1a37d047SAndrew Rist * or more contributor license agreements. See the NOTICE file 5*1a37d047SAndrew Rist * distributed with this work for additional information 6*1a37d047SAndrew Rist * regarding copyright ownership. The ASF licenses this file 7*1a37d047SAndrew Rist * to you under the Apache License, Version 2.0 (the 8*1a37d047SAndrew Rist * "License"); you may not use this file except in compliance 9*1a37d047SAndrew Rist * with the License. You may obtain a copy of the License at 10*1a37d047SAndrew Rist * 11*1a37d047SAndrew Rist * http://www.apache.org/licenses/LICENSE-2.0 12*1a37d047SAndrew Rist * 13*1a37d047SAndrew Rist * Unless required by applicable law or agreed to in writing, 14*1a37d047SAndrew Rist * software distributed under the License is distributed on an 15*1a37d047SAndrew Rist * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 16*1a37d047SAndrew Rist * KIND, either express or implied. See the License for the 17*1a37d047SAndrew Rist * specific language governing permissions and limitations 18*1a37d047SAndrew Rist * under the License. 19*1a37d047SAndrew Rist * 20*1a37d047SAndrew Rist *************************************************************/ 21*1a37d047SAndrew Rist 22*1a37d047SAndrew Rist 23cdf0e10cSrcweir package com.sun.star.report.pentaho.model; 24cdf0e10cSrcweir 25cdf0e10cSrcweir import java.io.Serializable; 26cdf0e10cSrcweir 27cdf0e10cSrcweir import java.util.ArrayList; 28cdf0e10cSrcweir import java.util.HashMap; 29cdf0e10cSrcweir import java.util.List; 30cdf0e10cSrcweir import java.util.Map; 31cdf0e10cSrcweir 32cdf0e10cSrcweir import org.jfree.report.structure.Element; 33cdf0e10cSrcweir 34cdf0e10cSrcweir 35cdf0e10cSrcweir /** 36cdf0e10cSrcweir * Holds one style type, either an automatic, common or master style. This is a 37cdf0e10cSrcweir * marker container that defines the nature of the styles contained within this 38cdf0e10cSrcweir * container. (Yeah, it is awkward, but that's how the document model describes 39cdf0e10cSrcweir * it.) 40cdf0e10cSrcweir * 41cdf0e10cSrcweir * The style family can be one of paragraph, text, section, table, table-column, 42cdf0e10cSrcweir * table-row, table-cell, table-page, chart, default, drawing-page, graphic, 43cdf0e10cSrcweir * presentation, control and ruby. 44cdf0e10cSrcweir * 45cdf0e10cSrcweir * @author Thomas Morgner 46cdf0e10cSrcweir * @since 07.03.2007 47cdf0e10cSrcweir */ 48cdf0e10cSrcweir public class OfficeStyles extends Element 49cdf0e10cSrcweir { 50cdf0e10cSrcweir 51cdf0e10cSrcweir public static class StyleKey implements Serializable 52cdf0e10cSrcweir { 53cdf0e10cSrcweir 54cdf0e10cSrcweir private static final long serialVersionUID = 4931878927362887477L; 55cdf0e10cSrcweir private final String family; 56cdf0e10cSrcweir private final String name; 57cdf0e10cSrcweir StyleKey(final String family, final String name)58cdf0e10cSrcweir public StyleKey(final String family, final String name) 59cdf0e10cSrcweir { 60cdf0e10cSrcweir if (family == null) 61cdf0e10cSrcweir { 62cdf0e10cSrcweir throw new NullPointerException(); 63cdf0e10cSrcweir } 64cdf0e10cSrcweir this.family = family; 65cdf0e10cSrcweir this.name = name; 66cdf0e10cSrcweir } 67cdf0e10cSrcweir getFamily()68cdf0e10cSrcweir public String getFamily() 69cdf0e10cSrcweir { 70cdf0e10cSrcweir return family; 71cdf0e10cSrcweir } 72cdf0e10cSrcweir getName()73cdf0e10cSrcweir public String getName() 74cdf0e10cSrcweir { 75cdf0e10cSrcweir return name; 76cdf0e10cSrcweir } 77cdf0e10cSrcweir equals(final Object obj)78cdf0e10cSrcweir public boolean equals(final Object obj) 79cdf0e10cSrcweir { 80cdf0e10cSrcweir if (this != obj) 81cdf0e10cSrcweir { 82cdf0e10cSrcweir if (obj == null || getClass() != obj.getClass()) 83cdf0e10cSrcweir { 84cdf0e10cSrcweir return false; 85cdf0e10cSrcweir } 86cdf0e10cSrcweir 87cdf0e10cSrcweir final StyleKey styleKey = (StyleKey) obj; 88cdf0e10cSrcweir 89cdf0e10cSrcweir if (!family.equals(styleKey.family) || (name != null ? !name.equals(styleKey.name) : styleKey.name != null)) 90cdf0e10cSrcweir { 91cdf0e10cSrcweir return false; 92cdf0e10cSrcweir } 93cdf0e10cSrcweir } 94cdf0e10cSrcweir return true; 95cdf0e10cSrcweir } 96cdf0e10cSrcweir hashCode()97cdf0e10cSrcweir public int hashCode() 98cdf0e10cSrcweir { 99cdf0e10cSrcweir int result = family.hashCode(); 100cdf0e10cSrcweir result = 31 * result + (name != null ? name.hashCode() : 0); 101cdf0e10cSrcweir return result; 102cdf0e10cSrcweir } 103cdf0e10cSrcweir } 104cdf0e10cSrcweir private final Map pageStyles; 105cdf0e10cSrcweir private final Map dataStyles; 106cdf0e10cSrcweir private final Map styles; 107cdf0e10cSrcweir private final List otherChilds; 108cdf0e10cSrcweir OfficeStyles()109cdf0e10cSrcweir public OfficeStyles() 110cdf0e10cSrcweir { 111cdf0e10cSrcweir this.styles = new HashMap(); 112cdf0e10cSrcweir this.dataStyles = new HashMap(); 113cdf0e10cSrcweir this.pageStyles = new HashMap(); 114cdf0e10cSrcweir this.otherChilds = new ArrayList(); 115cdf0e10cSrcweir } 116cdf0e10cSrcweir getStyle(final String family, final String name)117cdf0e10cSrcweir public OfficeStyle getStyle(final String family, final String name) 118cdf0e10cSrcweir { 119cdf0e10cSrcweir return (OfficeStyle) styles.get(new StyleKey(family, name)); 120cdf0e10cSrcweir } 121cdf0e10cSrcweir addStyle(final OfficeStyle style)122cdf0e10cSrcweir public void addStyle(final OfficeStyle style) 123cdf0e10cSrcweir { 124cdf0e10cSrcweir if (style == null) 125cdf0e10cSrcweir { 126cdf0e10cSrcweir throw new NullPointerException(); 127cdf0e10cSrcweir } 128cdf0e10cSrcweir final String styleFamily = style.getStyleFamily(); 129cdf0e10cSrcweir if (styleFamily == null) 130cdf0e10cSrcweir { 131cdf0e10cSrcweir throw new NullPointerException(); 132cdf0e10cSrcweir } 133cdf0e10cSrcweir if (style.getStyleName() == null) 134cdf0e10cSrcweir { 135cdf0e10cSrcweir throw new NullPointerException(); 136cdf0e10cSrcweir } 137cdf0e10cSrcweir styles.put(new StyleKey(styleFamily, style.getStyleName()), style); 138cdf0e10cSrcweir } 139cdf0e10cSrcweir addPageStyle(final PageLayout style)140cdf0e10cSrcweir public void addPageStyle(final PageLayout style) 141cdf0e10cSrcweir { 142cdf0e10cSrcweir pageStyles.put(style.getStyleName(), style); 143cdf0e10cSrcweir } 144cdf0e10cSrcweir getPageStyle(final String name)145cdf0e10cSrcweir public PageLayout getPageStyle(final String name) 146cdf0e10cSrcweir { 147cdf0e10cSrcweir return (PageLayout) pageStyles.get(name); 148cdf0e10cSrcweir } 149cdf0e10cSrcweir addDataStyle(final DataStyle style)150cdf0e10cSrcweir public void addDataStyle(final DataStyle style) 151cdf0e10cSrcweir { 152cdf0e10cSrcweir dataStyles.put(style.getStyleName(), style); 153cdf0e10cSrcweir } 154cdf0e10cSrcweir getDataStyle(final String name)155cdf0e10cSrcweir public DataStyle getDataStyle(final String name) 156cdf0e10cSrcweir { 157cdf0e10cSrcweir return (DataStyle) dataStyles.get(name); 158cdf0e10cSrcweir } 159cdf0e10cSrcweir addOtherNode(final Element node)160cdf0e10cSrcweir public void addOtherNode(final Element node) 161cdf0e10cSrcweir { 162cdf0e10cSrcweir otherChilds.add(node); 163cdf0e10cSrcweir } 164cdf0e10cSrcweir getAllDataStyles()165cdf0e10cSrcweir public DataStyle[] getAllDataStyles() 166cdf0e10cSrcweir { 167cdf0e10cSrcweir return (DataStyle[]) dataStyles.values().toArray(new DataStyle[dataStyles.size()]); 168cdf0e10cSrcweir } 169cdf0e10cSrcweir getAllPageStyles()170cdf0e10cSrcweir public PageLayout[] getAllPageStyles() 171cdf0e10cSrcweir { 172cdf0e10cSrcweir return (PageLayout[]) pageStyles.values().toArray(new PageLayout[pageStyles.size()]); 173cdf0e10cSrcweir } 174cdf0e10cSrcweir getAllStyles()175cdf0e10cSrcweir public OfficeStyle[] getAllStyles() 176cdf0e10cSrcweir { 177cdf0e10cSrcweir return (OfficeStyle[]) styles.values().toArray(new OfficeStyle[styles.size()]); 178cdf0e10cSrcweir } 179cdf0e10cSrcweir getOtherStyles()180cdf0e10cSrcweir public Element[] getOtherStyles() 181cdf0e10cSrcweir { 182cdf0e10cSrcweir return (Element[]) otherChilds.toArray(new Element[otherChilds.size()]); 183cdf0e10cSrcweir } 184cdf0e10cSrcweir containsStyle(final String family, final String name)185cdf0e10cSrcweir public boolean containsStyle(final String family, final String name) 186cdf0e10cSrcweir { 187cdf0e10cSrcweir return styles.containsKey(new StyleKey(family, name)); 188cdf0e10cSrcweir } 189cdf0e10cSrcweir containsDataStyle(final String styleName)190cdf0e10cSrcweir public boolean containsDataStyle(final String styleName) 191cdf0e10cSrcweir { 192cdf0e10cSrcweir return dataStyles.containsKey(styleName); 193cdf0e10cSrcweir } 194cdf0e10cSrcweir } 195