2013-06-04 8 views
5

Ich möchte meinen greenDAO-Entitäten einen benutzerdefinierten Code hinzufügen. Ich habe gesehen, dass es so etwas wie geschützte Regionen gibt. Aber ich mag die Idee nicht, die generierten Klassen in mein Git-Repository einzuchecken. Ich möchte die Vererbung dafür verwenden.Hinzufügen von benutzerdefiniertem Code zu greenDAO-Entitäten

d.h. ich habe eine Entität User. Also möchte ich, dass greenDAO eine Klasse namens UserBase generiert. Das möchte ich von User und implementieren eine Methode wie folgt verlängern:

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

Wo first und last sind verwalteten Eigenschaften.

Aber ich habe keine Ahnung, wie greenDAO zu sagen, um die Klasse User anstelle der generierten Einheit UserBase zu verwenden. Gibt es eine Möglichkeit, dies zu tun?

+0

Warum setzen Sie nicht "getFullName" -Methode in UserBase? – AMerle

+0

weil dann muss ich die generierte Datei in meine git einchecken. Aber der größte Teil der Klasse wird erzeugt und muss nicht eingecheckt werden. Sie checken auch nicht in die R.java, nicht wahr? – keineantwort

+0

Nein, aber ich füge meine generierten Klassen hinzu. – AMerle

Antwort

6

fand ich eine Art und Weise, wie dieses Problem zu lösen:

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

So können Sie implementieren, um die UserBase als abstrakte Klasse:

Sie einen Elternteil für jede Entität eingeben.

public abstract class UserBase { 

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

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

Der Nachteil hier ist, dass Sie die generierten Getter als abstrakte Methoden deklarieren müssen, um auf sie zuzugreifen.

+0

Vielen Dank für das Posten! Ich hatte genau das gleiche Problem und das ist GOLD! Ich habe auch versucht, mein Dao zu erweitern, bis du diese Methode veröffentlicht hast. – AutoM8R

7

Der übliche Ansatz besteht in der Verwendung von "keep sections" in den generierten Entitäten. Keep Sections erlauben das Hinzufügen von Mitgliedern und Methoden direkt in der generierten Entität. Überprüfen Sie hier für Details: http://greendao-orm.com/documentation/modelling-entities/

+0

"Keep Abschnitte" oder in MDD Begriffe "geschützte Regionen" haben mehrere Nachteile: * Sie müssen den generierten Code in Sie einchecken vcs * Sie müssen den Code sauber zu halten. Irgendwo muss eine Signatur für den Abschnitt halten sein. Wenn Sie diese Signatur (wie ein Unfall oder eine Code-Formatierung) brechen, verlieren Sie den Code – keineantwort