<commit_before>/* $Id$
 * Copyright (C) 2001 The Apache Software Foundation. All rights reserved.
 * For details on use and redistribution please refer to the
 * LICENSE file included with these sources."
 */

package org.apache.fop.svg;

// FOP
import org.apache.fop.fo.*;
import org.apache.fop.layout.Area;
import org.apache.fop.layout.FontState;
import org.apache.fop.apps.FOPException;

import org.apache.batik.dom.svg.*;

import org.w3c.dom.svg.*;
import org.w3c.dom.*;

import java.util.*;

/**
 * Since SVG objects are not layed out then this class checks
 * that this element is not being layed out inside some incorrect
 * element.
 */
public abstract class SVGObj extends FObj {

    String tagName = "";
    String[] props = {};
    /**
     *
     * @param parent the parent formatting object
     * @param propertyList the explicit properties of this object
     */
    public SVGObj(FObj parent, PropertyList propertyList) {
        super(parent, propertyList);
    }

    protected static Hashtable ns = new Hashtable();

    public void addGraphic(Document doc, Element parent) {
        Element element = doc.createElementNS("http://www.w3.org/2000/svg",
                                              tagName);
        //        Element element = doc.createElement(tagName);
        for (int count = 0; count < props.length; count++) {
            if (this.properties.get(props[count]) != null) {
                String rf = this.properties.get(props[count]).getString();
                if (rf != null) {
                    if (props[count].indexOf(":") == -1) {
                        element.setAttribute(props[count], rf);
                    } else {
                        String pref = props[count].substring(0,
                                                             props[count].indexOf(":"));
                        System.out.println(pref);
                        if (pref.equals("xmlns")) {
                            ns.put(props[count].substring(
                                     props[count].indexOf(":") + 1), rf);
                            System.out.println(ns);
                        }
                        ns.put("xlink", "http://www.w3.org/1999/xlink");
                        element.setAttributeNS((String) ns.get(pref),
                                               props[count], rf);
                    }
                }
            }
        }
        parent.appendChild(element);
        int numChildren = this.children.size();
        for (int i = 0; i < numChildren; i++) {
            Object child = children.elementAt(i);
            if (child instanceof SVGObj) {
                ((SVGObj) child).addGraphic(doc, element);
            } else if (child instanceof String) {
                org.w3c.dom.Text text = doc.createTextNode((String) child);
                element.appendChild(text);
            }
        }
    }

    /**
     * layout this formatting object.
     *
     * @param area the area to layout the object into
     * @return the status of the layout
     */
    public Status layout(Area area) throws FOPException {
        /* generate a warning */
        System.err.println("WARNING: " + this.name + " outside svg:svg");

        /* return status */
        return new Status(Status.OK);
    }
}
<commit_msg>prevents class cast exceptions when these methods are called not relevent for these objects<commit_after>/* $Id$
 * Copyright (C) 2001 The Apache Software Foundation. All rights reserved.
 * For details on use and redistribution please refer to the
 * LICENSE file included with these sources.
 */

package org.apache.fop.svg;

// FOP
import org.apache.fop.fo.*;
import org.apache.fop.layout.Area;
import org.apache.fop.layout.FontState;
import org.apache.fop.apps.FOPException;
import org.apache.fop.layout.LinkSet;

import org.apache.batik.dom.svg.*;

import org.w3c.dom.svg.*;
import org.w3c.dom.*;

import java.util.*;

/**
 * Since SVG objects are not layed out then this class checks
 * that this element is not being layed out inside some incorrect
 * element.
 */
public abstract class SVGObj extends FObj {

    String tagName = "";
    String[] props = {};
    /**
     *
     * @param parent the parent formatting object
     * @param propertyList the explicit properties of this object
     */
    public SVGObj(FObj parent, PropertyList propertyList) {
        super(parent, propertyList);
    }

    protected static Hashtable ns = new Hashtable();

    public void addGraphic(Document doc, Element parent) {
        Element element = doc.createElementNS("http://www.w3.org/2000/svg",
                                              tagName);
        //        Element element = doc.createElement(tagName);
        for (int count = 0; count < props.length; count++) {
            if (this.properties.get(props[count]) != null) {
                String rf = this.properties.get(props[count]).getString();
                if (rf != null) {
                    if (props[count].indexOf(":") == -1) {
                        element.setAttribute(props[count], rf);
                    } else {
                        String pref = props[count].substring(0,
                                                             props[count].indexOf(":"));
                        if (pref.equals("xmlns")) {
                            ns.put(props[count].substring(
                                     props[count].indexOf(":") + 1), rf);
                        }
                        ns.put("xlink", "http://www.w3.org/1999/xlink");
                        element.setAttributeNS((String) ns.get(pref),
                                               props[count], rf);
                    }
                }
            }
        }
        parent.appendChild(element);
        int numChildren = this.children.size();
        for (int i = 0; i < numChildren; i++) {
            Object child = children.elementAt(i);
            if (child instanceof SVGObj) {
                ((SVGObj) child).addGraphic(doc, element);
            } else if (child instanceof String) {
                org.w3c.dom.Text text = doc.createTextNode((String) child);
                element.appendChild(text);
            }
        }
    }

    /**
     * layout this formatting object.
     *
     * @param area the area to layout the object into
     * @return the status of the layout
     */
    public Status layout(Area area) throws FOPException {
        /* generate a warning */
        System.err.println("WARNING: " + this.name + " outside svg:svg");

        /* return status */
        return new Status(Status.OK);
    }

    /**
     * These method overrides prevent problems with the different types.
     */
    public void setIsInTableCell() {
    }

    public void forceStartOffset(int offset) {
    }

    public void forceWidth(int width) {
    }

    public void resetMarker() {
    }

    public void setLinkSet(LinkSet linkSet) {
    }

    public Vector getMarkerSnapshot(Vector snapshot) {
        return snapshot;
    }

    public void rollback(Vector snapshot) {
    }
}

{'fraction_non_alphanumeric': 0.11228664127521512, 'fraction_numerical': 0.006206799266469177, 'mean_word_length': 1.6815431164901664, 'pattern_counts': {'":': 6, '<': 7, '<?xml version=': 0, '>': 3, 'https://': 0, 'lorem ipsum': 0, 'www.': 4, 'xml': 2}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 14, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '4992462', 'n_tokens_mistral': 1892, 'n_tokens_neox': 1815, 'n_words': 506}