Example usage for org.springframework.web.multipart MultipartFile getSize

List of usage examples for org.springframework.web.multipart MultipartFile getSize

Introduction

In this page you can find the example usage for org.springframework.web.multipart MultipartFile getSize.

Prototype

long getSize();

Source Link

Document

Return the size of the file in bytes.

Usage

From source file:com.jkkp.modules.supplier.controller.SupplierController.java

/**
 * //  w w w.j  av  a 2 s.  c  o m
 */
@RequestMapping(value = "/updateSupplierCompanyStaff", method = RequestMethod.POST)
public String updateSupplierCompanyStaff(SupplierCompanyStaff entity, HttpServletRequest request,
        MultipartFile userImg, String avatar) {
    SupplierCompanyStaff oldEntity = serviceImpl.findById(entity.getId());
    Attachment att = new Attachment();
    att.setMainid(entity.getId());
    att.setFiletype(AttachmentConstant.SUPPLIER_STAFF_TYPE);
    List<Attachment> staffImageList = attachmentService.select(att);
    if (userImg.getSize() > 0) {
        if (!staffImageList.isEmpty()) {
            for (Attachment attachment : staffImageList) {
                attachmentService.deleteById(attachment.getId());
            }
        }
        Attachment attachment = attachmentService.uploadOne((MultipartRequest) request);
        if (attachment != null) {
            int mainid = entity.getId();
            Admin admin = new Admin();
            attachmentService.saveAttachment(attachment, admin, mainid, AttachmentConstant.SUPPLIER_STAFF_TYPE);
        }
    }
    if (entity.getSid() == 2) {
        entity.setSjsSuggest(null);
    }
    entity.setAvatar(null);
    entity.setCreateTime(oldEntity.getCreateTime());
    entity.setSpId(oldEntity.getSpId());
    serviceImpl.update(entity);
    return "redirect:/supplier/xiangqing.xhtml";
}

From source file:com.devnexus.ting.web.controller.cfp.CallForPapersController.java

private CfpSpeakerImage processPicture(MultipartFile picture, BindingResult bindingResult) {
    CfpSpeakerImage cfpSpeakerImage = null;
    byte[] pictureData = null;

    try {/*from   w ww  .jav a  2 s .  com*/
        pictureData = picture.getBytes();
    } catch (IOException e) {
        LOGGER.error("Error processing Image.", e);
        bindingResult
                .addError(new FieldError("cfpSubmissionSpeaker", "pictureFile", "Error processing Image."));
        return null;
    }

    if (pictureData != null && picture.getSize() > 0) {

        ByteArrayInputStream bais = new ByteArrayInputStream(pictureData);
        BufferedImage image;
        try {
            image = ImageIO.read(bais);
        } catch (IOException e) {
            LOGGER.error("Error processing Image.", e);
            bindingResult
                    .addError(new FieldError("cfpSubmissionSpeaker", "pictureFile", "Error processing Image."));
            return null;
        }

        if (image == null) {
            //FIXME better way?
            final String fileSizeFormatted = FileUtils.byteCountToDisplaySize(picture.getSize());
            LOGGER.warn(String.format("Cannot parse file '%s' (Content Type: %s; Size: %s) as image.",
                    picture.getOriginalFilename(), picture.getContentType(), fileSizeFormatted));
            bindingResult.addError(new FieldError("cfpSubmissionSpeaker", "pictureFile",
                    String.format(
                            "Did you upload a valid image? We cannot parse file '%s' (Size: %s) as image file.",
                            picture.getOriginalFilename(), fileSizeFormatted)));
            return null;
        }

        int imageHeight = image.getHeight();
        int imageWidth = image.getWidth();

        if (imageHeight < 360 && imageWidth < 360) {
            bindingResult.addError(new FieldError("cfpSubmissionSpeaker", "pictureFile", String.format(
                    "Your image '%s' (%sx%spx) is too small. Please provide an image of at least 360x360px.",
                    picture.getOriginalFilename(), imageWidth, imageHeight)));
        }

        cfpSpeakerImage = new CfpSpeakerImage();

        cfpSpeakerImage.setFileData(pictureData);
        cfpSpeakerImage.setFileModified(new Date());
        cfpSpeakerImage.setFileSize(picture.getSize());
        cfpSpeakerImage.setName(picture.getOriginalFilename());
        cfpSpeakerImage.setType(picture.getContentType());

        return cfpSpeakerImage;
    }

    return null;
}

From source file:com.opendesign.service.ProjectService.java

/**
 * ?  ?/*from w  w  w  . j  a v  a 2 s  .c o  m*/
 * 
 * @param workVO
 * @param request
 * @return
 * @throws IOException
 */
@Transactional
public Map<String, Object> insertProjectWork(ProjectWorkVO workVO, MultipartHttpServletRequest request)
        throws IOException {
    Map<String, Object> resultMap = new HashMap<String, Object>();

    // 00. ?:
    MultipartFile ckFile = request.getFile("fileUriFile");
    if (ckFile != null) {
        if (ckFile.getSize() > CheckRule.LIMIT_FILE_SIZE) {
            resultMap.put(RstConst.P_NAME, RstConst.V_FILE_SIZE);
            resultMap.put("fileName", ckFile.getOriginalFilename());
            return resultMap;
        }
    }

    // 
    CmnUtil.handleHtmlEnterRN2BR(workVO, "contents");

    //0.
    // === ?? ? 
    String fileUploadDbPathThumb = CmnUtil.handleFileUpload(request, "fileUriFileThumb",
            FileUploadDomain.PROJECT_WORK_FILE);
    workVO.setThumbUri(fileUploadDbPathThumb);
    /*
     * ?? ?  ??  Thumbnail 
     */
    String fileUploadDirThumb = CmnUtil.getFileUploadDir(request, FileUploadDomain.PROJECT_WORK_FILE);
    String fileNameThumb = File.separator + FilenameUtils.getName(fileUploadDbPathThumb);
    ThumbnailManager.saveThumbProjectWorkSmall(fileUploadDirThumb + fileNameThumb);

    // === 1.work
    // projectSubjectSeq  .
    UserVO user = CmnUtil.getLoginUser(request);
    workVO.setMemberSeq(user.getSeq());
    CmnUtil.setCmnDate(workVO);
    dao.insertProjectWork(workVO);

    // === 2.workVer
    // === ? 
    String fileUploadDbPath = CmnUtil.handleFileUpload(request, "fileUriFile",
            FileUploadDomain.PROJECT_WORK_FILE);

    /*
     * ?? ?  ??  Thumbnail 
     * ?? ?  ? ?  Thumbnail  
     */

    String fileUploadDir = CmnUtil.getFileUploadDir(request, FileUploadDomain.PROJECT_WORK_FILE);
    String fileName = File.separator + FilenameUtils.getName(fileUploadDbPath);
    if (CmnUtil.isImageFile(fileName)) {
        ThumbnailManager.saveThumbProjectWorkSmall(fileUploadDir + fileName);
        ThumbnailManager.saveThumbProjectWorkLarge(fileUploadDir + fileName);
    }

    String oriFileName = CmnUtil.handleFileUploadGetOriFileName(request, "fileUriFile");
    ProjectWorkVerVO verVO = new ProjectWorkVerVO();
    verVO.setProjectWorkSeq(workVO.getSeq());
    verVO.setFileUri(fileUploadDbPath);
    verVO.setFilename(oriFileName);
    verVO.setVer(VERSION_START);
    CmnUtil.setCmnDate(verVO);
    dao.insertProjectWorkVer(verVO);

    // 2.1   ver 
    workVO.setLastVer(VERSION_START);
    dao.updateProjectWorkLastVer(workVO);

    // === 3. workMember
    // ?: (??? ?).
    Set<String> allEmails = new HashSet<String>();
    allEmails.add(user.getEmail());
    if (!CmnUtil.isEmpty(workVO.getWorkMemberEmails())) {
        for (String item : workVO.getWorkMemberEmails()) {
            allEmails.add(item);
        }
    }
    List<String> seqs = userDao.selectMemberSeqsFromEmails(allEmails);
    for (String seq : seqs) {
        insertWorkMember(workVO.getSeq(), seq);
    }

    resultMap.put(RstConst.P_NAME, RstConst.V_SUCESS);
    return resultMap;
}

From source file:com.opendesign.service.ProjectService.java

/**
 * <pre>/*  w  w  w  .j a  v a 2 s .  co  m*/
 * ?  
 * 1.  ?    0.1 ?
 * </pre>
 * 
 * @param workVO
 * @param request
 * @return
 * @throws IOException
 */
@Transactional
public Map<String, Object> updateProjectWork(ProjectWorkVO workVO, MultipartHttpServletRequest request)
        throws IOException {
    Map<String, Object> resultMap = new HashMap<String, Object>();

    // 00. ?:
    MultipartFile ckFile = request.getFile("fileUriFile");
    if (ckFile != null) {
        if (ckFile.getSize() > CheckRule.LIMIT_FILE_SIZE) {
            resultMap.put(RstConst.P_NAME, RstConst.V_FILE_SIZE);
            resultMap.put("fileName", ckFile.getOriginalFilename());
            return resultMap;
        }
    }

    // 
    CmnUtil.handleHtmlEnterRN2BR(workVO, "contents");

    //0.
    // === ?? ? 
    String fileUploadDbPathThumb = CmnUtil.handleFileUpload(request, "fileUriFileThumb",
            FileUploadDomain.PROJECT_WORK_FILE);
    workVO.setThumbUri(fileUploadDbPathThumb);

    if (!StringUtils.isEmpty(fileUploadDbPathThumb)) {
        /*
         * ?? ?  ??  Thumbnail 
         */
        String fileUploadDirThumb = CmnUtil.getFileUploadDir(request, FileUploadDomain.PROJECT_WORK_FILE);
        String fileNameThumb = File.separator + FilenameUtils.getName(fileUploadDbPathThumb);
        ThumbnailManager.saveThumbProjectWorkSmall(fileUploadDirThumb + fileNameThumb);
    }

    // === 1.work
    // projectSubjectSeq  .
    UserVO user = CmnUtil.getLoginUser(request);
    workVO.setMemberSeq(user.getSeq());
    CmnUtil.setCmnDate(workVO);
    dao.updateProjectWork(workVO);

    // === 2.workVer: ?   0.1 ?
    // === ? 
    String fileUploadDbPath = CmnUtil.handleFileUpload(request, "fileUriFile",
            FileUploadDomain.PROJECT_WORK_FILE);
    if (!StringUtils.isEmpty(fileUploadDbPath)) {
        /*
         * ?? ?  ??  Thumbnail 
         * ?? ?  ? ?  Thumbnail  
         */
        String fileUploadDir = CmnUtil.getFileUploadDir(request, FileUploadDomain.PROJECT_WORK_FILE);
        String fileName = File.separator + FilenameUtils.getName(fileUploadDbPath);
        if (CmnUtil.isImageFile(fileName)) {
            ThumbnailManager.saveThumbProjectWorkSmall(fileUploadDir + fileName);
            ThumbnailManager.saveThumbProjectWorkLarge(fileUploadDir + fileName);
        }
    }

    if (!StringUtils.isEmpty(fileUploadDbPath)) {
        String oriFileName = CmnUtil.handleFileUploadGetOriFileName(request, "fileUriFile");
        // ?  
        String lastVer = dao.selectProjectWorkLastVer(workVO.getSeq());
        String nextVer = CmnUtil.getNextVersion(lastVer);
        //
        ProjectWorkVerVO verVO = new ProjectWorkVerVO();
        verVO.setProjectWorkSeq(workVO.getSeq());
        verVO.setFileUri(fileUploadDbPath);
        verVO.setFilename(oriFileName);
        verVO.setVer(nextVer);
        CmnUtil.setCmnDate(verVO);
        dao.insertProjectWorkVer(verVO);

        // 2.1   ver 
        workVO.setLastVer(nextVer);
        dao.updateProjectWorkLastVer(workVO);
    }

    // === 3. workMember
    // ?: (??? ?).
    Set<String> allEmails = new HashSet<String>();
    allEmails.add(user.getEmail());
    if (!CmnUtil.isEmpty(workVO.getWorkMemberEmails())) {
        for (String item : workVO.getWorkMemberEmails()) {
            allEmails.add(item);
        }
    }
    List<String> seqs = userDao.selectMemberSeqsFromEmails(allEmails);
    dao.deleteProjectWorkMember(workVO.getSeq());
    for (String seq : seqs) {
        insertWorkMember(workVO.getSeq(), seq);
    }

    resultMap.put(RstConst.P_NAME, RstConst.V_SUCESS);
    return resultMap;
}

From source file:com.vmware.appfactory.application.controller.AppApiController.java

/**
 * Helper method to validate the input params, and throw appropriate exceptions.
 *
 * @param uploadFile/*from   ww w . java 2s. c o m*/
 * @param uploadApp
 * @throws AfBadRequestException
 */
private ApplicationCreateRequest loadSessionUploadApp(MultipartFile uploadFile, HttpServletRequest request)
        throws AfBadRequestException {
    ApplicationCreateRequest uploadApp = (ApplicationCreateRequest) request.getSession()
            .getAttribute(SES_APP_REQUEST);

    // Cleanup session variables created during step 1 which is not required on the session anymore.
    request.getSession().removeAttribute(SES_APP_REQUEST);

    if (uploadApp == null) {
        _log.warn("uploadApp details are not found in session");
        throw new AfBadRequestException("Upload details are not found in session.");
    }

    if (StringUtils.isBlank(uploadFile.getOriginalFilename())) {
        throw new AfBadRequestException("Upload file has no filename.");
    }

    if (uploadFile.getSize() == 0) {
        throw new AfBadRequestException("Upload file has no size.");
    }
    return uploadApp;
}

From source file:com.eryansky.modules.disk.service.DiskManager.java

/**
 * /*  ww  w.  ja v  a2s  . co  m*/
 * @param sessionInfo
 * @param folder
 * @param uploadFile
 * @throws Exception
 */
public File fileUpload(SessionInfo sessionInfo, Folder folder, MultipartFile uploadFile) throws Exception {
    File file = null;
    /*      Exception exception = null;
    */
    java.io.File tempFile = null;
    try {
        String relativeDir = DiskUtils.getRelativePath(folder, sessionInfo.getUserId());
        String fullName = uploadFile.getOriginalFilename();
        String code = FileUploadUtils.encodingFilenamePrefix(sessionInfo.getUserId().toString(), fullName);
        String storePath = iFileManager.getStorePath(folder, sessionInfo.getUserId(),
                uploadFile.getOriginalFilename());

        String fileTemp = AppConstants.getDiskTempDir() + java.io.File.separator + code;
        tempFile = new java.io.File(fileTemp);
        FileOutputStream fos = FileUtils.openOutputStream(tempFile);
        IOUtils.copy(uploadFile.getInputStream(), fos);

        iFileManager.saveFile(storePath, fileTemp, false);
        file = new File();
        file.setFolder(folder);
        file.setCode(code);
        file.setUserId(sessionInfo.getUserId());
        file.setName(fullName);
        file.setFilePath(storePath);
        file.setFileSize(uploadFile.getSize());
        file.setFileSuffix(FilenameUtils.getExtension(fullName));
        fileManager.save(file);
    } catch (Exception e) {
        // exception = e;
        throw new ServiceException(DiskUtils.UPLOAD_FAIL_MSG + e.getMessage(), e);
    } finally {
        //         if (exception != null && file != null) {
        //            DiskUtils.deleteFile(null, file.getId());
        //         }
        if (tempFile != null && tempFile.exists()) {
            tempFile.delete();
        }

    }
    return file;

}

From source file:com.egeniuss.appmarket.controller.AppManagerController.java

@RequestMapping("/uploadApp.html")
public @ResponseBody Map<String, Object> uploadApp(@RequestParam(required = false) MultipartFile app,
        HttpServletRequest request) {//www. j a va  2  s  . c  o  m
    Date now = new Date();
    long time = now.getTime();
    String appFileName = app.getOriginalFilename();
    String realFileName = time + appFileName.substring(appFileName.lastIndexOf("."));
    Map<String, Object> msg = new HashMap<String, Object>();
    try {
        FileUtils.copyInputStreamToFile(app.getInputStream(), new File(appStore.concat(realFileName)));
    } catch (IOException e) {
        LOGGER.error("?", e);
        msg.put("errcode", -1);
        msg.put("errmsg", "<br/>" + e.getMessage());
        return msg;
    }
    SimpleDateFormat formator = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
    StringTokenizer linemsg = new StringTokenizer(request.getParameter("releaseNote"), "\n");
    StringBuilder releaseNoteSb = new StringBuilder();
    while (linemsg.hasMoreElements()) {
        releaseNoteSb.append(linemsg.nextElement()).append("\\n");
    }
    Object[] args = new Object[] { time, request.getParameter("appKey"), request.getParameter("appPlatform"),
            request.getParameter("appEnv"), request.getParameter("versionNum"), app.getSize(),
            releaseNoteSb.toString(), realFileName, formator.format(now) };
    int[] argTypes = new int[] { Types.VARCHAR, Types.VARCHAR, Types.VARCHAR, Types.VARCHAR, Types.VARCHAR,
            Types.DECIMAL, Types.VARCHAR, Types.VARCHAR, Types.VARCHAR };
    jdbcTemplate.update(
            "insert into APP_MARKET (APP_ID, APP_KEY, APP_PLATFORM, APP_ENV, VERSION_NUM, APP_SIZE, RELEASE_NOTE, FILE_NAME, CREATE_TIME) values (?, ?, ?, ?, ?, ?, ?, ?, ?)",
            args, argTypes);
    msg.put("errcode", 0);
    msg.put("errmsg", "ok");
    return msg;
}

From source file:csns.web.controller.SubmissionController.java

@RequestMapping(value = "/submission/upload", method = RequestMethod.POST)
public String upload(@RequestParam Long id, @RequestParam boolean additional,
        @RequestParam MultipartFile uploadedFile, ModelMap models) {
    User user = SecurityUtils.getUser();
    Submission submission = submissionDao.getSubmission(id);
    boolean isInstructor = submission.getAssignment().getSection().isInstructor(user);
    String view = additional && isInstructor ? "/submission/add?id=" + id : "/submission/view?id=" + id;

    if (!isInstructor && submission.isPastDue()) {
        models.put("message", "error.assignment.pastdue");
        models.put("backUrl", view);
        return "error";
    }//from  w ww  . j ava 2s.c o m

    if (!uploadedFile.isEmpty()) {
        String fileName = uploadedFile.getOriginalFilename();
        if (!isInstructor
                && !submission.getAssignment().isFileExtensionAllowed(File.getFileExtension(fileName))) {
            models.put("message", "error.assignment.file.type");
            models.put("backUrl", view);
            return "error";
        }

        File file = new File();
        file.setName(fileName);
        file.setType(uploadedFile.getContentType());
        file.setSize(uploadedFile.getSize());
        file.setDate(new Date());
        file.setOwner(submission.getStudent());
        file.setSubmission(submission);
        file = fileDao.saveFile(file);
        fileIO.save(file, uploadedFile);

        submission.incrementFileCount();
        submissionDao.saveSubmission(submission);

        logger.info(user.getUsername() + " uploaded file " + file.getId());
    }

    return "redirect:" + view;
}

From source file:service.AdService.java

public void create(Boolean isAutherized, Long catId, String email, String phone, String price,
        MultipartFile previews[], String name, String desc, Long booleanIds[], String booleanVals[],
        Long stringIds[], String stringVals[], Long numIds[], String snumVals[], Long dateIds[],
        Date dateVals[], Long selIds[], Long selVals[], Long multyIds[], String multyVals[], Date dateFrom,
        Date dateTo, Long localIds[]) throws IOException {
    Boolean newUser = false;/* w  w  w  .  j  a  v a  2s.  com*/
    if (catId != null) {
        Category cat = catDao.find(catId);
        if (cat != null) {
            if (isAutherized || (!isAutherized && email != null && !email.equals(""))) {

                PhoneEditor phe = new PhoneEditor();
                phone = phe.getPhone(phone);
                addError(phe.error);

                if ((phone == null || phone.equals("")) && (email == null || email.equals(""))) {
                    addError(
                            "  email    ? ");
                }

                User user = userService.getUserByMail(email);
                if (!isAutherized && user == null) {
                    user = userService.registerStandardUser(email);
                    newUser = true;
                    List<String> userErrors = userService.getErrors();
                    if (!userErrors.isEmpty()) {
                        for (String er : userErrors) {
                            addError("user_service: " + er + "; ");
                        }
                    }
                }
                Ad ad = new Ad();
                ad.setInsertDate(new Date());
                ad.setShowCount((long) 0);
                ad.setStatus(Ad.NEW);
                ad.setDateFrom(dateFrom);
                ad.setDateTo(dateTo);
                ad.setEmail(email);
                ad.setPhone(phone);

                ad.setAuthor(user);

                ad.setCat(cat);

                Set<Locality> locals = new HashSet();
                /*if (region != null) {
                 if (region.isAllRussia()) {
                 locals.addAll(locDao.getAll());
                 } else {
                 locals.addAll(region.getLocalities());
                 }
                 }*/
                if (localIds != null && localIds.length > 0) {
                    locals.addAll(locDao.getLocs(localIds));
                } else {
                    addError("  ?   ");
                }
                ad.setLocalities(locals);
                ad.setName(name);
                ad.setDescription(desc);
                ad.setPrice(getNumFromString(price, true));
                ad.setValues(new HashSet());
                if (validate(ad) && getErrors().isEmpty()) {
                    adDao.save(ad);

                    List<Long> reqParamIds = catDao.getRequiredParamsIds(catId);
                    List<Parametr> catParams = paramDao.getParamsFromCat(catId);
                    int i = 0;
                    ArrayList<String> paramValsErrs = new ArrayList();
                    // ? ??  ? ?  ? ??,  ?, ? ?  
                    //? ad

                    ArrayList<ParametrValue> list4Save = new ArrayList();

                    //      
                    if (booleanIds != null) {
                        if (booleanVals == null) {
                            booleanVals = new String[booleanIds.length];
                        }
                        while (i < booleanIds.length) {
                            Parametr p = paramDao.find(booleanIds[i]);
                            if (catParams.contains(p) && Parametr.BOOL == p.getParamType()) {
                                Long val = ParametrValue.NO;
                                String sval = "";
                                if (booleanVals[i] != null) {
                                    val = ParametrValue.YES;
                                    sval = "";
                                }
                                ParametrValue pv = new ParametrValue();
                                pv.setAd(ad);
                                pv.setParametr(p);
                                pv.setSelectVal(val);
                                pv.setStringVal(sval);
                                if (validate(pv)) {
                                    list4Save.add(pv);
                                }

                            }
                            i++;
                        }
                    }

                    if (stringVals != null && stringVals.length > 0) {
                        i = 0;
                        while (i < stringIds.length) {
                            Long paramId = stringIds[i];
                            Parametr p = paramDao.find(paramId);
                            if (catParams.contains(p) && Parametr.TEXT == p.getParamType()) {
                                String val = stringVals[i];
                                if (val != null && !val.equals("")) {
                                    if (reqParamIds.contains(paramId)) {
                                        reqParamIds.remove(paramId);
                                    }

                                    ParametrValue pv = new ParametrValue();
                                    pv.setAd(ad);
                                    pv.setParametr(p);
                                    pv.setStringVal(val);
                                    if (validate(pv)) {
                                        list4Save.add(pv);
                                    }

                                }
                            }
                            i++;
                        }
                    }

                    if (snumVals != null && snumVals.length > 0) {
                        i = 0;
                        while (i < numIds.length) {
                            Long paramId = numIds[i];
                            Parametr p = paramDao.find(paramId);
                            if (catParams.contains(p) && Parametr.NUM == p.getParamType()) {
                                String sval = snumVals[i];
                                if (sval != null && !sval.equals("")) {
                                    Double val = getNumFromString(sval, true);
                                    if (reqParamIds.contains(paramId)) {
                                        reqParamIds.remove(paramId);
                                    }
                                    ParametrValue pv = new ParametrValue();
                                    pv.setAd(ad);
                                    pv.setParametr(p);
                                    pv.setNumVal(val);
                                    pv.setStringVal(StringAdapter.getString(val));
                                    if (validate(pv)) {
                                        list4Save.add(pv);
                                    }

                                }
                            }
                            i++;
                        }
                        if (!getErrors().isEmpty()) {
                            for (String e : getErrors()) {
                                paramValsErrs.add(e);
                            }
                        }
                    }

                    if (dateVals != null && dateVals.length > 0) {
                        i = 0;
                        while (i < dateIds.length) {
                            Long paramId = dateIds[i];
                            Parametr p = paramDao.find(paramId);
                            if (catParams.contains(p) && Parametr.DATE == p.getParamType()) {
                                Date val = dateVals[i];
                                if (val != null) {
                                    if (reqParamIds.contains(paramId)) {
                                        reqParamIds.remove(paramId);
                                    }
                                    ParametrValue pv = new ParametrValue();
                                    pv.setAd(ad);
                                    pv.setParametr(p);
                                    pv.setDateVal(val);
                                    pv.setStringVal(DateAdapter.formatByDate(val, DateAdapter.SMALL_FORMAT));
                                    if (validate(pv)) {
                                        list4Save.add(pv);
                                    }

                                }
                            }
                            i++;
                        }
                    }

                    if (selVals != null && selVals.length > 0) {
                        i = 0;

                        while (i < selIds.length) {
                            Long paramId = selIds[i];
                            Parametr p = paramDao.find(paramId);
                            if (catParams.contains(p) && Parametr.SELECTING == p.getParamType()) {
                                Long val = selVals[i];
                                if (val != null && !val.equals(0L)) {
                                    if (reqParamIds.contains(paramId)) {
                                        reqParamIds.remove(paramId);
                                    }
                                    ParametrValue pv = new ParametrValue();
                                    pv.setAd(ad);
                                    pv.setParametr(p);
                                    pv.setSelectVal(val);
                                    pv.setStringVal(paramSelDao.find(val).getName());
                                    if (validate(pv)) {
                                        list4Save.add(pv);
                                    }

                                }
                            }
                            i++;
                        }
                    }

                    //?  ?
                    //TO DO       (??)
                    if (multyVals != null && multyVals.length > 0) {
                        for (String rawVal : multyVals) {
                            String idValArr[] = rawVal.split("_");
                            if (idValArr.length == 2) {
                                String strId = idValArr[0];
                                String strVal = idValArr[1];
                                Long paramId = Long.valueOf(strId);
                                Long val = Long.valueOf(strVal);
                                Parametr p = paramDao.find(paramId);
                                if (catParams.contains(p) && Parametr.MULTISELECTING == p.getParamType()) {
                                    if (reqParamIds.contains(paramId) && val != null) {
                                        reqParamIds.remove(paramId);
                                    }
                                    ParametrValue pv = new ParametrValue();
                                    pv.setAd(ad);
                                    pv.setParametr(p);
                                    pv.setSelectVal(val);
                                    pv.setStringVal(paramSelDao.find(val).getName());
                                    if (validate(pv)) {
                                        list4Save.add(pv);
                                    }
                                }
                            }
                        }
                    }

                    //?  ?    ?    ?
                    if (!reqParamIds.isEmpty() || !paramValsErrs.isEmpty()) {
                        for (Long id : reqParamIds) {
                            addError("    "
                                    + paramDao.find(id).getName() + "; ");
                        }
                        //?
                        adDao.delete(ad);
                    } else {

                        for (ParametrValue pv : list4Save) {
                            paramValueDao.save(pv);
                        }

                        File file = new File("/usr/local/seller/preview/" + ad.getId() + "/");
                        if (file.exists()) {
                            for (File f : file.listFiles()) {
                                f.delete();
                            }
                            file.delete();
                        }
                        file.mkdirs();
                        if (previews != null && previews.length > 0) {
                            i = 0;
                            while (i < 10 && i < previews.length) {
                                MultipartFile prev = previews[i];
                                if (prev != null && 0L < prev.getSize()) {
                                    if (prev.getSize() <= (long) 3 * 1024 * 1024) {
                                        File f = new File(
                                                "/usr/local/seller/preview/" + ad.getId() + "/supPreview");
                                        if (f.exists()) {
                                            f.delete();
                                        }
                                        prev.transferTo(f);
                                        //to do  ? - ??
                                        try {
                                            BufferedImage bi = ImageIO.read(f);
                                            BigDecimal x = BigDecimal.valueOf(0);
                                            BigDecimal y = BigDecimal.valueOf(0);
                                            BigDecimal h = BigDecimal.valueOf(bi.getHeight());
                                            BigDecimal w = BigDecimal.valueOf(bi.getWidth());
                                            if (h.compareTo(w) > 0) {
                                                y = (h.subtract(w)).divide(BigDecimal.valueOf(2),
                                                        RoundingMode.HALF_UP);
                                                h = w;
                                            } else if (h.compareTo(w) < 0) {
                                                x = (w.subtract(h)).divide(BigDecimal.valueOf(2),
                                                        RoundingMode.HALF_UP);
                                                w = h;
                                            }
                                            bi = bi.getSubimage(x.intValue(), y.intValue(), w.intValue(),
                                                    h.intValue());
                                            f.delete();
                                            f = new File("/usr/local/seller/preview/" + ad.getId() + "/" + i);
                                            ImageIO.write(bi, "png", f);
                                        } catch (Exception e) {
                                            addError(
                                                    "? ?   "
                                                            + prev.getName()
                                                            + /*"; s="+prev.getSize()+"; t="+prev.getContentType()+"; l="+previews.length+*/ "; "
                                                            + StringAdapter.getStackTraceException(e));
                                        }
                                    } else {
                                        addError(" " + prev.getName()
                                                + "   ,      ?  3 .");
                                    }
                                }
                                i++;
                            }
                        }

                        if (newUser) {
                            userService.notifyAboutRegistration(email);
                        }
                    }

                } /* else {
                  addError("user:" + user.getId() + " " + user.getName());
                  }*/

            } else {
                addError(
                        "?  ??     email");
            }
        } else {
            addError("? ?  " + catId + "   .");
        }
    } else {
        addError("?  ");
    }
}