InsertScriptRestController.java
package sk.iway.iwcm.components.insertScript.rest;
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.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import sk.iway.iwcm.Constants;
import sk.iway.iwcm.LabelValueDetails;
import sk.iway.iwcm.Tools;
import sk.iway.iwcm.common.CloudToolsForCore;
import sk.iway.iwcm.components.insertScript.InsertScriptBean;
import sk.iway.iwcm.components.insertScript.InsertScriptDB;
import sk.iway.iwcm.components.insertScript.InsertScriptDocBean;
import sk.iway.iwcm.components.insertScript.InsertScriptGroupBean;
import sk.iway.iwcm.components.insertScript.InsertScriptRepository;
import sk.iway.iwcm.i18n.Prop;
import sk.iway.iwcm.system.datatable.Datatable;
import sk.iway.iwcm.system.datatable.DatatablePageImpl;
import sk.iway.iwcm.system.datatable.DatatableRestControllerV2;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
@RestController
@Datatable
@RequestMapping(value = "/admin/rest/components/insert-script")
@PreAuthorize(value = "@WebjetSecurityService.hasPermission('cmp_insert_script')")
public class InsertScriptRestController extends DatatableRestControllerV2<InsertScriptBean, Long> {
@Autowired
public InsertScriptRestController(InsertScriptRepository insertScriptRepository) {
super(insertScriptRepository);
}
@Override
public Page<InsertScriptBean> getAllItems(Pageable pageable) {
List<InsertScriptBean> listedBeans = InsertScriptDB.getInstance().getAll();
DatatablePageImpl<InsertScriptBean> data = new DatatablePageImpl<>(listedBeans);
Prop prop = getProp();
data.addOptions("cookieClass", getCookieClassifications(prop), "label", "value", false);
return data;
}
@Override
public void beforeDuplicate(InsertScriptBean entity) {
if (entity.getDocIds()!=null) {
for(InsertScriptDocBean docBean : entity.getDocIds()) {
docBean.setId(null);
}
}
if (entity.getGroupIds() != null) {
for(InsertScriptGroupBean groupBean : entity.getGroupIds()) {
groupBean.setId(null);
}
}
super.beforeDuplicate(entity);
}
@Override
public void beforeSave(InsertScriptBean entity) {
//nastav datum ulozenia
entity.setSaveDate(new Date());
//nastav korektne domainId
int domainId = CloudToolsForCore.getDomainId();
entity.setDomainId(domainId);
//nastav aj na inner objekty
if (entity.getGroupIds()!=null) {
for (InsertScriptGroupBean isg : entity.getGroupIds()) {
isg.setDomainId(domainId);
}
}
}
public static List<LabelValueDetails> getCookieClassifications(Prop prop) {
List<LabelValueDetails> options = new ArrayList<>();
options.add(new LabelValueDetails(prop.getText("components.insert_script.insert_always"), "ALWAYS"));
//prebehni klasifikacie z konstant a pridaj
String[] classifications = Tools.getTokens(Constants.getString("gdprCookieClassifications"), ",");
for (String cls : classifications) {
String labelKey = "components.cookies.cookie_manager.classification."+cls;
String label = prop.getText(labelKey);
if (label.equals(labelKey)) label = cls;
options.add(new LabelValueDetails(label, cls));
}
return options;
}
/**
* Vrati zoznam uz existujucich skupin
* @param term
* @return
*/
@GetMapping("/positions")
public List<String> getPositionAutocomplete(@RequestParam String term) {
List<String> ac = new ArrayList<>();
//Get all where group name is like %term%, and distict because its autocomplete list and we dont want duplicity
List<InsertScriptBean> groupNamesList = ((InsertScriptRepository)getRepo()).findDistinctAllByPositionLikeAndDomainId("%" + term + "%", CloudToolsForCore.getDomainId());
//Loop gained entities and add group name to autcomplete list "ac"
for(InsertScriptBean entity : groupNamesList)
if (ac.contains(entity.getPosition()) == false) ac.add(entity.getPosition());
return ac;
}
}