@Override
    public String execute(HttpServletRequest request, HttpServletResponse responce) {
        
        try {
            String xmlFilePath = fileManager.getFilePath(XML_FILE_NAME);
            String xslFilePath = fileManager.getFilePath(XSL_ACTION_ADD_FILE_NAME);
            
            Transformer transformer = StylesheetCache.newTransformer(xslFilePath);
            
            StringWriter sw = new StringWriter();
            Source source = new StreamSource(FileCache.getReader(xmlFilePath));
            Result result = new StreamResult(sw);
            
            transformer.setParameter(CATEGORY_PARAMETER, getParameter(request,CATEGORY_PARAMETER));
            transformer.setParameter(SUBCATEGORY_PARAMETER, getParameter(request,SUBCATEGORY_PARAMETER));
            transformer.setParameter(PRODUCER_PARAMETER, getParameter(request,PRODUCER_PARAMETER));
            transformer.setParameter(MODEL_PARAMETER, getParameter(request,MODEL_PARAMETER));
            transformer.setParameter(DATE_OF_ISSUE_PARAMETER, getParameter(request,DATE_OF_ISSUE_PARAMETER));
            transformer.setParameter(COLOR_PARAMETER, getParameter(request,COLOR_PARAMETER));
            transformer.setParameter(PRICE_PARAMETER, getParameter(request,PRICE_PARAMETER));
            transformer.setParameter(NOT_IN_STOCK_PARAMETER, getParameter(request,NOT_IN_STOCK_PARAMETER));
            transformer.transform(source, result);
            
            FileCache.write(sw.toString(), xmlFilePath);
            responce.sendRedirect("transform?view=products&category="+
                request.getParameter(CATEGORY_PARAMETER)+
                "&sub-category="+
                request.getParameter(SUBCATEGORY_PARAMETER));
            return null;
        } catch(TransformerConfigurationException e) {
            logger.error(e.getMessage(), e);
        } catch(TransformerException e) {
            if(e.getCause() instanceof ValidationException) {
                request.setAttribute(Attributes.ERROR_MESSAGE_ATTRIBUTE, 
                        e.getCause().getMessage());
            } else {
                logger.error(e.getMessage(), e);
            }
        } catch(IOException e) {
            logger.error(e.getMessage(), e);
        }
        
        return ERROR;
    }