public ResourceId getFormId() { return tableModel.getFormId(); }
public TableViewModel(final FormSource formStore, final TableModel tableModel) { this.formId = tableModel.getFormId(); this.formStore = formStore; this.formTree = formStore.getFormTree(formId); this.tableModel = new StatefulValue<>(tableModel); this.effectiveTable = computeEffectiveTableModel(this.tableModel); this.selectionViewModel = SelectionViewModel.compute(formStore, selectedRecordRef); this.columnSet = this.effectiveTable.join(table -> table.getColumnSet()); }
@Value.Lazy @Override public JsonValue toJson() { JsonValue object = Json.createObject(); object.put("formId", getFormId().asString()); if(getColumns().size() != 0) { JsonValue columnArray = Json.createArray(); for (TableColumn tableColumn : getColumns()) { columnArray.add(tableColumn.toJson()); } object.put("columns", columnArray); } if (getFilter().isPresent()) { object.put("filter", getFilter().get()); } if (getSorting().size() != 0) { JsonValue columnArray = Json.createArray(); for (SortModel sortModel : getSorting()) { columnArray.add(sortModel.toJson()); } object.put("columns", columnArray); } return object; }
private HSSFWorkbook export(TableModel tableModel) throws IOException { TableViewModel viewModel = new TableViewModel(formSource, tableModel); EffectiveTableModel effectiveTableModel = viewModel.getEffectiveTable().waitFor(); if(effectiveTableModel.getRootFormState() != FormTree.State.VALID) { throw new IllegalStateException("Root Form has state: " + effectiveTableModel.getRootFormState()); } ColumnSet columnSet = effectiveTableModel.getColumnSet().waitFor(); XlsTableWriter writer = new XlsTableWriter(); writer.addSheet(effectiveTableModel, columnSet); writer.write(new FileOutputStream("build/" + tableModel.getFormId().asString() + ".xls")); return writer.getBook(); }
@Test public void serializeModel() { ImmutableTableModel model = ImmutableTableModel.builder() .formId(ResourceId.valueOf("MY_FORM")) .addColumns(ImmutableTableColumn.builder().id("c1").label("Foo Squared").formula("foo*foo").build()) .addColumns(ImmutableTableColumn.builder().id("c2").formula("foo").build()) .build(); JsonValue object = model.toJson(); TableModel remodel = TableModel.fromJson(object); assertThat(remodel.getFormId(), equalTo(model.getFormId())); assertThat(remodel.getColumns(), hasSize(2)); assertThat(remodel.getColumns().get(0), equalTo(model.getColumns().get(0))); assertThat(remodel.getColumns().get(1), equalTo(model.getColumns().get(1))); }
@Test public void testSubFormExport() { IncidentForm incidentForm = setup.getCatalog().getIncidentForm(); TableModel tableModel = ImmutableTableModel.builder().formId(incidentForm.getFormId()) .addColumns(ImmutableTableColumn.builder() .label("My PCODE") .formula(IncidentForm.PROTECTION_CODE_FIELD_ID.asString()) .build()) .build(); TableViewModel viewModel = new TableViewModel(setup.getFormStore(), tableModel); Observable<ExportViewModel> exportModel = viewModel.computeExportModel( Observable.just(ReferralSubForm.FORM_ID), Observable.just(ExportScope.SELECTED)); Connection<TableModel> exportModelConnection = setup.connect(exportModel.transform(ExportViewModel::getTableModel)); Connection<Boolean> columnLimitConnection = setup.connect(exportModel.transform(ExportViewModel::isColumnLimitExceeded)); System.out.println(Json.stringify(exportModelConnection.assertLoaded().toJson(), 2)); assertThat(exportModelConnection.assertLoaded().getFormId(), equalTo(ReferralSubForm.FORM_ID)); assertThat(exportModelConnection.assertLoaded().getColumns(), hasSize(3)); assertThat(columnLimitConnection.assertLoaded(), equalTo(false)); TableColumn firstColumn = exportModelConnection.assertLoaded().getColumns().get(0); assertThat(firstColumn.getLabel(), equalTo(Optional.of("My PCODE"))); assertThat(firstColumn.getFormula(), equalTo( new CompoundExpr(new SymbolNode(ColumnModel.PARENT_SYMBOL), IncidentForm.PROTECTION_CODE_FIELD_ID).asExpression())); }
@Test public void testSubFormExportWithFilter() { IncidentForm incidentForm = setup.getCatalog().getIncidentForm(); TableModel tableModel = ImmutableTableModel.builder().formId(incidentForm.getFormId()) .addColumns(ImmutableTableColumn.builder() .label("My PCODE") .formula(IncidentForm.PROTECTION_CODE_FIELD_ID.asString()) .build()) .filter(constructFilter()) .build(); TableViewModel viewModel = new TableViewModel(setup.getFormStore(), tableModel); Connection<TableModel> exportModel = setup.connect( viewModel.computeExportModel( Observable.just(ReferralSubForm.FORM_ID), Observable.just(ExportScope.SELECTED), Observable.just(ExportScope.SELECTED), Observable.just(ExportFormat.XLS)) .transform(ExportViewModel::getTableModel)); System.out.println(Json.stringify(exportModel.assertLoaded().toJson(), 2)); assertThat(exportModel.assertLoaded().getFormId(), equalTo(ReferralSubForm.FORM_ID)); assertThat(exportModel.assertLoaded().getColumns(), hasSize(3)); assertThat(exportModel.assertLoaded().getFilter(), equalTo(Optional.of(constructFilter()))); }
if(formId.equals(tableModel.get().getFormId())) {