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

📄 daftranscriptionstore.java

📁 编辑视频文件
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
/* * File:     DAFTranscriptionStore.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.server.corpora.clomimpl.dobes;import mpi.eudico.server.corpora.clom.Annotation;import mpi.eudico.server.corpora.clom.EncoderInfo;import mpi.eudico.server.corpora.clom.Tier;import mpi.eudico.server.corpora.clom.TimeOrder;import mpi.eudico.server.corpora.clom.TimeSlot;import mpi.eudico.server.corpora.clom.Transcription;import mpi.eudico.server.corpora.clom.TranscriptionStore;import mpi.eudico.server.corpora.clomimpl.abstr.AlignableAnnotation;import mpi.eudico.server.corpora.clomimpl.abstr.RefAnnotation;import mpi.eudico.server.corpora.clomimpl.abstr.TierImpl;import mpi.eudico.server.corpora.clomimpl.abstr.TimeSlotImpl;import mpi.eudico.server.corpora.clomimpl.abstr.TranscriptionImpl;import mpi.eudico.server.corpora.clomimpl.type.LinguisticType;import mpi.eudico.server.util.IoUtil;import org.w3c.dom.Element;import java.io.File;import java.io.IOException;import java.io.PrintWriter;import java.text.SimpleDateFormat;import java.util.Calendar;import java.util.Enumeration;import java.util.Hashtable;import java.util.Iterator;import java.util.Locale;import java.util.Vector;import javax.swing.JOptionPane;/** * DOCUMENT ME! $Id: DAFTranscriptionStore.java,v 1.1.1.1 2004/03/25 16:23:20 * wouthuij Exp $ * * @author $Author: hasloe $ * @version $Revision: 1.11 $ * @version Aug 2005 Identity removed */public class DAFTranscriptionStore implements TranscriptionStore {    // we want the XML to be saved to a file    /** Holds value of property DOCUMENT ME! */    private final java.io.File fileToWriteXMLinto = null; //currently final (not used)    /**     * Creates a new DAFTranscriptionStore instance     */    public DAFTranscriptionStore() {        super();    }    // File lacks println: here we add it.    // TO DO: put this somewhere in mpi.alt    public PrintWriter addPrintln(File f) {        try {            java.io.FileWriter fileWriter1 = new java.io.FileWriter(f);            return new PrintWriter(fileWriter1, true);        } catch (IOException ioe) {            // return null is all we say.        }        return null;    }    /**     * DOCUMENT ME!     *     * @param theTranscription DOCUMENT ME!     * @param encoderInfo DOCUMENT ME!     * @param tierOrder DOCUMENT ME!     * @param pathName DOCUMENT ME!     * @param format DOCUMENT ME!     */    public void storeTranscription(Transcription theTranscription,        EncoderInfo encoderInfo, Vector tierOrder, String pathName, int format) {        // added to stay compatible with ACM22.	    }    /**     * Writes to original file if this.fileToWriteXMLinto is null     *     * @param theTranscription MUST NOT BE NULL     * @param tierOrder DOCUMENT ME!     */    public void storeTranscription(Transcription theTranscription,        EncoderInfo encoderInfo, Vector tierOrder, int format) {        //	System.out.println("DAFTranscriptionStore.storeTranscription called");        //	System.out.println("theTranscription == " + theTranscription.getName());        Hashtable tierElements = new Hashtable(); // for temporary storage of created tier Elements        Hashtable timeSlotIds = new Hashtable(); // for temporary storage of generated tsIds        Hashtable annotationIds = new Hashtable(); // for temporary storage of generated annIds        Vector usedLocales = new Vector(); // for storage of used locales        TranscriptionImpl attisTr = (TranscriptionImpl) theTranscription;        if (attisTr == null) {            System.out.println(                "[[ASSERTION FAILED]] DAFTranscriptionStore/storeTranscription: theTranscription is null");        }        ;        if (attisTr.getMediaObject() == null) {            System.out.println(                "[[ASSERTION FAILED]] DAFTranscriptionStore/storeTranscription: theTranscription.getMediaObject() is null");        }        ;        DAF dafFactory = null;        try {            dafFactory = new DAF();        } catch (Exception ex) {            ex.printStackTrace();        }        // ANNOTATION_DOCUMENT        SimpleDateFormat dateFmt = new SimpleDateFormat("yyyy.MM.dd HH:mm z");        String dateString = dateFmt.format(Calendar.getInstance().getTime());        String author = attisTr.getAuthor();        if (author == null) {            author = "unspecified";        }        String version = "1.0"; // version of DTD/format, not of file. That is handled by 'date'        Element annotDocument = dafFactory.newAnnotationDocument(dateString,                author, version);        dafFactory.appendChild(annotDocument);        // HEADER        Element header = dafFactory.newHeader(attisTr.getMediaObject()                                                     .getMediaURL().toString());        annotDocument.appendChild(header);        // TIME_ORDER        TimeOrder timeOrder = attisTr.getTimeOrder();        // HB, July 19, 2001: cleanup unused TimeSlots first        timeOrder.pruneTimeSlots();        Element timeOrderElement = dafFactory.newTimeOrder();        annotDocument.appendChild(timeOrderElement);        int index = 1;        Enumeration tsElements = timeOrder.elements();        while (tsElements.hasMoreElements()) {            TimeSlot ts = (TimeSlot) tsElements.nextElement();            Element tsElement = null;            String tsId = "ts" + index;            // store ts with it's id temporarily            timeSlotIds.put(ts, tsId);            if (ts.getTime() != TimeSlot.TIME_UNALIGNED) {                tsElement = dafFactory.newTimeSlot(tsId, ts.getTime());            } else {                tsElement = dafFactory.newTimeSlot(tsId);            }            timeOrderElement.appendChild(tsElement);            index++;        }        // TIERS        Vector tiers = attisTr.getTiers();        Vector storeOrder = new Vector(tierOrder); // start with tiers in specified order        Iterator tIter = tiers.iterator();        while (tIter.hasNext()) { // add other tiers in document order            Tier t = (Tier) tIter.next();            if (!storeOrder.contains(t)) {                storeOrder.add(t);            }        }        int annIndex = 1; // used to create annotation id values        Iterator tierIter = storeOrder.iterator();        while (tierIter.hasNext()) {            TierImpl t = (TierImpl) tierIter.next();            String id = t.getName();            String participant = (String) t.getMetadataValue("PARTICIPANT");            String lingType = t.getLinguisticType().getLinguisticTypeName();            if (lingType == null) {                lingType = "not specified";            }            Locale lang = (Locale) t.getMetadataValue("DEFAULT_LOCALE");            if (lang == null) {                lang = new Locale("not specified", "", "");            }            // check is quick solution, TreeSet would do this but compareTo causes ClassCastException            if (!usedLocales.contains(lang)) {                usedLocales.add(lang);            }            String parentName = null;            if (t.getParentTier() != null) {                parentName = t.getParentTier().getName();            }            Element tierElement = dafFactory.newTier(id, participant, lingType,                    lang, parentName);            annotDocument.appendChild(tierElement);            tierElements.put(t.getName(), tierElement); // store for later use            Vector annotations = t.getAnnotations();            Iterator annotIter = annotations.iterator();            while (annotIter.hasNext()) {                Annotation ann = (Annotation) annotIter.next();                annotationIds.put(ann, "a" + annIndex);                annIndex++;            }        }        // ANNOTATIONS        // second pass. Actually creates and adds Annotation Elements        Iterator tierIter2 = storeOrder.iterator();        while (tierIter2.hasNext()) {            TierImpl t = (TierImpl) tierIter2.next();            Vector annotations = t.getAnnotations();            Iterator annotIter2 = annotations.iterator();            while (annotIter2.hasNext()) {                Annotation ann = (Annotation) annotIter2.next();                Element annElement = dafFactory.newAnnotation();                ((Element) tierElements.get(t.getName())).appendChild(annElement);                Element annSubElement = null;                String annId = (String) annotationIds.get(ann);                if (ann instanceof AlignableAnnotation) {                    String beginTsId = (String) timeSlotIds.get(((AlignableAnnotation) ann).getBegin());                    String endTsId = (String) timeSlotIds.get(((AlignableAnnotation) ann).getEnd());                    annSubElement = dafFactory.newAlignableAnnotation(annId,                            beginTsId, endTsId);                } else if (ann instanceof RefAnnotation) {                    String refId = null;                    Vector refs = ((RefAnnotation) ann).getReferences();                    // for the moment, take the first, if it exists                    if (refs.size() > 0) {                        refId = (String) annotationIds.get((Annotation) refs.firstElement());                    }                    annSubElement = dafFactory.newRefAnnotation(annId, refId);                }                annElement.appendChild(annSubElement);                // ANNOTATION_VALUE                Element valueElement = dafFactory.newAnnotationValue(ann.getValue());                annSubElement.appendChild(valueElement);            }        }        // LINGUISTIC_TYPES        Vector lTypes = attisTr.getLinguisticTypes();        if (lTypes != null) {            Iterator typeIter = lTypes.iterator();            while (typeIter.hasNext()) {                // HB, april 24, 2002: for the moment, just store lt name                //	String lt = (String) typeIter.next();                LinguisticType lt = (LinguisticType) typeIter.next();                //	Element typeElement = dafFactory.newLinguisticType(lt);                Element typeElement = dafFactory.newLinguisticType(lt.getLinguisticTypeName());                annotDocument.appendChild(typeElement);            }        }        // LOCALES        Iterator locIter = usedLocales.iterator();        while (locIter.hasNext()) {            Locale l = (Locale) locIter.next();

⌨️ 快捷键说明

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