Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -56,9 +56,9 @@ class ${CLASS_NAME}
try {
/** @var ${MODEL} $model */
$model = $this->modelFactory->create();
$this->resource->load($model, $entityId, '${ENTITY_ID}');
$this->resource->load($model, $entityId, ${ENTITY_ID_REFERENCE});

if (!$model->getData('${ENTITY_ID}')) {
if (!$model->getData(${ENTITY_ID_REFERENCE})) {
throw new ${NO_SUCH_ENTITY_EXCEPTION}(
__('Could not find ${ENTITY_NAME} with id: `%id`',
[
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,7 @@ class ${CLASS_NAME} extends ${EXTENDS} implements ${IMPLEMENTS_POST}, ${IMPLEMEN
/** @var ${RESULT_INTERFACE} $resultRedirect */
$resultRedirect = $this->resultFactory->create(${RESULT_FACTORY}::TYPE_REDIRECT);
$resultRedirect->setPath('*/*/');
$entityId = (int) $this->getRequest()->getParam('${ENTITY_ID}');
$entityId = (int) $this->getRequest()->getParam(${ENTITY_ID_REFERENCE});

try {
$this->deleteByIdCommand->execute($entityId);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -77,7 +77,7 @@ class ${CLASS_NAME} extends ${EXTENDS} implements ${IMPLEMENTS}
$this->dataPersistor->set('entity', $params);

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

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -59,12 +59,12 @@ class ${CLASS_NAME} extends ${PARENT_CLASS}
*/
public function prepareDataSource(array $dataSource): array
{
#set($entityIdAccessor = "['" + ${ENTITY_ID} + "']")
#set($entityIdAccessor = "[" + ${ENTITY_ID_REFERENCE} + "]")
if (isset($dataSource['data']['items'])) {
foreach ($dataSource['data']['items'] as &$item) {
if (isset($item$entityIdAccessor)) {
$entityName = static::ENTITY_NAME;
$urlData = ['${ENTITY_ID}' => $item$entityIdAccessor];
$urlData = [${ENTITY_ID_REFERENCE} => $item$entityIdAccessor];

$editUrl = $this->urlBuilder->getUrl(static::EDIT_URL_PATH, $urlData);
$deleteUrl = $this->urlBuilder->getUrl(static::DELETE_URL_PATH, $urlData);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@ class ${CLASS_NAME}
*/
public function ${ENTITY_ID_GETTER}(): int
{
return (int) $this->context->getRequest()->getParam('${ENTITY_ID}');
return (int) $this->context->getRequest()->getParam(${ENTITY_ID_REFERENCE});
}

/**
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,11 @@ class ${NAME}#if (${EXTENDS}) extends ${EXTENDS}#end#if (${IMPLEMENTS}) implemen
*/
protected function _construct()
{
#if (${ENTITY_ID_REFERENCE})
$this->_init('${DB_NAME}', ${ENTITY_ID_REFERENCE});
#else
$this->_init('${DB_NAME}', '${ENTITY_ID_COLUMN}');
#end
$this->_useIsObjectNew = true;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -59,7 +59,7 @@ class ${CLASS_NAME}
$model->addData($${DTO_PROPERTY}->getData());
$model->setHasDataChanges(true);

if (!$model->getId()) {
if (!$model->getData(${ENTITY_ID_CONST})) {
$model->isObjectNew(true);
}
$this->resource->save($model);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -87,7 +87,7 @@ class ${CLASS_NAME} extends ${EXTENDS}
$result->getItems(),
$result->getTotalCount(),
$searchCriteria,
'#if(${ENTITY_ID})${ENTITY_ID}#{else}entity_id#end'
${ENTITY_ID_REFERENCE}
);
}

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

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

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

Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
/*
* Copyright © Magento, Inc. All rights reserved.
* See COPYING.txt for license details.
*/

package com.magento.idea.magento2plugin.actions.generation.context;

import com.intellij.openapi.util.Key;
import com.intellij.openapi.util.UserDataHolderBase;

public class EntityCreatorContext extends UserDataHolderBase implements GenerationContext {

public static final Key<String> DTO_TYPE = Key.create("DTO_TYPE");
public static final Key<String> ENTITY_ID = Key.create("ENTITY_ID");
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
/*
* Copyright © Magento, Inc. All rights reserved.
* See COPYING.txt for license details.
*/

package com.magento.idea.magento2plugin.actions.generation.context;

public interface GenerationContext {
}
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ public class SaveEntityCommandData {

private final String moduleName;
private final String entityName;
private final String entityId;
private final String modelName;
private final String resourceModelName;
private final String dtoName;
Expand All @@ -23,6 +24,7 @@ public class SaveEntityCommandData {
*
* @param moduleName String
* @param entityName String
* @param entityId String
* @param modelName String
* @param resourceModelName String
* @param dtoName String
Expand All @@ -33,6 +35,7 @@ public class SaveEntityCommandData {
public SaveEntityCommandData(
final @NotNull String moduleName,
final @NotNull String entityName,
final @NotNull String entityId,
final @NotNull String modelName,
final @NotNull String resourceModelName,
final @NotNull String dtoName,
Expand All @@ -42,6 +45,7 @@ public SaveEntityCommandData(
) {
this.moduleName = moduleName;
this.entityName = entityName;
this.entityId = entityId;
this.modelName = modelName;
this.resourceModelName = resourceModelName;
this.dtoName = dtoName;
Expand All @@ -68,6 +72,15 @@ public String getEntityName() {
return entityName;
}

/**
* Get entity id.
*
* @return String
*/
public String getEntityId() {
return entityId;
}

/**
* Get model name.
*
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,7 @@ public SaveEntityCommandDtoConverter(
super(
generationContextData.getModuleName(),
newEntityDialogData.getEntityName(),
newEntityDialogData.getIdFieldName(),
newEntityDialogData.getEntityName().concat("Model"),
newEntityDialogData.getEntityName().concat("Resource"),
newEntityDialogData.getEntityName().concat("Data"),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@
import com.intellij.ui.DocumentAdapter;
import com.intellij.util.indexing.FileBasedIndex;
import com.magento.idea.magento2plugin.actions.generation.NewEntityAction;
import com.magento.idea.magento2plugin.actions.generation.context.EntityCreatorContext;
import com.magento.idea.magento2plugin.actions.generation.data.UiComponentFormButtonData;
import com.magento.idea.magento2plugin.actions.generation.data.UiComponentFormFieldData;
import com.magento.idea.magento2plugin.actions.generation.data.UiComponentFormFieldsetData;
Expand All @@ -36,6 +37,7 @@
import com.magento.idea.magento2plugin.actions.generation.generator.pool.provider.NewEntityGeneratorsProviderUtil;
import com.magento.idea.magento2plugin.actions.generation.generator.util.DbSchemaGeneratorUtil;
import com.magento.idea.magento2plugin.actions.generation.generator.util.NamespaceBuilder;
import com.magento.idea.magento2plugin.actions.generation.util.GenerationContextRegistry;
import com.magento.idea.magento2plugin.magento.files.ControllerBackendPhp;
import com.magento.idea.magento2plugin.magento.files.DataModelFile;
import com.magento.idea.magento2plugin.magento.files.DataModelInterfaceFile;
Expand Down Expand Up @@ -404,6 +406,15 @@ private void onOK() {

final NewEntityDialogData dialogData = getNewEntityDialogData();
final EntityCreatorContextData context = getEntityCreatorContextData(dialogData);
final EntityCreatorContext generationContext = new EntityCreatorContext();
generationContext.putUserData(
EntityCreatorContext.DTO_TYPE,
dialogData.hasDtoInterface()
? context.getDtoInterfaceNamespaceBuilder().getClassFqn()
: context.getDtoModelNamespaceBuilder().getClassFqn()
);
generationContext.putUserData(EntityCreatorContext.ENTITY_ID, dialogData.getIdFieldName());
GenerationContextRegistry.getInstance().setContext(generationContext);

final GeneratorPoolHandler generatorPoolHandler = new GeneratorPoolHandler(context);

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@

import com.google.common.base.CaseFormat;
import com.magento.idea.magento2plugin.actions.generation.data.code.ClassPropertyData;
import com.magento.idea.magento2plugin.actions.generation.generator.util.PhpClassGeneratorUtil;
import java.util.ArrayList;
import java.util.List;
import javax.swing.table.DefaultTableModel;
Expand Down Expand Up @@ -50,7 +51,7 @@ public static String formatSingleProperty(final String name, final String type)
CaseFormat.LOWER_UNDERSCORE.to(CaseFormat.LOWER_CAMEL, name),
CaseFormat.LOWER_UNDERSCORE.to(CaseFormat.UPPER_CAMEL, name),
name,
CaseFormat.LOWER_UNDERSCORE.to(CaseFormat.UPPER_UNDERSCORE, name)
formatNameToConstant(name)
).string();
}

Expand All @@ -61,4 +62,30 @@ public static String formatSingleProperty(final String name, final String type)
public static String joinProperties(final List<String> properties) {
return StringUtils.join(properties, ",");
}

/**
* Format property field to constant format with specified type.
*
* @param name String
*
* @return String
*/
public static String formatNameToConstant(final String name, final String typeFqn) {
return String.format(
"%s::%s",
PhpClassGeneratorUtil.getNameFromFqn(typeFqn),
formatNameToConstant(name)
);
}

/**
* Format property field to constant format.
*
* @param name String
*
* @return String
*/
public static String formatNameToConstant(final String name) {
return CaseFormat.LOWER_UNDERSCORE.to(CaseFormat.UPPER_UNDERSCORE, name);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -6,13 +6,17 @@
package com.magento.idea.magento2plugin.actions.generation.generator;

import com.intellij.openapi.project.Project;
import com.magento.idea.magento2plugin.actions.generation.context.EntityCreatorContext;
import com.magento.idea.magento2plugin.actions.generation.data.DeleteEntityByIdCommandData;
import com.magento.idea.magento2plugin.actions.generation.dialog.util.ClassPropertyFormatterUtil;
import com.magento.idea.magento2plugin.actions.generation.util.GenerationContextRegistry;
import com.magento.idea.magento2plugin.magento.files.AbstractPhpFile;
import com.magento.idea.magento2plugin.magento.files.ModelFile;
import com.magento.idea.magento2plugin.magento.files.ResourceModelFile;
import com.magento.idea.magento2plugin.magento.files.commands.DeleteEntityByIdCommandFile;
import com.magento.idea.magento2plugin.magento.packages.code.ExceptionType;
import com.magento.idea.magento2plugin.magento.packages.code.FrameworkLibraryType;
import java.util.Objects;
import java.util.Properties;
import org.jetbrains.annotations.NotNull;

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

final EntityCreatorContext context =
(EntityCreatorContext) GenerationContextRegistry.getInstance().getContext();
Objects.requireNonNull(context);
final String dtoTypeFqn = context.getUserData(EntityCreatorContext.DTO_TYPE);
Objects.requireNonNull(dtoTypeFqn);
typesBuilder.append(
"ENTITY_ID_REFERENCE",
ClassPropertyFormatterUtil.formatNameToConstant(data.getEntityId(), dtoTypeFqn),
false
);
typesBuilder.append("DTO_TYPE", dtoTypeFqn);

typesBuilder
.append("ENTITY_NAME", data.getEntityName(), false)
.append("NAMESPACE", file.getNamespace(), false)
.append("CLASS_NAME", DeleteEntityByIdCommandFile.CLASS_NAME, false)
.append("ENTITY_ID", data.getEntityId(), false)
.append("Exception", "Exception")
.append("COULD_NOT_DELETE", ExceptionType.COULD_NOT_DELETE.getType())
.append("NO_SUCH_ENTITY_EXCEPTION",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,14 +6,18 @@
package com.magento.idea.magento2plugin.actions.generation.generator;

import com.intellij.openapi.project.Project;
import com.magento.idea.magento2plugin.actions.generation.context.EntityCreatorContext;
import com.magento.idea.magento2plugin.actions.generation.data.DeleteEntityControllerFileData;
import com.magento.idea.magento2plugin.actions.generation.dialog.util.ClassPropertyFormatterUtil;
import com.magento.idea.magento2plugin.actions.generation.util.GenerationContextRegistry;
import com.magento.idea.magento2plugin.magento.files.AbstractPhpFile;
import com.magento.idea.magento2plugin.magento.files.actions.DeleteActionFile;
import com.magento.idea.magento2plugin.magento.files.commands.DeleteEntityByIdCommandFile;
import com.magento.idea.magento2plugin.magento.packages.HttpMethod;
import com.magento.idea.magento2plugin.magento.packages.code.BackendModuleType;
import com.magento.idea.magento2plugin.magento.packages.code.ExceptionType;
import com.magento.idea.magento2plugin.magento.packages.code.FrameworkLibraryType;
import java.util.Objects;
import java.util.Properties;
import org.jetbrains.annotations.NotNull;

Expand Down Expand Up @@ -67,7 +71,6 @@ protected void fillAttributes(final @NotNull Properties attributes) {
.append("ENTITY_NAME", data.getEntityName(), false)
.append("CLASS_NAME", DeleteActionFile.CLASS_NAME, false)
.append("ADMIN_RESOURCE", data.getAcl(), false)
.append("ENTITY_ID", data.getEntityId(), false)
.append("DELETE_COMMAND",
new DeleteEntityByIdCommandFile(
data.getModuleName(),
Expand All @@ -84,5 +87,17 @@ protected void fillAttributes(final @NotNull Properties attributes) {
.append("NO_SUCH_ENTITY_EXCEPTION",
ExceptionType.NO_SUCH_ENTITY_EXCEPTION.getType())
.append("COULD_NOT_DELETE", ExceptionType.COULD_NOT_DELETE.getType());

final EntityCreatorContext context =
(EntityCreatorContext) GenerationContextRegistry.getInstance().getContext();
Objects.requireNonNull(context);
final String dtoTypeFqn = context.getUserData(EntityCreatorContext.DTO_TYPE);
Objects.requireNonNull(dtoTypeFqn);
typesBuilder.append(
"ENTITY_ID_REFERENCE",
ClassPropertyFormatterUtil.formatNameToConstant(data.getEntityId(), dtoTypeFqn),
false
);
typesBuilder.append("DTO_TYPE", dtoTypeFqn);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -6,12 +6,16 @@
package com.magento.idea.magento2plugin.actions.generation.generator;

import com.intellij.openapi.project.Project;
import com.magento.idea.magento2plugin.actions.generation.context.EntityCreatorContext;
import com.magento.idea.magento2plugin.actions.generation.data.FormGenericButtonBlockData;
import com.magento.idea.magento2plugin.actions.generation.dialog.util.ClassPropertyFormatterUtil;
import com.magento.idea.magento2plugin.actions.generation.util.GenerationContextRegistry;
import com.magento.idea.magento2plugin.magento.files.AbstractPhpFile;
import com.magento.idea.magento2plugin.magento.files.FormGenericButtonBlockFile;
import com.magento.idea.magento2plugin.magento.packages.code.FrameworkLibraryType;
import java.util.Arrays;
import java.util.Locale;
import java.util.Objects;
import java.util.Properties;
import java.util.stream.Collectors;
import org.jetbrains.annotations.NotNull;
Expand Down Expand Up @@ -65,11 +69,24 @@ protected void fillAttributes(final @NotNull Properties attributes) {
.map(s -> s.substring(0, 1).toUpperCase(Locale.getDefault()) + s.substring(1))
.collect(Collectors.joining());

final EntityCreatorContext context =
(EntityCreatorContext) GenerationContextRegistry.getInstance().getContext();

if (context != null) {
final String dtoTypeFqn = context.getUserData(EntityCreatorContext.DTO_TYPE);
Objects.requireNonNull(dtoTypeFqn);
typesBuilder.append(
"ENTITY_ID_REFERENCE",
ClassPropertyFormatterUtil.formatNameToConstant(data.getEntityId(), dtoTypeFqn),
false
);
typesBuilder.append("DTO_TYPE", dtoTypeFqn);
}

typesBuilder
.append("NAMESPACE", file.getNamespace(), false)
.append("ENTITY_NAME", data.getEntityName(), false)
.append("CLASS_NAME", FormGenericButtonBlockFile.CLASS_NAME, false)
.append("ENTITY_ID", data.getEntityId(), false)
.append("ENTITY_ID_GETTER", entityIdGetter, false)
.append("CONTEXT", FormGenericButtonBlockFile.CONTEXT)
.append("URL", FrameworkLibraryType.URL.getType());
Expand Down
Loading