Create PDDictionaryWrapper
--------------------------

                 Key: PDFBOX-630
                 URL: https://issues.apache.org/jira/browse/PDFBOX-630
             Project: PDFBox
          Issue Type: Improvement
          Components: PDModel
            Reporter: Johannes Koch


What is the benefit of having so many classes implement the getCOSDIctionary() 
method on their own?

Why not have one class providing this functionality?

public class PDDictionaryWrapper implements COSObjectable
{

    private final COSDictionary dictionary;

    /**
     * Default constructor
     */
    public PDDictionaryWrapper()
    {
        this.dictionary = new COSDictionary();
    }

    /**
     *
     * @param dictionary the dictionary
     */
    public PDDictionaryWrapper(COSDictionary dictionary)
    {
        this.dictionary = dictionary;
    }


    public COSBase getCOSObject()
    {
        return this.dictionary;
    }

    /**
     * Returns the dictionary.
     *
     * @return the dictionary
     */
    protected COSDictionary getCOSDictionary()
    {
        return this.dictionary;
    }


    @Override
    public boolean equals(Object obj)
    {
        if (this == obj)
        {
            return true;
        }
        if (obj instanceof PDDictionaryWrapper)
        {
            return this.dictionary.equals(((PDDictionaryWrapper) 
obj).dictionary);
        }
        return false;
    }

    @Override
    public int hashCode()
    {
        return this.dictionary.hashCode();
    }

}

and for objects with a required Type:

public class PDTypedDictionaryWrapper extends PDDictionaryWrapper
{

    /**
     *
     * @param type the type
     */
    public PDTypedDictionaryWrapper(String type)
    {
        super();
        this.getCOSDictionary().setName(COSName.TYPE, type);
    }

    /**
     *
     * @param dictionary the dictionary
     */
    public PDTypedDictionaryWrapper(COSDictionary dictionary)
    {
        super(dictionary);
    }


    /**
     * Returns the type.
     *
     * @return the type
     */
    public String getType()
    {
        return this.getCOSDictionary().getNameAsString(COSName.TYPE);
    }

}

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to