private Map buildMetadata()

in community/document-readers/spring-ai-alibaba-starter-document-reader-notion/src/main/java/com/alibaba/cloud/ai/reader/notion/NotionDocumentReader.java [75:168]


	private Map<String, Object> buildMetadata() {
		Map<String, Object> metadata = new HashMap<>();

		// Add basic metadata
		metadata.put(NotionResource.SOURCE, notionResource.getSource());
		metadata.put("resourceType", notionResource.getResourceType().name());
		metadata.put("resourceId", notionResource.getResourceId());

		// Add metadata from Notion API
		if (pageMetadata != null) {
			// Creation and update times
			String createdTime = pageMetadata.get("created_time").asText();
			if (StringUtils.hasText(createdTime)) {
				metadata.put("createdTime", Instant.parse(createdTime).toEpochMilli());
			}

			String lastEditedTime = pageMetadata.get("last_edited_time").asText();
			if (StringUtils.hasText(lastEditedTime)) {
				metadata.put("lastEditedTime", Instant.parse(lastEditedTime).toEpochMilli());
			}

			// Creator and last editor
			JsonNode createdBy = pageMetadata.get("created_by");
			if (createdBy != null) {
				String creatorName = createdBy.get("name").asText();
				String creatorId = createdBy.get("id").asText();
				if (StringUtils.hasText(creatorName)) {
					metadata.put("createdBy", creatorName);
				}
				if (StringUtils.hasText(creatorId)) {
					metadata.put("createdById", creatorId);
				}
			}

			JsonNode lastEditedBy = pageMetadata.get("last_edited_by");
			if (lastEditedBy != null) {
				String editorName = lastEditedBy.get("name").asText();
				String editorId = lastEditedBy.get("id").asText();
				if (StringUtils.hasText(editorName)) {
					metadata.put("lastEditedBy", editorName);
				}
				if (StringUtils.hasText(editorId)) {
					metadata.put("lastEditedById", editorId);
				}
			}

			// URL
			String url = pageMetadata.get("url").asText();
			if (StringUtils.hasText(url)) {
				metadata.put("url", url);
			}

			// Parent information
			JsonNode parent = pageMetadata.get("parent");
			if (parent != null) {
				String parentType = parent.get("type").asText();
				if (StringUtils.hasText(parentType)) {
					metadata.put("parentType", parentType);
					String parentId = parent.get(parentType + "_id").asText();
					if (StringUtils.hasText(parentId)) {
						metadata.put("parentId", parentId);
					}
				}
			}

			// Icon
			JsonNode icon = pageMetadata.get("icon");
			if (icon != null) {
				String iconType = icon.get("type").asText();
				String iconUrl = icon.get("url").asText();
				if (StringUtils.hasText(iconType)) {
					metadata.put("iconType", iconType);
				}
				if (StringUtils.hasText(iconUrl)) {
					metadata.put("iconUrl", iconUrl);
				}
			}

			// Cover
			JsonNode cover = pageMetadata.get("cover");
			if (cover != null) {
				String coverType = cover.get("type").asText();
				String coverUrl = cover.get("url").asText();
				if (StringUtils.hasText(coverType)) {
					metadata.put("coverType", coverType);
				}
				if (StringUtils.hasText(coverUrl)) {
					metadata.put("coverUrl", coverUrl);
				}
			}
		}

		return metadata;
	}