투케이2K

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

Android

745. (Android/Java) [Firebase RealDatabase] 파이어베이스 데이터베이스 에 Set 데이터 덮어 쓰기 수행

투케이2K 2024. 3. 19. 20:22
반응형

[개발 환경 설정]

개발 툴 : AndroidStudio

 
 

[소스 코드]

    // -----------------------------------------------------------------------------------------
    // TODO [SEARCH FAST] : [Observable] : [Write] : [기본] 데이터베이스 SET 쓰기
    // -----------------------------------------------------------------------------------------
    // TODO [호출 방법 소스 코드]
    // -----------------------------------------------------------------------------------------
    /*
    // [json 선언]
    JSONObject jsonObject = new JSONObject();
    jsonObject.put("name", "투케이");
    jsonObject.put("age", 30);

    C_FirebaseRealDatabase.observableSetWriteDatabase(A_Webview.this, "testJson", jsonObject.toString())
            .subscribeOn(AndroidSchedulers.mainThread()) // [Observable (생성자) 로직을 IO 스레드에서 실행 : 백그라운드]
            .observeOn(Schedulers.io()) // [Observer (관찰자) 로직을 메인 스레드에서 실행]
            .subscribe(new Observer<Boolean>() { // [Observable.create 타입 지정]
                @Override
                public void onSubscribe(@NonNull Disposable d) {
                }
                @Override
                public void onNext(@NonNull Boolean value) {
                }
                @Override
                public void onError(@NonNull Throwable e) {
                }
                @Override
                public void onComplete() {
                }
            });
    */
    // -----------------------------------------------------------------------------------------
    public static Observable<Boolean> observableSetWriteDatabase(Context mContext, String table, String json){

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

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

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

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

                    // [테이블에 데이터 저장]
                    databaseReference.child(String.valueOf(table)).setValue(String.valueOf(json))
                            .addOnSuccessListener(new OnSuccessListener<Void>() {
                                @Override
                                public void onSuccess(Void aVoid) {
                                    S_Log._F_(mContext, ACTIVITY_NAME + " : [Firebase] [RealDatabase] [onSuccess] - RealDatabase Set Write", null);

                                    subscriber.onNext(true);
                                    subscriber.onComplete();
                                }
                            })
                            .addOnFailureListener(new OnFailureListener() {
                                @Override
                                public void onFailure(@NonNull Exception e) {
                                    S_Log._F_(mContext, ACTIVITY_NAME + " : [Firebase] [RealDatabase] [onFailure] - RealDatabase Set Write", new String[]{ "ERROR :: " + String.valueOf(e.getMessage()) });

                                    subscriber.onNext(false);
                                    subscriber.onComplete();
                                }
                            });

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

                    subscriber.onNext(false);
                    subscriber.onComplete();

                }

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

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

        });
    }
 

[결과 출력]

 

 

반응형
Comments