Search in sources :

Example 1 with Attachment

use of run.halo.app.model.entity.Attachment in project halo by ruibaby.

the class BackupServiceImpl method importData.

@Override
public void importData(MultipartFile file) throws IOException {
    String jsonContent = FileUtils.readString(file.getInputStream());
    ObjectMapper mapper = JsonUtils.createDefaultJsonMapper();
    TypeReference<HashMap<String, Object>> typeRef = new TypeReference<>() {
    };
    HashMap<String, Object> data = mapper.readValue(jsonContent, typeRef);
    String version = (String) Objects.requireNonNullElse(data.get("version"), "");
    if (!VersionUtil.hasSameMajorAndMinorVersion(HaloConst.HALO_VERSION, version)) {
        throw new BadRequestException("导入数据的主次版本号与当前系统版本号不匹配,不支持导入!");
    }
    List<Attachment> attachments = Arrays.asList(mapper.readValue(mapper.writeValueAsString(data.get("attachments")), Attachment[].class));
    attachmentService.createInBatch(attachments);
    List<Category> categories = Arrays.asList(mapper.readValue(mapper.writeValueAsString(data.get("categories")), Category[].class));
    categoryService.createInBatch(categories);
    List<Tag> tags = Arrays.asList(mapper.readValue(mapper.writeValueAsString(data.get("tags")), Tag[].class));
    tagService.createInBatch(tags);
    List<CommentBlackList> commentBlackList = Arrays.asList(mapper.readValue(mapper.writeValueAsString(data.get("comment_black_list")), CommentBlackList[].class));
    commentBlackListService.createInBatch(commentBlackList);
    List<Journal> journals = Arrays.asList(mapper.readValue(mapper.writeValueAsString(data.get("journals")), Journal[].class));
    journalService.createInBatch(journals);
    List<JournalComment> journalComments = Arrays.asList(mapper.readValue(mapper.writeValueAsString(data.get("journal_comments")), JournalComment[].class));
    journalCommentService.createInBatch(journalComments);
    List<Link> links = Arrays.asList(mapper.readValue(mapper.writeValueAsString(data.get("links")), Link[].class));
    linkService.createInBatch(links);
    List<Log> logs = Arrays.asList(mapper.readValue(mapper.writeValueAsString(data.get("logs")), Log[].class));
    logService.createInBatch(logs);
    List<Menu> menus = Arrays.asList(mapper.readValue(mapper.writeValueAsString(data.get("menus")), Menu[].class));
    menuService.createInBatch(menus);
    List<Option> options = Arrays.asList(mapper.readValue(mapper.writeValueAsString(data.get("options")), Option[].class));
    optionService.createInBatch(options);
    eventPublisher.publishEvent(new OptionUpdatedEvent(this));
    List<Photo> photos = Arrays.asList(mapper.readValue(mapper.writeValueAsString(data.get("photos")), Photo[].class));
    photoService.createInBatch(photos);
    List<Post> posts = Arrays.asList(mapper.readValue(mapper.writeValueAsString(data.get("posts")), Post[].class));
    postService.createInBatch(posts);
    List<Content> contents = Arrays.asList(mapper.readValue(mapper.writeValueAsString(data.get("contents")), Content[].class));
    contentService.createInBatch(contents);
    List<ContentPatchLog> contentPatchLogs = Arrays.asList(mapper.readValue(mapper.writeValueAsString(data.get("content_patch_logs")), ContentPatchLog[].class));
    contentPatchLogService.createInBatch(contentPatchLogs);
    List<PostCategory> postCategories = Arrays.asList(mapper.readValue(mapper.writeValueAsString(data.get("post_categories")), PostCategory[].class));
    postCategoryService.createInBatch(postCategories);
    List<PostComment> postComments = Arrays.asList(mapper.readValue(mapper.writeValueAsString(data.get("post_comments")), PostComment[].class));
    postCommentService.createInBatch(postComments);
    List<PostMeta> postMetas = Arrays.asList(mapper.readValue(mapper.writeValueAsString(data.get("post_metas")), PostMeta[].class));
    postMetaService.createInBatch(postMetas);
    List<PostTag> postTags = Arrays.asList(mapper.readValue(mapper.writeValueAsString(data.get("post_tags")), PostTag[].class));
    postTagService.createInBatch(postTags);
    List<Sheet> sheets = Arrays.asList(mapper.readValue(mapper.writeValueAsString(data.get("sheets")), Sheet[].class));
    sheetService.createInBatch(sheets);
    List<SheetComment> sheetComments = Arrays.asList(mapper.readValue(mapper.writeValueAsString(data.get("sheet_comments")), SheetComment[].class));
    sheetCommentService.createInBatch(sheetComments);
    List<SheetMeta> sheetMetas = Arrays.asList(mapper.readValue(mapper.writeValueAsString(data.get("sheet_metas")), SheetMeta[].class));
    sheetMetaService.createInBatch(sheetMetas);
    List<ThemeSetting> themeSettings = Arrays.asList(mapper.readValue(mapper.writeValueAsString(data.get("theme_settings")), ThemeSetting[].class));
    themeSettingService.createInBatch(themeSettings);
    eventPublisher.publishEvent(new ThemeUpdatedEvent(this));
    List<User> users = Arrays.asList(mapper.readValue(mapper.writeValueAsString(data.get("user")), User[].class));
    if (users.size() > 0) {
        userService.create(users.get(0));
    }
}
Also used : SheetMeta(run.halo.app.model.entity.SheetMeta) HashMap(java.util.HashMap) JournalComment(run.halo.app.model.entity.JournalComment) Attachment(run.halo.app.model.entity.Attachment) Journal(run.halo.app.model.entity.Journal) Photo(run.halo.app.model.entity.Photo) ContentPatchLog(run.halo.app.model.entity.ContentPatchLog) PostComment(run.halo.app.model.entity.PostComment) PostMeta(run.halo.app.model.entity.PostMeta) ObjectMapper(com.fasterxml.jackson.databind.ObjectMapper) ContentPatchLog(run.halo.app.model.entity.ContentPatchLog) Log(run.halo.app.model.entity.Log) Content(run.halo.app.model.entity.Content) ThemeUpdatedEvent(run.halo.app.event.theme.ThemeUpdatedEvent) Option(run.halo.app.model.entity.Option) CommentBlackList(run.halo.app.model.entity.CommentBlackList) Link(run.halo.app.model.entity.Link) SheetComment(run.halo.app.model.entity.SheetComment) Category(run.halo.app.model.entity.Category) PostCategory(run.halo.app.model.entity.PostCategory) User(run.halo.app.model.entity.User) OptionUpdatedEvent(run.halo.app.event.options.OptionUpdatedEvent) PostCategory(run.halo.app.model.entity.PostCategory) ThemeSetting(run.halo.app.model.entity.ThemeSetting) TypeReference(com.fasterxml.jackson.core.type.TypeReference) Menu(run.halo.app.model.entity.Menu) PostTag(run.halo.app.model.entity.PostTag) Post(run.halo.app.model.entity.Post) BadRequestException(run.halo.app.exception.BadRequestException) PostTag(run.halo.app.model.entity.PostTag) Tag(run.halo.app.model.entity.Tag) Sheet(run.halo.app.model.entity.Sheet)

Example 2 with Attachment

use of run.halo.app.model.entity.Attachment in project halo by ruibaby.

the class AttachmentServiceImpl method removePermanently.

@Override
public Attachment removePermanently(Integer id) {
    // Remove it from database
    Attachment deletedAttachment = removeById(id);
    // Remove the file
    fileHandlers.delete(deletedAttachment);
    log.debug("Deleted attachment: [{}]", deletedAttachment);
    return deletedAttachment;
}
Also used : Attachment(run.halo.app.model.entity.Attachment)

Example 3 with Attachment

use of run.halo.app.model.entity.Attachment in project halo by ruibaby.

the class AttachmentServiceImpl method upload.

@Override
public Attachment upload(MultipartFile file) {
    Assert.notNull(file, "Multipart file must not be null");
    AttachmentType attachmentType = getAttachmentType();
    log.debug("Starting uploading... type: [{}], file: [{}]", attachmentType, file.getOriginalFilename());
    // Upload file
    UploadResult uploadResult = fileHandlers.upload(file, attachmentType);
    log.debug("Attachment type: [{}]", attachmentType);
    log.debug("Upload result: [{}]", uploadResult);
    // Build attachment
    Attachment attachment = new Attachment();
    attachment.setName(uploadResult.getFilename());
    // Convert separator
    attachment.setPath(HaloUtils.changeFileSeparatorToUrlSeparator(uploadResult.getFilePath()));
    attachment.setFileKey(uploadResult.getKey());
    attachment.setThumbPath(uploadResult.getThumbPath());
    attachment.setMediaType(uploadResult.getMediaType().toString());
    attachment.setSuffix(uploadResult.getSuffix());
    attachment.setWidth(uploadResult.getWidth());
    attachment.setHeight(uploadResult.getHeight());
    attachment.setSize(uploadResult.getSize());
    attachment.setType(attachmentType);
    log.debug("Creating attachment: [{}]", attachment);
    // Create and return
    return create(attachment);
}
Also used : AttachmentType(run.halo.app.model.enums.AttachmentType) Attachment(run.halo.app.model.entity.Attachment) UploadResult(run.halo.app.model.support.UploadResult)

Example 4 with Attachment

use of run.halo.app.model.entity.Attachment in project halo by ruibaby.

the class AttachmentController method updateBy.

@PutMapping("{attachmentId:\\d+}")
@ApiOperation("Updates a attachment")
public AttachmentDTO updateBy(@PathVariable("attachmentId") Integer attachmentId, @RequestBody @Valid AttachmentParam attachmentParam) {
    Attachment attachment = attachmentService.getById(attachmentId);
    attachmentParam.update(attachment);
    return new AttachmentDTO().convertFrom(attachmentService.update(attachment));
}
Also used : AttachmentDTO(run.halo.app.model.dto.AttachmentDTO) Attachment(run.halo.app.model.entity.Attachment) PutMapping(org.springframework.web.bind.annotation.PutMapping) ApiOperation(io.swagger.annotations.ApiOperation)

Example 5 with Attachment

use of run.halo.app.model.entity.Attachment in project halo by halo-dev.

the class AttachmentController method uploadAttachments.

@PostMapping(value = "uploads", consumes = MediaType.MULTIPART_FORM_DATA_VALUE)
@ApiOperation("Uploads multi files (Invalid in Swagger UI)")
public List<AttachmentDTO> uploadAttachments(@RequestPart("files") MultipartFile[] files) {
    List<AttachmentDTO> result = new LinkedList<>();
    for (MultipartFile file : files) {
        // Upload single file
        Attachment attachment = attachmentService.upload(file);
        // Convert and add
        result.add(attachmentService.convertToDto(attachment));
    }
    return result;
}
Also used : AttachmentDTO(run.halo.app.model.dto.AttachmentDTO) MultipartFile(org.springframework.web.multipart.MultipartFile) Attachment(run.halo.app.model.entity.Attachment) LinkedList(java.util.LinkedList) PostMapping(org.springframework.web.bind.annotation.PostMapping) ApiOperation(io.swagger.annotations.ApiOperation)

Aggregations

Attachment (run.halo.app.model.entity.Attachment)15 ApiOperation (io.swagger.annotations.ApiOperation)6 AttachmentDTO (run.halo.app.model.dto.AttachmentDTO)6 TypeReference (com.fasterxml.jackson.core.type.TypeReference)3 ObjectMapper (com.fasterxml.jackson.databind.ObjectMapper)3 HashMap (java.util.HashMap)3 LinkedList (java.util.LinkedList)3 PostMapping (org.springframework.web.bind.annotation.PostMapping)3 PutMapping (org.springframework.web.bind.annotation.PutMapping)3 MultipartFile (org.springframework.web.multipart.MultipartFile)3 OptionUpdatedEvent (run.halo.app.event.options.OptionUpdatedEvent)3 ThemeUpdatedEvent (run.halo.app.event.theme.ThemeUpdatedEvent)3 Category (run.halo.app.model.entity.Category)3 CommentBlackList (run.halo.app.model.entity.CommentBlackList)3 Journal (run.halo.app.model.entity.Journal)3 JournalComment (run.halo.app.model.entity.JournalComment)3 Link (run.halo.app.model.entity.Link)3 Log (run.halo.app.model.entity.Log)3 Menu (run.halo.app.model.entity.Menu)3 Option (run.halo.app.model.entity.Option)3