use of com.linkedpipes.plugin.transformer.tabularuv.TabularConfig_V2.ColumnType in project googleads-java-lib by googleads.
the class Pql method combineResultSets.
/**
* Combines the first and second result sets, if and only if, the columns of both result sets
* match.
*
* @throws IllegalArgumentException if the columns of the first result set don't match the second
*/
public static ResultSet combineResultSets(ResultSet first, ResultSet second) {
Function<ColumnType, String> columnTypeToString = new Function<ColumnType, String>() {
@Override
public String apply(ColumnType input) {
return input.getLabelName();
}
};
List<String> firstColumns = Lists.transform(Lists.newArrayList(first.getColumnTypes()), columnTypeToString);
List<String> secondColumns = Lists.transform(Lists.newArrayList(second.getColumnTypes()), columnTypeToString);
if (!firstColumns.equals(secondColumns)) {
throw new IllegalArgumentException(String.format("First result set columns [%s] do not match second columns [%s]", Joiner.on(",").join(firstColumns), Joiner.on(",").join(secondColumns)));
}
List<Row> combinedRows = Lists.newArrayList(first.getRows());
if (second.getRows() != null) {
Collections.addAll(combinedRows, second.getRows());
}
ResultSet combinedResultSet = new ResultSet();
combinedResultSet.setColumnTypes(first.getColumnTypes());
combinedResultSet.setRows(combinedRows.toArray(new Row[] {}));
return combinedResultSet;
}
use of com.linkedpipes.plugin.transformer.tabularuv.TabularConfig_V2.ColumnType in project googleads-java-lib by googleads.
the class Pql method combineResultSets.
/**
* Combines the first and second result sets, if and only if, the columns of both result sets
* match.
*
* @throws IllegalArgumentException if the columns of the first result set don't match the second
*/
public static ResultSet combineResultSets(ResultSet first, ResultSet second) {
Function<ColumnType, String> columnTypeToString = new Function<ColumnType, String>() {
@Override
public String apply(ColumnType input) {
return input.getLabelName();
}
};
List<String> firstColumns = Lists.transform(Lists.newArrayList(first.getColumnTypes()), columnTypeToString);
List<String> secondColumns = Lists.transform(Lists.newArrayList(second.getColumnTypes()), columnTypeToString);
if (!firstColumns.equals(secondColumns)) {
throw new IllegalArgumentException(String.format("First result set columns [%s] do not match second columns [%s]", Joiner.on(",").join(firstColumns), Joiner.on(",").join(secondColumns)));
}
List<Row> combinedRows = Lists.newArrayList(first.getRows());
if (second.getRows() != null) {
Collections.addAll(combinedRows, second.getRows());
}
ResultSet combinedResultSet = new ResultSet();
combinedResultSet.setColumnTypes(first.getColumnTypes());
combinedResultSet.setRows(combinedRows.toArray(new Row[] {}));
return combinedResultSet;
}
use of com.linkedpipes.plugin.transformer.tabularuv.TabularConfig_V2.ColumnType in project molgenis-emx2 by molgenis.
the class Emx1 method loadColumns.
private static List<Emx1Attribute> loadColumns(TableStore store, Map<String, Emx1Entity> entities, SchemaMetadata schema) {
// line 1 is header
int line = 2;
List<Emx1Attribute> attributes = new ArrayList<>();
try {
if (store.containsTable("attributes")) {
for (Row row : store.readTable("attributes")) {
attributes.add(new Emx1Attribute(row));
line++;
}
}
// line 1 is header
line = 2;
for (Emx1Attribute attribute : attributes) {
// create the table, if needed
String entityName = attribute.getEntity();
String tableName = getTableName(entities, entityName);
TableMetadata table = schema.getTableMetadata(tableName);
if (table == null) {
table = schema.create(table(tableName));
}
// create the attribute
ColumnType type = getColumnType(attribute.getDataType());
Column column = column(attribute.getName()).setType(type).setRequired(!attribute.getNillable());
// pkey
if (attribute.getIdAttribute()) {
column.setKey(1);
}
table.add(column);
line++;
}
} catch (MolgenisException me) {
throw new MolgenisException(EMX_1_IMPORT_FAILED + me.getMessage() + ". See 'attributes' line " + line, me);
}
return attributes;
}
use of com.linkedpipes.plugin.transformer.tabularuv.TabularConfig_V2.ColumnType in project molgenis-emx2 by molgenis.
the class ArrayTypeTestExample method createSimpleTypeTest.
public static void createSimpleTypeTest(SchemaMetadata schema) {
TableMetadata typeTestTable = schema.create(table("ArrayTypeTest"));
typeTestTable.add(column("id").setPkey());
ColumnType[] columnTypes = new ColumnType[] { UUID_ARRAY, STRING_ARRAY, BOOL_ARRAY, INT_ARRAY, DECIMAL_ARRAY, TEXT_ARRAY, DATE_ARRAY, DATETIME_ARRAY };
for (ColumnType columnType : columnTypes) {
typeTestTable.add(column("Test_" + columnType.toString().toLowerCase()).setType(columnType).setRequired(true));
typeTestTable.add(column("Test_" + columnType.toString().toLowerCase() + "_nillable").setType(columnType));
}
}
use of com.linkedpipes.plugin.transformer.tabularuv.TabularConfig_V2.ColumnType in project molgenis-emx2 by molgenis.
the class Column method getReferences.
/**
* will return self in case of single, and multiple in case of composite key wrapper
*/
public List<Reference> getReferences() {
// no ref
if (getRefTable() == null) {
return new ArrayList<>();
}
List<Column> pkeys = getRefTable().getPrimaryKeyColumns();
List<Reference> refColumns = new ArrayList<>();
// check if primary key exists
if (pkeys.size() == 0) {
throw new MolgenisException("Error in column '" + getName() + "': Reference to " + getRefTableName() + " fails because that table has no primary key");
}
// create the refs
Column refLink = getRefLinkColumn();
for (Column keyPart : pkeys) {
if (keyPart.isReference()) {
for (Reference ref : keyPart.getReferences()) {
ColumnType type = ref.getPrimitiveType();
if (!isRef()) {
type = getArrayType(type);
}
List<String> path = ref.getPath();
path.add(0, keyPart.getName());
String name = null;
if (refLink != null) {
for (Reference overlap : refLink.getReferences()) {
if (overlap.getTargetTable().equals(ref.getTargetTable()) && overlap.getTargetColumn().equals(ref.getTargetColumn())) {
name = overlap.getName();
}
}
}
if (name == null) {
name = getName();
if (pkeys.size() > 1) {
name += COMPOSITE_REF_SEPARATOR + ref.getName();
}
}
refColumns.add(new Reference(this, name, ref.getName(), getColumnType(), type, keyPart.getColumnType().isArray(), ref.getTargetTable(), ref.getTargetColumn(), ref.isRequired() || this.isRequired(), path));
}
} else {
ColumnType type = keyPart.getColumnType();
// all but ref is array
if (!isRef()) {
type = getArrayType(type);
}
// create the ref
String name = getName();
if (pkeys.size() > 1) {
name += COMPOSITE_REF_SEPARATOR + keyPart.getName();
}
refColumns.add(new Reference(this, name, keyPart.getName(), getColumnType(), type, getColumnType().isArray(), getRefTableName(), keyPart.getName(), keyPart.isRequired() || this.isRequired(), new ArrayList<>(List.of(keyPart.getName()))));
}
}
// clean up in case only one
if (refColumns.stream().filter(r -> r.getName().startsWith(getName())).count() == 1) {
refColumns = refColumns.stream().map(r -> {
if (r.getName().startsWith(getName()))
r.setName(getName());
return r;
}).collect(Collectors.toList());
}
// remove duplicates
HashSet<Object> seen = new HashSet<>();
refColumns.removeIf(e -> !seen.add(e.getName()));
return refColumns;
}
Aggregations