2013-06-04 29 views
5

Chcę dodać niestandardowy kod do moich jednostek greenDAO. Widziałem, że istnieje coś takiego jak chronione regiony. Ale nie podoba mi się pomysł, aby sprawdzić wygenerowane klasy do mojego repozytorium git. Chciałbym użyć do tego dziedziczenia.Dodawanie niestandardowego kodu do elementów greenDAO

tj. Mam podmiot User. Dlatego chcę, aby greenDAO generowało klasę o nazwie UserBase. To chcę przedłużyć przez User i wdraża metodę tak:

public String getFullName() { 
    return this.first + " " + this.last; 
} 

Gdzie first i last zarządzanych nieruchomości.

Ale nie mam pojęcia, jak powiedzieć greenDAO, aby użyć klasy User zamiast wygenerowanej jednostki UserBase. Czy jest jakiś sposób to zrobić?

+0

Dlaczego nie umieścić metody 'getFullName' w UserBase? – AMerle

+0

ponieważ wtedy muszę sprawdzić wygenerowany plik w moim git. Ale największa część klasy jest generowana i nie musi być sprawdzana. Nie sprawdzasz też R.javy, prawda? – keineantwort

+0

nie, ale dodaję wygenerowane przeze mnie klasy. – AMerle

Odpowiedz

6

znalazłem sposób jak rozwiązać ten problem:

można wpisać rodzica dla każdego podmiotu:

Entity user = schema.addEntity("User"); 
... 
user.setSuperclass("UserBase"); 

Więc można wdrożyć UserBase jako abstrakcyjne klasy.

public abstract class UserBase { 

    public String getFullName() { 
    return getFirst() + " " + getLast(); 
    } 

    public abstract int getFirst(); 
    public abstract int getLast(); 
} 

Wadą jest to, że deklarowane generatory należy zadeklarować jako abstrakcyjne metody dostępu do nich.

+0

Dziękujemy za opublikowanie tego! Miałem ten sam dokładny problem i to jest ZŁOTO! Walczyłem również o rozszerzenie mojego Dao, dopóki nie opublikujesz tej metody. – AutoM8R

7

Powszechnym podejściem jest użycie "zachowaj sekcje" w wygenerowanych jednostkach. Zachowaj sekcje, aby dodawać członków i metody bezpośrednio w wygenerowanym obiekcie. Sprawdź tutaj, aby uzyskać szczegółowe informacje: http://greendao-orm.com/documentation/modelling-entities/

+0

"Zachowaj sekcje" lub w terminach MDD "chronione regiony" mają kilka wad: * musisz sprawdzić wygenerowany kod w swoim Vcs * musisz zachować kod w czystości. gdzieś musi być podpis dla sekcji keep. Jeśli złamiesz ten podpis (jak wypadek lub format kodu), stracisz kod – keineantwort

Powiązane problemy