package com.fitbank.schemautils; import java.util.HashSet; import java.util.Map; import java.util.Set; import com.fitbank.util.CaseInsensitiveMap; import com.fitbank.util.CaseInsensitiveSet; import java.util.Collection; /** * Clase Table. * * @author FitBank */ public class Table { private final Map fields = new CaseInsensitiveMap(); private final Collection primaryKeys = new CaseInsensitiveSet(); private String code = ""; private String name = ""; private String description = ""; /** * Añade un campo a este objeto. * * @param field * Field a ser añadido */ public final void addField(Field field) { fields.put(field.getName(), field); if (field.getPrimaryKey()) { primaryKeys.add(field.getName()); } } /** * Obtiene un campo de este objeto. * * @param name * Nombre del campo * * @return Field obtenido */ public final Field findField(int code) { for (Field field : getFields().values()) { if (Integer.parseInt(field.getCode()) == code) { return field; } } return null; } /** * Obtiene un mapa de los nombres de los fields apuntando al objeto de * fields. * * @return String[] con los nombres de los fields. */ public final Map getFields() { return fields; } /** * Obtiene un mapa con los nombres de las claves primarias en este objeto. * * @return String[] con los nombres de las claves primarias */ public final Collection getPrimaryKeys() { return primaryKeys; } /** * Obtiene un arreglo con los nombres de las claves primarias en este * objeto. * * @return String[] con los nombres de las claves primarias */ public final String[] getPrimaryKeysAsArrayForComboBox() { Set s = new HashSet(); s.add(""); s.addAll(primaryKeys); return s.toArray(new String[] {}); } /** * Cambia el name de este objeto. * * @param name * String con el nuevo name */ public void setName(String name) { this.name = name == null ? "" : name; } /** * Obtiene el name de este objeto. * * @return String con el name */ public String getName() { return name; } /** * Cambia el número de este objeto. * * @param code * String con el nuevo número */ public void setCode(String code) { this.code = code == null ? "" : code; } /** * Obtiene el número de este objeto. * * @return String con el número */ public String getCode() { return code; } /** * Cambia la descripción de este objeto. * * @param description * String con la nueva descripción */ public void setDescription(String description) { this.description = description == null ? "" : description; } /** * Obtiene la descripción de este objeto. * * @return String con la descripción */ public String getDescription() { return description; } }