< Anterior | Próximo >

Criando um registro

Nesta lição, você aprende como criar um novo registro e especificar valores de campo do registro.
O exemplo de código nesta lição fornece um exemplo para permitir que um usuário crie um registro. Diálogos iniciais permitem que o usuário selecione o banco de dados no qual criar o registro e o tipo de registro a criar. Depois que o registro é criado, é apresentado o diálogo EditRecord ao usuário. Nesse diálogo, o usuário pode definir campos obrigatórios e opcionais e, em seguida, entregar o novo registro ao banco de dados.
    public static void main(String[] args)
    {
        try {
            CqProvider provider = Utilities.getProvider().cqProvider();
            Viewer viewer = new Viewer(provider);
            ResourceList<CqUserDb> databases = Utilities.getUserDbList(provider, null);
            CqUserDb userDb = (CqUserDb) JOptionPane
                .showInputDialog(null,
                                 "Escolher um Banco de Dados para o Novo Registro",
                                 "Criar Registro",
                                 JOptionPane.INFORMATION_MESSAGE,
                                 null,
                                 databases.toArray(new Object[] {}),
                                 databases.get(0));
    
            if (userDb == null) System.exit(0);
            
            userDb = (CqUserDb) userDb
                .doReadProperties(new PropertyRequest(CqUserDb.RECORD_TYPE_SET
                                                .nest(RECORD_TYPE_PROPERTIES)));
            
            // Leia a lista de todos os tipos de registros do banco de dados selecionado e
            // remova dessa lista aqueles tipos de registros que não sejam enviáveis.
            ResourceList<CqRecordType> rTypes =
                setUserFriendlyLocation(userDb.getRecordTypeSet());
            Iterator<CqRecordType> types = rTypes.iterator();
    
            while (types.hasNext()) {
                if (!types.next().getIsSubmittable())
                    types.remove();
            }
    
            // Apresentar a lista de tipos de registro enviáveis para o usuário para
            // seleção
            CqRecordType recordType = (CqRecordType) JOptionPane
                .showInputDialog(null,
                                 "Escolher o tipo de registro a criar",
                                 "Todos os tipos de registros em "
                                     + userDb.location().string(),
                                 JOptionPane.INFORMATION_MESSAGE,
                                 null,
                                 rTypes.toArray(new CqRecordType[] {}),
                                 rTypes.get(0));
    
            if (recordType == null) System.exit(0);
    

            // O nome real do novo registro é deteminado pelo
            // esquema. Tudo o que é necessário aqui é um local "sugerido"
            // que torne o registro um membro do tipo de registro especificado.
            CqRecord record = cqRecordType.cqProvider().cqRecord((StpLocation) recordType
                .getUserFriendlyLocation().child("new"));
            
            // Criar o registro. Não tente entregá-lo ainda, já que o campo obrigatório
            // pode precisar ser configurado pelo usuário antes da entrega
            // ocorrer.
            record = record.doCreateRecord(RECORD_PROPERTIES, CqProvider.HOLD);
            
            /*
             * Depois de entregar o registro criado para seu banco de dados, o
             * O diálogo EditRecord tentará exibi-lo novamente em seu próprio visualizador.
             * Nós precisamos criar este proxy "original" depois do fato
             * porque nós não temos um local válido para o novo registro até
             * depois de ele ter sido criado. Necessário usar o local estável
             * porque, em alguns casos, o local fácil e simples pode mudar
             * quando valores do campo forem alterados.
             */
            CqRecord selected = recordType.cqProvider()
                                    .cqRecord(record.getStableLocation());
    
            // Com o novo registro criado no contexto de mudança, o processo
            // prossegue da mesma maneira que na edição de um registro. 
            // Campos obrigatórios devem ser fornecidos pelo usuário e, em seguida, ele pode ser entregue.
            viewer.editRecord("Create Record ", record, selected)
                .setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        } catch (Throwable ex) {
            ex.printStackTrace();
            Utilities.exception(null, "Create Record", ex);
            System.exit(0);
        }
    }
    
    /** As propriedades do tipo de registro lidas antes de criar um registro */
    final static PropertyRequest RECORD_TYPE_PROPERTIES =
        new PropertyRequest(CqRecordType.USER_FRIENDLY_LOCATION,
                            CqRecordType.IS_SUBMITTABLE,
                            CqRecordType.DISPLAY_NAME);
Depois de ter criado um novo registro, é possível executar outras operações nele usando o Rational CM API. Por exemplo, é possível validar se o novo registro está no banco de dados do usuário executando uma consulta que retorne um novo registro no conjunto de resultados.

Ponto de verificação da lição

Agora você aprendeu a usar o Rational CM API para desenvolver ações do aplicativo do cliente que executem operações criar em um banco de dados do usuário.
Nesta lição, você aprendeu o seguinte:
  • Sobre a utilização do Rational CM API para executar operações para criar novos recursos e valores de propriedades como um registro e seus valores de campo em um banco de dados do usuário a partir de um aplicativo do cliente.
< Anterior | Próximo >

Feedback