@Override public boolean apply(GLElementFactoryContext context) { if (context.get(List.class, null) != null && context.get("id2double", Function.class, null) != null) return true; if (context.get(IDoubleList.class, null) != null) return true; return hasTablePerspective(context); }
/** * @param string * @param context * @param glyph * @return */ private EValueGlyph toGlyph(String key, GLElementFactoryContext context, EValueGlyph default_) { String v = context.get(key, String.class, null); if (StringUtils.isBlank(v)) return default_; try { EValueGlyph g = EValueGlyph.valueOf(v.toUpperCase()); return g; } catch (Exception e) { Logger.create(SingleAxisElement.class).warn("invalid value glyph spec: " + v, e); } return default_; }
@Override public GLElement create(GLElementFactoryContext context) { SingleAxisElement elem = null; boolean renderOutsideBounds = context.is("renderOutsideBounds", false); if (hasTablePerspective(context)) elem = new SingleAxisElement(context.getData(), renderOutsideBounds); else { EDimension dim = context.get(EDimension.class, EDimension.RECORD); double min = context.getDouble("min", Double.NaN); double max = context.getDouble("max", Double.NaN); if (context.get(List.class, null) != null && context.get("id2double", Function.class, null) != null) { @SuppressWarnings("unchecked") List<Integer> data = context.get(List.class, null); IDType idType = context.get(IDType.class, null); @SuppressWarnings("unchecked") Function<Integer, Double> f = context.get("id2double", Function.class, null); elem = new SingleAxisElement(dim, data, idType, f, min, max, renderOutsideBounds); } else if (context.get(IDoubleList.class, null) != null) { IDoubleList data = context.get(IDoubleList.class, null); elem = new SingleAxisElement(dim, data, min, max, renderOutsideBounds); } } if (elem == null) return null; EDetailLevel detailLevel = context.get(EDetailLevel.class, EDetailLevel.MEDIUM); String[] markers = context.get("markers", String[].class, null); if (markers != null) elem.setMarker(markers); else if (detailLevel == EDetailLevel.HIGH) elem.setNumberMarkers(); elem.setInvertOrder(context.is("invertOrder")); elem.setGlyph(toGlyph("valueGlyph", context, elem.getGlyph())); return elem; }
/** * @param context * @return */ private boolean hasTablePerspective(GLElementFactoryContext context) { TablePerspective d = context.getData(); if (d == null) return false; if (!DataSupportDefinitions.homogenousColumns.apply(d)) return false; return d.getNrDimensions() == 1 || d.getNrRecords() == 1; }