Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
  /* ====================================================================
     Licensed to the Apache Software Foundation (ASF) under one or more
     contributor license agreements.  See the NOTICE file distributed with
     this work for additional information regarding copyright ownership.
     The ASF licenses this file to You under the Apache License, Version 2.0
     (the "License"); you may not use this file except in compliance with
     the License.  You may obtain a copy of the License at
  
         http://www.apache.org/licenses/LICENSE-2.0
 
    Unless required by applicable law or agreed to in writing, software
    distributed under the License is distributed on an "AS IS" BASIS,
    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    See the License for the specific language governing permissions and
    limitations under the License.
 ==================================================================== */
 
 package org.apache.poi.hdf.event;
 
 
 
 
 
 public final class EventBridge implements HDFLowLevelParsingListener
 {
 
   private static int HEADER_EVEN_INDEX = 0;
   private static int HEADER_ODD_INDEX = 1;
   private static int FOOTER_EVEN_INDEX = 2;
   private static int FOOTER_ODD_INDEX = 3;
   private static int HEADER_FIRST_INDEX = 4;
   private static int FOOTER_FIRST_INDEX = 5;

  
This class translates low level events into high level events for this listener
 
stylesheet for this document
 
   StyleSheet _stsh;
  
name says it all
 
StyleDescription for the current paragraph.
 
List info for this doc
 
"WordDocument" from the POIFS
 
   byte[] _mainDocument;
  
Table0 or Table1 from POIFS
 
   byte[] _tableStream;

  
text offset in main stream
 
   int _fcMin;
   int _ccpText;
   int _ccpFtn;
   int _hdrSize;
   int _hdrOffset;

  
text pieces
 
   BTreeSet _text = new BTreeSet();
 
   private boolean _beginHeaders;
   BTreeSet _hdrSections = new BTreeSet();
 
   int _sectionCounter = 1;
   ArrayList _hdrs = new ArrayList();
 
   private boolean _holdParagraph = false;
   private int _endHoldIndex = -1;
   private ArrayList _onHold;
 
   public EventBridge(HDFParsingListener listener)
   {
      = listener;
   }
   public void mainDocument(byte[] mainDocument)
   {
      = mainDocument;
   }
   public void tableStream(byte[] tableStream)
   {
      = tableStream;
   }
   public void miscellaneous(int fcMinint ccpTextint ccpFtnint fcPlcfhddint lcbPlcfhdd)
   {
      = fcMin;
      = ccpText;
      = ccpFtn;
      = fcPlcfhdd;
      = lcbPlcfhdd;
   }
  public void document(DocumentProperties dop)
  {
     = dop;
  }
  public void bodySection(SepxNode sepx)
  {
    .add(hdrArray);
    .section(sepsepx.getStart() - sepx.getEnd() - );
  }
  public void hdrSection(SepxNode sepx)
  {
     = true;
    .add(sepx);
  }
  public void endSections()
  {
    for (int x = 1; x < x++)
    {
      HeaderFooter[] hdrArray = (HeaderFooter[]).get(x-1);
      HeaderFooter hf = null;
      if (!hdrArray[. - 1].isEmpty())
      {
        hf = hdrArray[. - 1];
        .header(x - 1, .);
        flushHeaderProps(hf.getStart(), hf.getEnd());
      }
      if (!hdrArray[. - 1].isEmpty())
      {
        hf = hdrArray[. - 1];
        .header(x - 1, .);
        flushHeaderProps(hf.getStart(), hf.getEnd());
      }
      if (!hdrArray[. - 1].isEmpty())
      {
        hf = hdrArray[. - 1];
        .footer(x - 1, .);
        flushHeaderProps(hf.getStart(), hf.getEnd());
      }
      if (!hdrArray[. - 1].isEmpty())
      {
        hf = hdrArray[. - 1];
        .footer(x - 1, .);
        flushHeaderProps(hf.getStart(), hf.getEnd());
      }
      if (!hdrArray[. - 1].isEmpty())
      {
        hf = hdrArray[. - 1];
        .header(x - 1, .);
        flushHeaderProps(hf.getStart(), hf.getEnd());
      }
      if (!hdrArray[. - 1].isEmpty())
      {
        hf = hdrArray[. - 1];
        .footer(x - 1, .);
        flushHeaderProps(hf.getStart(), hf.getEnd());
      }
    }
  }
  public void paragraph(PapxNode papx)
  {
    if ()
    {
      .add(papx);
    }
    byte[] bytePapx = papx.getPapx();
    int istd = LittleEndian.getShort(bytePapx, 0);
    if (pap.getFTtp() > 0)
    {
      TableProperties tap = (TableProperties)StyleSheet.uncompressProperty(bytePapxnew TableProperties(), );
      .tableRowEnd(tappapx.getStart() - papx.getEnd() - );
    }
    else if (pap.getIlfo() > 0)
    {
       = true;
       = papx.getEnd();
      .add(papx);
    }
    else
    {
      .paragraph(pappapx.getStart() - papx.getEnd() - );
    }
  }
  public void characterRun(ChpxNode chpx)
  {
    if ()
    {
      .add(chpx);
    }
    int start = chpx.getStart();
    int end = chpx.getEnd();
    //check to see if we should hold this characterRun
    if ()
    {
      .add(chpx);
      if (end >= )
      {
         = false;
         = -1;
        flushHeldParagraph();
         = new ArrayList();
      }
    }
    byte[] byteChpx = chpx.getChpx();
    ArrayList textList = BTreeSet.findProperties(startend.);
    String text = getTextFromNodes(textListstartend);
    .characterRun(chptextstart - end - );
  }
  public void text(TextPiece t)
  {
    .add(t);
  }
  public void fonts(FontTable fontTbl)
  {
  }
  public void lists(ListTables listTbl)
  {
     = listTbl;
  }
  public void styleSheet(StyleSheet stsh)
  {
     = stsh;
  }
  private void flushHeaderProps(int startint end)
  {
    ArrayList list = BTreeSet.findProperties(startend.);
    int size = list.size();
    for (int x = 0; x < sizex++)
    {
      SepxNode oldNode = (SepxNode)list.get(x);
      int secStart = Math.max(oldNode.getStart(), start);
      int secEnd = Math.min(oldNode.getEnd(), end);
      //SepxNode node = new SepxNode(-1, secStart, secEnd, oldNode.getSepx());
      //bodySection(node);
      ArrayList parList = BTreeSet.findProperties(secStartsecEnd.);
      int parSize = parList.size();
      for (int y = 0; y < parSizey++)
      {
        PapxNode oldParNode = (PapxNode)parList.get(y);
        int parStart = Math.max(oldParNode.getStart(), secStart);
        int parEnd = Math.min(oldParNode.getEnd(), secEnd);
        PapxNode parNode = new PapxNode(parStartparEndoldParNode.getPapx());
        paragraph(parNode);
        ArrayList charList = BTreeSet.findProperties(parStartparEnd.);
        int charSize = charList.size();
        for (int z = 0; z < charSizez++)
        {
          ChpxNode oldCharNode = (ChpxNode)charList.get(z);
          int charStart = Math.max(oldCharNode.getStart(), parStart);
          int charEnd = Math.min(oldCharNode.getEnd(), parEnd);
          ChpxNode charNode = new ChpxNode(charStartcharEndoldCharNode.getChpx());
          characterRun(charNode);
        }
      }
    }
  }
  private String getTextFromNodes(ArrayList listint startint end)
  {
    int size = list.size();
    StringBuffer sb = new StringBuffer();
    for (int x = 0; x < sizex++)
    {
      TextPiece piece = (TextPiece)list.get(x);
      int charStart = Math.max(startpiece.getStart());
      int charEnd = Math.min(endpiece.getEnd());
      if(piece.usesUnicode())
      {
        for (int y = charStarty < charEndy += 2)
        {
          sb.append((char)LittleEndian.getShort(y));
        }
      }
      else
      {
        for (int y = charStarty < charEndy++)
        {
          sb.append([y]);
        }
      }
    }
    return sb.toString();
  }
  private void flushHeldParagraph()
  {
    PapxNode papx = (PapxNode).get(0);
    byte[] bytePapx = papx.getPapx();
    int istd = LittleEndian.getShort(bytePapx, 0);
    LVL lvl = .getLevel(pap.getIlfo(), pap.getIlvl());
    pap = (ParagraphProperties)StyleSheet.uncompressProperty(lvl._papxpapfalse);
    int size = .size() - 1;
    numChp = (CharacterProperties)StyleSheet.uncompressProperty(lvl._chpxnumChp);
    String bulletText = getBulletText(lvlpap);
    .listEntry(bulletTextnumChppappapx.getStart() - papx.getEnd() - );
    for (int x = 1; x <= sizex++)
    {
    }
  }
  private String getBulletText(LVL lvlParagraphProperties pap)
  {
    StringBuffer bulletBuffer = new StringBuffer();
    for(int x = 0; x < lvl._xst.lengthx++)
    {
      if(lvl._xst[x] < 9)
      {
        LVL numLevel = .getLevel(pap.getIlfo(), lvl._xst[x]);
        int num = numLevel._iStartAt;
        if(lvl == numLevel)
        {
          numLevel._iStartAt++;
        }
        else if(num > 1)
        {
          num--;
        }
        bulletBuffer.append(NumberFormatter.getNumber(numlvl._nfc));
      }
      else
      {
        bulletBuffer.append(lvl._xst[x]);
      }
    }
    switch (lvl._ixchFollow)
    {
      case 0:
        bulletBuffer.append('\u0009');
        break;
      case 1:
        bulletBuffer.append(' ');
        break;
    }
    return bulletBuffer.toString();
  }
  private HeaderFooter[] findSectionHdrFtrs(int index)
  {
    HeaderFooter[] hdrArray = new HeaderFooter[6];
    for (int x = 1; x < 7; x++)
    {
      hdrArray[x-1] = createSectionHdrFtr(indexx);
    }
    return hdrArray;
  }
  private HeaderFooter createSectionHdrFtr(int indexint type)
  {
    if( < 50)
    {
      return new HeaderFooter(0,0,0);
    }
    int start =  +  + ;
    int end = start;
    int arrayIndex = 0;
    switch(type)
    {
      case .:
           arrayIndex = ( + (index * 6));
           break;
      case .:
           arrayIndex = ( + (index * 6));
           break;
      case .:
           arrayIndex = ( + (index * 6));
           break;
      case .:
           arrayIndex = ( + (index * 6));
           break;
      case .:
           arrayIndex = ( + (index * 6));
           break;
      case .:
           arrayIndex = ( + (index * 6));
           break;
    }
    start += LittleEndian.getInt( + (arrayIndex * 4));
    end += LittleEndian.getInt( + (arrayIndex + 1) * 4);
    HeaderFooter retValue = new HeaderFooter(typestartend);
    if((end - start) == 0 && index > 1)
    {
      retValue = createSectionHdrFtr(typeindex - 1);
    }
    return retValue;
  }
New to GrepCode? Check out our FAQ X