Skip to content

Commit ca28b2c

Browse files
authored
Merge pull request #195 from cedricziel/complete-extbase-foo
Cleanup Extbase completion contributors
2 parents 6d81827 + 86cfdf7 commit ca28b2c

File tree

11 files changed

+284
-262
lines changed

11 files changed

+284
-262
lines changed

build.gradle

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ group 'com.cedricziel'
4545
version gitVersion()
4646

4747
wrapper {
48-
gradleVersion '4.3.1'
48+
gradleVersion '4.8'
4949
}
5050

5151
test.testLogging.exceptionFormat = TestExceptionFormat.FULL

gradle/wrapper/gradle-wrapper.jar

-25 Bytes
Binary file not shown.
Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
1-
#Sun Dec 03 10:58:46 CET 2017
1+
#Thu Jun 21 19:41:57 CEST 2018
22
distributionBase=GRADLE_USER_HOME
33
distributionPath=wrapper/dists
44
zipStoreBase=GRADLE_USER_HOME
55
zipStorePath=wrapper/dists
6-
distributionUrl=https\://services.gradle.org/distributions/gradle-4.3.1-all.zip
6+
distributionUrl=https\://services.gradle.org/distributions/gradle-4.8-all.zip

src/main/java/com/cedricziel/idea/typo3/extbase/ExtbaseUtils.java

Lines changed: 43 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,18 +4,39 @@
44
import com.intellij.psi.PsiElement;
55
import com.jetbrains.php.PhpClassHierarchyUtils;
66
import com.jetbrains.php.PhpIndex;
7+
import com.jetbrains.php.lang.psi.elements.Field;
8+
import com.jetbrains.php.lang.psi.elements.Method;
79
import com.jetbrains.php.lang.psi.elements.PhpClass;
810
import com.jetbrains.php.lang.psi.elements.PhpClassMember;
911
import org.jetbrains.annotations.NotNull;
1012
import org.jetbrains.annotations.Nullable;
1113

14+
import java.util.Arrays;
1215
import java.util.Collection;
1316
import java.util.Iterator;
1417

15-
import static com.cedricziel.idea.typo3.extbase.persistence.ExtbasePersistenceCompletionContributor.ExtbaseRepositoryMagicMethodsCompletionProvider.TYPO3_CMS_EXTBASE_PERSISTENCE_REPOSITORY;
16-
1718
public class ExtbaseUtils {
18-
public static final String TYPO3_CMS_EXTBASE_DOMAIN_OBJECT_ABSTRACT_ENTITY = "TYPO3\\CMS\\Extbase\\DomainObject\\AbstractEntity";
19+
public static final String EXTBASE_ABSTRACT_ENTITY_FQN = "TYPO3\\CMS\\Extbase\\DomainObject\\AbstractEntity";
20+
21+
public static String EXTBASE_QUERY_INTERFACE_FQN = "TYPO3\\CMS\\Extbase\\Persistence\\QueryInterface";
22+
23+
public static String[] EXTBASE_QUERY_BUILDER_METHODS = {
24+
"equals",
25+
"like",
26+
"contains",
27+
"in",
28+
"lessThan",
29+
"lessThanOrEqual",
30+
"greaterThan",
31+
"greaterThanOrEqual",
32+
"isEmpty",
33+
};
34+
35+
public static final String OBJECT_STORAGE_FQN = "TYPO3\\CMS\\Extbase\\Persistence\\ObjectStorage";
36+
37+
public static final String TYPO3_CMS_EXTBASE_PERSISTENCE_REPOSITORY = "TYPO3\\CMS\\Extbase\\Persistence\\Repository";
38+
39+
public static final String QUERY_RESULT_INTERFACE = "TYPO3\\CMS\\Extbase\\Persistence\\QueryResultInterface";
1940

2041
public static final String[] NON_QUERYABLE_ENTITY_FIELDS = {
2142
"_isClone",
@@ -46,13 +67,31 @@ public static boolean isRepositoryClass(@NotNull PhpClass phpClass) {
4667
return PhpClassHierarchyUtils.isSuperClass(baseRepositoryClass, phpClass, true);
4768
}
4869

70+
public static boolean isObjectStorage(@NotNull Field field) {
71+
return field.getDeclaredType().toString().contains(OBJECT_STORAGE_FQN);
72+
}
73+
74+
public static boolean isNonQueryableField(@NotNull String name) {
75+
return Arrays.asList(ExtbaseUtils.NON_QUERYABLE_ENTITY_FIELDS).contains(name);
76+
}
77+
78+
public static boolean fieldHasMagicFinders(@NotNull Field field) {
79+
return !field.isConstant() && !field.isInternal() && !ExtbaseUtils.isNonQueryableField(field.getName()) && !ExtbaseUtils.isObjectStorage(field);
80+
}
81+
82+
public static boolean methodInstanceOf(@NotNull String className, @NotNull Method method) {
83+
PhpClass containingClass = method.getContainingClass();
84+
85+
return containingClass != null && containingClass.getPresentableFQN().equals(className);
86+
}
87+
4988
private boolean isEntityClass(PsiElement psiElement) {
5089
PhpClass containingClass = ((PhpClassMember) psiElement).getContainingClass();
5190
if (containingClass == null) {
5291
return false;
5392
}
5493

55-
Collection<PhpClass> classesByFQN = PhpIndex.getInstance(psiElement.getProject()).getClassesByFQN(TYPO3_CMS_EXTBASE_DOMAIN_OBJECT_ABSTRACT_ENTITY);
94+
Collection<PhpClass> classesByFQN = PhpIndex.getInstance(psiElement.getProject()).getClassesByFQN(EXTBASE_ABSTRACT_ENTITY_FQN);
5695
if (classesByFQN.isEmpty()) {
5796
return false;
5897
}

src/main/java/com/cedricziel/idea/typo3/extbase/persistence/ExtbasePersistenceCompletionContributor.java

Lines changed: 0 additions & 216 deletions
This file was deleted.

src/main/java/com/cedricziel/idea/typo3/extbase/persistence/ExtbasePersistenceReferenceResolver.java

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package com.cedricziel.idea.typo3.extbase.persistence;
22

3+
import com.cedricziel.idea.typo3.extbase.ExtbaseUtils;
34
import com.cedricziel.idea.typo3.psi.PhpElementsUtil;
45
import com.cedricziel.idea.typo3.util.ExtbaseUtility;
56
import com.intellij.psi.util.PsiTreeUtil;
@@ -13,8 +14,6 @@
1314
import java.util.Collections;
1415
import java.util.List;
1516

16-
import static com.cedricziel.idea.typo3.extbase.persistence.ExtbasePersistenceCompletionContributor.ExtbaseRepositoryMagicMethodsCompletionProvider.TYPO3_CMS_EXTBASE_PERSISTENCE_REPOSITORY;
17-
1817
public class ExtbasePersistenceReferenceResolver implements PhpReferenceResolver {
1918
@Override
2019
public Collection<? extends PhpNamedElement> resolve(PhpReference phpReference) {
@@ -45,7 +44,7 @@ public Collection<? extends PhpNamedElement> resolve(PhpReference phpReference)
4544
}
4645

4746
classesByFQN.forEach(repositoryClass -> {
48-
if (!PhpElementsUtil.hasSuperClass(repositoryClass, TYPO3_CMS_EXTBASE_PERSISTENCE_REPOSITORY)) {
47+
if (!PhpElementsUtil.hasSuperClass(repositoryClass, ExtbaseUtils.TYPO3_CMS_EXTBASE_PERSISTENCE_REPOSITORY)) {
4948
return;
5049
}
5150

0 commit comments

Comments
 (0)