Advertisement
Guest User

Untitled

a guest
May 21st, 2014
46
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 3.95 KB | None | 0 0
  1.  
  2. package com.skiwi.tessutils4j.data;
  3.  
  4. import com.skiwi.tessutils4j.Objects;
  5. import java.io.InvalidObjectException;
  6. import java.io.ObjectInputStream;
  7. import java.io.Serializable;
  8. import java.util.ArrayList;
  9. import java.util.List;
  10.  
  11. /**
  12.  *
  13.  * @author Frank van Heeswijk
  14.  */
  15. public class Symbol implements Serializable {
  16.     private static final long serialVersionUID = 23829245030202L;
  17.    
  18.     private final String symbol;
  19.     private final float confidence;
  20.     private final boolean isDropcap;
  21.     private final boolean isSubscript;
  22.     private final boolean isSuperscript;
  23.     private final List<SymbolChoice> symbolChoices;
  24.    
  25.     private Symbol(final String symbol, final float confidence, final boolean isDropcap, final boolean isSubscript, final boolean isSuperscript, final List<SymbolChoice> symbolChoices) {
  26.         this.symbol = Objects.requireNonNull(symbol, "symbol");
  27.         this.confidence = confidence;
  28.         this.isDropcap = isDropcap;
  29.         this.isSubscript = isSubscript;
  30.         this.isSuperscript = isSuperscript;
  31.         this.symbolChoices = Objects.requireNonNull(symbolChoices, "symbolChoices");
  32.     }
  33.    
  34.     public String getSymbol() {
  35.         return symbol;
  36.     }
  37.    
  38.     public float getConfidence() {
  39.         return confidence;
  40.     }
  41.    
  42.     public boolean isDropcap() {
  43.         return isDropcap;
  44.     }
  45.    
  46.     public boolean isSubscript() {
  47.         return isSubscript;
  48.     }
  49.    
  50.     public boolean isSuperscript() {
  51.         return isSuperscript;
  52.     }
  53.    
  54.     public List<SymbolChoice> getSymbolChoices() {
  55.         return symbolChoices;
  56.     }
  57.    
  58.     public static class SymbolBuilder {
  59.         private final String symbol;
  60.         private final float confidence;
  61.         private final boolean isDropcap;
  62.         private final boolean isSubscript;
  63.         private final boolean isSuperscript;
  64.         private final List<SymbolChoice> symbolChoices = new ArrayList<SymbolChoice>();
  65.    
  66.         private SymbolBuilder(final String symbol, final float confidence, final boolean isDropcap, final boolean isSubscript, final boolean isSuperscript) {
  67.             this.symbol = Objects.requireNonNull(symbol, "symbol");
  68.             this.confidence = confidence;
  69.             this.isDropcap = isDropcap;
  70.             this.isSubscript = isSubscript;
  71.             this.isSuperscript = isSuperscript;
  72.         }
  73.        
  74.         public SymbolBuilder addSymbolChoice(final SymbolChoice symbolChoice) {
  75.             symbolChoices.add(Objects.requireNonNull(symbolChoice, "symbolChoice"));
  76.             return this;
  77.         }
  78.        
  79.         public Symbol build() {
  80.             return new Symbol(symbol, confidence, isDropcap, isSubscript, isSuperscript, symbolChoices);
  81.         }
  82.     }
  83.    
  84.     private Object writeReplace() {
  85.         return new SerializationProxy(this);
  86.     }
  87.    
  88.     private void readObject(final ObjectInputStream stream) throws InvalidObjectException {
  89.         throw new InvalidObjectException("Proxy required");
  90.     }
  91.    
  92.     private static class SerializationProxy implements Serializable {
  93.         private static final long serialVersionUID = 49545459839839843L;
  94.        
  95.         private final String symbol;
  96.         private final float confidence;
  97.         private final boolean isDropcap;
  98.         private final boolean isSubscript;
  99.         private final boolean isSuperscript;
  100.         private final List<SymbolChoice> symbolChoices;
  101.        
  102.         private SerializationProxy(final Symbol symbol) {
  103.             this.symbol = symbol.symbol;
  104.             this.confidence = symbol.confidence;
  105.             this.isDropcap = symbol.isDropcap;
  106.             this.isSubscript = symbol.isSubscript;
  107.             this.isSuperscript = symbol.isSuperscript;
  108.             this.symbolChoices = symbol.symbolChoices;
  109.         }
  110.        
  111.         private Object readResolve() {
  112.             return new Symbol(symbol, confidence, isDropcap, isSubscript, isSuperscript, symbolChoices);
  113.         }
  114.     }
  115. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement