2
2
* Copyright © Magento, Inc. All rights reserved.
3
3
* See COPYING.txt for license details.
4
4
*/
5
+
5
6
package com .magento .idea .magento2plugin .actions .generation .generator ;
6
7
7
8
import com .intellij .openapi .command .WriteCommandAction ;
21
22
import com .magento .idea .magento2plugin .actions .generation .generator .util .FileFromTemplateGenerator ;
22
23
import com .magento .idea .magento2plugin .actions .generation .util .CodeStyleSettings ;
23
24
import com .magento .idea .magento2plugin .bundles .CommonBundle ;
25
+ import com .magento .idea .magento2plugin .bundles .ValidatorBundle ;
24
26
import com .magento .idea .magento2plugin .indexes .ModuleIndex ;
25
27
import com .magento .idea .magento2plugin .magento .files .GraphQlResolverPhp ;
28
+ import com .magento .idea .magento2plugin .magento .packages .File ;
26
29
import com .magento .idea .magento2plugin .magento .packages .MagentoPhpClass ;
27
30
import com .magento .idea .magento2plugin .util .GetFirstClassOfFile ;
28
31
import com .magento .idea .magento2plugin .util .GetPhpClassByFQN ;
29
- import com .magento .idea .magento2plugin .bundles .ValidatorBundle ;
30
- import org .jetbrains .annotations .NotNull ;
31
- import javax .swing .*;
32
- import com .magento .idea .magento2plugin .magento .packages .File ;
33
32
import java .util .Properties ;
33
+ import javax .swing .JOptionPane ;
34
+ import org .jetbrains .annotations .NotNull ;
34
35
35
36
public class ModuleGraphQlResolverClassGenerator extends FileGenerator {
36
- private GraphQlResolverFileData graphQlResolverFileData ;
37
- private Project project ;
38
- private ValidatorBundle validatorBundle ;
39
- private CommonBundle commonBundle ;
37
+ private final GraphQlResolverFileData graphQlResolverFileData ;
38
+ private final Project project ;
39
+ private final ValidatorBundle validatorBundle ;
40
+ private final CommonBundle commonBundle ;
40
41
private final DirectoryGenerator directoryGenerator ;
41
42
private final FileFromTemplateGenerator fileFromTemplateGenerator ;
42
43
private final GetFirstClassOfFile getFirstClassOfFile ;
43
44
44
- public ModuleGraphQlResolverClassGenerator (@ NotNull GraphQlResolverFileData graphQlResolverFileData , Project project ) {
45
+ /**
46
+ * Construct generator.
47
+ *
48
+ * @param graphQlResolverFileData GraphQlResolverFileData
49
+ * @param project Project
50
+ */
51
+ public ModuleGraphQlResolverClassGenerator (
52
+ final @ NotNull GraphQlResolverFileData graphQlResolverFileData ,
53
+ final Project project
54
+ ) {
45
55
super (project );
46
56
this .directoryGenerator = DirectoryGenerator .getInstance ();
47
57
this .fileFromTemplateGenerator = new FileFromTemplateGenerator (project );
@@ -53,17 +63,21 @@ public ModuleGraphQlResolverClassGenerator(@NotNull GraphQlResolverFileData grap
53
63
}
54
64
55
65
@ Override
56
- public PsiFile generate (String actionName ) {
66
+ public PsiFile generate (final String actionName ) {
57
67
final PsiFile [] graphQlFile = {null };
58
68
WriteCommandAction .runWriteCommandAction (project , () -> {
59
- PhpClass graphQlResolverClass = GetPhpClassByFQN .getInstance (project ).execute (graphQlResolverFileData .getGraphQlResolverClassFqn ());
69
+ PhpClass graphQlResolverClass = GetPhpClassByFQN .getInstance (project )
70
+ .execute (graphQlResolverFileData .getGraphQlResolverClassFqn ());
60
71
61
72
if (graphQlResolverClass == null ) {
62
73
graphQlResolverClass = createGraphQlResolverClass (actionName );
63
74
}
64
75
65
76
if (graphQlResolverClass == null ) {
66
- String errorMessage = validatorBundle .message ("validator.file.cantBeCreated" , "GraphQL Resolver Class" );
77
+ final String errorMessage = validatorBundle .message (
78
+ "validator.file.cantBeCreated" ,
79
+ "GraphQL Resolver Class"
80
+ );
67
81
JOptionPane .showMessageDialog (
68
82
null ,
69
83
errorMessage ,
@@ -74,30 +88,35 @@ public PsiFile generate(String actionName) {
74
88
return ;
75
89
}
76
90
77
- Properties attributes = new Properties ();
78
- String methodTemplate = PhpCodeUtil .getCodeTemplate (
91
+ final Properties attributes = new Properties ();
92
+ final String methodTemplate = PhpCodeUtil .getCodeTemplate (
79
93
GraphQlResolverPhp .GRAPHQL_RESOLVER_TEMPLATE_NAME , attributes , project );
80
94
81
95
graphQlFile [0 ] = graphQlResolverClass .getContainingFile ();
82
- CodeStyleSettings codeStyleSettings = new CodeStyleSettings ((PhpFile ) graphQlFile [0 ]);
96
+ final CodeStyleSettings codeStyleSettings = new CodeStyleSettings (
97
+ (PhpFile ) graphQlFile [0 ]
98
+ );
83
99
codeStyleSettings .adjustBeforeWrite ();
84
100
85
- PsiDocumentManager psiDocumentManager = PsiDocumentManager .getInstance (project );
86
- Document document = psiDocumentManager .getDocument (graphQlFile [0 ]);
87
- int insertPos = getInsertPos (graphQlResolverClass );
101
+ final PsiDocumentManager psiDocumentManager = PsiDocumentManager .getInstance (project );
102
+ final Document document = psiDocumentManager .getDocument (graphQlFile [0 ]);
103
+ final int insertPos = getInsertPos (graphQlResolverClass );
88
104
document .insertString (insertPos , methodTemplate );
89
- int endPos = insertPos + methodTemplate .length () + 1 ;
105
+ final int endPos = insertPos + methodTemplate .length () + 1 ;
90
106
CodeStyleManager .getInstance (project ).reformatText (graphQlFile [0 ], insertPos , endPos );
91
107
psiDocumentManager .commitDocument (document );
92
108
codeStyleSettings .restore ();
93
109
});
94
110
return graphQlFile [0 ];
95
111
}
96
112
97
- private int getInsertPos (PhpClass graphQlResolverClass ) {
113
+ private int getInsertPos (final PhpClass graphQlResolverClass ) {
98
114
int insertPos = -1 ;
99
- LeafPsiElement [] leafElements = PsiTreeUtil .getChildrenOfType (graphQlResolverClass , LeafPsiElement .class );
100
- for (LeafPsiElement leafPsiElement : leafElements ) {
115
+ final LeafPsiElement [] leafElements = PsiTreeUtil .getChildrenOfType (
116
+ graphQlResolverClass ,
117
+ LeafPsiElement .class
118
+ );
119
+ for (final LeafPsiElement leafPsiElement : leafElements ) {
101
120
if (!leafPsiElement .getText ().equals (MagentoPhpClass .CLOSING_TAG )) {
102
121
continue ;
103
122
}
@@ -106,17 +125,23 @@ private int getInsertPos(PhpClass graphQlResolverClass) {
106
125
return insertPos ;
107
126
}
108
127
109
- private PhpClass createGraphQlResolverClass (String actionName ) {
128
+ private PhpClass createGraphQlResolverClass (final String actionName ) {
110
129
PsiDirectory parentDirectory = new ModuleIndex (project )
111
130
.getModuleDirectoryByModuleName (graphQlResolverFileData .getGraphQlResolverModule ());
112
- String [] graphQlResolverDirectories = graphQlResolverFileData .getGraphQlResolverDirectory ().split (File .separator );
113
- for (String graphQlResolverDirectory : graphQlResolverDirectories ) {
114
- parentDirectory = directoryGenerator .findOrCreateSubdirectory (parentDirectory , graphQlResolverDirectory );
131
+ final String [] graphQlResolverDirectories = graphQlResolverFileData
132
+ .getGraphQlResolverDirectory ().split (File .separator );
133
+ for (final String graphQlResolverDirectory : graphQlResolverDirectories ) {
134
+ parentDirectory = directoryGenerator .findOrCreateSubdirectory (
135
+ parentDirectory ,
136
+ graphQlResolverDirectory
137
+ );
115
138
}
116
139
117
- Properties attributes = getAttributes ();
118
- PsiFile graphQlResolverFile = fileFromTemplateGenerator .generate (
119
- GraphQlResolverPhp .getInstance (graphQlResolverFileData .getGraphQlResolverClassName ()),
140
+ final Properties attributes = getAttributes ();
141
+ final PsiFile graphQlResolverFile = fileFromTemplateGenerator .generate (
142
+ GraphQlResolverPhp .getInstance (
143
+ graphQlResolverFileData .getGraphQlResolverClassName ()
144
+ ),
120
145
attributes ,
121
146
parentDirectory ,
122
147
actionName
@@ -127,8 +152,10 @@ private PhpClass createGraphQlResolverClass(String actionName) {
127
152
return getFirstClassOfFile .execute ((PhpFile ) graphQlResolverFile );
128
153
}
129
154
130
- protected void fillAttributes (Properties attributes ) {
131
- String graphQlResolverClassName = graphQlResolverFileData .getGraphQlResolverClassName ();
155
+ @ Override
156
+ protected void fillAttributes (final Properties attributes ) {
157
+ final String graphQlResolverClassName
158
+ = graphQlResolverFileData .getGraphQlResolverClassName ();
132
159
attributes .setProperty ("NAME" , graphQlResolverClassName );
133
160
attributes .setProperty ("NAMESPACE" , graphQlResolverFileData .getNamespace ());
134
161
}
0 commit comments