Alinhamento de linhas JTable

Preencho um JTable com um TableModel personalizado criado por mim, este é o TableModel:

public class TableModelItens extends AbstractTableModel {

    private List<ItemPedidoMOD> itens;
    private String[] colunas = {"Cod.", "Nome", "Valor", "Qtd.", "Valor Total"};
    private final int COD = 0;
    private final int NOME = 1;
    private final int VALOR = 2;
    private final int QTD = 3;
    private final int VALOR_TOTAL = 4;

    public TableModelItens() {
        itens = new ArrayList<>();
    }

    @Override
    public int getRowCount() {
        return itens.size();
    }

    @Override
    public int getColumnCount() {
        return colunas.length;
    }

    @Override
    public String getColumnName(int column) {
        return colunas[column];
    }

    @Override
    public Object getValueAt(int rowIndex, int columnIndex) {
        ItemPedidoMOD i = itens.get(rowIndex);

        switch (columnIndex) {
            case COD:
                return i.getProduto().getId();
            case NOME:
                return i.getProduto().getNome();
            case VALOR:
                return FormatarValores.formatarMonetario(i.getProduto().getValorUnit());
            case QTD:
                return FormatarValores.formatarDecimal(i.getQtd());
            case VALOR_TOTAL:
                return FormatarValores.formatarMonetario(i.getValorTotal());
            default:
                throw new RuntimeException("Coluna inexistente");
        }
    }

    @Override
    public boolean isCellEditable(int rowIndex, int columnIndex) {
        return false;
    }

    @Override
    public Class<?> getColumnClass(int columnIndex) {
        switch (columnIndex) {
            case COD:
                return Integer.class;
            case NOME:
                return String.class;
            case VALOR:
                return String.class;
            case QTD:
                return String.class;
            case VALOR_TOTAL:
                return String.class;
            default:
                throw new RuntimeException("Coluna inexistente");
        }
    }

    // MANIPULAÇÃO DE DADOS
    public void addItem(ItemPedidoMOD i) {
        itens.add(i);
        atualizar();
    }

    public void addListItens(List<ItemPedidoMOD> itens) {
        this.itens.addAll(itens);
        atualizar();
    }

    public ItemPedidoMOD getItemByIndice(int indice) {
        return itens.get(indice);
    }

    public void limpar() {
        itens.clear();
        atualizar();
    }

    public void alterarItem(ItemPedidoMOD i, int index) {
        itens.set(index, i);
        atualizar();
    }

    public void removerItem(int index) {
        itens.remove(index);
        atualizar();
    }

    private void atualizar() {
        fireTableDataChanged();
    }

}

A situação é a seguinte, minha classe ItemPedidoMOD tem um atributo chamado tipo. Existem 2 tipos - CC e CI.

caso for CC eu quero alinha a linha do JTable a esquerda, e caso for CI preciso alinha a linha a direita e pintar a letra de vermelho.

Tem como fazer isso?