< 이전 | 다음 >

레코드 작성

이 단원에서는 새 레코드를 작성하고 레코드의 필드 값 지정 방법을 학습합니다.
이 단원의 코드 예제는 사용자가 레코드를 작성할 수 있는 예제를 제공합니다. 초기 대화 상자에서 사용자는 레코드를 작성할 데이터베이스와 작성할 레코드 유형을 선택할 수 있습니다. 레코드가 작성되면 EditRecord 대화 상자가 사용자에게 제시됩니다. 해당 대화 상자에서 사용자는 필수 또는 선택 필드를 설정한 다음 새 레코드를 데이터베이스로 전달할 수 있습니다.
    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,
                                 "Choose a Database for the New Record",
                                 "Create Record",
                                 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)));
            
            // 선택한 데이터베이스에서 모든 레코드 유형 목록을 읽고
            // 제출되지 않은 해당 레코드 유형을 목록에서 제거함.
            ResourceList<CqRecordType> rTypes = 
                setUserFriendlyLocation(userDb.getRecordTypeSet());
            Iterator<CqRecordType> types = rTypes.iterator();
    
            while (types.hasNext()) {
                if (!types.next().getIsSubmittable())
                    types.remove();
            }
    
            // 제출할 수 있는 레코드 유형 목록을 사용자가 선택할 수 있도록 표시함
            //
            CqRecordType recordType = (CqRecordType) JOptionPane
                .showInputDialog(null,
                                 "Choose the type of record to create",
                                 "All Record Types in "
                                     + userDb.location().string(),
                                 JOptionPane.INFORMATION_MESSAGE,
                                 null,
                                 rTypes.toArray(new CqRecordType[] {}),
                                 rTypes.get(0));
    
            if (recordType == null) System.exit(0);
    

            // 새 레코드의 실제 이름은 스키마에서 결정합니다.
            // 레코드를 지정된 레코드 유형의 멤버로
            // 만드는 위치를 "제안"하는 작업만이 필요합니다.
            CqRecord record = cqRecordType.cqProvider().cqRecord((StpLocation) recordType
                .getUserFriendlyLocation().child("new"));
            
            // 레코드를 작성하십시오. 사용자가
            // 필수 필드를 설정할 때까지
            // 전달을 수행하지 마십시오.
            record = record.doCreateRecord(RECORD_PROPERTIES, CqProvider.HOLD);
            
            /*
             * 작성된 레코드를 데이터베이스에 전달한 후에
             * EditRecord 대화 상자의 뷰어에 이를 표시하려 할 수 있습니다.
             * 해당 "원본" 프록시를 작성해야 합니다.
             * 왜냐하면 새 레코드가 작성될 때까지
             * 새 레코드의 올바른 위치가 없기 때문입니다. 고정된 위치를
             * 사용하는 것이 좋습니다. 일부 경우에 필드 값이 변경되면
             * 사용자가 편리한 위치도 변경될 수 있기 때문입니다.
             */
            CqRecord selected = recordType.cqProvider()
                                    .cqRecord(record.getStableLocation());
    
            // 변경 컨텍스트에서 새 레코드를 작성하는 프로세스는
            // 레코드는 편집하는 것과 동일합니다. 사용자가 필수 필드를
            // 작성해야만 전달될 수 있습니다.
            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);
        }
    }
    
    /** 레코드를 작성하기 전에 레코드 유형 특성 읽기 */
    final static PropertyRequest RECORD_TYPE_PROPERTIES =
        new PropertyRequest(CqRecordType.USER_FRIENDLY_LOCATION,
                            CqRecordType.IS_SUBMITTABLE,
                            CqRecordType.DISPLAY_NAME);
일단 새 레코드를 작성하면 Rational® CM API를 사용하여 해당 레코드에서 다른 오퍼레이션을 수행할 수 있습니다. 예를 들어, 결과 세트에 새 레코드를 리턴하는 조회를 실행하여 사용자 데이터베이스에 있는 새 레코드의 유효성을 검증할 수 있습니다.

단원 체크포인트

이제 Rational CM API를 사용하여 사용자 데이터베이스에서 create 오퍼레이션을 수행하는 클라이언트 애플리케이션 조치를 개발하는 방법에 대해 학습했습니다.
이 단원에서는 다음 사항을 학습했습니다.
  • Rational CM API를 사용하여 클라이언트 애플리케이션에서 사용자 데이터베이스에 레코드 및 해당 필드 값과 같은 특성 값과 새 레코드를 작성하는 오퍼레이션 수행

피드백
< 이전 | 다음 >