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

📄 transcriptioncopier.java

📁 编辑视频文件
💻 JAVA
字号:
/* * File:     TranscriptionCopier.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.imports;import mpi.eudico.client.annotator.util.AnnotationRecreator;import mpi.eudico.client.annotator.util.ClientLogger;import mpi.eudico.client.util.TierTree;import mpi.eudico.server.corpora.clomimpl.abstr.AlignableAnnotation;import mpi.eudico.server.corpora.clomimpl.abstr.MediaDescriptor;import mpi.eudico.server.corpora.clomimpl.abstr.TierImpl;import mpi.eudico.server.corpora.clomimpl.abstr.TranscriptionImpl;import mpi.eudico.server.corpora.clomimpl.type.LinguisticType;import mpi.util.CVEntry;import mpi.util.ControlledVocabulary;import java.util.Enumeration;import java.util.Vector;import javax.swing.tree.DefaultMutableTreeNode;/** * A class for copying a complete transcription. * * @author Han Sloetjes * @version 1.0 */public class TranscriptionCopier implements ClientLogger {    /**     * Creates a new TranscriptionCopier instance     */    public TranscriptionCopier() {    }    /**     * Copies the contents of one transcription to another.<br>     * Note: there may be quite a bit of overlap with classes that copy a tier     * etc.     *     * @param src the source transcription     * @param dest the destination transcription     *     * @throws NullPointerException if any of the arguments is null     */    public void copyTranscription(TranscriptionImpl src, TranscriptionImpl dest) {        if (src == null) {            throw new NullPointerException("Source transcription is null");        }        if (dest == null) {            throw new NullPointerException("Destination transcription is null");        }        copyHeader(src, dest);        copyMediaDescriptors(src, dest);        copyControlledVocabularies(src, dest);        copyLinguisticTypes(src, dest);        copyTiers(src, dest);        copyAnnotations(src, dest);    }    /**     * Copies information stored in the header of an .eaf Currently only the     * author field is copied.     *     * @param src the source transcription     * @param dest the destination transcription     *     * @throws NullPointerException if any of the arguments is null     */    public void copyHeader(TranscriptionImpl src, TranscriptionImpl dest) {        if (src == null) {            throw new NullPointerException("Source transcription is null");        }        if (dest == null) {            throw new NullPointerException("Destination transcription is null");        }        dest.setAuthor(src.getAuthor()); //??    }    /**     * Copies the Media Descriptors.     *     * @param src the source transcription     * @param dest the destination transcription     *     * @throws NullPointerException if any of the arguments is null     */    public void copyMediaDescriptors(TranscriptionImpl src,        TranscriptionImpl dest) {        if (src == null) {            throw new NullPointerException("Source transcription is null");        }        if (dest == null) {            throw new NullPointerException("Destination transcription is null");        }        Vector mediaDescs = src.getMediaDescriptors();        Vector copyDesc = new Vector(mediaDescs.size());        MediaDescriptor srcMd;        MediaDescriptor copyMd;        for (int i = 0; i < mediaDescs.size(); i++) {            srcMd = (MediaDescriptor) mediaDescs.get(i);            copyMd = (MediaDescriptor) srcMd.clone();            copyDesc.add(copyMd);        }        dest.setMediaDescriptors(copyDesc);    }    /**     * Copies the Controlled Vocabularies.     *     * @param src the source transcription     * @param dest the destination transcription     *     * @throws NullPointerException if any of the arguments is null     */    public void copyControlledVocabularies(TranscriptionImpl src,        TranscriptionImpl dest) {        if (src == null) {            throw new NullPointerException("Source transcription is null");        }        if (dest == null) {            throw new NullPointerException("Destination transcription is null");        }        Vector srcCVS = src.getControlledVocabularies();        Vector copyCVS = new Vector(srcCVS.size());        CVEntry[] srcEntries;        ControlledVocabulary cv;        ControlledVocabulary cpCV;        CVEntry srcEntry;        CVEntry cpEntry;        for (int i = 0; i < srcCVS.size(); i++) {            cv = (ControlledVocabulary) srcCVS.get(i);            cpCV = new ControlledVocabulary(cv.getName(), cv.getDescription());            srcEntries = cv.getEntries();            for (int j = 0; j < srcEntries.length; j++) {                srcEntry = srcEntries[j];                cpEntry = new CVEntry(srcEntry.getValue(),                        srcEntry.getDescription());                cpCV.addEntry(cpEntry);            }            copyCVS.add(cpCV);        }        dest.setControlledVocabularies(copyCVS);    }    /**     * Copies the LinguisticTypes.     *     * @param src the source transcription     * @param dest the destination transcription     *     * @throws NullPointerException if any of the arguments is null     */    public void copyLinguisticTypes(TranscriptionImpl src,        TranscriptionImpl dest) {        if (src == null) {            throw new NullPointerException("Source transcription is null");        }        if (dest == null) {            throw new NullPointerException("Destination transcription is null");        }        Vector srcTypes = src.getLinguisticTypes();        Vector destTypes = new Vector(srcTypes.size());        LinguisticType srcLt;        LinguisticType cpLt;        for (int i = 0; i < srcTypes.size(); i++) {            srcLt = (LinguisticType) srcTypes.get(i);            cpLt = new LinguisticType(srcLt.getLinguisticTypeName());            cpLt.setControlledVocabularyName(srcLt.getControlledVocabylaryName());            cpLt.setGraphicReferences(srcLt.hasGraphicReferences());            cpLt.setTimeAlignable(srcLt.isTimeAlignable()); //??            cpLt.addConstraint(srcLt.getConstraints());            destTypes.add(cpLt);        }        dest.setLinguisticTypes(destTypes);    }    /**     * Copies the tiers.     *     * @param src the source transcription     * @param dest the destination transcription     *     * @throws NullPointerException if any of the arguments is null     */    public void copyTiers(TranscriptionImpl src, TranscriptionImpl dest) {        if (src == null) {            throw new NullPointerException("Source transcription is null");        }        if (dest == null) {            throw new NullPointerException("Destination transcription is null");        }        TierImpl srcTier;        TierImpl parTier;        TierImpl cpTier;        String parentName = null;        String typeName = null;        LinguisticType lt;        LinguisticType destLt;        Vector destTypes = dest.getLinguisticTypes();        // create a tree structure of the tiers        TierTree tierTree = new TierTree(src);        DefaultMutableTreeNode root = tierTree.getTree();        Enumeration ten = root.breadthFirstEnumeration();        ten.nextElement(); // skip the empty root        Object next;        DefaultMutableTreeNode node;        while (ten.hasMoreElements()) {            node = (DefaultMutableTreeNode) ten.nextElement();            next = node.getUserObject();            if (next instanceof String) {                srcTier = (TierImpl) src.getTierWithId((String) next);                if (srcTier == null) {                    LOG.warning(                        "A tier could not be found in the source transcription: " +                        next);                    continue;                }                parTier = (TierImpl) srcTier.getParentTier();                if (parTier != null) {                    parentName = parTier.getName();                }                lt = srcTier.getLinguisticType();                typeName = lt.getLinguisticTypeName();                cpTier = null;                if (parTier == null) {                    cpTier = new TierImpl(srcTier.getName(),                            srcTier.getParticipant(), dest, null);                } else {                    parTier = (TierImpl) dest.getTierWithId(parentName);                    if (parTier != null) {                        cpTier = new TierImpl(parTier, srcTier.getName(),                                srcTier.getParticipant(), dest, null);                    } else {                        LOG.warning("The parent tier: " + parentName +                            " for tier: " + cpTier.getName() +                            " was not found in the destination transcription");                    }                }                if (cpTier != null) {                    destLt = null;                    for (int i = 0; i < destTypes.size(); i++) {                        lt = (LinguisticType) destTypes.get(i);                        if (lt.getLinguisticTypeName().equals(typeName)) {                            destLt = lt;                            break;                        }                    }                    if (destLt != null) {                        cpTier.setLinguisticType(destLt);                        // transcription does not perform any checks..                        if (dest.getTierWithId(cpTier.getName()) == null) {                            dest.addTier(cpTier);                            LOG.info("Created and added tier to destination: " +                                cpTier.getName());                        } else {                            LOG.info("Could not add tier to destination: " +                                cpTier.getName() +                                " already exists in the transcription");                        }                    } else {                        LOG.warning("Could not add tier: " + cpTier.getName() +                            " because the Linguistic Type was not found in the destination transcription.");                    }                    cpTier.setDefaultLocale(srcTier.getDefaultLocale());                    cpTier.setAnnotator(srcTier.getAnnotator());                }            } else {                LOG.warning("Unknown object in the tier tree.");            }        }    }    /**     * Copies the annotations.     *     * @param src the source transcription     * @param dest the destination transcription     *     * @throws NullPointerException if any of the arguments is null     */    public void copyAnnotations(TranscriptionImpl src, TranscriptionImpl dest) {        if (src == null) {            throw new NullPointerException("Source transcription is null");        }        if (dest == null) {            throw new NullPointerException("Destination transcription is null");        }        Vector tiers = src.getTiers();        Vector annos;        AlignableAnnotation aa;        DefaultMutableTreeNode annNode;        TierImpl srcTier;        for (int i = 0; i < tiers.size(); i++) {            srcTier = (TierImpl) tiers.get(i);            // only toplevel tiers            if (!srcTier.hasParentTier()) {                annos = srcTier.getAnnotations();                int size = annos.size();                for (int j = 0; j < size; j++) {                    aa = (AlignableAnnotation) annos.get(j);                    annNode = AnnotationRecreator.createTreeForAnnotation(aa);                    AnnotationRecreator.createAnnotationFromTree(dest, annNode);                }            }        }    }}

⌨️ 快捷键说明

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