Package schema2template.example.odf

Source Code of schema2template.example.odf.OdfModel$AttributeDefaults

/************************************************************************
*
* 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.ArrayList;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.SortedSet;
import java.util.TreeSet;
import schema2template.model.QNamed;
import schema2template.model.QNameValue;

/**
* Model for ODF specific enhancements.
* For example, these might be style families used for ODF elements or attribute default values.
*/
public class OdfModel {

    /**
     * This inner class is not meant for use in templates.
     */
    static class AttributeDefaults {
        private Map<String, String> elementDefault = new HashMap<String, String>();

        public void addDefault(String defaultvalue) {
            addDefault(null, defaultvalue);
        }

        public void addDefault(String elementname, String defaultvalue) {
            elementDefault.put(elementname, defaultvalue);
        }

        public String getDefault() {
            return getDefault(null);
        }

        public String getDefault(String elementname) {
            String retval = elementDefault.get(elementname);
            // Fallback: Look for global default
            if (retval == null && elementname != null) {
                retval = elementDefault.get(null);
            }
            return retval;
        }
       
        public Set<String> getDefaults() {
          Set<String> defaults=new HashSet<String>();
          for(String elementname : elementDefault.keySet()){
            String retval = elementDefault.get(elementname);
            if(retval!=null){
              defaults.add(retval);
            }
          }
            return defaults;
        }
    }

    Map<String, List<String>> mNameToFamiliesMap;
    Map<String, AttributeDefaults> mNameToDefaultsMap;

    public OdfModel(Map<String, List<String>> nameToFamiliesMap, Map<String, AttributeDefaults> attributeDefaults) {
        mNameToFamiliesMap = nameToFamiliesMap;
        mNameToDefaultsMap = attributeDefaults;
    }

    /**
     * Determine whether an ELEMENT is stylable (a.k.a. has at least one
     * defined style family). Note: All Definitions sharing the same name share
     * the same style families.
     *
     * @param element Element
     * @return whether there are style families defined for this Definition
     */
    public boolean isStylable(QNamed element) {
        return mNameToFamiliesMap.containsKey(element.getQName());
    }

    /**
     * Get defined style families for this ELEMENT Definition. Note: All Definitions sharing
     * the same name share the same style families.
     *
     * @param element Element
     * @return list of style family names
     */
    public List<QNamed> getStyleFamilies(QNamed element) {
        List<QNamed> retval = new ArrayList<QNamed>();
        for (String family : mNameToFamiliesMap.get(element.getQName())) {
            retval.add(new QNameValue(family));
        }
        return retval;
    }

    /**
     * Get all defined style family names
     *
     * @return SortedSet of Style Family Names
     */
    public SortedSet<QNamed> getStyleFamilies() {
        Iterator<List<String>> iter = mNameToFamiliesMap.values().iterator();
        List<QNamed> families = new ArrayList<QNamed>();
        while (iter.hasNext()) {
            for (String family : iter.next()) {
                families.add(new QNameValue(family));
            }
        }
        return new TreeSet<QNamed>(families);
    }

    /**
     * Get default value of ODF attribute, depending on the ODF element which contains this attribute.
     *
     * @param attribute Attribute
     * @param parentelement Parent element
     * @return Default value for attribute of parent
     */
    public String getDefaultAttributeValue(QNamed attribute, QNamed parentelement) {
        AttributeDefaults defaults = mNameToDefaultsMap.get(attribute.getQName());
        if (defaults == null) {
            return null;
        }
        return defaults.getDefault(parentelement.getQName());
    }
   
    /**
     * Get default values of ODF attribute.
     *
     * @param attribute Attribute
     * @return Default values for attribute
     */
    public Set<String> getDefaultAttributeValues(QNamed attribute) {
        AttributeDefaults defaults = mNameToDefaultsMap.get(attribute.getQName());
        if (defaults == null) {
            return null;
        }
        return defaults.getDefaults();
    }
}
TOP

Related Classes of schema2template.example.odf.OdfModel$AttributeDefaults

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.