6
6
package com .magento .idea .magento2plugin .actions .generation .generator ;
7
7
8
8
import com .intellij .openapi .project .Project ;
9
- import com .intellij .psi .PsiDirectory ;
10
- import com .intellij .psi .PsiFile ;
11
- import com .jetbrains .php .lang .psi .PhpFile ;
12
- import com .jetbrains .php .lang .psi .elements .PhpClass ;
13
9
import com .magento .idea .magento2plugin .actions .generation .data .SourceModelData ;
14
- import com .magento .idea .magento2plugin .actions .generation .generator .util .DirectoryGenerator ;
15
- import com .magento .idea .magento2plugin .actions .generation .generator .util .FileFromTemplateGenerator ;
16
10
import com .magento .idea .magento2plugin .actions .generation .generator .util .PhpClassGeneratorUtil ;
17
- import com .magento .idea .magento2plugin .bundles .CommonBundle ;
18
- import com .magento .idea .magento2plugin .bundles .ValidatorBundle ;
19
- import com .magento .idea .magento2plugin .indexes .ModuleIndex ;
20
- import com .magento .idea .magento2plugin .magento .files .SourceModelPhp ;
21
- import com .magento .idea .magento2plugin .magento .packages .File ;
22
- import com .magento .idea .magento2plugin .magento .packages .Package ;
23
- import com .magento .idea .magento2plugin .util .GetPhpClassByFQN ;
11
+ import com .magento .idea .magento2plugin .magento .files .AbstractPhpFile ;
12
+ import com .magento .idea .magento2plugin .magento .files .SourceModelFile ;
24
13
import java .util .ArrayList ;
25
14
import java .util .List ;
26
15
import java .util .Properties ;
27
- import javax . swing . JOptionPane ;
16
+ import org . jetbrains . annotations . NotNull ;
28
17
29
- public class SourceModelGenerator extends FileGenerator {
30
- private final SourceModelData sourceModelData ;
31
- private final CommonBundle commonBundle ;
32
- private final Project project ;
33
- private final ValidatorBundle validatorBundle ;
34
- private final DirectoryGenerator directoryGenerator ;
35
- private final FileFromTemplateGenerator fileFromTemplateGenerator ;
18
+ public class SourceModelGenerator extends PhpFileGenerator {
19
+ private final SourceModelData data ;
36
20
37
21
/**
38
22
* Constructor.
39
23
*
40
24
* @param project Project
41
- * @param sourceModelData SourceModelData
25
+ * @param data SourceModelData
42
26
*/
43
- public SourceModelGenerator (final Project project , final SourceModelData sourceModelData ) {
44
- super (project );
45
-
46
- this .project = project ;
47
- this .sourceModelData = sourceModelData ;
48
- this .commonBundle = new CommonBundle ();
49
- this .fileFromTemplateGenerator = new FileFromTemplateGenerator (project );
50
- this .validatorBundle = new ValidatorBundle ();
51
- this .directoryGenerator = new DirectoryGenerator ();
52
- }
53
-
54
- @ Override
55
- public PsiFile generate (final String actionName ) {
56
- final String errorTitle = commonBundle .message ("common.error" );
57
- final PhpClass dataPatchClass = GetPhpClassByFQN .getInstance (project )
58
- .execute (getSourceModelFqn ());
59
-
60
- if (validateIfFileAlreadyExist (dataPatchClass , errorTitle )) {
61
- return null ;
62
- }
63
-
64
- final PhpFile resourceModelFile = createResourceModelClass (actionName );
65
-
66
- if (validateIfFileCanBeCreated (errorTitle , resourceModelFile )) {
67
- return null ;
68
- }
69
-
70
- return resourceModelFile ;
71
- }
72
-
73
- private boolean validateIfFileAlreadyExist (
74
- final PhpClass dataPatchClass ,
75
- final String errorTitle
27
+ public SourceModelGenerator (
28
+ @ NotNull final SourceModelData data ,
29
+ @ NotNull final Project project
76
30
) {
77
- if (dataPatchClass != null ) {
78
- final String errorMessage = validatorBundle .message (
79
- "validator.file.alreadyExists" ,
80
- "Resource Class"
81
- );
82
- JOptionPane .showMessageDialog (
83
- null ,
84
- errorMessage ,
85
- errorTitle ,
86
- JOptionPane .ERROR_MESSAGE
87
- );
88
-
89
- return true ;
90
- }
91
-
92
- return false ;
31
+ this (data , project , true );
93
32
}
94
33
95
- private PhpFile createResourceModelClass (final String actionName ) {
96
- final PsiDirectory parentDirectory = getResourceModelDirectory ();
97
- final Properties attributes = getAttributes ();
98
- final PsiFile dataPatchFile = fileFromTemplateGenerator .generate (
99
- new SourceModelPhp (sourceModelData .getClassName ()),
100
- attributes ,
101
- parentDirectory ,
102
- actionName
103
- );
104
-
105
- if (dataPatchFile == null ) {
106
- return null ;
107
- }
108
-
109
- return (PhpFile ) dataPatchFile ;
110
- }
111
-
112
- private PsiDirectory getResourceModelDirectory () {
113
- PsiDirectory parentDirectory = new ModuleIndex (project )
114
- .getModuleDirectoryByModuleName (sourceModelData .getModuleName ());
115
- final String [] dataPatchDirectories = sourceModelData .getDirectory ().split (File .separator );
116
-
117
- for (final String sourceModelDirectory : dataPatchDirectories ) {
118
- parentDirectory = directoryGenerator .findOrCreateSubdirectory (
119
- parentDirectory ,
120
- sourceModelDirectory
121
- );
122
- }
123
-
124
- return parentDirectory ;
125
- }
126
-
127
- private boolean validateIfFileCanBeCreated (
128
- final String errorTitle ,
129
- final PhpFile dataPathFile
34
+ /**
35
+ * Constructor.
36
+ *
37
+ * @param project Project
38
+ * @param data SourceModelData
39
+ * @param checkFileAlreadyExists boolean
40
+ */
41
+ public SourceModelGenerator (
42
+ @ NotNull final SourceModelData data ,
43
+ @ NotNull final Project project ,
44
+ final boolean checkFileAlreadyExists
130
45
) {
131
- if (dataPathFile == null ) {
132
- final String errorMessage = validatorBundle .message (
133
- "validator.file.cantBeCreated" ,
134
- "Resource Model Class"
135
- );
136
- JOptionPane .showMessageDialog (
137
- null ,
138
- errorMessage ,
139
- errorTitle ,
140
- JOptionPane .ERROR_MESSAGE
141
- );
142
-
143
- return true ;
144
- }
145
- return false ;
46
+ super (project , checkFileAlreadyExists );
47
+ this .data = data ;
146
48
}
147
49
148
- private String getSourceModelFqn () {
149
- return sourceModelData .getNamespace ()
150
- + Package .fqnSeparator
151
- + sourceModelData .getClassName ();
50
+ @ Override
51
+ protected AbstractPhpFile initFile () {
52
+ return new SourceModelFile (data .getModuleName (), data .getClassName ());
152
53
}
153
54
154
55
@ Override
@@ -158,8 +59,8 @@ protected void fillAttributes(final Properties attributes) {
158
59
final List <String > uses = new ArrayList <>();
159
60
uses .add (abstractSourceClass );
160
61
161
- attributes .setProperty ("NAME" , sourceModelData .getClassName ());
162
- attributes .setProperty ("NAMESPACE" , sourceModelData .getNamespace ());
62
+ attributes .setProperty ("NAME" , data .getClassName ());
63
+ attributes .setProperty ("NAMESPACE" , data .getNamespace ());
163
64
attributes .setProperty (
164
65
"EXTENDS" ,
165
66
PhpClassGeneratorUtil .getNameFromFqn (abstractSourceClass )
0 commit comments