All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.peekmoon.database.walker.schema.Table Maven / Gradle / Ivy

package org.peekmoon.database.walker.schema;

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;

public class Table {
	
	private final Schema schema;
	private final String name;
	private final List columnNames;
	private PrimaryKey key;

	public Table(Schema schema, String tableName) {
		this.schema = schema;
		this.name = tableName;
		this.columnNames = new ArrayList<>();
	}
	
	public void addColumn(String columnName) {
		columnNames.add(columnName);
	}
	
	public void addPrimaryKey(String primaryKeyName) {
		this.key = new PrimaryKey(primaryKeyName, this);
	}

	public void addPkColumn(String columnName) {
		key.addColumn(columnName);
	}

	public boolean havePrimaryKey(String pkName) {
		return (key!=null && key.isName(pkName));
	}

	public PrimaryKey getPrimaryKey() {
		return key;
	}

	public boolean is(String tableName) {
		return name.equals(tableName);
	}

	public String getName() {
		return name;
	}
	
	public List getColumnNames() {
		return Collections.unmodifiableList(columnNames);
	}

	public Integer getColumnIdx(String columnName) {
		int idx = columnNames.indexOf(columnName);
		if (idx == -1) throw new IllegalStateException("Unable to find column " + columnName + " for table " + name);
		return idx;
	}

	public String getColumnName(int columnIdx) {
		return columnNames.get(columnIdx);
	}
	
	public String getSqlSelect() {
		return "SELECT ROWID, " + String.join(",", columnNames) + " FROM " + name + " ";
	}

	public String getSqlInsert() {
		StringBuilder sb = new StringBuilder(" INSERT INTO ").append(name).append("( ");
		sb.append(String.join(",", columnNames));
		sb.append(") VALUES ( ");
		for (int i=0; i




© 2015 - 2025 Weber Informatics LLC | Privacy Policy