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

📄 imdisessionparser.java

📁 编辑视频文件
💻 JAVA
字号:
/* * File:     IMDISessionParser.java * Project:  MPI Linguistic Application * Date:     02 May 2007 * * Copyright (C) 2001-2007  Max Planck Institute for Psycholinguistics * * This program 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. * * This program 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 this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA */package mpi.eudico.client.annotator.integration;import org.xml.sax.Attributes;import org.xml.sax.ContentHandler;import org.xml.sax.Locator;import org.xml.sax.SAXException;import org.xml.sax.XMLReader;import org.xml.sax.helpers.XMLReaderFactory;import java.io.IOException;import java.util.HashMap;/** * Parses an IMDI session file, only to extract (the first) .eaf file,  (the * first) video file and (the first) audio file (url's).  Preliminary * implementation... * * @author Han Sloetjes */public class IMDISessionParser {    /** Holds value of property eaf     * Dec 2005: the format string for eaf files in imdi files has been changed     * to "text/x-eaf+xml".     */    public static final String EAF = "text/x-eaf+xml";    //private final String EAF = "eaf";    private XMLReader reader;    private HashMap filesMap;    /**     * Creates a new IMDISessionParser instance     */    public IMDISessionParser() {        filesMap = new HashMap(3);        try {            reader = XMLReaderFactory.createXMLReader(                    "org.apache.xerces.parsers.SAXParser");            reader.setFeature("http://xml.org/sax/features/namespaces", true);            reader.setContentHandler(new SessionHandler());        } catch (SAXException se) {        }    }    /**     * Starts the actual parsing of the imdi file.     *     * @param pathToImdiSession the path to the imdi file     *     * @throws IOException io exception     * @throws SAXException parse exceoption     */    public void parse(String pathToImdiSession)        throws IOException, SAXException {        if (pathToImdiSession == null) {            return;        }        reader.parse(pathToImdiSession);    }    /**     * Returns the HashMap containing the extracted eaf ,video     * and or audio file mappings.     *     * @return a map containing eaf and media files mappings     */    public HashMap getFilesMap() {        /*        Iterator it = filesMap.keySet().iterator();        while (it.hasNext()) {            String key = (String) it.next();            String value = (String) filesMap.get(key);            System.out.println("K: " + key + " V: " + value);        }        */        return filesMap;    }    /**     * TEst main method.     *     * @param args the args     */    public static void main(String[] args) {        if ((args != null) && (args.length > 0)) {            try {                new IMDISessionParser().parse(args[0]);            } catch (Exception e) {                e.printStackTrace();            }        }    }    /*******************************************************************/    /**     * the content handler     */    class SessionHandler implements ContentHandler {        /** Holds value of property MediaFile */        private final String MF = "MediaFile";        /** Holds value of property AnnotationUnit */        //private final String AU = "AnnotationUnit";        /** Holds value of property WrittenResource */        private final String WRITTEN_RES = "WrittenResource";        /** Holds value of property ResourceLink */        private final String LINK = "ResourceLink";        /** Holds value of property Type */        private final String TYPE = "Type";        /** Holds value of property Format */        private final String FORMAT = "Format";        /** Holds value of property video */        private final String VIDEO = "video";        /** Holds value of property audio */        private final String AUDIO = "audio";        private String curResLink;        private String curContent;        private String curFormat;        private String curType;        /**         * End of document         *         * @throws SAXException parse ex         */        public void endDocument() throws SAXException {        }        /**         * Start of document         *         * @throws SAXException parse ex         */        public void startDocument() throws SAXException {        }        /**         * The contents of an element         *         * @param ch the characters         * @param start start index         * @param length number of characters         *         * @throws SAXException parse ex         */        public void characters(char[] ch, int start, int length)            throws SAXException {            curContent = new String(ch, start, length);        }        /**         * Ignorable white spaces.         *         * @param ch the characters         * @param start start index         * @param length number of characters         *         * @throws SAXException parse ex         */        public void ignorableWhitespace(char[] ch, int start, int length)            throws SAXException {        }        /**         * End of prefix mapping.         *         * @param prefix the prefix         *         * @throws SAXException parse ex         */        public void endPrefixMapping(String prefix) throws SAXException {        }        /**         * Skipped entity.         *         * @param name name of entity         *         * @throws SAXException parse ex         */        public void skippedEntity(String name) throws SAXException {        }        /**         * Sets the document locator.         *         * @param locator the locator         */        public void setDocumentLocator(Locator locator) {        }        /**         * Instruction.         *         * @param target the target         * @param data the data         *         * @throws SAXException DOparse ex         */        public void processingInstruction(String target, String data)            throws SAXException {        }        /**         * Start of prefix mapping.         *         * @param prefix the prefix         * @param uri prefix uri         *         * @throws SAXException parse ex         */        public void startPrefixMapping(String prefix, String uri)            throws SAXException {        }        /**         * End of element. Handles the elements we are interested in.         *         * @param namespaceURI namespace         * @param localName name of thwe element         * @param qName raw name?         *         * @throws SAXException parse ex         */        public void endElement(String namespaceURI, String localName,            String qName) throws SAXException {            if (localName.equals(TYPE)) {                curType = curContent;            } else if (localName.equals(FORMAT)) {                curFormat = curContent;            } else if (localName.equals(LINK)) {                curResLink = curContent;            } else if (localName.equals(WRITTEN_RES)) {                if (curFormat.equalsIgnoreCase(EAF)) {                    if (!filesMap.containsKey(EAF) && (curResLink != null) &&                            (curResLink.length() > 0)) {                        filesMap.put(EAF, curResLink);                    }                }                resetFields();            } else if (localName.equals(MF)) {                if (curType.equalsIgnoreCase(VIDEO)) {                    if (!filesMap.containsKey(VIDEO) && (curResLink != null) &&                            (curResLink.length() > 0)) {                        filesMap.put(VIDEO, curResLink);                    }                } else if (curType.equalsIgnoreCase(AUDIO)) {                    if (!filesMap.containsKey(AUDIO) && (curResLink != null) &&                            (curResLink.length() > 0)) {                        filesMap.put(AUDIO, curResLink);                    }                }                resetFields();            }        }        /**         * Start of an element. Ignored.         *         * @param namespaceURI namespace         * @param localName name of element         * @param qName raw name?         * @param atts the attributes of the element         *         * @throws SAXException parse ex         */        public void startElement(String namespaceURI, String localName,            String qName, Attributes atts) throws SAXException {        }        /**         * Resets the fields at the end of a relevant element.         */        void resetFields() {            curResLink = null;            curContent = null;            curFormat = null;            curType = null;        }    }}

⌨️ 快捷键说明

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