forked from magento/magento2-phpstorm-plugin
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathModulePackageIndex.java
93 lines (78 loc) · 2.6 KB
/
ModulePackageIndex.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
/**
* Copyright © Magento, Inc. All rights reserved.
* See COPYING.txt for license details.
*/
package com.magento.idea.magento2plugin.stubs.indexes;
import com.intellij.json.JsonFileType;
import com.intellij.json.psi.JsonFile;
import com.intellij.json.psi.JsonObject;
import com.intellij.psi.util.PsiTreeUtil;
import com.intellij.util.indexing.*;
import com.intellij.util.io.EnumeratorStringDescriptor;
import com.intellij.util.io.KeyDescriptor;
import com.magento.idea.magento2plugin.project.Settings;
import com.magento.idea.magento2plugin.magento.packages.ComposerPackageModel;
import com.magento.idea.magento2plugin.magento.packages.ComposerPackageModelImpl;
import org.jetbrains.annotations.NotNull;
import java.util.HashMap;
import java.util.Map;
/**
* Created by dkvashnin on 12/3/15.
*/
public class ModulePackageIndex extends ScalarIndexExtension<String> {
public static final ID<String, Void> KEY =
ID.create("com.magento.idea.magento2plugin.stubs.indexes.module_package");
@NotNull
@Override
public ID<String, Void> getName() {
return KEY;
}
@NotNull
@Override
public DataIndexer<String, Void, FileContent> getIndexer() {
return inputData -> {
Map<String, Void> map = new HashMap<>();
JsonFile jsonFile = (JsonFile)inputData.getPsiFile();
if (!Settings.isEnabled(jsonFile.getProject())) {
return map;
}
JsonObject jsonObject = PsiTreeUtil.getChildOfType(jsonFile, JsonObject.class);
if (jsonObject == null) {
return map;
}
ComposerPackageModel composerObject = new ComposerPackageModelImpl(jsonObject);
String type = composerObject.getType();
if (type == null) {
return map;
}
if (!type.startsWith("magento2-")) {
return map;
}
String name = composerObject.getName();
if (name != null) {
map.put(name, null);
}
return map;
};
}
@NotNull
@Override
public KeyDescriptor<String> getKeyDescriptor() {
return new EnumeratorStringDescriptor();
}
@NotNull
@Override
public FileBasedIndex.InputFilter getInputFilter() {
return virtualFile -> (
virtualFile.getFileType().equals(JsonFileType.INSTANCE) && virtualFile.getName().equals("composer.json")
);
}
@Override
public boolean dependsOnFileContent() {
return true;
}
@Override
public int getVersion() {
return 1;
}
}