jxl.read.biff.SortRecord Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of jxl Show documentation
Show all versions of jxl Show documentation
JExcelApi is a java library which provides the ability to read, write, and modify Microsoft Excel spreadsheets.
The newest version!
/*********************************************************************
*
* 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;
}
}