Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
  /*
   * Copyright (C) 2010 eXo Platform SAS.
   *
   * This 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 2.1 of
   * the License, or (at your option) any later version.
   *
   * This software 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 software; if not, write to the Free
  * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
  * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
  */
 
 package org.wikbook.core.model.content.block;
 
 
 import java.util.List;
 import java.util.Map;

Author(s):
Julien Viet
Version:
$Revision$
 
 public class TableElement extends BlockElement
 {
 
    private static class Cell
    {

      
.
 
       private final boolean head;

      
.
 
       private ContentContainer content;

      
.
 
       private ElementContainer<InlineElementinline;
 
       private Cell(boolean head)
       {
          this. = head;
       }
 
       boolean append(DocbookElement elt)
       {
          if (elt instanceof InlineElement)
          {
             if ( != null)
             {
                return .append(elt);
             }
             else
             {
                if ( == null)
                {
                    = new ElementContainer<InlineElement>(InlineElement.class);
                }
                return .append(elt);
             }
          }
          else
          {
             if ( == null)
             {
                if ( == null)
                {
                    = new ContentContainer();
                }
                return .append(elt);
             }
             else
             {
                 = new ContentContainer();
                for (InlineElement i : )
                {
                   .append(i);
                }
                 = null;
                return .append(elt);
             }
          }
       }
       void writeTo(XMLEmitter emitter)
      {
         if ( != null)
         {
            .writeTo(emitter);
         }
         else if ( != null)
         {
            .writeTo(emitter);
         }
      }
   }

   
.
   private LinkedList<LinkedList<Cell>> structure;

   
.
   private final String title;
   public TableElement(String title)
   {
      this. = new LinkedList<LinkedList<Cell>>();
      this. = title;
   }
   public boolean append(DocbookElement elt)
   {
      return .getLast().getLast().append(elt);
   }
   public void doBeginTableRow(Map<StringStringparameters)
   {
      .addLast(new LinkedList<Cell>());
   }
   public void doBeginTableHeadCell(Map<StringStringparameters)
   {
      .getLast().addLast(new Cell(true));
   }
   public void doEndTableHeadCell(Map<StringStringparameters)
   {
   }
   public void doBeginTableCell(Map<StringStringparameters)
   {
      .getLast().addLast(new Cell(false));
   }
   public void doEndTableCell(Map<StringStringparameters)
   {
   }
   public void doEndTableRow(Map<StringStringparameters)
   {
   }
   public void writeTo(XMLEmitter xml)
   {
      XMLEmitter tableXML = xml.element("table");
      //
      if ( != null)
      {
         tableXML.element("title").content();
      }
      // Get column count
      int columnCount = 0;
      for (LinkedList<Cellrow : )
      {
         columnCount = Math.max(columnCountrow.size());
      }
      // Determine potential header
      LinkedList<LinkedList<Cell>> head = new LinkedList<LinkedList<Cell>>();
      for (Iterator<LinkedList<Cell>> i = .iterator();i.hasNext();)
      {
         LinkedList<Cellrow = i.next();
         if (isHead(row))
         {
            head.addLast(row);
            i.remove();
         }
         else
         {
            break;
         }
      }
      // Determine potential footer
      LinkedList<LinkedList<Cell>> foot = new LinkedList<LinkedList<Cell>>();
      {
         LinkedList<Cellrow = i.previous();
         if (isHead(row))
         {
            foot.addFirst(row);
            i.remove();
         }
         else
         {
            break;
         }
      }
      //
      ElementEmitter tgroup = tableXML.element("tgroup").withAttribute("cols""" + columnCount);
      for (List<LinkedList<Cell>> a : Arrays.asList(headfoot))
      {
         if (!a.isEmpty())
         {
            ElementEmitter elementXML;
            if (a == head)
            {
               elementXML = tgroup.element("thead");
            }
            else if (a == )
            {
               elementXML = tgroup.element("tbody");
            }
            else
            {
               elementXML = tgroup.element("tfoot");
            }
            for (LinkedList<Cellrow : a)
            {
               ElementEmitter rowXML = elementXML.element("row");
               for (Cell cell : row)
               {
                  cell.writeTo(rowXML.element("entry"));
               }
            }
         }
      }
   }
   private boolean isHead(LinkedList<Cellrow)
   {
      for (Cell cell : row)
      {
         if (!cell.head)
         {
            return false;
         }
      }
      return true;
   }
New to GrepCode? Check out our FAQ X