ArticleApiServiceImpl.java

/*
 * Copyright 2024 Global Crop Diversity Trust
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *   http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package org.genesys.server.api.v2.facade.impl;

import org.genesys.server.api.v2.facade.ArticleApiService;
import org.genesys.server.api.v2.model.impl.ArticleDTO;
import org.genesys.server.api.v2.model.impl.ArticleLangDTO;
import org.genesys.server.api.v2.model.impl.RepositoryFileDTO;
import org.genesys.server.api.v2.model.impl.TranslatedArticleDTO;
import org.genesys.server.model.impl.Article;
import org.genesys.server.model.impl.ArticleLang;
import org.genesys.server.service.ArticleService;
import org.genesys.server.service.ArticleTranslationService;
import org.genesys.server.service.filter.ArticleFilter;
import org.springframework.stereotype.Service;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.multipart.MultipartFile;

import java.util.Locale;

@Service
@Validated
public class ArticleApiServiceImpl extends APIFilteredTranslatedServiceFacadeImpl<ArticleService, ArticleDTO,
	TranslatedArticleDTO, ArticleLangDTO, Article, ArticleLang,
	ArticleTranslationService.TranslatedArticle, ArticleFilter> implements ArticleApiService {

	@Override
	protected TranslatedArticleDTO convertTranslation(ArticleTranslationService.TranslatedArticle source) {
		return mapper.map(source);
	}

	@Override
	protected ArticleLang convertLang(ArticleLangDTO source) {
		return mapper.map(source);
	}

	@Override
	protected ArticleLangDTO convertLang(ArticleLang source) {
		return mapper.map(source);
	}

	@Override
	protected Article convert(ArticleDTO source) {
		return mapper.map(source);
	}

	@Override
	protected ArticleDTO convert(Article source) {
		return mapper.map(source);
	}

	@Override
	public TranslatedArticleDTO getArticle(Class<?> forName, long targetId, String slug, Locale locale) {
		return convertTranslation(service.getArticle(forName, targetId, slug, locale));
	}

	@Override
	public TranslatedArticleDTO getArticleBySlugAndLang(String slug, String language) {
		return convertTranslation(service.getArticleBySlugAndLang(slug, language));
	}

	@Override
	public TranslatedArticleDTO getGlobalArticle(String slug, Locale locale) {
		return convertTranslation(service.getGlobalArticle(slug, locale));
	}

	@Override
	public void deleteArticle(Long id, int version) {
		service.deleteArticle(id, version);
	}

	@Override
	public RepositoryFileDTO uploadArticleFile(ArticleDTO articleDTO, MultipartFile file) throws Exception {
		return mapper.map(service.uploadArticleFile(convert(articleDTO), file));
	}
}