@Override public String getItemId(Object item) { return ((SysConfig) item).getId(); }
@Override public Object createNewEntity() { return new SysConfig(); }
@Override protected Component buildAndBindCustomComponent(String propertyId) { List<Validator> validators = getFieldFactory().getValidators(propertyId); if ("permissions".equals(propertyId)) { CheckBoxGroup<Permission> f = new CheckBoxGroup("Permissions"); List<SysConfig> sysconfigs = ((RolesHelper)getHelper()).getPermissions(); List<Permission> allPermissions = new ArrayList<>(); //convert SysConfigs to Permissions for (SysConfig sys : sysconfigs) { Permission p = Permission.valueOf(sys.getId().substring(5)); allPermissions.add(p); } f.setItems(allPermissions); f.setItemCaptionGenerator((ItemCaptionGenerator<Permission>) item -> sysconfigs.get(allPermissions.indexOf(item)).getId().substring(5) + " : " + //remove "perm." prefix sysconfigs.get(allPermissions.indexOf(item)).getValue()); Binder.BindingBuilder builder = getBinder().forField(f); validators.forEach(builder::withValidator); builder.bind(propertyId); return f; } return null; }
public void put (String name, String value, String readPerm, String writePerm) { SysConfig cfg; if (prefix != null) name = prefix + name; try { boolean autoCommit = false; Transaction tx = db.session().getTransaction(); if (tx == null || tx.getStatus().isNotOneOf(TransactionStatus.ACTIVE)) { tx = db.session().beginTransaction(); autoCommit = true; } cfg = db.session().get (SysConfig.class, name); boolean saveIt = false; if (cfg == null) { cfg = new SysConfig (); cfg.setId (name); saveIt = true; } cfg.setReadPerm (readPerm); cfg.setWritePerm (writePerm); cfg.setValue (value); if (saveIt) db.session().save (cfg); if (autoCommit) tx.commit(); } catch (HibernateException e) { db.getLog().warn (e); } } public String get (String name) {
@Override public boolean updateEntity (Binder binder) throws BLException { try { return (boolean) DB.execWithTransaction((db) -> { SysConfig oldSysConfig = (SysConfig) ((SysConfig) getOriginalEntity()).clone(); binder.writeBean(getOriginalEntity()); SysConfig s = (SysConfig) getOriginalEntity(); //need to re-set prefix to id as it gets deleted on write s.setId(addPrefix(s.getId())); db.session().merge(s); return addRevisionUpdated(db, getEntityName(), String.valueOf(s.getId()), oldSysConfig, s, new String[]{"value"}); }); } catch (Exception e) { QI.getQI().getLog().error(e); return false; } }
@Override public void updateEntity() throws BLException { SysConfig entity = getInstance(); entity.setId(((SysConfigHelper)getHelper()).addPrefix(entity.getId())); if (getHelper().updateEntity(getBinder())) getApp().displayNotification(getApp().getMessage("updated", getEntityName().toUpperCase())); else getApp().displayNotification(getApp().getMessage("notchanged")); }
/** * @param name property name * @param defaultValue default value * @return if property exists, return its value, otherwise defaultValue. */ public String get (String name, String defaultValue) { try { if (prefix != null) name = prefix + name; SysConfig cfg = db.session().get (SysConfig.class, name); if (cfg != null) return cfg.getValue(); } catch (HibernateException e) { db.getLog().warn (e); } return defaultValue; }
@Override public void exec(CLIContext cli, String[] args) throws Exception { try (DB db = new DB()) { db.open(); SysConfigManager mgr = new SysConfigManager(db); if (cli.getUserData().containsKey(SYSCONFIG.PREFIX)) mgr.setPrefix((String) cli.getUserData().get(SYSCONFIG.PREFIX)); else if (args.length > 1) mgr.setPrefix(args[1]); String format = "%" + mgr.getMaxIdLength() + "s: %s"; for (SysConfig sc : mgr.getAll()) { cli.println (String.format (format, sc.getId(), sc.getValue())); } } catch (Exception e) { cli.println (e.getMessage()); } } }
@Override public boolean saveEntity (Binder binder) throws BLException { SysConfig entity = (SysConfig) getOriginalEntity(); if (binder.writeBeanIfValid(getOriginalEntity())) { String id = entity.getId(); id = prefix != null ? prefix + id : id; if (getSysConfig(id) == null) { final String finalId = id; try { return (boolean) DB.execWithTransaction((db) -> { SysConfigManager mgr = new SysConfigManager(db, prefix); mgr.put(entity.getId(), entity.getValue()); addRevisionCreated(db, "SYSCONFIG", finalId); return true; }); } catch (Exception e) { QI.getQI().getLog().error(e); return false; } } else { throw new BLException("SysConfig " + id + " already exists."); } } else { throw new BLException("Invalid SysConfig"); } }
public String toString() { return new ToStringBuilder(this) .append("id", getId()) .toString(); }
public int hashCode() { return new HashCodeBuilder() .append(getId()) .toHashCode(); } }
@Override public Object getEntity(Object entity) { return entity instanceof SysConfig ? ((SysConfigHelper)getHelper()).getSysConfig(String.valueOf(((SysConfig) entity).getId())) : null; }
@Override public void setGridGetters() { Grid<SysConfig> g = this.getGrid(); g.addColumn(sysconfig -> removePrefix(sysconfig.getId())).setId("id"); g.addColumn(SysConfig::getValue).setId("value"); }