Package schema2template.example.odf

Source Code of schema2template.example.odf.SourceCodeBaseClass

/************************************************************************
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER
*
* Copyright 2009, 2010 Oracle and/or its affiliates. All rights reserved.
*
* Use is subject to license terms.
*
* Licensed 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. You can also
* obtain a copy of the License at http://odftoolkit.org/docs/license.txt
*
* 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 schema2template.example.odf;

import java.util.SortedSet;
import java.util.TreeSet;
import schema2template.model.PuzzlePiece;
import schema2template.model.PuzzlePieceSet;
import schema2template.model.QNamed;
import schema2template.model.XMLModel;

/**
* Encapsulates the name of the java base class
*
* <p>Convention: Unique key is the name of the baseclass. So name is used for compareTo(o), equals(o) and hashCode().</p>
*/
public class SourceCodeBaseClass implements Comparable<SourceCodeBaseClass>, QNamed {

    private SortedSet<PuzzlePiece> mSubelements;
    private String mBasename;
    private OdfModel mOdfmodel;

    protected SourceCodeBaseClass(OdfModel odfmodel, String basename, SortedSet<PuzzlePiece> subelements) {
        mSubelements = subelements;
        mBasename = basename;
        mOdfmodel = odfmodel;
    }

    public int compareTo(SourceCodeBaseClass o) {
        return mBasename.compareTo(o.mBasename);
    }

    public boolean equals(Object o) {
        return (o instanceof SourceCodeBaseClass && ((SourceCodeBaseClass) o).mBasename.equals(mBasename));
    }

    public int hashCode() {
        return mBasename.hashCode();
    }

    public String getLocalName() {
        return XMLModel.extractLocalname(mBasename);
    }

    public String getQName() {
        return mBasename;
    }

    public String getNamespace() {
        return XMLModel.extractNamespace(mBasename);
    }

    public String toString() {
        return getQName();
    }

    /**
     * Returns the element Definitions which are subclassing this JavaBaseClass
     *
     * @return subclasses
     */
    public PuzzlePieceSet getElements() {
        return new PuzzlePieceSet(mSubelements);
    }

    /**
     * Returns the attribute Definitions which are shared by all subclasses of this JavaBaseClass
     *
     * @return attributes
     */
    public PuzzlePieceSet getBaseAttributes() {
        SortedSet<PuzzlePiece> attributes = new TreeSet<PuzzlePiece>(mSubelements.last().getAttributes());
        for (PuzzlePiece subelement : mSubelements.headSet(mSubelements.last())) {
            attributes.retainAll(subelement.getAttributes());
        }
        return new PuzzlePieceSet(attributes);
    }

    /**
     * Determines whether all subclasses of this JavaBaseClass are stylable or not stylable.
     *
     * @return whether all subclasses are stylable (true) or none (false).
     * @throws RuntimeException if some subclasses are stylable and some are not
     */
    public boolean isStylable() {
        boolean notStylable = false;
        boolean stylable = false;
        for (PuzzlePiece def : getElements()) {
            if (mOdfmodel.isStylable(def)) {
                stylable = true;
            } else {
                notStylable = true;
            }
        }
        if (stylable && !notStylable) {
            return true;
        }
        if (notStylable && !stylable) {
            return false;
        }
        throw new RuntimeException("Base Class " + getQName() + " used for stylable AND not stylable elements. This is not possible.");
    }
}
TOP

Related Classes of schema2template.example.odf.SourceCodeBaseClass

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.