use of org.teiid.metadata.Column in project teiid by teiid.
the class MockConnector method createResultSetExecution.
@Override
public ResultSetExecution createResultSetExecution(QueryExpression query, ExecutionContext executionContext, RuntimeMetadata metadata, Object connection) throws TranslatorException {
Properties groupProps = new Properties();
// $NON-NLS-1$ //$NON-NLS-2$
groupProps.setProperty("customName", "CustomTableA");
NamedTable group = (NamedTable) query.getProjectedQuery().getFrom().get(0);
AbstractMetadataRecord groupMD = group.getMetadataObject();
TestCase.assertEquals(groupProps, groupMD.getProperties());
DerivedColumn symbl = query.getProjectedQuery().getDerivedColumns().get(0);
ColumnReference element = (ColumnReference) symbl.getExpression();
Column elementMD = element.getMetadataObject();
Properties elementProps = new Properties();
// $NON-NLS-1$ //$NON-NLS-2$
elementProps.setProperty("customPosition", "11");
TestCase.assertEquals(0, elementMD.getLength());
// $NON-NLS-1$
TestCase.assertEquals("Foo", elementMD.getDefaultValue());
// $NON-NLS-1$
TestCase.assertEquals("TrimNulls", elementMD.getFormat());
TestCase.assertEquals(String.class, elementMD.getJavaType());
TestCase.assertEquals(null, elementMD.getMaximumValue());
TestCase.assertEquals(null, elementMD.getMinimumValue());
// $NON-NLS-1$
TestCase.assertEquals("COLUMN1", elementMD.getNameInSource());
// $NON-NLS-1$
TestCase.assertEquals("STR", elementMD.getNativeType());
TestCase.assertEquals(NullType.Nullable, elementMD.getNullType());
TestCase.assertEquals(0, elementMD.getPosition());
TestCase.assertEquals(0, elementMD.getPrecision());
TestCase.assertEquals(0, elementMD.getScale());
TestCase.assertEquals(SearchType.Searchable, elementMD.getSearchType());
TestCase.assertEquals(false, elementMD.isAutoIncremented());
TestCase.assertEquals(true, elementMD.isCaseSensitive());
TestCase.assertEquals(elementProps, elementMD.getProperties());
DerivedColumn symbl2 = query.getProjectedQuery().getDerivedColumns().get(1);
ColumnReference element2 = (ColumnReference) symbl2.getExpression();
Column elementMD2 = element2.getMetadataObject();
Properties elementProps2 = new Properties();
// $NON-NLS-1$ //$NON-NLS-2$
elementProps2.setProperty("customPosition", "12");
TestCase.assertEquals(10, elementMD2.getLength());
// $NON-NLS-1$
TestCase.assertEquals("23", elementMD2.getDefaultValue());
// $NON-NLS-1$
TestCase.assertEquals("YesFormat", elementMD2.getFormat());
TestCase.assertEquals(Integer.class, elementMD2.getJavaType());
// $NON-NLS-1$
TestCase.assertEquals("1", elementMD2.getMaximumValue());
// $NON-NLS-1$
TestCase.assertEquals("100", elementMD2.getMinimumValue());
// $NON-NLS-1$
TestCase.assertEquals("COLUMN2", elementMD2.getNameInSource());
// $NON-NLS-1$
TestCase.assertEquals("INT", elementMD2.getNativeType());
TestCase.assertEquals(NullType.No_Nulls, elementMD2.getNullType());
TestCase.assertEquals(1, elementMD2.getPosition());
TestCase.assertEquals(0, elementMD2.getPrecision());
TestCase.assertEquals(10, elementMD2.getScale());
TestCase.assertEquals(SearchType.Searchable, elementMD2.getSearchType());
TestCase.assertEquals(true, elementMD2.isAutoIncremented());
TestCase.assertEquals(false, elementMD2.isCaseSensitive());
TestCase.assertEquals(elementProps2, elementMD2.getProperties());
ResultSetExecution exec = Mockito.mock(ResultSetExecution.class);
Mockito.stub(exec.next()).toReturn(null);
return exec;
}
use of org.teiid.metadata.Column in project teiid by teiid.
the class TestMetadataObject method helpTestGroupID.
public void helpTestGroupID(String fullGroupName, String shortGroupName, int elementCount, TranslationUtility transUtil) throws Exception {
Table groupID = getGroupID(fullGroupName, transUtil);
assertEquals(fullGroupName, groupID.getFullName());
assertEquals(shortGroupName, groupID.getName());
// Check children
List<Column> children = groupID.getColumns();
assertEquals(elementCount, children.size());
for (Column element : children) {
assertEquals(groupID, element.getParent());
assertTrue(element.getFullName().startsWith(groupID.getFullName()));
}
}
use of org.teiid.metadata.Column in project teiid by teiid.
the class ExcelMetadataProcessor method addTable.
private void addTable(MetadataFactory mf, Sheet sheet, String xlsName, String originalName) {
int firstRowNumber = sheet.getFirstRowNum();
Row headerRow = null;
int firstCellNumber = -1;
if (this.hasHeader) {
headerRow = sheet.getRow(this.headerRowNumber);
if (headerRow != null) {
firstRowNumber = this.headerRowNumber;
firstCellNumber = headerRow.getFirstCellNum();
if (firstCellNumber == -1) {
LogManager.logInfo(LogConstants.CTX_CONNECTOR, ExcelPlugin.Util.gs(ExcelPlugin.Event.TEIID23006, xlsName));
return;
}
}
}
if (headerRow == null) {
while (firstCellNumber == -1) {
headerRow = sheet.getRow(firstRowNumber++);
// check if this is a empty sheet; the data must be present in first 10000 rows
if (headerRow == null && firstRowNumber > 10000) {
return;
}
if (headerRow == null) {
continue;
}
firstCellNumber = headerRow.getFirstCellNum();
}
}
// create a table for each sheet
AtomicInteger columnCount = new AtomicInteger();
Table table = mf.addTable(sheet.getSheetName());
table.setNameInSource(sheet.getSheetName());
table.setProperty(ExcelMetadataProcessor.FILE, originalName);
// add implicit row_id column based on row number from excel sheet
Column column = mf.addColumn(ROW_ID, TypeFacility.RUNTIME_NAMES.INTEGER, table);
column.setSearchType(SearchType.All_Except_Like);
column.setProperty(CELL_NUMBER, ROW_ID);
// $NON-NLS-1$
mf.addPrimaryKey("PK0", Arrays.asList(ROW_ID), table);
column.setUpdatable(false);
Row dataRow = null;
int lastCellNumber = headerRow.getLastCellNum();
// then only count cells that have a non-empty value.
if (this.hasHeader && !getIgnoreEmptyHeaderCells()) {
int cellCounter = 0;
for (int i = firstCellNumber; i < lastCellNumber; i++) {
Cell headerCell = headerRow.getCell(i);
if (isCellEmpty(headerCell)) {
// found a cell with no column name that will be the last cell.
break;
}
cellCounter++;
}
lastCellNumber = cellCounter + firstCellNumber;
}
if (this.hasDataRowNumber) {
// adjust for zero index
table.setProperty(ExcelMetadataProcessor.FIRST_DATA_ROW_NUMBER, String.valueOf(this.dataRowNumber + 1));
dataRow = sheet.getRow(this.dataRowNumber);
} else if (this.hasHeader) {
// +1 zero based, +1 to skip header
table.setProperty(ExcelMetadataProcessor.FIRST_DATA_ROW_NUMBER, String.valueOf(firstRowNumber + 2));
dataRow = sheet.getRow(firstRowNumber + 1);
} else {
// +1 already occurred because of the increment above
table.setProperty(ExcelMetadataProcessor.FIRST_DATA_ROW_NUMBER, String.valueOf(firstRowNumber));
dataRow = sheet.getRow(firstRowNumber);
}
if (firstCellNumber != -1) {
for (int j = firstCellNumber; j < lastCellNumber; j++) {
Cell headerCell = headerRow.getCell(j);
// cell has a value, if not move on to the next column in the sheet.
if (this.hasHeader && getIgnoreEmptyHeaderCells() && isCellEmpty(headerCell)) {
continue;
}
Cell dataCell = dataRow.getCell(j);
// if the cell value is null; then advance the data row cursor to to find it
if (dataCell == null) {
for (int rowNo = firstRowNumber + 1; rowNo < firstRowNumber + 10000; rowNo++) {
Row row = sheet.getRow(rowNo);
dataCell = row.getCell(j);
if (dataCell != null) {
break;
}
}
}
column = mf.addColumn(cellName(headerCell, columnCount), cellType(headerCell, dataCell), table);
column.setSearchType(SearchType.Unsearchable);
column.setProperty(ExcelMetadataProcessor.CELL_NUMBER, String.valueOf(j + 1));
}
}
}
use of org.teiid.metadata.Column in project teiid by teiid.
the class ExcelQueryVisitor method visit.
@Override
public void visit(In obj) {
visitNode(obj.getLeftExpression());
Column column = (Column) this.onGoingExpression.pop();
visitNodes(obj.getRightExpressions());
if (isPartOfPrimaryKey(column)) {
ArrayList<Integer> values = new ArrayList<Integer>();
// NOTE: we are popping in reverse order to IN stmt
for (int i = 0; i < obj.getRightExpressions().size(); i++) {
values.add((Integer) this.onGoingExpression.pop());
}
this.filters.add(new InFilter(values.toArray(new Integer[values.size()])));
} else {
this.exceptions.add(new TranslatorException(ExcelPlugin.Event.TEIID23008, ExcelPlugin.Util.gs(ExcelPlugin.Event.TEIID23008, column.getName())));
}
}
use of org.teiid.metadata.Column in project teiid by teiid.
the class ExcelQueryVisitor method visit.
@Override
public void visit(Comparison obj) {
visitNode(obj.getLeftExpression());
Column column = (Column) this.onGoingExpression.pop();
visitNode(obj.getRightExpression());
Integer rightExpr = (Integer) this.onGoingExpression.pop();
if (isPartOfPrimaryKey(column)) {
switch(obj.getOperator()) {
case EQ:
this.filters.add(new CompareFilter(rightExpr - 1, Operator.EQ));
break;
case NE:
this.filters.add(new CompareFilter(rightExpr - 1, Operator.NE));
break;
case LT:
this.filters.add(new CompareFilter(rightExpr - 1, Operator.LT));
break;
case LE:
this.filters.add(new CompareFilter(rightExpr - 1, Operator.LE));
break;
case GT:
this.filters.add(new CompareFilter(rightExpr - 1, Operator.GT));
break;
case GE:
this.filters.add(new CompareFilter(rightExpr - 1, Operator.GE));
break;
}
} else {
this.exceptions.add(new TranslatorException(ExcelPlugin.Event.TEIID23008, ExcelPlugin.Util.gs(ExcelPlugin.Event.TEIID23008, column.getName())));
}
}
Aggregations