package com.microsoft.sqlserver.jdbc;
final class StreamTabName extends StreamPacket {
private TDSReader tdsReader;
private TDSReaderMark tableNamesMark;
StreamTabName() {
super(TDS.TDS_TABNAME);
}
void setFromTDS(TDSReader tdsReader) throws SQLServerException {
if (TDS.TDS_TABNAME != tdsReader.readUnsignedByte())
assert false : "Not a TABNAME token";
this.tdsReader = tdsReader;
int tokenLength = tdsReader.readUnsignedShort();
tableNamesMark = tdsReader.mark();
tdsReader.skip(tokenLength);
}
void applyTo(Column[] columns, int numTables) throws SQLServerException {
TDSReaderMark currentMark = tdsReader.mark();
tdsReader.reset(tableNamesMark);
SQLIdentifier[] tableNames = new SQLIdentifier[numTables];
for (int i = 0; i < numTables; i++)
tableNames[i] = tdsReader.readSQLIdentifier();
for (Column col : columns) {
if (col.getTableNum() > 0)
col.setTableName(tableNames[col.getTableNum() - 1]);
}
tdsReader.reset(currentMark);
}
}