first commit
This commit is contained in:
144
hrmsEjb/jxl/read/biff/DateRecord.java
Normal file
144
hrmsEjb/jxl/read/biff/DateRecord.java
Normal file
@@ -0,0 +1,144 @@
|
||||
package jxl.read.biff;
|
||||
|
||||
import common.Assert;
|
||||
import common.Logger;
|
||||
import java.text.DateFormat;
|
||||
import java.text.SimpleDateFormat;
|
||||
import java.util.Date;
|
||||
import java.util.TimeZone;
|
||||
import jxl.CellFeatures;
|
||||
import jxl.CellType;
|
||||
import jxl.DateCell;
|
||||
import jxl.NumberCell;
|
||||
import jxl.biff.FormattingRecords;
|
||||
import jxl.format.CellFormat;
|
||||
|
||||
class DateRecord implements DateCell, CellFeaturesAccessor {
|
||||
private static Logger logger = Logger.getLogger(DateRecord.class);
|
||||
|
||||
private Date date;
|
||||
|
||||
private int row;
|
||||
|
||||
private int column;
|
||||
|
||||
private boolean time;
|
||||
|
||||
private DateFormat format;
|
||||
|
||||
private CellFormat cellFormat;
|
||||
|
||||
private int xfIndex;
|
||||
|
||||
private FormattingRecords formattingRecords;
|
||||
|
||||
private SheetImpl sheet;
|
||||
|
||||
private CellFeatures features;
|
||||
|
||||
private boolean initialized;
|
||||
|
||||
private static final SimpleDateFormat dateFormat = new SimpleDateFormat("dd MMM yyyy");
|
||||
|
||||
private static final SimpleDateFormat timeFormat = new SimpleDateFormat("HH:mm:ss");
|
||||
|
||||
private static final int nonLeapDay = 61;
|
||||
|
||||
private static final TimeZone gmtZone = TimeZone.getTimeZone("GMT");
|
||||
|
||||
private static final int utcOffsetDays = 25569;
|
||||
|
||||
private static final int utcOffsetDays1904 = 24107;
|
||||
|
||||
private static final long secondsInADay = 86400L;
|
||||
|
||||
private static final long msInASecond = 1000L;
|
||||
|
||||
private static final long msInADay = 86400000L;
|
||||
|
||||
public DateRecord(NumberCell num, int xfi, FormattingRecords fr, boolean nf, SheetImpl si) {
|
||||
this.row = num.getRow();
|
||||
this.column = num.getColumn();
|
||||
this.xfIndex = xfi;
|
||||
this.formattingRecords = fr;
|
||||
this.sheet = si;
|
||||
this.initialized = false;
|
||||
this.format = this.formattingRecords.getDateFormat(this.xfIndex);
|
||||
double numValue = num.getValue();
|
||||
if (Math.abs(numValue) < 1.0D) {
|
||||
if (this.format == null)
|
||||
this.format = timeFormat;
|
||||
this.time = true;
|
||||
} else {
|
||||
if (this.format == null)
|
||||
this.format = dateFormat;
|
||||
this.time = false;
|
||||
}
|
||||
if (!nf && !this.time && numValue < 61.0D)
|
||||
numValue++;
|
||||
this.format.setTimeZone(gmtZone);
|
||||
int offsetDays = nf ? 24107 : 25569;
|
||||
double utcDays = numValue - offsetDays;
|
||||
long utcValue = Math.round(utcDays * 86400.0D) * 1000L;
|
||||
this.date = new Date(utcValue);
|
||||
}
|
||||
|
||||
public final int getRow() {
|
||||
return this.row;
|
||||
}
|
||||
|
||||
public final int getColumn() {
|
||||
return this.column;
|
||||
}
|
||||
|
||||
public Date getDate() {
|
||||
return this.date;
|
||||
}
|
||||
|
||||
public String getContents() {
|
||||
return this.format.format(this.date);
|
||||
}
|
||||
|
||||
public CellType getType() {
|
||||
return CellType.DATE;
|
||||
}
|
||||
|
||||
public boolean isTime() {
|
||||
return this.time;
|
||||
}
|
||||
|
||||
public DateFormat getDateFormat() {
|
||||
Assert.verify((this.format != null));
|
||||
return this.format;
|
||||
}
|
||||
|
||||
public CellFormat getCellFormat() {
|
||||
if (!this.initialized) {
|
||||
this.cellFormat = (CellFormat)this.formattingRecords.getXFRecord(this.xfIndex);
|
||||
this.initialized = true;
|
||||
}
|
||||
return this.cellFormat;
|
||||
}
|
||||
|
||||
public boolean isHidden() {
|
||||
ColumnInfoRecord cir = this.sheet.getColumnInfo(this.column);
|
||||
if (cir != null && cir.getWidth() == 0)
|
||||
return true;
|
||||
RowRecord rr = this.sheet.getRowInfo(this.row);
|
||||
if (rr != null && (rr.getRowHeight() == 0 || rr.isCollapsed()))
|
||||
return true;
|
||||
return false;
|
||||
}
|
||||
|
||||
protected final SheetImpl getSheet() {
|
||||
return this.sheet;
|
||||
}
|
||||
|
||||
public CellFeatures getCellFeatures() {
|
||||
return this.features;
|
||||
}
|
||||
|
||||
public void setCellFeatures(CellFeatures cf) {
|
||||
this.features = cf;
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user