Wie im Titel erwähnt, muss ich Code-Vervollständigung erweitern, um ein internes ORM zu unterstützen.Erweiterung des Codes zur Unterstützung interner ORM
Es ist so etwas wie ActiveRecords. Bsp .:
@TableName("ONE_MODEL")
public class OneModel extends BaseModel {
}
...
OneModel oneModel = OneModel.getById(1);
Object value = oneModel.get("COLUMN_NAME");
...
Also, bei der Verwendung von Smart-Abschluss, wenn caret zwischen Anführungszeichen innerhalb de .get Methode, zum Beispiel, ich brauche Optionen anzuzeigen Parameter basierend auf den Tabellenspalten.
So etwas ist mit Intellij Plugins möglich?
Ich habe über CompletionContributor gelesen, kann aber nichts über die Möglichkeit finden, die Klasse zu identifizieren, deren Methode aufgerufen wird, es ist Superklasse und es sind Annotationswerte.
Danke, sehr viel, für die ausführliche Antwort. Ich bin Schleife durch Eltern, bis ein PsiMethodCallExpression-Element finden, dann verwende ich die. ResolveMethod(). GetContainingClass(). Aber es erhält die Superklasse BaseModel (wo die .get-Methode deklariert ist), nicht die Unterklasse. Irgendwelche Tipps? – ul1sses
Haben Sie nichts dagegen, schon einen Weg gefunden: ' PsiReferenceExpressionImpl referenceExpression = (PsiReferenceExpressionImpl) parent.getFirstChild(). GetFirstChild(); PsiClassReferenceType classReferenceType = (PsiClassReferenceType) referenceExpression.getType(); ' – ul1sses