Skip to content

Commit ca34cd1

Browse files
authored
Merge branch '4.0.0-develop' into add-resource-to-web-api-dialog-form
2 parents 88bd28b + 95d4d60 commit ca34cd1

File tree

44 files changed

+458
-42
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

44 files changed

+458
-42
lines changed

resources/fileTemplates/internal/Magento Delete Entity By Id Command.php.ft

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -56,9 +56,9 @@ class ${CLASS_NAME}
5656
try {
5757
/** @var ${MODEL} $model */
5858
$model = $this->modelFactory->create();
59-
$this->resource->load($model, $entityId, '${ENTITY_ID}');
59+
$this->resource->load($model, $entityId, ${ENTITY_ID_REFERENCE});
6060

61-
if (!$model->getData('${ENTITY_ID}')) {
61+
if (!$model->getData(${ENTITY_ID_REFERENCE})) {
6262
throw new ${NO_SUCH_ENTITY_EXCEPTION}(
6363
__('Could not find ${ENTITY_NAME} with id: `%id`',
6464
[

resources/fileTemplates/internal/Magento Entity Delete Controller Class.php.ft

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@ class ${CLASS_NAME} extends ${EXTENDS} implements ${IMPLEMENTS_POST}, ${IMPLEMEN
4747
/** @var ${RESULT_INTERFACE} $resultRedirect */
4848
$resultRedirect = $this->resultFactory->create(${RESULT_FACTORY}::TYPE_REDIRECT);
4949
$resultRedirect->setPath('*/*/');
50-
$entityId = (int) $this->getRequest()->getParam('${ENTITY_ID}');
50+
$entityId = (int) $this->getRequest()->getParam(${ENTITY_ID_REFERENCE});
5151

5252
try {
5353
$this->deleteByIdCommand->execute($entityId);

resources/fileTemplates/internal/Magento Entity Save Controller Class.php.ft

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -77,7 +77,7 @@ class ${CLASS_NAME} extends ${EXTENDS} implements ${IMPLEMENTS}
7777
$this->dataPersistor->set('entity', $params);
7878

7979
return $resultRedirect->setPath('*/*/edit', [
80-
'${ENTITY_ID}'=> $this->getRequest()->getParam('${ENTITY_ID}')
80+
${ENTITY_ID_REFERENCE} => $this->getRequest()->getParam(${ENTITY_ID_REFERENCE})
8181
]);
8282
}
8383

resources/fileTemplates/internal/Magento Grid Ui Component Action Column Class.php.ft

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -59,12 +59,12 @@ class ${CLASS_NAME} extends ${PARENT_CLASS}
5959
*/
6060
public function prepareDataSource(array $dataSource): array
6161
{
62-
#set($entityIdAccessor = "['" + ${ENTITY_ID} + "']")
62+
#set($entityIdAccessor = "[" + ${ENTITY_ID_REFERENCE} + "]")
6363
if (isset($dataSource['data']['items'])) {
6464
foreach ($dataSource['data']['items'] as &$item) {
6565
if (isset($item$entityIdAccessor)) {
6666
$entityName = static::ENTITY_NAME;
67-
$urlData = ['${ENTITY_ID}' => $item$entityIdAccessor];
67+
$urlData = [${ENTITY_ID_REFERENCE} => $item$entityIdAccessor];
6868

6969
$editUrl = $this->urlBuilder->getUrl(static::EDIT_URL_PATH, $urlData);
7070
$deleteUrl = $this->urlBuilder->getUrl(static::DELETE_URL_PATH, $urlData);

resources/fileTemplates/internal/Magento PHP Form Generic Button Block Class.php.ft

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ class ${CLASS_NAME}
4040
*/
4141
public function ${ENTITY_ID_GETTER}(): int
4242
{
43-
return (int) $this->context->getRequest()->getParam('${ENTITY_ID}');
43+
return (int) $this->context->getRequest()->getParam(${ENTITY_ID_REFERENCE});
4444
}
4545

4646
/**

resources/fileTemplates/internal/Magento Resource Model Class.php.ft

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,11 @@ class ${NAME}#if (${EXTENDS}) extends ${EXTENDS}#end#if (${IMPLEMENTS}) implemen
2121
*/
2222
protected function _construct()
2323
{
24+
#if (${ENTITY_ID_REFERENCE})
25+
$this->_init('${DB_NAME}', ${ENTITY_ID_REFERENCE});
26+
#else
2427
$this->_init('${DB_NAME}', '${ENTITY_ID_COLUMN}');
28+
#end
2529
$this->_useIsObjectNew = true;
2630
}
2731
}

resources/fileTemplates/internal/Magento Save Entity Command Model.php.ft

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,7 @@ class ${CLASS_NAME}
5959
$model->addData($${DTO_PROPERTY}->getData());
6060
$model->setHasDataChanges(true);
6161

62-
if (!$model->getId()) {
62+
if (!$model->getData(${ENTITY_ID_CONST})) {
6363
$model->isObjectNew(true);
6464
}
6565
$this->resource->save($model);

resources/fileTemplates/internal/Magento UI Component Custom Data Provider Class.php.ft

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -87,7 +87,7 @@ class ${CLASS_NAME} extends ${EXTENDS}
8787
$result->getItems(),
8888
$result->getTotalCount(),
8989
$searchCriteria,
90-
'#if(${ENTITY_ID})${ENTITY_ID}#{else}entity_id#end'
90+
${ENTITY_ID_REFERENCE}
9191
);
9292
}
9393

@@ -104,14 +104,14 @@ class ${CLASS_NAME} extends ${EXTENDS}
104104
$this->loadedData = parent::getData();
105105
$itemsById = [];
106106

107-
#set($entityId = "#if(${ENTITY_ID})${ENTITY_ID}#{else}entity_id#end")
108-
#set($entityIdAccessor = '[(int) $item[' + "'$entityId'" + ']]')
107+
#set($entityId = "${ENTITY_ID_REFERENCE}")
108+
#set($entityIdAccessor = '[(int) $item[' + "${ENTITY_ID_REFERENCE}" + ']]')
109109
#set($getIdAccessor = "[(int) $id]")
110110
foreach ($this->loadedData['items'] as $item) {
111111
$itemsById$entityIdAccessor = $item;
112112
}
113113

114-
if ($id = $this->request->getParam('$entityId', null)) {
114+
if ($id = $this->request->getParam($entityId)) {
115115
$this->loadedData['entity'] = $itemsById$getIdAccessor;
116116
}
117117

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
/*
2+
* Copyright © Magento, Inc. All rights reserved.
3+
* See COPYING.txt for license details.
4+
*/
5+
6+
package com.magento.idea.magento2plugin.actions.generation.context;
7+
8+
import com.intellij.openapi.util.Key;
9+
import com.intellij.openapi.util.UserDataHolderBase;
10+
11+
public class EntityCreatorContext extends UserDataHolderBase implements GenerationContext {
12+
13+
public static final Key<String> DTO_TYPE = Key.create("DTO_TYPE");
14+
public static final Key<String> ENTITY_ID = Key.create("ENTITY_ID");
15+
}
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
/*
2+
* Copyright © Magento, Inc. All rights reserved.
3+
* See COPYING.txt for license details.
4+
*/
5+
6+
package com.magento.idea.magento2plugin.actions.generation.context;
7+
8+
public interface GenerationContext {
9+
}

src/com/magento/idea/magento2plugin/actions/generation/data/SaveEntityCommandData.java

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ public class SaveEntityCommandData {
1111

1212
private final String moduleName;
1313
private final String entityName;
14+
private final String entityId;
1415
private final String modelName;
1516
private final String resourceModelName;
1617
private final String dtoName;
@@ -23,6 +24,7 @@ public class SaveEntityCommandData {
2324
*
2425
* @param moduleName String
2526
* @param entityName String
27+
* @param entityId String
2628
* @param modelName String
2729
* @param resourceModelName String
2830
* @param dtoName String
@@ -33,6 +35,7 @@ public class SaveEntityCommandData {
3335
public SaveEntityCommandData(
3436
final @NotNull String moduleName,
3537
final @NotNull String entityName,
38+
final @NotNull String entityId,
3639
final @NotNull String modelName,
3740
final @NotNull String resourceModelName,
3841
final @NotNull String dtoName,
@@ -42,6 +45,7 @@ public SaveEntityCommandData(
4245
) {
4346
this.moduleName = moduleName;
4447
this.entityName = entityName;
48+
this.entityId = entityId;
4549
this.modelName = modelName;
4650
this.resourceModelName = resourceModelName;
4751
this.dtoName = dtoName;
@@ -68,6 +72,15 @@ public String getEntityName() {
6872
return entityName;
6973
}
7074

75+
/**
76+
* Get entity id.
77+
*
78+
* @return String
79+
*/
80+
public String getEntityId() {
81+
return entityId;
82+
}
83+
7184
/**
7285
* Get model name.
7386
*

src/com/magento/idea/magento2plugin/actions/generation/data/converter/newentitydialog/SaveEntityCommandDtoConverter.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ public SaveEntityCommandDtoConverter(
2727
super(
2828
generationContextData.getModuleName(),
2929
newEntityDialogData.getEntityName(),
30+
newEntityDialogData.getIdFieldName(),
3031
newEntityDialogData.getEntityName().concat("Model"),
3132
newEntityDialogData.getEntityName().concat("Resource"),
3233
newEntityDialogData.getEntityName().concat("Data"),

src/com/magento/idea/magento2plugin/actions/generation/dialog/NewEntityDialog.java

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
import com.intellij.ui.DocumentAdapter;
1111
import com.intellij.util.indexing.FileBasedIndex;
1212
import com.magento.idea.magento2plugin.actions.generation.NewEntityAction;
13+
import com.magento.idea.magento2plugin.actions.generation.context.EntityCreatorContext;
1314
import com.magento.idea.magento2plugin.actions.generation.data.UiComponentFormButtonData;
1415
import com.magento.idea.magento2plugin.actions.generation.data.UiComponentFormFieldData;
1516
import com.magento.idea.magento2plugin.actions.generation.data.UiComponentFormFieldsetData;
@@ -36,6 +37,7 @@
3637
import com.magento.idea.magento2plugin.actions.generation.generator.pool.provider.NewEntityGeneratorsProviderUtil;
3738
import com.magento.idea.magento2plugin.actions.generation.generator.util.DbSchemaGeneratorUtil;
3839
import com.magento.idea.magento2plugin.actions.generation.generator.util.NamespaceBuilder;
40+
import com.magento.idea.magento2plugin.actions.generation.util.GenerationContextRegistry;
3941
import com.magento.idea.magento2plugin.magento.files.ControllerBackendPhp;
4042
import com.magento.idea.magento2plugin.magento.files.DataModelFile;
4143
import com.magento.idea.magento2plugin.magento.files.DataModelInterfaceFile;
@@ -404,6 +406,15 @@ private void onOK() {
404406

405407
final NewEntityDialogData dialogData = getNewEntityDialogData();
406408
final EntityCreatorContextData context = getEntityCreatorContextData(dialogData);
409+
final EntityCreatorContext generationContext = new EntityCreatorContext();
410+
generationContext.putUserData(
411+
EntityCreatorContext.DTO_TYPE,
412+
dialogData.hasDtoInterface()
413+
? context.getDtoInterfaceNamespaceBuilder().getClassFqn()
414+
: context.getDtoModelNamespaceBuilder().getClassFqn()
415+
);
416+
generationContext.putUserData(EntityCreatorContext.ENTITY_ID, dialogData.getIdFieldName());
417+
GenerationContextRegistry.getInstance().setContext(generationContext);
407418

408419
final GeneratorPoolHandler generatorPoolHandler = new GeneratorPoolHandler(context);
409420

src/com/magento/idea/magento2plugin/actions/generation/dialog/util/ClassPropertyFormatterUtil.java

Lines changed: 28 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77

88
import com.google.common.base.CaseFormat;
99
import com.magento.idea.magento2plugin.actions.generation.data.code.ClassPropertyData;
10+
import com.magento.idea.magento2plugin.actions.generation.generator.util.PhpClassGeneratorUtil;
1011
import java.util.ArrayList;
1112
import java.util.List;
1213
import javax.swing.table.DefaultTableModel;
@@ -50,7 +51,7 @@ public static String formatSingleProperty(final String name, final String type)
5051
CaseFormat.LOWER_UNDERSCORE.to(CaseFormat.LOWER_CAMEL, name),
5152
CaseFormat.LOWER_UNDERSCORE.to(CaseFormat.UPPER_CAMEL, name),
5253
name,
53-
CaseFormat.LOWER_UNDERSCORE.to(CaseFormat.UPPER_UNDERSCORE, name)
54+
formatNameToConstant(name)
5455
).string();
5556
}
5657

@@ -61,4 +62,30 @@ public static String formatSingleProperty(final String name, final String type)
6162
public static String joinProperties(final List<String> properties) {
6263
return StringUtils.join(properties, ",");
6364
}
65+
66+
/**
67+
* Format property field to constant format with specified type.
68+
*
69+
* @param name String
70+
*
71+
* @return String
72+
*/
73+
public static String formatNameToConstant(final String name, final String typeFqn) {
74+
return String.format(
75+
"%s::%s",
76+
PhpClassGeneratorUtil.getNameFromFqn(typeFqn),
77+
formatNameToConstant(name)
78+
);
79+
}
80+
81+
/**
82+
* Format property field to constant format.
83+
*
84+
* @param name String
85+
*
86+
* @return String
87+
*/
88+
public static String formatNameToConstant(final String name) {
89+
return CaseFormat.LOWER_UNDERSCORE.to(CaseFormat.UPPER_UNDERSCORE, name);
90+
}
6491
}

src/com/magento/idea/magento2plugin/actions/generation/generator/DeleteEntityByIdCommandGenerator.java

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,13 +6,17 @@
66
package com.magento.idea.magento2plugin.actions.generation.generator;
77

88
import com.intellij.openapi.project.Project;
9+
import com.magento.idea.magento2plugin.actions.generation.context.EntityCreatorContext;
910
import com.magento.idea.magento2plugin.actions.generation.data.DeleteEntityByIdCommandData;
11+
import com.magento.idea.magento2plugin.actions.generation.dialog.util.ClassPropertyFormatterUtil;
12+
import com.magento.idea.magento2plugin.actions.generation.util.GenerationContextRegistry;
1013
import com.magento.idea.magento2plugin.magento.files.AbstractPhpFile;
1114
import com.magento.idea.magento2plugin.magento.files.ModelFile;
1215
import com.magento.idea.magento2plugin.magento.files.ResourceModelFile;
1316
import com.magento.idea.magento2plugin.magento.files.commands.DeleteEntityByIdCommandFile;
1417
import com.magento.idea.magento2plugin.magento.packages.code.ExceptionType;
1518
import com.magento.idea.magento2plugin.magento.packages.code.FrameworkLibraryType;
19+
import java.util.Objects;
1620
import java.util.Properties;
1721
import org.jetbrains.annotations.NotNull;
1822

@@ -67,11 +71,22 @@ protected void fillAttributes(final @NotNull Properties attributes) {
6771
final ResourceModelFile resourceFile =
6872
new ResourceModelFile(data.getModuleName(), data.getResourceModelName());
6973

74+
final EntityCreatorContext context =
75+
(EntityCreatorContext) GenerationContextRegistry.getInstance().getContext();
76+
Objects.requireNonNull(context);
77+
final String dtoTypeFqn = context.getUserData(EntityCreatorContext.DTO_TYPE);
78+
Objects.requireNonNull(dtoTypeFqn);
79+
typesBuilder.append(
80+
"ENTITY_ID_REFERENCE",
81+
ClassPropertyFormatterUtil.formatNameToConstant(data.getEntityId(), dtoTypeFqn),
82+
false
83+
);
84+
typesBuilder.append("DTO_TYPE", dtoTypeFqn);
85+
7086
typesBuilder
7187
.append("ENTITY_NAME", data.getEntityName(), false)
7288
.append("NAMESPACE", file.getNamespace(), false)
7389
.append("CLASS_NAME", DeleteEntityByIdCommandFile.CLASS_NAME, false)
74-
.append("ENTITY_ID", data.getEntityId(), false)
7590
.append("Exception", "Exception")
7691
.append("COULD_NOT_DELETE", ExceptionType.COULD_NOT_DELETE.getType())
7792
.append("NO_SUCH_ENTITY_EXCEPTION",

src/com/magento/idea/magento2plugin/actions/generation/generator/DeleteEntityControllerFileGenerator.java

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,14 +6,18 @@
66
package com.magento.idea.magento2plugin.actions.generation.generator;
77

88
import com.intellij.openapi.project.Project;
9+
import com.magento.idea.magento2plugin.actions.generation.context.EntityCreatorContext;
910
import com.magento.idea.magento2plugin.actions.generation.data.DeleteEntityControllerFileData;
11+
import com.magento.idea.magento2plugin.actions.generation.dialog.util.ClassPropertyFormatterUtil;
12+
import com.magento.idea.magento2plugin.actions.generation.util.GenerationContextRegistry;
1013
import com.magento.idea.magento2plugin.magento.files.AbstractPhpFile;
1114
import com.magento.idea.magento2plugin.magento.files.actions.DeleteActionFile;
1215
import com.magento.idea.magento2plugin.magento.files.commands.DeleteEntityByIdCommandFile;
1316
import com.magento.idea.magento2plugin.magento.packages.HttpMethod;
1417
import com.magento.idea.magento2plugin.magento.packages.code.BackendModuleType;
1518
import com.magento.idea.magento2plugin.magento.packages.code.ExceptionType;
1619
import com.magento.idea.magento2plugin.magento.packages.code.FrameworkLibraryType;
20+
import java.util.Objects;
1721
import java.util.Properties;
1822
import org.jetbrains.annotations.NotNull;
1923

@@ -67,7 +71,6 @@ protected void fillAttributes(final @NotNull Properties attributes) {
6771
.append("ENTITY_NAME", data.getEntityName(), false)
6872
.append("CLASS_NAME", DeleteActionFile.CLASS_NAME, false)
6973
.append("ADMIN_RESOURCE", data.getAcl(), false)
70-
.append("ENTITY_ID", data.getEntityId(), false)
7174
.append("DELETE_COMMAND",
7275
new DeleteEntityByIdCommandFile(
7376
data.getModuleName(),
@@ -84,5 +87,17 @@ protected void fillAttributes(final @NotNull Properties attributes) {
8487
.append("NO_SUCH_ENTITY_EXCEPTION",
8588
ExceptionType.NO_SUCH_ENTITY_EXCEPTION.getType())
8689
.append("COULD_NOT_DELETE", ExceptionType.COULD_NOT_DELETE.getType());
90+
91+
final EntityCreatorContext context =
92+
(EntityCreatorContext) GenerationContextRegistry.getInstance().getContext();
93+
Objects.requireNonNull(context);
94+
final String dtoTypeFqn = context.getUserData(EntityCreatorContext.DTO_TYPE);
95+
Objects.requireNonNull(dtoTypeFqn);
96+
typesBuilder.append(
97+
"ENTITY_ID_REFERENCE",
98+
ClassPropertyFormatterUtil.formatNameToConstant(data.getEntityId(), dtoTypeFqn),
99+
false
100+
);
101+
typesBuilder.append("DTO_TYPE", dtoTypeFqn);
87102
}
88103
}

src/com/magento/idea/magento2plugin/actions/generation/generator/FormGenericButtonBlockGenerator.java

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,12 +6,16 @@
66
package com.magento.idea.magento2plugin.actions.generation.generator;
77

88
import com.intellij.openapi.project.Project;
9+
import com.magento.idea.magento2plugin.actions.generation.context.EntityCreatorContext;
910
import com.magento.idea.magento2plugin.actions.generation.data.FormGenericButtonBlockData;
11+
import com.magento.idea.magento2plugin.actions.generation.dialog.util.ClassPropertyFormatterUtil;
12+
import com.magento.idea.magento2plugin.actions.generation.util.GenerationContextRegistry;
1013
import com.magento.idea.magento2plugin.magento.files.AbstractPhpFile;
1114
import com.magento.idea.magento2plugin.magento.files.FormGenericButtonBlockFile;
1215
import com.magento.idea.magento2plugin.magento.packages.code.FrameworkLibraryType;
1316
import java.util.Arrays;
1417
import java.util.Locale;
18+
import java.util.Objects;
1519
import java.util.Properties;
1620
import java.util.stream.Collectors;
1721
import org.jetbrains.annotations.NotNull;
@@ -65,11 +69,24 @@ protected void fillAttributes(final @NotNull Properties attributes) {
6569
.map(s -> s.substring(0, 1).toUpperCase(Locale.getDefault()) + s.substring(1))
6670
.collect(Collectors.joining());
6771

72+
final EntityCreatorContext context =
73+
(EntityCreatorContext) GenerationContextRegistry.getInstance().getContext();
74+
75+
if (context != null) {
76+
final String dtoTypeFqn = context.getUserData(EntityCreatorContext.DTO_TYPE);
77+
Objects.requireNonNull(dtoTypeFqn);
78+
typesBuilder.append(
79+
"ENTITY_ID_REFERENCE",
80+
ClassPropertyFormatterUtil.formatNameToConstant(data.getEntityId(), dtoTypeFqn),
81+
false
82+
);
83+
typesBuilder.append("DTO_TYPE", dtoTypeFqn);
84+
}
85+
6886
typesBuilder
6987
.append("NAMESPACE", file.getNamespace(), false)
7088
.append("ENTITY_NAME", data.getEntityName(), false)
7189
.append("CLASS_NAME", FormGenericButtonBlockFile.CLASS_NAME, false)
72-
.append("ENTITY_ID", data.getEntityId(), false)
7390
.append("ENTITY_ID_GETTER", entityIdGetter, false)
7491
.append("CONTEXT", FormGenericButtonBlockFile.CONTEXT)
7592
.append("URL", FrameworkLibraryType.URL.getType());

0 commit comments

Comments
 (0)