Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
wlfxb - a library for creating and processing of TCF data streams. Copyright (C) University of Tübingen. This file is part of wlfxb. This program is free software: you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation, either version 3 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 Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program. If not, see <http://www.gnu.org/licenses/>.
 
 
 package eu.clarin.weblicht.wlfxb.tc.xb;
 
 import java.util.List;
 import java.util.Map;

Author(s):
Yana Panchenko
 
 
     public static final String XML_NAME = "textstructure";
     @XmlElement(name = .)
     private List<TextSpanStoredtspans = new ArrayList<TextSpanStored>();
 
 //    protected void setLayersConnector(TextCorpusLayersConnector connector) {
 //        this.connector = connector;
 //        for (int i = 0; i < tspans.size(); i++) {
 //            TextSpanStored tspan = tspans.get(i);
 //            TextSpanType type = tspan.getType();
 //            if (tspan.startToken != null && tspan.endToken != null) {
 //                int start = connector.tokenId2ItsToken.get(tspan.startToken).getOrder();
 //                int end = connector.tokenId2ItsToken.get(tspan.endToken).getOrder() + 1;
 //                for (int j = start; j < end; j++) {
 //                    connector.token2ItsTextSpans.get(type).put(connector.tokens.get(j), tspan);
 //                }
 //            }
 //        }
 //    }
     
     protected void setLayersConnector(TextCorpusLayersConnector connector) {
         this. = connector;
         for (int i = 0; i < .size(); i++) {
             addToConnector(.get(i), connector);
         }
     }
     
     private void addToConnector(TextSpanStored tspanTextCorpusLayersConnector connector) {
             String type = tspan.getType();
             if (!connector.token2ItsTextSpans.containsKey(type)) {
                     connector.token2ItsTextSpans.put(typenew HashMap<TokenTextSpan>());
             }
             if (tspan.startToken != null && tspan.endToken != null) {
                 int start = connector.tokenId2ItsToken.get(tspan.startToken).getOrder();
                 int end = connector.tokenId2ItsToken.get(tspan.endToken).getOrder() + 1;
                 for (int j = startj < endj++) {
                     connector.token2ItsTextSpans.get(type).put(connector.tokens.get(j), tspan);
                 }
                 if (tspan.getSubspans() != null) {
                     for (TextSpanStored subspan : tspan.getSubspans()) {
                         addToConnector(subspanconnector);
                     }
                 }
             }
     }
 
     protected TextStructureLayerStored() {
     }
 
     protected TextStructureLayerStored(TextCorpusLayersConnector connector) {
         this. = connector;
     }
 
     @Override
    public boolean isEmpty() {
        return .isEmpty();
    }
    @Override
    public int size() {
        return .size();
    }
    @Override
    public TextSpan getSpan(int index) {
        return .get(index);
    }
//    @Override
//    public List<TextSpan> getSpans(Token token) {
//        List<TextSpan> spans = new ArrayList<TextSpan>();
//        for (TextSpanType type : connector.token2ItsTextSpans.keySet()) {
//            Map<Token, TextSpan> tokToSpan = connector.token2ItsTextSpans.get(type);
//            TextSpan span = tokToSpan.get(token);
//            if (span != null) {
//                spans.add(span);
//            }
//        }
//        return spans;
//    }
    
    @Override
    public List<TextSpangetSpans(Token token) {
        List<TextSpanspans = new ArrayList<TextSpan>();
        for (String type : ..keySet()) {
            Map<TokenTextSpantokToSpan = ..get(type);
            TextSpan span = tokToSpan.get(token);
            if (span != null) {
                spans.add(span);
            }
        }
        return spans;
    }
//    @Override
//    public TextSpan getSpan(Token token, TextSpanType type) {
//        Map<Token, TextSpan> tokToSpan = connector.token2ItsTextSpans.get(type);
//        TextSpan span = tokToSpan.get(token);
//        return span;
//    }
    @Override
    public TextSpan getSpan(Token tokenString type) {
        TextSpan span = null;
        Map<TokenTextSpantokToSpan = ..get(type);
        if (tokToSpan != null) {
            span = tokToSpan.get(token);
        }
        return span;
    }
    
//    @Override
//    public List<TextSpan> getSpans(TextSpanType type) {
//        List<TextSpan> spans = new ArrayList<TextSpan>();
//        Map<Token, TextSpan> tokToSpan = connector.token2ItsTextSpans.get(type);
//        spans.addAll(tokToSpan.values());
//        return spans;
//    }
    
    @Override
    public List<TextSpangetSpans(String type) {
        List<TextSpanspans = new ArrayList<TextSpan>();
        Map<TokenTextSpantokToSpan = ..get(type);
        if (tokToSpan != null) {
            spans.addAll(tokToSpan.values());
        }
        return spans;
    }
    @Override
    public Token[] getTokens(TextSpan span) {
        if (span instanceof TextSpanStored) {
            TextSpanStored tspan = (TextSpanStoredspan;
            if (tspan.startToken != null && tspan.startToken != null) {
                int start = ..get(tspan.startToken).getOrder();
                int end = ..get(tspan.endToken).getOrder() + 1;
                Token[] tokens = new Token[end - start];
                for (int i = 0, j = startj < endi++, j++) {
                    tokens[i] = ..get(j);
                }
                return tokens;
            } else {
                return new Token[0];
            }
        } else {
            throw new UnsupportedOperationException(WlfUtilities.layersErrorMessage(TextSpan.classOrthographyLayer.class));
        }
    }
//    @Override
//    public TextSpan addSpan(Token spanStart, Token spanEnd, TextSpanType type) {
//        TextSpanStored tspan = new TextSpanStored();
//        tspan.type = type;
//        if (spanStart != null && spanEnd != null) {
//            tspan.startToken = spanStart.getID();
//            tspan.endToken = spanEnd.getID();
//            int start = connector.tokenId2ItsToken.get(tspan.startToken).getOrder();
//            int end = connector.tokenId2ItsToken.get(tspan.endToken).getOrder() + 1;
//            for (int j = start; j < end; j++) {
//                connector.token2ItsTextSpans.get(type).put(connector.tokens.get(j), tspan);
//            }
//        }
//        tspans.add(tspan);
//        return tspan;
//    }
    
    @Override
    public TextSpan addSpan(Token spanStartToken spanEndString type) {
        return addSpan(spanStartspanEndtypenullnullnull);
    }
    
    @Override
    public TextSpan addSpan(Token spanStartToken spanEndString typeint startCharint endChar) {
        return addSpan(spanStartspanEndtypenullstartCharendChar);
    }
    
    @Override
    public TextSpan addSpan(Token spanStartToken spanEndString typeString value) {
        return addSpan(spanStartspanEndtypevaluenullnull);
    }
    
    private TextSpan addSpan(Token spanStartToken spanEndString typeString valueInteger startCharInteger endChar) {
        TextSpanStored tspan = createTextSpan(spanStartspanEndtypevaluestartCharendChar);
        .add(tspan);
        return tspan;
    }
    
    @Override
    public TextSpan addSpan(TextSpan parentSpanToken spanStartToken spanEndString typethrows WLFormatException {
        return addSpan(parentSpanspanStartspanEndtypenull);
    }
    
    @Override
    public TextSpan addSpan(TextSpan parentSpanToken spanStartToken spanEndString typeint startCharint endCharthrows WLFormatException {
        return addSpan(parentSpanspanStartspanEndtypenullstartCharendChar);
    }
    
    @Override
    public TextSpan addSpan(TextSpan parentSpanToken spanStartToken spanEndString typeString valuethrows WLFormatException {
        return addSpan(parentSpanspanStartspanEndtypevaluenullnull);
    }
    
    private TextSpan addSpan(TextSpan parentSpanToken spanStartToken spanEnd
            String typeString value,
            Integer startCharInteger endCharthrows WLFormatException {
        
        TextSpanStored tspan = createTextSpan(spanStartspanEndtypevaluestartCharendChar);
        
        if (parentSpan == null) {
            .add(tspan);
        } else {
            if (parentSpan.getValue() != null) {
                throw new WLFormatException("The parent " + 
                        TextSpan.class.getSimpleName() + " already has value: " 
                        + parentSpan.getValue() + ". The " + TextSpan.class.getSimpleName() + 
                        "that has value cannot additionally have " + TextSpan.class.getSimpleName() + " subelements");
            }
            
            if (parentSpan instanceof TextSpanStored) {
                TextSpanStored parentSpanStored = (TextSpanStoredparentSpan;
                if (parentSpanStored.subspans == null) {
                    parentSpanStored.subspans = new ArrayList<TextSpanStored>();
                }
                parentSpanStored.subspans.add(tspan);
            }
        }
        return tspan;
    }
    
    private TextSpanStored createTextSpan(Token spanStartToken spanEnd
            String typeString value,
            Integer startCharInteger endChar) {
         
        TextSpanStored tspan = new TextSpanStored();
        tspan.type = type;
        tspan.value = value;
        if (spanStart != null && spanEnd != null) {
            tspan.startToken = spanStart.getID();
            tspan.endToken = spanEnd.getID();
            int start = ..get(tspan.startToken).getOrder();
            int end = ..get(tspan.endToken).getOrder() + 1;
            for (int j = startj < endj++) {
                if (!..containsKey(type)) {
                    ..put(typenew HashMap<TokenTextSpan>());
                }
                ..get(type).put(..get(j), tspan);
            }
        }
        if (startChar != null && endChar != null) {
            tspan.startChar = startChar;
            tspan.endChar = endChar;
        }
        return tspan;
    }
    
    @Override
    public String toString() {
        StringBuilder sb = new StringBuilder();
        sb.append(": ");
        sb.append(.toString());
        return sb.toString();
    }
New to GrepCode? Check out our FAQ X