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 .project .Project ;
13
14
import com .magento .idea .magento2plugin .actions .generation .generator .util .DirectoryGenerator ;
14
15
import com .magento .idea .magento2plugin .actions .generation .generator .util .FileFromTemplateGenerator ;
15
16
import com .magento .idea .magento2plugin .bundles .CommonBundle ;
17
+ import com .magento .idea .magento2plugin .bundles .ValidatorBundle ;
16
18
import com .magento .idea .magento2plugin .indexes .ModuleIndex ;
17
19
import com .magento .idea .magento2plugin .magento .files .PhpPreference ;
20
+ import com .magento .idea .magento2plugin .magento .packages .File ;
18
21
import com .magento .idea .magento2plugin .util .GetFirstClassOfFile ;
19
22
import com .magento .idea .magento2plugin .util .GetPhpClassByFQN ;
20
- import com .magento .idea .magento2plugin .bundles .ValidatorBundle ;
21
- import org .jetbrains .annotations .NotNull ;
22
- import javax .swing .*;
23
- import com .magento .idea .magento2plugin .magento .packages .File ;
24
23
import java .util .Properties ;
24
+ import javax .swing .JOptionPane ;
25
+ import org .jetbrains .annotations .NotNull ;
25
26
26
27
public class PreferenceClassGenerator extends FileGenerator {
27
- private PreferenceFileData preferenceFileData ;
28
- private Project project ;
29
- private ValidatorBundle validatorBundle ;
30
- private CommonBundle commonBundle ;
28
+ private final PreferenceFileData preferenceFileData ;
29
+ private final Project project ;
30
+ private final ValidatorBundle validatorBundle ;
31
+ private final CommonBundle commonBundle ;
31
32
private final DirectoryGenerator directoryGenerator ;
32
33
private final FileFromTemplateGenerator fileFromTemplateGenerator ;
33
34
private final GetFirstClassOfFile getFirstClassOfFile ;
34
35
35
- public PreferenceClassGenerator (@ NotNull PreferenceFileData preferenceFileData , Project project ) {
36
+ /**
37
+ * Constructor.
38
+ */
39
+ public PreferenceClassGenerator (
40
+ @ NotNull final PreferenceFileData preferenceFileData ,
41
+ final Project project
42
+ ) {
36
43
super (project );
37
44
this .directoryGenerator = DirectoryGenerator .getInstance ();
38
45
this .fileFromTemplateGenerator = FileFromTemplateGenerator .getInstance (project );
@@ -43,46 +50,70 @@ public PreferenceClassGenerator(@NotNull PreferenceFileData preferenceFileData,
43
50
this .commonBundle = new CommonBundle ();
44
51
}
45
52
46
- public PsiFile generate (String actionName ) {
47
- PhpClass pluginClass = GetPhpClassByFQN .getInstance (project ).execute (preferenceFileData .getPreferenceFqn ());
53
+
54
+ @ Override
55
+ public PsiFile generate (final String actionName ) {
56
+ PhpClass pluginClass = GetPhpClassByFQN .getInstance (project ).execute (
57
+ preferenceFileData .getPreferenceFqn ()
58
+ );
48
59
49
60
if (pluginClass == null ) {
50
61
pluginClass = createPluginClass (actionName );
51
62
}
52
63
53
64
if (pluginClass == null ) {
54
- String errorMessage = validatorBundle .message ("validator.file.cantBeCreated" , "Preference Class" );
55
- JOptionPane .showMessageDialog (null , errorMessage , commonBundle .message ("common.error" ), JOptionPane .ERROR_MESSAGE );
65
+ final String errorMessage = validatorBundle .message (
66
+ "validator.file.cantBeCreated" ,
67
+ "Preference Class"
68
+ );
69
+ JOptionPane .showMessageDialog (
70
+ null ,
71
+ errorMessage ,
72
+ commonBundle .message ("common.error" ),
73
+ JOptionPane .ERROR_MESSAGE
74
+ );
56
75
57
76
return null ;
58
77
}
59
78
60
79
return pluginClass .getContainingFile ();
61
80
}
62
81
63
- private PhpClass createPluginClass (String actionName ) {
64
- PsiDirectory parentDirectory = ModuleIndex .getInstance (project ).getModuleDirectoryByModuleName (getPreferenceModule ());
65
- String [] pluginDirectories = preferenceFileData .getPreferenceDirectory ().split (File .separator );
66
- for (String pluginDirectory : pluginDirectories ) {
67
- parentDirectory = directoryGenerator .findOrCreateSubdirectory (parentDirectory , pluginDirectory );
82
+ private PhpClass createPluginClass (final String actionName ) {
83
+ PsiDirectory parentDirectory = ModuleIndex .getInstance (project )
84
+ .getModuleDirectoryByModuleName (getPreferenceModule ());
85
+ final String [] pluginDirectories = preferenceFileData .getPreferenceDirectory ()
86
+ .split (File .separator );
87
+ for (final String pluginDirectory : pluginDirectories ) {
88
+ parentDirectory = directoryGenerator
89
+ .findOrCreateSubdirectory (parentDirectory , pluginDirectory );
68
90
}
69
91
70
- Properties attributes = getAttributes ();
71
- PsiFile pluginFile = fileFromTemplateGenerator .generate (PhpPreference .getInstance (preferenceFileData .getPreferenceClassName ()), attributes , parentDirectory , actionName );
92
+ final Properties attributes = getAttributes ();
93
+ final PsiFile pluginFile = fileFromTemplateGenerator .generate (
94
+ PhpPreference .getInstance (preferenceFileData .getPreferenceClassName ()),
95
+ attributes ,
96
+ parentDirectory ,
97
+ actionName
98
+ );
72
99
if (pluginFile == null ) {
73
100
return null ;
74
101
}
75
102
return getFirstClassOfFile .execute ((PhpFile ) pluginFile );
76
103
}
77
104
78
- protected void fillAttributes (Properties attributes ) {
79
- String preferenceClassName = preferenceFileData .getPreferenceClassName ();
105
+ @ Override
106
+ protected void fillAttributes (final Properties attributes ) {
107
+ final String preferenceClassName = preferenceFileData .getPreferenceClassName ();
80
108
attributes .setProperty ("NAME" , preferenceClassName );
81
109
attributes .setProperty ("NAMESPACE" , preferenceFileData .getNamespace ());
110
+ if (preferenceFileData .isInterface ()) {
111
+ attributes .setProperty ("INTERFACE" , "interface" );
112
+ }
82
113
if (!preferenceFileData .isInheritClass ()) {
83
114
return ;
84
115
}
85
- String parentClassName = preferenceFileData .getTargetClass ().getName ();
116
+ final String parentClassName = preferenceFileData .getTargetClass ().getName ();
86
117
if (!parentClassName .equals (preferenceClassName )) {
87
118
attributes .setProperty ("USE" , preferenceFileData .getTargetClass ().getPresentableFQN ());
88
119
attributes .setProperty ("EXTENDS" , parentClassName );
0 commit comments