RedirectRestController.java
package sk.iway.iwcm.components.redirects;
import java.util.Date;
import java.util.List;
import java.util.Map;
import javax.persistence.criteria.CriteriaBuilder;
import javax.persistence.criteria.Predicate;
import javax.persistence.criteria.Root;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import sk.iway.iwcm.Constants;
import sk.iway.iwcm.Tools;
import sk.iway.iwcm.common.CloudToolsForCore;
import sk.iway.iwcm.system.RedirectsRepository;
import sk.iway.iwcm.system.UrlRedirectBean;
import sk.iway.iwcm.system.datatable.Datatable;
import sk.iway.iwcm.system.datatable.DatatablePageImpl;
import sk.iway.iwcm.system.datatable.DatatableRestControllerV2;
@RestController
@Datatable
@RequestMapping(value = "/admin/rest/settings/redirect")
@PreAuthorize(value = "@WebjetSecurityService.hasPermission('cmp_redirects')")
public class RedirectRestController extends DatatableRestControllerV2<UrlRedirectBean, Long> {
@Autowired
public RedirectRestController(RedirectsRepository redirectsRepository) {
super(redirectsRepository);
}
@Override
public Page<UrlRedirectBean> getAllItems(Pageable pageable) {
//Redirect this throu spec search
DatatablePageImpl<UrlRedirectBean> page = new DatatablePageImpl<>(getAllItemsIncludeSpecSearch(new UrlRedirectBean(), pageable));
return page;
}
@Override
public UrlRedirectBean getOneItem(long id) {
UrlRedirectBean item = super.getOneItem(id);
if(Constants.getBoolean("multiDomainEnabled") && item != null && item.getId()>0 && item.getDomainName()!=null) {
//verify domainName
String domainName = CloudToolsForCore.getDomainName();
if (Tools.isNotEmpty(item.getDomainName()) && domainName.equals(item.getDomainName())==false) {
return null;
}
}
return item;
}
@Override
public void addSpecSearch(Map<String, String> params, List<Predicate> predicates, Root<UrlRedirectBean> root, CriteriaBuilder builder) {
if(Constants.getBoolean("multiDomainEnabled")) {
//Domain name is (equal to actual domain name) or (null)
predicates.add(
builder.or(
builder.equal(root.get("domainName"), CloudToolsForCore.getDomainName()),
builder.or(builder.isNull(root.get("domainName")), builder.equal(root.get("domainName"), ""))
)
);
}
super.addSpecSearch(params, predicates, root, builder);
}
@Override
public void beforeSave(UrlRedirectBean entity) {
//nastav datum ulozenia
entity.setInsertDate(new Date());
//ak nebol zadany kod presmerovania, nastav na predvoleny kod 301
if (entity.getRedirectCode() == null) entity.setRedirectCode(301);
}
}