Package org.pentaho.reporting.engine.classic.core.style.css.selector

Source Code of org.pentaho.reporting.engine.classic.core.style.css.selector.CSSElementSelector

/*!
* This program is free software; you can redistribute it and/or modify it under the
* terms of the GNU Lesser General Public License, version 2.1 as published by the Free Software
* Foundation.
*
* You should have received a copy of the GNU Lesser General Public License along with this
* program; if not, you can obtain a copy at http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html
* or from the Free Software Foundation, Inc.,
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
*
* This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
* without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
* See the GNU Lesser General Public License for more details.
*
* Copyright (c) 2002-2013 Pentaho Corporation..  All rights reserved.
*/

package org.pentaho.reporting.engine.classic.core.style.css.selector;

import java.io.Serializable;

import org.pentaho.reporting.engine.classic.core.style.css.namespaces.NamespaceCollection;
import org.pentaho.reporting.engine.classic.core.style.css.namespaces.NamespaceDefinition;
import org.w3c.css.sac.ElementSelector;

public class CSSElementSelector extends AbstractSelector implements ElementSelector, Serializable
{
  private short selectorType;
  private String namespace;
  private String localName;

  public CSSElementSelector(final short selectorType,
                            final String namespace,
                            final String localName)
  {
    this.selectorType = selectorType;
    this.namespace = namespace;
    this.localName = localName;
  }

  /**
   * Returns the <a href="http://www.w3.org/TR/REC-xml-names/#dt-NSName">namespace
   * URI</a> of this element selector. <p><code>NULL</code> if this element
   * selector can match any namespace.</p>
   */
  public String getNamespaceURI()
  {
    return namespace;
  }

  /**
   * Returns the <a href="http://www.w3.org/TR/REC-xml-names/#NT-LocalPart">local
   * part</a> of the <a href="http://www.w3.org/TR/REC-xml-names/#ns-qualnames">qualified
   * name</a> of this element. <p><code>NULL</code> if this element selector can
   * match any element.</p> </ul>
   */
  public String getLocalName()
  {
    return localName;
  }

  /**
   * An integer indicating the type of <code>Selector</code>
   */
  public short getSelectorType()
  {
    return selectorType;
  }

  protected SelectorWeight createWeight()
  {
    return new SelectorWeight(0, 0, 0, 1);
  }

  public String print(final NamespaceCollection namespaces)
  {
    final StringBuilder b = new StringBuilder();
    if (namespace != null)
    {
      if ("*".equals(namespace))
      {
        b.append("*|");
      }
      else if ("".equals(namespace))
      {
        b.append("|");
      }
      else
      {
        final NamespaceDefinition definition = namespaces.getDefinition(namespace);
        if (definition == null)
        {
          b.append("\"");
          b.append(namespace);
          b.append("\"");
          b.append("|");
        }
        else
        {
          b.append(definition.getPrefix());
          b.append("|");
        }
      }
      b.append(localName);
    }
    else if (localName != null)
    {
      b.append(localName);
    }
    return b.toString();
  }
}
TOP

Related Classes of org.pentaho.reporting.engine.classic.core.style.css.selector.CSSElementSelector

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.