fork download
  1. package ru.atc.gj.backoffice.actions;
  2.  
  3. import com.hybris.cockpitng.actions.ActionContext;
  4. import com.hybris.cockpitng.actions.ActionResult;
  5. import com.hybris.cockpitng.actions.CockpitAction;
  6. import com.hybris.cockpitng.engine.impl.AbstractComponentWidgetAdapterAware;
  7. import com.hybris.cockpitng.util.notifications.NotificationService;
  8. import com.hybris.cockpitng.util.notifications.event.NotificationEvent;
  9. import de.hybris.platform.core.model.product.ProductModel;
  10. import de.hybris.platform.product.ProductService;
  11. import de.hybris.platform.servicelayer.model.ModelService;
  12. import de.hybris.platform.util.CSVReader;
  13. import org.apache.commons.io.FilenameUtils;
  14. import org.apache.commons.lang.StringUtils;
  15. import org.apache.log4j.Logger;
  16. import org.hsqldb.lib.StringInputStream;
  17. import org.springframework.beans.factory.annotation.Autowired;
  18. import org.zkoss.zul.Fileupload;
  19. import ru.atc.gj.core.looks.dao.ProductLookDao;
  20. import ru.atc.gj.core.looks.service.ProductLookService;
  21. import ru.atc.gj.core.model.ProductLookModel;
  22.  
  23. import java.io.ByteArrayInputStream;
  24. import java.io.IOException;
  25. import java.io.UnsupportedEncodingException;
  26. import java.util.ArrayList;
  27. import java.util.Arrays;
  28. import java.util.List;
  29. import java.util.Map;
  30. import java.util.stream.Collectors;
  31.  
  32. public class ImportExcelLook extends AbstractComponentWidgetAdapterAware implements CockpitAction<ProductLookModel, Object> {
  33.  
  34. private static final Logger LOG = Logger.getLogger(ImportExcelLook.class);
  35.  
  36. @Autowired
  37. private NotificationService notificationService;
  38.  
  39.  
  40. @Autowired
  41. private ModelService modelService;
  42.  
  43.  
  44. @Autowired
  45. ProductLookDao productLookDao;
  46.  
  47. @Autowired
  48. ProductLookService productLookService;
  49.  
  50. @Autowired
  51. ProductService productService;
  52.  
  53. @Override
  54. public ActionResult<Object> perform(ActionContext<ProductLookModel> actionContext) {
  55.  
  56. Fileupload.get(1, uploadEvent -> Arrays.stream(uploadEvent.getMedias()).forEach(media -> {
  57. String fileExtension = FilenameUtils.getExtension(media.getName());
  58. if (!fileExtension.equals("csv")) {
  59. notificationService.notifyUser(notificationService.getWidgetNotificationSource(actionContext), "import.products.importexcellook.badFile.error", NotificationEvent.Level.FAILURE);
  60. LOG.error("File format " + media.getContentType() + " (." + fileExtension + ") not supported. Expected file: CSV");
  61. return;
  62. }
  63.  
  64. CSVReader csvReader = null;
  65.  
  66. try {
  67. if (media.isBinary()){
  68. csvReader = new CSVReader(new ByteArrayInputStream(media.getByteData()), "UTF-8");
  69. } else {
  70. csvReader = new CSVReader(new StringInputStream(media.getStringData()), "UTF-8");
  71. }
  72.  
  73. csvReader.setLinesToSkip(1);
  74. LOG.error(e.getMessage());
  75. }
  76.  
  77.  
  78.  
  79. long lineNumber = 0;
  80. List<Long> errorLines = new ArrayList<>();
  81.  
  82. if (csvReader != null) {
  83. while (csvReader.readNextLine()){
  84. try {
  85. ProductLookModel look;
  86. lineNumber++;
  87.  
  88. Map<Integer, String> line = csvReader.getLine();
  89.  
  90. for (int i = 0; i < line.size(); i ++){
  91. String trimmedLine = line.get(i).replace("\u0000", "");
  92. line.put(i, trimmedLine);
  93. }
  94.  
  95. String id = line.get(0);
  96. String title = line.get(1);
  97. String description = line.get(2);
  98. String baseProductId = line.get(3);
  99. String linkedProductIds = line.get(4);
  100. String priority = line.get(5);
  101.  
  102. if (StringUtils.isEmpty(id) || StringUtils.isEmpty(priority)) {
  103. throw new RuntimeException("Some of required fields are empty");
  104. }
  105.  
  106. look = productLookService.getLookById(id);
  107.  
  108. if (look == null) {
  109. look = modelService.create(ProductLookModel.class);
  110.  
  111. if (StringUtils.isNotEmpty(id)) {
  112. look.setId(id);
  113. }
  114.  
  115. }
  116.  
  117. look.setTitle(title);
  118. look.setDescription(description);
  119.  
  120. ProductModel baseProduct = findProduct(look, baseProductId);
  121.  
  122. if (baseProduct != null){
  123. look.setBaseProduct(baseProduct);
  124. }
  125.  
  126.  
  127.  
  128. if (StringUtils.isNotEmpty(linkedProductIds)) {
  129. List<String> linkedProductCodes = Arrays.asList(linkedProductIds.split(","));
  130.  
  131. List<ProductModel> linkedProducts = new ArrayList<>();
  132. ProductLookModel finalLook = look;
  133. linkedProductCodes.forEach(code -> {
  134. ProductModel linkedProduct = findProduct(finalLook, code);
  135.  
  136. if (linkedProduct != null){
  137. linkedProducts.add(linkedProduct);
  138. }
  139.  
  140. });
  141. look.setLinkedProducts(linkedProducts);
  142. }
  143.  
  144. if (StringUtils.isNotEmpty(priority)) {
  145. look.setPriority(Integer.valueOf(priority));
  146. }
  147.  
  148. modelService.save(look);
  149. } catch (Exception e) {
  150. LOG.error(e.getMessage());
  151. LOG.error("Error while importing Looks in line " + lineNumber);
  152. errorLines.add(lineNumber);
  153.  
  154. }
  155. }
  156. }
  157.  
  158. try {
  159. if (csvReader != null) {
  160. csvReader.close();
  161. }
  162. } catch (IOException e) {
  163. LOG.error(e.getMessage());
  164. }
  165.  
  166.  
  167. if (errorLines.isEmpty()) {
  168. notificationService.notifyUser(notificationService.getWidgetNotificationSource(actionContext), "import.products.importexcellook.success", NotificationEvent.Level.SUCCESS);
  169. } else {
  170. String errorLinesStr = errorLines.stream().map(Object::toString).collect(Collectors.joining(", "));
  171. LOG.error("Some lines were not imported due to errors: " + errorLinesStr);
  172. notificationService.notifyUser(notificationService.getWidgetNotificationSource(actionContext), "import.products.importexcellook.errors", NotificationEvent.Level.FAILURE, errorLines.size(), errorLinesStr);
  173. }
  174. }));
  175.  
  176.  
  177. return new ActionResult<>(ActionResult.SUCCESS);
  178. }
  179.  
  180. private ProductModel findProduct(ProductLookModel look, String baseProductId){
  181.  
  182. if (StringUtils.isNotEmpty(baseProductId)) {
  183. try{
  184. return productService.getProductForCode(look.getCatalogVersion(), baseProductId);
  185. } catch (Exception e) {
  186.  
  187. LOG.error("Catalog versions are not equal");
  188.  
  189. }
  190. }
  191. return null;
  192. }
  193.  
  194. }
  195.  
Compilation error #stdin compilation error #stdout 0s 0KB
stdin
Standard input is empty
compilation info
Main.java:32: error: class ImportExcelLook is public, should be declared in a file named ImportExcelLook.java
public class ImportExcelLook extends AbstractComponentWidgetAdapterAware implements CockpitAction<ProductLookModel, Object> {
       ^
Main.java:3: error: package com.hybris.cockpitng.actions does not exist
import com.hybris.cockpitng.actions.ActionContext;
                                   ^
Main.java:4: error: package com.hybris.cockpitng.actions does not exist
import com.hybris.cockpitng.actions.ActionResult;
                                   ^
Main.java:5: error: package com.hybris.cockpitng.actions does not exist
import com.hybris.cockpitng.actions.CockpitAction;
                                   ^
Main.java:6: error: package com.hybris.cockpitng.engine.impl does not exist
import com.hybris.cockpitng.engine.impl.AbstractComponentWidgetAdapterAware;
                                       ^
Main.java:7: error: package com.hybris.cockpitng.util.notifications does not exist
import com.hybris.cockpitng.util.notifications.NotificationService;
                                              ^
Main.java:8: error: package com.hybris.cockpitng.util.notifications.event does not exist
import com.hybris.cockpitng.util.notifications.event.NotificationEvent;
                                                    ^
Main.java:9: error: package de.hybris.platform.core.model.product does not exist
import de.hybris.platform.core.model.product.ProductModel;
                                            ^
Main.java:10: error: package de.hybris.platform.product does not exist
import de.hybris.platform.product.ProductService;
                                 ^
Main.java:11: error: package de.hybris.platform.servicelayer.model does not exist
import de.hybris.platform.servicelayer.model.ModelService;
                                            ^
Main.java:12: error: package de.hybris.platform.util does not exist
import de.hybris.platform.util.CSVReader;
                              ^
Main.java:13: error: package org.apache.commons.io does not exist
import org.apache.commons.io.FilenameUtils;
                            ^
Main.java:14: error: package org.apache.commons.lang does not exist
import org.apache.commons.lang.StringUtils;
                              ^
Main.java:15: error: package org.apache.log4j does not exist
import org.apache.log4j.Logger;
                       ^
Main.java:16: error: package org.hsqldb.lib does not exist
import org.hsqldb.lib.StringInputStream;
                     ^
Main.java:17: error: package org.springframework.beans.factory.annotation does not exist
import org.springframework.beans.factory.annotation.Autowired;
                                                   ^
Main.java:18: error: package org.zkoss.zul does not exist
import org.zkoss.zul.Fileupload;
                    ^
Main.java:19: error: package ru.atc.gj.core.looks.dao does not exist
import ru.atc.gj.core.looks.dao.ProductLookDao;
                               ^
Main.java:20: error: package ru.atc.gj.core.looks.service does not exist
import ru.atc.gj.core.looks.service.ProductLookService;
                                   ^
Main.java:21: error: package ru.atc.gj.core.model does not exist
import ru.atc.gj.core.model.ProductLookModel;
                           ^
Main.java:32: error: cannot find symbol
public class ImportExcelLook extends AbstractComponentWidgetAdapterAware implements CockpitAction<ProductLookModel, Object> {
                                     ^
  symbol: class AbstractComponentWidgetAdapterAware
Main.java:32: error: cannot find symbol
public class ImportExcelLook extends AbstractComponentWidgetAdapterAware implements CockpitAction<ProductLookModel, Object> {
                                                                                    ^
  symbol: class CockpitAction
Main.java:32: error: cannot find symbol
public class ImportExcelLook extends AbstractComponentWidgetAdapterAware implements CockpitAction<ProductLookModel, Object> {
                                                                                                  ^
  symbol: class ProductLookModel
Main.java:34: error: cannot find symbol
    private static final Logger LOG = Logger.getLogger(ImportExcelLook.class);
                         ^
  symbol:   class Logger
  location: class ImportExcelLook
Main.java:37: error: cannot find symbol
    private NotificationService notificationService;
            ^
  symbol:   class NotificationService
  location: class ImportExcelLook
Main.java:41: error: cannot find symbol
    private ModelService modelService;
            ^
  symbol:   class ModelService
  location: class ImportExcelLook
Main.java:45: error: cannot find symbol
    ProductLookDao productLookDao;
    ^
  symbol:   class ProductLookDao
  location: class ImportExcelLook
Main.java:48: error: cannot find symbol
    ProductLookService productLookService;
    ^
  symbol:   class ProductLookService
  location: class ImportExcelLook
Main.java:51: error: cannot find symbol
    ProductService productService;
    ^
  symbol:   class ProductService
  location: class ImportExcelLook
Main.java:54: error: cannot find symbol
    public ActionResult<Object> perform(ActionContext<ProductLookModel> actionContext) {
                                        ^
  symbol:   class ActionContext
  location: class ImportExcelLook
Main.java:54: error: cannot find symbol
    public ActionResult<Object> perform(ActionContext<ProductLookModel> actionContext) {
                                                      ^
  symbol:   class ProductLookModel
  location: class ImportExcelLook
Main.java:54: error: cannot find symbol
    public ActionResult<Object> perform(ActionContext<ProductLookModel> actionContext) {
           ^
  symbol:   class ActionResult
  location: class ImportExcelLook
Main.java:181: error: cannot find symbol
    private ProductModel findProduct(ProductLookModel look, String baseProductId){
                                     ^
  symbol:   class ProductLookModel
  location: class ImportExcelLook
Main.java:181: error: cannot find symbol
    private ProductModel findProduct(ProductLookModel look, String baseProductId){
            ^
  symbol:   class ProductModel
  location: class ImportExcelLook
Main.java:36: error: cannot find symbol
    @Autowired
     ^
  symbol:   class Autowired
  location: class ImportExcelLook
Main.java:40: error: cannot find symbol
    @Autowired
     ^
  symbol:   class Autowired
  location: class ImportExcelLook
Main.java:44: error: cannot find symbol
    @Autowired
     ^
  symbol:   class Autowired
  location: class ImportExcelLook
Main.java:47: error: cannot find symbol
    @Autowired
     ^
  symbol:   class Autowired
  location: class ImportExcelLook
Main.java:50: error: cannot find symbol
    @Autowired
     ^
  symbol:   class Autowired
  location: class ImportExcelLook
Main.java:34: error: cannot find symbol
    private static final Logger LOG = Logger.getLogger(ImportExcelLook.class);
                                      ^
  symbol:   variable Logger
  location: class ImportExcelLook
Main.java:53: error: method does not override or implement a method from a supertype
    @Override
    ^
Main.java:56: error: cannot find symbol
        Fileupload.get(1, uploadEvent -> Arrays.stream(uploadEvent.getMedias()).forEach(media -> {
        ^
  symbol:   variable Fileupload
  location: class ImportExcelLook
Main.java:57: error: cannot find symbol
            String fileExtension = FilenameUtils.getExtension(media.getName());
                                   ^
  symbol:   variable FilenameUtils
  location: class ImportExcelLook
Main.java:59: error: package NotificationEvent does not exist
                notificationService.notifyUser(notificationService.getWidgetNotificationSource(actionContext), "import.products.importexcellook.badFile.error", NotificationEvent.Level.FAILURE);
                                                                                                                                                                                 ^
Main.java:64: error: cannot find symbol
            CSVReader csvReader = null;
            ^
  symbol:   class CSVReader
  location: class ImportExcelLook
Main.java:68: error: cannot find symbol
                    csvReader = new CSVReader(new ByteArrayInputStream(media.getByteData()), "UTF-8");
                                    ^
  symbol:   class CSVReader
  location: class ImportExcelLook
Main.java:70: error: cannot find symbol
                    csvReader = new CSVReader(new StringInputStream(media.getStringData()), "UTF-8");
                                    ^
  symbol:   class CSVReader
  location: class ImportExcelLook
Main.java:70: error: cannot find symbol
                    csvReader = new CSVReader(new StringInputStream(media.getStringData()), "UTF-8");
                                                  ^
  symbol:   class StringInputStream
  location: class ImportExcelLook
Main.java:86: error: cannot find symbol
                        ProductLookModel look;
                        ^
  symbol:   class ProductLookModel
  location: class ImportExcelLook
Main.java:103: error: cannot find symbol
                        if (StringUtils.isEmpty(id) || StringUtils.isEmpty(priority)) {
                            ^
  symbol:   variable StringUtils
  location: class ImportExcelLook
Main.java:103: error: cannot find symbol
                        if (StringUtils.isEmpty(id) || StringUtils.isEmpty(priority)) {
                                                       ^
  symbol:   variable StringUtils
  location: class ImportExcelLook
Main.java:110: error: cannot find symbol
                            look = modelService.create(ProductLookModel.class);
                                                       ^
  symbol:   class ProductLookModel
  location: class ImportExcelLook
Main.java:112: error: cannot find symbol
                            if (StringUtils.isNotEmpty(id)) {
                                ^
  symbol:   variable StringUtils
  location: class ImportExcelLook
Main.java:121: error: cannot find symbol
                        ProductModel baseProduct = findProduct(look, baseProductId);
                        ^
  symbol:   class ProductModel
  location: class ImportExcelLook
Main.java:129: error: cannot find symbol
                        if (StringUtils.isNotEmpty(linkedProductIds)) {
                            ^
  symbol:   variable StringUtils
  location: class ImportExcelLook
Main.java:132: error: cannot find symbol
                            List<ProductModel> linkedProducts = new ArrayList<>();
                                 ^
  symbol:   class ProductModel
  location: class ImportExcelLook
Main.java:133: error: cannot find symbol
                            ProductLookModel finalLook = look;
                            ^
  symbol:   class ProductLookModel
  location: class ImportExcelLook
Main.java:135: error: cannot find symbol
                                ProductModel linkedProduct = findProduct(finalLook, code);
                                ^
  symbol:   class ProductModel
  location: class ImportExcelLook
Main.java:145: error: cannot find symbol
                            if (StringUtils.isNotEmpty(priority)) {
                                ^
  symbol:   variable StringUtils
  location: class ImportExcelLook
Main.java:169: error: package NotificationEvent does not exist
                notificationService.notifyUser(notificationService.getWidgetNotificationSource(actionContext), "import.products.importexcellook.success", NotificationEvent.Level.SUCCESS);
                                                                                                                                                                           ^
Main.java:173: error: package NotificationEvent does not exist
                notificationService.notifyUser(notificationService.getWidgetNotificationSource(actionContext), "import.products.importexcellook.errors", NotificationEvent.Level.FAILURE, errorLines.size(), errorLinesStr);
                                                                                                                                                                          ^
Main.java:178: error: cannot find symbol
        return new ActionResult<>(ActionResult.SUCCESS);
                   ^
  symbol:   class ActionResult
  location: class ImportExcelLook
Main.java:178: error: cannot find symbol
        return new ActionResult<>(ActionResult.SUCCESS);
                                  ^
  symbol:   variable ActionResult
  location: class ImportExcelLook
Main.java:183: error: cannot find symbol
        if (StringUtils.isNotEmpty(baseProductId)) {
            ^
  symbol:   variable StringUtils
  location: class ImportExcelLook
64 errors
stdout
Standard output is empty