투케이2K

746. (Android/Java) [Firebase RealDatabase] 파이어베이스 데이터베이스 에 Set 데이터 Read 읽기 수행 본문

Android

746. (Android/Java) [Firebase RealDatabase] 파이어베이스 데이터베이스 에 Set 데이터 Read 읽기 수행

투케이2K 2024. 3. 19. 20:43

[개발 환경 설정]

개발 툴 : AndroidStudio

 
 

[소스 코드]

    // -----------------------------------------------------------------------------------------
    // TODO [SEARCH FAST] : [Observable] : [Read] : [기본] 데이터베이스 SET 읽기
    // -----------------------------------------------------------------------------------------
    // TODO [호출 방법 소스 코드]
    // -----------------------------------------------------------------------------------------
    /*
    C_FirebaseRealDatabase.observableSetReadDatabase(A_Webview.this, "testUser")
            .subscribeOn(AndroidSchedulers.mainThread()) // [Observable (생성자) 로직을 IO 스레드에서 실행 : 백그라운드]
            .observeOn(Schedulers.io()) // [Observer (관찰자) 로직을 메인 스레드에서 실행]
            .subscribe(new Observer<String>() { // [Observable.create 타입 지정]
                @Override
                public void onSubscribe(@NonNull Disposable d) {
                }
                @Override
                public void onNext(@NonNull String value) {
                }
                @Override
                public void onError(@NonNull Throwable e) {
                }
                @Override
                public void onComplete() {
                }
            });
    */
    // -----------------------------------------------------------------------------------------
    public static Observable<String> observableSetReadDatabase(Context mContext, String table){

        // [로직 처리 실시]
        return Observable.create(subscriber -> {

            try {
                S_Log._F_(mContext, ACTIVITY_NAME + " : [Firebase] [RealDatabase] 데이터베이스 SET 읽기 수행", new String[]{ "TABLE :: " + String.valueOf(table) });

                // TODO [방어 로직] : 널 체크
                if (C_Util.stringNotNull(table) == true){

                    FirebaseDatabase database = FirebaseDatabase.getInstance(); // [인스턴스 생성]
                    DatabaseReference databaseReference = database.getReference();

                    // [테이블 데이터 읽기]
                    databaseReference.child(String.valueOf(table)).get().addOnCompleteListener(new OnCompleteListener<DataSnapshot>() {
                        @Override
                        public void onComplete(@NonNull Task<DataSnapshot> task) {
                            if (!task.isSuccessful()) {
                                S_Log._F_(mContext, ACTIVITY_NAME + " : [Firebase] [RealDatabase] [Read] [onFailure] - RealDatabase Set Read", new String[]{ "ERROR :: Input Data Is Null" });

                                subscriber.onNext("");
                                subscriber.onComplete();
                            }
                            else {
                                S_Log._F_(mContext, ACTIVITY_NAME + " : [Firebase] [RealDatabase] [Read] [onSuccess] - RealDatabase Set Read", new String[]{String.valueOf(task.getResult().getValue())});

                                subscriber.onNext(String.valueOf(task.getResult().getValue()));
                                subscriber.onComplete();
                            }
                        }
                    });

                }
                else {
                    S_Log._F_(mContext, ACTIVITY_NAME + " : [Firebase] [RealDatabase] [Read] [Error] - RealDatabase Set Connection", new String[]{ "ERROR :: Input Data Is Null" });

                    subscriber.onNext("");
                    subscriber.onComplete();

                }

            } catch (final Exception e){
                S_Log._printStackTrace_(mContext, ACTIVITY_NAME + " : [Firebase] [RealDatabase Set] [Read] [Exception]", null, e);

                // ------------------------------------------------------
                // TODO [리턴 데이터 반환]
                // ------------------------------------------------------
                try {
                    subscriber.onNext("");
                    subscriber.onComplete();
                }
                catch (Exception ex){
                    ex.printStackTrace();
                }
            }

        });
    }
 

[결과 출력]


반응형
Comments