static public DecimalFormat getFormat(Parameter<?, ?> parameter){ if(parameter.hasCargo(ValuesCargo.class)){ ValuesCargo valuesCargo = parameter.getCargo(ValuesCargo.class); try { Map<String, BigDecimal> values = parseValues(valuesCargo.loadStringMap()); ScaleFrequencyMap map = ScaleFrequencyMap.sample(values.values()); int minCount = Math.max(3, values.size() / 10); return new DecimalFormat(map.getPattern(minCount), new DecimalFormatSymbols(Locale.US)); } catch(Exception e){ logger.log(Level.WARNING, "Parameter \'" + parameter.getId() + "\' does not specify decimal format", e); } } return null; }
@Override protected String valueName(){ return getContainer().getName(); }
@Override public void beginMapping() throws IOException { C parameter = getParameter(); this.references = new LinkedHashMap<String, String>(); if(parameter.hasCargo(ReferencesCargo.class)){ ReferencesCargo cargo = parameter.getCargo(ReferencesCargo.class); this.references.putAll(cargo.loadReferences()); } }
private Map<String, String> loadValues(Parameter<?,?> p) { try { return p.getCargo(ValuesCargo.class).loadStringMap(); } catch (IOException e) { return new HashMap<String, String>(); } }
private void loadParameters(Collection<? extends Parameter> params) { for (Parameter<?, ?> p: params) { Column column = new Column(p.getId()); columns.add(column); Map<String, String> values = loadValues(p); for (Row row: rows) { String v = values.get(row.getId()); row.getValues().put(column, makeCell(v)); } } }
@Override public void endMapping() throws IOException { C parameter = getParameter(); ReferencesCargo cargo = parameter.getOrAddCargo(ReferencesCargo.class); cargo.storeReferences(this.references); this.references.clear(); this.references = null; }