protected void orderBandDefinitions(BandDefinition parent) { if (parent.getChildrenBandDefinitions() != null) { List<BandDefinition> childrenBandDefinitions = parent.getChildrenBandDefinitions(); for (int i = 0, childrenBandDefinitionsSize = childrenBandDefinitions.size(); i < childrenBandDefinitionsSize; i++) { BandDefinition bandDefinition = childrenBandDefinitions.get(i); bandDefinition.setPosition(i); } } }
@Override protected boolean isApplicable() { if (target != null) { BandDefinition bandDefinition = (BandDefinition) target.getSingleSelected(); if (bandDefinition != null) { BandDefinition parent = bandDefinition.getParentBandDefinition(); return parent != null && parent.getChildrenBandDefinitions() != null && bandDefinition.getPosition() < parent.getChildrenBandDefinitions().size() - 1 && isUpdatePermitted(); } } return false; } });
protected void sortRootChildrenBands(Report entity) { if (entity.getRootBandDefinition() != null && CollectionUtils.isNotEmpty(entity.getRootBandDefinition().getChildrenBandDefinitions())) { List<BandDefinition> bandDefinitions = new ArrayList<>(entity.getRootBandDefinition().getChildrenBandDefinitions()); Collections.sort(bandDefinitions, new Comparator<BandDefinition>() { @Override public int compare(BandDefinition o1, BandDefinition o2) { return o1.getPosition().compareTo(o2.getPosition()); } }); entity.getRootBandDefinition().setChildrenBandDefinitions(bandDefinitions); } }
private void removeChildrenCascade(Collection selected) { for (Object o : selected) { BandDefinition definition = (BandDefinition) o; BandDefinition parentDefinition = definition.getParentBandDefinition(); if (parentDefinition != null) { definition.getParentBandDefinition().getChildrenBandDefinitions().remove(definition); } if (definition.getChildrenBandDefinitions() != null) { removeChildrenCascade(new ArrayList<>(definition.getChildrenBandDefinitions())); } if (definition.getDataSets() != null) { treeDs.setItem(definition); for (DataSet dataSet : new ArrayList<>(definition.getDataSets())) { if (PersistenceHelper.isNew(dataSet)) { dataSetsDs.removeItem(dataSet); } } } treeDs.removeItem(definition); } } });
@Override public void actionPerform(Component component) { BandDefinition definition = (BandDefinition) target.getSingleSelected(); if (definition != null && definition.getParentBandDefinition() != null) { BandDefinition parentDefinition = definition.getParentBandDefinition(); List<BandDefinition> definitionsList = parentDefinition.getChildrenBandDefinitions(); int index = definitionsList.indexOf(definition); if (index < definitionsList.size() - 1) { BandDefinition nextDefinition = definitionsList.get(index + 1); definition.setPosition(definition.getPosition() + 1); nextDefinition.setPosition(nextDefinition.getPosition() - 1); definitionsList.set(index, nextDefinition); definitionsList.set(index + 1, definition); treeDs.refresh(); } } }
@Override public void actionPerform(Component component) { BandDefinition parentDefinition = treeDs.getItem(); Report report = getItem(); // Use root band as parent if no items selected if (parentDefinition == null) { parentDefinition = report.getRootBandDefinition(); } if (parentDefinition.getChildrenBandDefinitions() == null) { parentDefinition.setChildrenBandDefinitions(new ArrayList<>()); } // orderBandDefinitions(parentDefinition); BandDefinition newBandDefinition = metadata.create(BandDefinition.class); newBandDefinition.setName("newBand" + (parentDefinition.getChildrenBandDefinitions().size() + 1)); newBandDefinition.setOrientation(Orientation.HORIZONTAL); newBandDefinition.setParentBandDefinition(parentDefinition); if (parentDefinition.getChildrenBandDefinitions() != null) { newBandDefinition.setPosition(parentDefinition.getChildrenBandDefinitions().size()); } else { newBandDefinition.setPosition(0); } newBandDefinition.setReport(report); parentDefinition.getChildrenBandDefinitions().add(newBandDefinition); treeDs.addItem(newBandDefinition); treeDs.refresh(); bandTree.expandTree(); bandTree.setSelected(newBandDefinition);//let's try and see if it increases usability bandTree.focus(); }
@Override public void actionPerform(Component component) { BandDefinition definition = (BandDefinition) target.getSingleSelected(); if (definition != null && definition.getParentBandDefinition() != null) { BandDefinition parentDefinition = definition.getParentBandDefinition(); List<BandDefinition> definitionsList = parentDefinition.getChildrenBandDefinitions(); int index = definitionsList.indexOf(definition); if (index > 0) { BandDefinition previousDefinition = definitionsList.get(index - 1); definition.setPosition(definition.getPosition() - 1); previousDefinition.setPosition(previousDefinition.getPosition() + 1); definitionsList.set(index, previousDefinition); definitionsList.set(index - 1, definition); treeDs.refresh(); } } }
@Override protected void postValidate(ValidationErrors errors) { if (getItem().getRootBand() == null) { errors.add(getMessage("error.rootBandNull")); } if (CollectionUtils.isNotEmpty(getItem().getRootBandDefinition().getChildrenBandDefinitions())) { Multimap<String, BandDefinition> names = ArrayListMultimap.create(); names.put(getItem().getRootBand().getName(), getItem().getRootBandDefinition()); for (BandDefinition band : getItem().getRootBandDefinition().getChildrenBandDefinitions()) { validateBand(errors, band, names); } checkForNameDuplication(errors, names); } }
@Override public Report toReport(ReportData reportData, boolean temporary) { Report report = createReport(reportData, temporary); ReportInputParameter mainParameter = createParameters(reportData, report); BandDefinition rootReportBandDefinition = createRootBand(report); Set<BandDefinition> bands = createBands(report, rootReportBandDefinition, reportData, mainParameter); ReportTemplate defaultTemplate = createDefaultTemplate(report, reportData); report.setDefaultTemplate(defaultTemplate); HashSet<BandDefinition> childrenBandsDefinitionForRoot = new HashSet<>(bands); childrenBandsDefinitionForRoot.remove(rootReportBandDefinition); rootReportBandDefinition.getChildrenBandDefinitions().addAll(childrenBandsDefinitionForRoot); report.setName(reportingApi.generateReportName(reportData.getName())); String xml = reportingApi.convertToString(report); report.setXml(xml); if (!temporary) { report = reportingApi.storeReportEntity(report); } return report; }
if (CollectionUtils.isNotEmpty(band.getChildrenBandDefinitions())) { for (BandDefinition child : band.getChildrenBandDefinitions()) { validateBand(errors, child, names);
} else { treeDs.refresh(); previousParent.getChildrenBandDefinitions().remove(e.getItem()); parent.getChildrenBandDefinitions().add(e.getItem());