Open Source Repository

Home /excel/jxl-2.6.12 | Repository Home



jxl/read/biff/SortRecord.java
/*********************************************************************
*
*      Copyright (C) 2004 Andrew Khan, Al Mantei
*
* This library 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 library 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 library; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
***************************************************************************/

package jxl.read.biff;

import jxl.biff.RecordData;
import jxl.biff.StringHelper;
import jxl.biff.Type;

/**
 * A storage area for the last Sort dialog box area
 */
public class SortRecord extends RecordData 
{
  private int col1Size;
  private int col2Size;
  private int col3Size;
  private String col1Name;
  private String col2Name;
  private String col3Name;
  private byte optionFlags;
  private boolean sortColumns = false;
  private boolean sortKey1Desc = false;
  private boolean sortKey2Desc = false;
  private boolean sortKey3Desc = false;
  private boolean sortCaseSensitive = false;
  /**
   * Constructs this object from the raw data
   *
   @param r the raw data
   */
  public SortRecord(Record r
  {
    super(Type.SORT);

    byte[] data = r.getData();

    optionFlags = data[0];

    sortColumns = ((optionFlags & 0x01!= 0);
    sortKey1Desc = ((optionFlags & 0x02!= 0);
    sortKey2Desc = ((optionFlags & 0x04!= 0);
    sortKey3Desc = ((optionFlags & 0x08!= 0);
    sortCaseSensitive = ((optionFlags & 0x10!= 0);

    // data[1] contains sort list index - not implemented...

    col1Size = data[2];
    col2Size = data[3];
    col3Size = data[4];
    int curPos = 5;
    if (data[curPos++== 0x00
    {
      col1Name = new String(data, curPos, col1Size);
      curPos += col1Size;
    }
    else 
    {
      col1Name = StringHelper.getUnicodeString(data, col1Size, curPos);
      curPos += col1Size * 2;
    }

    if (col2Size > 0
    {
      if (data[curPos++== 0x00
      {
        col2Name = new String(data, curPos, col2Size);
        curPos += col2Size;
      
      else 
      {
        col2Name = StringHelper.getUnicodeString(data, col2Size, curPos);
        curPos += col2Size * 2;
      }
    
    else
    {
      col2Name = "";
    }
    if (col3Size > 0
    {
      if (data[curPos++== 0x00
      {
        col3Name = new String(data, curPos, col3Size);
        curPos += col3Size;
      
      else 
      {
        col3Name = StringHelper.getUnicodeString(data, col3Size, curPos);
        curPos += col3Size * 2;
      }
    
    else
    {
      col3Name = "";
    }
  }

  /**
   * Accessor for the 1st Sort Column Name
   *
   @return the 1st Sort Column Name
   */
  public String getSortCol1Name() {
    return col1Name;
  }
  /**
   * Accessor for the 2nd Sort Column Name
   *
   @return the 2nd Sort Column Name
   */
  public String getSortCol2Name() {
    return col2Name;
  }
  /**
   * Accessor for the 3rd Sort Column Name
   *
   @return the 3rd Sort Column Name
   */
  public String getSortCol3Name() {
    return col3Name;
  }
  /**
   * Accessor for the Sort by Columns flag
   *
   @return the Sort by Columns flag
   */
  public boolean getSortColumns() {
    return sortColumns;
  }
  /**
   * Accessor for the Sort Column 1 Descending flag
   *
   @return the Sort Column 1 Descending flag
   */
  public boolean getSortKey1Desc() {
    return sortKey1Desc;
  }
  /**
   * Accessor for the Sort Column 2 Descending flag
   *
   @return the Sort Column 2 Descending flag
   */
  public boolean getSortKey2Desc() {
    return sortKey2Desc;
  }
  /**
   * Accessor for the Sort Column 3 Descending flag
   *
   @return the Sort Column 3 Descending flag
   */
  public boolean getSortKey3Desc() {
    return sortKey3Desc;
  }
  /**
   * Accessor for the Sort Case Sensitivity flag
   *
   @return the Sort Case Secsitivity flag
   */
  public boolean getSortCaseSensitive() {
    return sortCaseSensitive;
  }
}