22 * Copyright © Magento, Inc. All rights reserved.
33 * See COPYING.txt for license details.
44 */
5+
56package com .magento .idea .magento2plugin .actions .generation .generator ;
67
78import com .intellij .openapi .project .Project ;
1314import com .magento .idea .magento2plugin .actions .generation .generator .util .DirectoryGenerator ;
1415import com .magento .idea .magento2plugin .actions .generation .generator .util .FileFromTemplateGenerator ;
1516import com .magento .idea .magento2plugin .bundles .CommonBundle ;
17+ import com .magento .idea .magento2plugin .bundles .ValidatorBundle ;
1618import com .magento .idea .magento2plugin .indexes .ModuleIndex ;
1719import com .magento .idea .magento2plugin .magento .files .PhpPreference ;
20+ import com .magento .idea .magento2plugin .magento .packages .File ;
1821import com .magento .idea .magento2plugin .util .GetFirstClassOfFile ;
1922import 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 ;
2423import java .util .Properties ;
24+ import javax .swing .JOptionPane ;
25+ import org .jetbrains .annotations .NotNull ;
2526
2627public 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 ;
3132 private final DirectoryGenerator directoryGenerator ;
3233 private final FileFromTemplateGenerator fileFromTemplateGenerator ;
3334 private final GetFirstClassOfFile getFirstClassOfFile ;
3435
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+ ) {
3643 super (project );
3744 this .directoryGenerator = DirectoryGenerator .getInstance ();
3845 this .fileFromTemplateGenerator = FileFromTemplateGenerator .getInstance (project );
@@ -43,46 +50,70 @@ public PreferenceClassGenerator(@NotNull PreferenceFileData preferenceFileData,
4350 this .commonBundle = new CommonBundle ();
4451 }
4552
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+ );
4859
4960 if (pluginClass == null ) {
5061 pluginClass = createPluginClass (actionName );
5162 }
5263
5364 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+ );
5675
5776 return null ;
5877 }
5978
6079 return pluginClass .getContainingFile ();
6180 }
6281
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 );
6890 }
6991
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+ );
7299 if (pluginFile == null ) {
73100 return null ;
74101 }
75102 return getFirstClassOfFile .execute ((PhpFile ) pluginFile );
76103 }
77104
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 ();
80108 attributes .setProperty ("NAME" , preferenceClassName );
81109 attributes .setProperty ("NAMESPACE" , preferenceFileData .getNamespace ());
110+ if (preferenceFileData .isInterface ()) {
111+ attributes .setProperty ("INTERFACE" , "interface" );
112+ }
82113 if (!preferenceFileData .isInheritClass ()) {
83114 return ;
84115 }
85- String parentClassName = preferenceFileData .getTargetClass ().getName ();
116+ final String parentClassName = preferenceFileData .getTargetClass ().getName ();
86117 if (!parentClassName .equals (preferenceClassName )) {
87118 attributes .setProperty ("USE" , preferenceFileData .getTargetClass ().getPresentableFQN ());
88119 attributes .setProperty ("EXTENDS" , parentClassName );
0 commit comments