⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mpeg7template.java

📁 基于MPEG 7 标准,符合未来语义网架构,很值得参考
💻 JAVA
字号:
/*
 * This file is part of Caliph & Emir.
 *
 * Caliph & Emir is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation; either version 2 of the License, or
 * (at your option) any later version.
 *
 * Caliph & Emir 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 General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with Caliph & Emir; if not, write to the Free Software
 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 *
 * Copyright statement:
 * --------------------
 * (c) 2005 by Werner Klieber (werner@klieber.info)
 * http://caliph-emir.sourceforge.net
 */
package at.wklieber.mpeg7;


import at.wklieber.Settings;
import at.wklieber.tools.Console;
import at.wklieber.tools.XmlTools;
import org.jdom.Document;
import org.jdom.Element;
import org.jdom.Namespace;

import java.util.List;


/**
 * special class for mpeg7 files: namespaces, ...
 */
public class Mpeg7Template extends XmlTemplate
        implements DsInterface {
    protected static Console console = Console.getReference();
    protected Mpeg7ConversionTools mpeg7Convert = Mpeg7ConversionTools.getReference();

    protected static final String ROOT_TAG = "Mpeg7";
    protected static final String CONTENT_DESCRIPTION_TAG = "Description";

    public static final String SCHEMA_LOCATION = Settings.getReference().getSchemaLocation();

    public static final String mpeg7Urn = "urn:mpeg:mpeg7:schema:2001";
    public static final String xsiUrn = "http://www.w3.org/2001/XMLSchema-instance";

    protected static final Namespace mpeg7Namespace = Namespace.getNamespace("", mpeg7Urn);
    protected static final Namespace xsiNamespace = Namespace.getNamespace("xsi", xsiUrn);

    // offset in a complete mpeg7 document where this descriptor occusrs
    // is used to extract data
    // format no starting and leading separator, e.g. "Mpeg7/content"
    // note: the offset strings are used also somewhere else
    // offest is used to write to the mpeg when creating
    protected String OFFSET_PATH = ROOT_TAG + "/Description";

    // the name of the Desctipor
    // this is the root tag name of this dom document
    // format: no starting and leading separator, e.g. "DescriptionMetadata"
    protected String DESCRIPTOR_TAG = "Undefined";


    public Mpeg7Template() {
        super();
    }

    public Mpeg7Template(Element mpeg7Element) {
        super();
        createTemplateDocument(false);
        mpeg7Element.detach();
        //XmlTools.removeAllNamespacePrefix(mpeg7Element);
        getDocument((Document) null).setRootElement(mpeg7Element);
        XmlTools.removeAllNamespacesRecursive(getDocument((Document) null).getRootElement());
        //XmlTools.removeAllNamespacePrefix(getDocument((Document) null).getRootElement());
    }

    public Mpeg7InstanceMetadata getInstanceMetadataAccess() {
        return new Mpeg7InstanceMetadata(this);
    }

    /**
     * return the path where the description data begins
     */
    public Element getOffset() {
        String offset = OFFSET_PATH + "/" + DESCRIPTOR_TAG;
        return simpleXpath(offset, mpeg7Namespace, new Element("undefined"), false);
    }


    /**
     * return the element that can be added to the root tag (Mpeg7)
     */
    public Element getOffsetForRoot() {
        String offset = ROOT_TAG + "/" + CONTENT_DESCRIPTION_TAG;
        return simpleXpath(offset, mpeg7Namespace, new Element("undefined"), false);
    }

    public static String getRootTag() {
        return ROOT_TAG;
    }

    public static Namespace getMpeg7Namespace() {
        return mpeg7Namespace;
    }

    public static Namespace getXsiNamespace() {
        return xsiNamespace;
    }

    public void setDefaultValues() {
        super.setDefaultValues();
    }

    // create a new JDOM-Document with a root-Element and mpeg7 setting
    protected void createNewDocument(String rootName1, String dtdUrl1, boolean withMpeg7Namespace) {
        initialize();
        Element rootElement = null;
        if (withMpeg7Namespace) {
            rootElement = new Element(rootName1, mpeg7Namespace);
            rootElement.setAttribute("schemaLocation", "urn:mpeg:mpeg7:schema:2001 " + SCHEMA_LOCATION, xsiNamespace);
            rootElement.addNamespaceDeclaration(mpeg7Namespace);
            rootElement.addNamespaceDeclaration(xsiNamespace);
        } else {
            rootElement = new Element(rootName1);
        }

        document = new Document(rootElement);
    }


    public void createTemplateDocument() {
        createTemplateDocument(true);
    }

    // this methode creats a new documment tree - tructure
    public void createTemplateDocument(boolean withMpeg7NameSpace) {
        createNewDocument(ROOT_TAG, null, true);
    } // end method

    /**
     * derived classes can override this to extract data specific to their content type.
     * e.g DominantColors, SeminticDescriptors, ...
     *
     * @param mpeg7Document
     * @return
     */
    public List extractFromMpeg7(Document mpeg7Document) {
        return null;
    }

    /**
     * walks though the child specified in loacation1 and returns the text
     * from that Element or the content of "default1" if the child doesn't exists
     */
    protected String getDomValue(String location1, String default1) {
        String ret = default1;

        Element result = simpleXpath(location1, mpeg7Namespace, (Element) null, false);
        if (result != null) {
            ret = result.getText();
        }

        return ret;
    }

    public Mpeg7Template clone() {
        Mpeg7Template returnValue = null;
        Element elem = this.getDocument((Element)null);
        Element newElem = (Element) elem.clone();
        assert(elem != newElem);
        returnValue = new Mpeg7Template(newElem);

        return returnValue;
    }

} // end class

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -