package org.gcube.data.analysis.tabulardata.cube.tablemanagers.codelist; import java.util.Collection; import java.util.List; import javax.enterprise.event.Event; import org.gcube.data.analysis.tabulardata.cube.data.DatabaseWrangler; import org.gcube.data.analysis.tabulardata.cube.events.TableCreationEvent; import org.gcube.data.analysis.tabulardata.cube.metadata.CubeMetadataWrangler; import org.gcube.data.analysis.tabulardata.cube.tablemanagers.DefaultTableCreator; import org.gcube.data.analysis.tabulardata.cube.tablemanagers.TableManager; import org.gcube.data.analysis.tabulardata.model.column.Column; import org.gcube.data.analysis.tabulardata.model.column.ColumnType; import org.gcube.data.analysis.tabulardata.model.column.type.CodeColumnType; import org.gcube.data.analysis.tabulardata.model.column.type.CodeDescriptionColumnType; import org.gcube.data.analysis.tabulardata.model.column.type.CodeNameColumnType; import org.gcube.data.analysis.tabulardata.model.column.type.IdColumnType; import org.gcube.data.analysis.tabulardata.model.table.type.CodelistTableType; import com.google.common.collect.Lists; public class CodelistCreator extends DefaultTableCreator { public CodelistCreator(DatabaseWrangler dw, CubeMetadataWrangler cmw, TableManager tm, Event tableCreatedEvent) { super(dw, cmw, tm, new CodelistTableType(), tableCreatedEvent); } private static List indexedColumnTypes = Lists.newArrayList(new IdColumnType(), new CodeColumnType(), new CodeNameColumnType(), new CodeDescriptionColumnType()); @Override protected void addIndexes(String tableName, Collection columns) { for (Column column : columns) { if (indexedColumnTypes.contains(column.getColumnType())) dbWrangler.createIndex(tableName, column.getName()); } } }