EnumerationService.java
package sk.iway.iwcm.components.enumerations.rest;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import sk.iway.iwcm.Tools;
import sk.iway.iwcm.components.enumerations.model.EnumerationDataBean;
import sk.iway.iwcm.database.ComplexQuery;
import sk.iway.iwcm.database.Mapper;
import sk.iway.iwcm.i18n.Prop;
import sk.iway.iwcm.system.datatable.DatatablePageImpl;
public class EnumerationService {
private EnumerationService() {}
private static final String DELETED_PREFIX_KEY = "enum_type.deleted_type_mark.js";
private static final String HIDDEN = "hidden";
private static final String STRING_1 = "string1";
private static class EnumBasic {
private Long id;
private String name;
private Boolean hidden;
public EnumBasic(Long id, String name, Boolean hidden) {
this.id = id;
this.name = name;
this.hidden = hidden;
}
@SuppressWarnings("unused")
public Long getId() { return id; } //its is used in page.addOptions
public String getName() { return name; }
public Boolean getHidden() { return hidden; }
public void setName(String name) { this.name = name; }
}
public static void prepareEnumTypesOptions(DatatablePageImpl<?> page, Prop prop) {
List<EnumBasic> enumTypes = new ArrayList<>();
String prefixForHidden = prop.getText(DELETED_PREFIX_KEY);
String sql = "SELECT enumeration_type_id, name, hidden FROM enumeration_type";
new ComplexQuery().setSql(sql).list(new Mapper<EnumBasic>() {
@Override
public EnumBasic map(ResultSet rs) throws SQLException {
EnumBasic enumType = new EnumBasic(rs.getLong("enumeration_type_id"), rs.getString("name"), rs.getBoolean(HIDDEN));
if(Tools.isTrue(enumType.getHidden()))
enumType.setName(prefixForHidden + enumType.getName());
enumTypes.add(enumType);
return null;
}
});
page.addDefaultOption("editorFields.childEnumTypeId", "", "-1");
page.addOptions("editorFields.childEnumTypeId", enumTypes, "name", "id", false);
}
public static void prepareEnumDataByTypeOptions(DatatablePageImpl<EnumerationDataBean> page, Prop prop, Integer enumTypeId) {
List<EnumBasic> enumDatasByType = new ArrayList<>();
String prefixForHidden = prop.getText(DELETED_PREFIX_KEY);
String sql = "SELECT enumeration_data_id, string1, hidden FROM enumeration_data WHERE enumeration_type_id=?";
new ComplexQuery().setSql(sql).setParams(enumTypeId).list(new Mapper<EnumBasic>() {
@Override
public EnumBasic map(ResultSet rs) throws SQLException {
EnumBasic enumType = new EnumBasic(rs.getLong("enumeration_data_id"), rs.getString(STRING_1), rs.getBoolean(HIDDEN));
if(Tools.isTrue(enumType.getHidden()))
enumType.setName(prefixForHidden + enumType.getName());
enumDatasByType.add(enumType);
return null;
}
});
page.addDefaultOption("editorFields.parentEnumDataId", "-", "-1");
page.addOptions("editorFields.parentEnumDataId", enumDatasByType, "name", "id", false);
}
public static List<String> getEnumDataAutocomplete(String wantedText, Integer typeId, String name, Prop prop) {
List<String> enumDataParent = new ArrayList<>();
String prefixForHidden = prop.getText(DELETED_PREFIX_KEY);
String sql = "SELECT string1, hidden FROM enumeration_data WHERE string1 LIKE ? AND enumeration_type_id=?";
List<Object> params = new ArrayList<>();
params.add('%' + wantedText + '%');
params.add(typeId);
if(Tools.isNotEmpty(name)) {
//String to exclude, entity CANT select itself
sql += " AND NOT string1 = ?";
params.add(name);
}
new ComplexQuery().setSql(sql).setParams(params.toArray()).list(new Mapper<EnumBasic>() {
@Override
public EnumBasic map(ResultSet rs) throws SQLException {
if(rs.getBoolean(HIDDEN) == false) {
enumDataParent.add(rs.getString(STRING_1));
} else {
enumDataParent.add(prefixForHidden + rs.getString(STRING_1));
}
return null;
}
});
return enumDataParent;
}
public static List<String> getEnumTypeAutocomplete(String wantedText, Prop prop) {
List<String> enumTypeChild = new ArrayList<>();
String prefixForHidden = prop.getText(DELETED_PREFIX_KEY);
String sql = "SELECT name, hidden FROM enumeration_type WHERE name LIKE ?";
new ComplexQuery().setSql(sql).setParams('%' + wantedText + '%').list(new Mapper<EnumBasic>() {
@Override
public EnumBasic map(ResultSet rs) throws SQLException {
if(rs.getBoolean(HIDDEN) == false) {
enumTypeChild.add(rs.getString("name"));
} else {
enumTypeChild.add(prefixForHidden + rs.getString("name"));
}
return null;
}
});
return enumTypeChild;
}
}