Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
170 commits
Select commit Hold shift + click to select a range
1698896
feat(model): Add format-neutral dataset model
jeffjensen Sep 24, 2026
0002ae7
feat(flatxml): Add XML name rules and attribute value codec
jeffjensen Sep 24, 2026
7b50c37
feat(flatxml): Add offset-preserving flat XML parser
jeffjensen Sep 24, 2026
9f059c1
feat(dtd): Add DTD reader for declared tables and columns
jeffjensen Sep 24, 2026
8a93bee
feat(flatxml): Build dataset model from flat XML with dbUnit semantics
jeffjensen Sep 24, 2026
6da4d92
feat(validation): Warn about flat XML content dbUnit ignores
jeffjensen Sep 24, 2026
005cbd0
feat(flatxml): Add dataset document bound to an Eclipse text document
jeffjensen Sep 24, 2026
843142c
feat(flatxml): Edit cell values with minimal attribute rewrites
jeffjensen Sep 24, 2026
3d14505
feat(flatxml): Insert, duplicate, delete, and move rows
jeffjensen Sep 24, 2026
8d920a6
feat(flatxml): Add, rename, and delete columns
jeffjensen Sep 24, 2026
e9b98ba
feat(flatxml): Add, rename, and delete tables
jeffjensen Sep 24, 2026
6d511d7
feat(core): Detect flat XML dataset files by content
jeffjensen Sep 24, 2026
aff826b
feat(editor): Add UI messages, images, and preference defaults
jeffjensen Sep 24, 2026
4e5416a
feat(editor): Add dbUnit Dataset Editor with Source page
jeffjensen Sep 24, 2026
8340f8c
feat(editor): Show one sheet tab per table
jeffjensen Sep 24, 2026
164997e
feat(grid): Display tables in a spreadsheet grid
jeffjensen Sep 24, 2026
39f0ad8
feat(grid): Edit cells in place
jeffjensen Sep 24, 2026
6e7041b
feat(editor): Undo and redo from the Tables page
jeffjensen Sep 25, 2026
d72a68d
feat(grid): Add grid commands for inserting and deleting rows
jeffjensen Sep 25, 2026
94506a8
feat(grid): Duplicate and move rows
jeffjensen Sep 25, 2026
00e97a5
feat(grid): Add, rename, and delete columns
jeffjensen Sep 25, 2026
3dc1022
feat(editor): Add, rename, and delete tables
jeffjensen Sep 25, 2026
a40e965
feat(grid): Add clipboard and cell value commands
jeffjensen Sep 25, 2026
a1b80a5
feat(editor): Use DTD declarations for tables and columns
jeffjensen Sep 25, 2026
966f77b
feat(editor): Show dataset problems in the Tables page
jeffjensen Sep 25, 2026
9d76fd6
feat(editor): Synchronize selection between Tables and Source pages
jeffjensen Sep 25, 2026
70bc414
feat(source): Color XML syntax on the Source page
jeffjensen Sep 25, 2026
819ecf8
feat(prefs): Add dbUnit dataset preferences
jeffjensen Sep 25, 2026
4a71a08
feat(wizard): Add new flat XML dataset wizard
jeffjensen Sep 25, 2026
4bd8533
perf(validation): Validate each table in one pass over its rows
jeffjensen Sep 25, 2026
7985e5c
perf(flatxml): Apply each edit operation as one document change
jeffjensen Sep 25, 2026
ddbfc11
perf(flatxml): Share names and skip copying plain values when parsing
jeffjensen Sep 25, 2026
29cd4bc
perf(flatxml): Verify editor performance on large datasets
jeffjensen Sep 25, 2026
f3e964e
docs(site): Add dataset editor user guide
jeffjensen Sep 25, 2026
9f592d0
perf(clipboard): Rebuild the model once when pasting past the last row
jeffjensen Sep 26, 2026
73046d4
refactor(editor): Externalize the dataset editor's user-visible strings
jeffjensen Sep 26, 2026
4b5b353
refactor(core): Externalize the core bundle's user-visible messages
jeffjensen Sep 26, 2026
f8ec5f7
test(editor): Add screenshot capture for Tables page states
jeffjensen Sep 26, 2026
fb8f60f
refactor(core): Externalize the case-variant cell-edit message
jeffjensen Sep 27, 2026
9b31f38
fix(grid): Report a stale selection through the status line
jeffjensen Sep 28, 2026
c2b5d1d
fix(flatxml): Log the failures that the dataset document works around
jeffjensen Sep 29, 2026
6414514
fix(editor): Log why a DTD could not be read
jeffjensen Sep 29, 2026
fe5c8d3
fix(editor): Log an unsupported document encoding
jeffjensen Sep 29, 2026
5cf211d
build(pom): Run SpotBugs on the bundles during verify
jeffjensen Sep 29, 2026
e14063e
build(pom): Run Error Prone on the bundles during verify
jeffjensen Sep 29, 2026
29cd867
build(pom): Run PMD on the bundles during verify
jeffjensen Sep 29, 2026
c26351d
refactor(dtd): Extract DtdLexer from DtdReader
jeffjensen Sep 29, 2026
9b47295
refactor(flatxml): Extract ScanProblems from FlatXmlParser
jeffjensen Sep 29, 2026
41c5f99
refactor(flatxml): Extract XmlLexer from FlatXmlParser
jeffjensen Sep 29, 2026
47c2240
refactor(flatxml): Extract DoctypeScanner from FlatXmlParser
jeffjensen Sep 29, 2026
d633df9
refactor(flatxml): Extract TextEditApplier from FlatXmlDatasetDocument
jeffjensen Sep 30, 2026
e55469c
refactor(flatxml): Extract CellLocator from FlatXmlDatasetDocument
jeffjensen Sep 30, 2026
9194a9e
refactor(flatxml): Extract DtdResolver from FlatXmlDatasetDocument
jeffjensen Sep 30, 2026
b60ef6a
refactor(flatxml): Extract PendingColumns from FlatXmlDatasetDocument
jeffjensen Sep 30, 2026
6778d7a
refactor(flatxml): Move the case-variant check into FlatXmlElement
jeffjensen Sep 30, 2026
e093ea2
refactor(flatxml): Move insertAsLastChildOfRoot into FlatXmlTextLayout
jeffjensen Sep 30, 2026
2daf7df
refactor(flatxml): Extract CellEdits from FlatXmlDatasetDocument
jeffjensen Sep 30, 2026
7048010
refactor(flatxml): Extract RowInsertEdits from FlatXmlDatasetDocument
jeffjensen Sep 30, 2026
f3d609a
refactor(flatxml): Extract RowEdits from FlatXmlDatasetDocument
jeffjensen Sep 30, 2026
2f39a3b
refactor(flatxml): Extract ColumnEdits from FlatXmlDatasetDocument
jeffjensen Sep 30, 2026
86f4586
refactor(flatxml): Extract TableEdits from FlatXmlDatasetDocument
jeffjensen Sep 30, 2026
aca59b7
refactor(editor): Extract PageServices from TablesPage
jeffjensen Sep 30, 2026
d3f5aae
refactor(editor): Extract TableTabs from TablesPage
jeffjensen Sep 30, 2026
15f1979
refactor(editor): Extract ActiveGrid from TablesPage
jeffjensen Sep 30, 2026
4b9daa2
refactor(editor): Extract TablesPageActions from TablesPage
jeffjensen Sep 30, 2026
079c1ee
docs(site): Update install with Eclipse problems
jeffjensen Sep 30, 2026
c11f7cd
test(flatxml): Compare differently spelled column names with dbUnit
jeffjensen Oct 5, 2026
8c5417e
docs(site): Document which dbUnit releases the editor follows
jeffjensen Oct 5, 2026
5277c15
fix(dtd): Apply the default values that ATTLIST declares
jeffjensen Oct 5, 2026
c100886
fix(grid): Show DTD default values as cell values
jeffjensen Oct 5, 2026
80922da
fix(flatxml): Protect the columns that dbUnit takes from the first row
jeffjensen Oct 5, 2026
a4377b6
fix(flatxml): Rename a table in the DOCTYPE's internal subset too
jeffjensen Oct 5, 2026
83d6cf5
fix(editor): Warn that a DTD file needs a renamed table's new name too
jeffjensen Oct 5, 2026
5cd57a2
fix(flatxml): Reject malformed text content that dbUnit cannot load
jeffjensen Oct 5, 2026
7d4993e
fix(flatxml): Undo and redo pending column changes from saved columns
jeffjensen Oct 5, 2026
33643d4
fix(flatxml): Keep pending columns while the model lacks their table
jeffjensen Oct 5, 2026
3b95503
fix(flatxml): Restore pending columns before a change moves the text on
jeffjensen Oct 5, 2026
aad9428
refactor(clipboard): Plan a paste in its own class
jeffjensen Oct 5, 2026
b3365cd
fix(clipboard): Skip pasted rows to add that have no value
jeffjensen Oct 5, 2026
5d2dfca
fix(clipboard): Copy only the selected cells, without the gaps betwee…
jeffjensen Oct 5, 2026
b3e87c2
fix(grid): Delete whole selected rows when the Delete key is pressed
jeffjensen Oct 5, 2026
d542023
fix(flatxml): Keep a table's columns when all its rows are deleted
jeffjensen Oct 5, 2026
c8fb2cb
fix(editor): Keep the selected tab selected when tabs are reordered
jeffjensen Oct 5, 2026
63e35ad
fix(editor): Enable File > Revert and Print in the dataset editor
jeffjensen Oct 5, 2026
f1b4d41
fix(editor): Show the text editor's status fields on the Source page
jeffjensen Oct 5, 2026
9973bbf
fix(grid): Remember column widths without the display scaling
jeffjensen Oct 5, 2026
e8ffcdc
fix(grid): Cancel a cell edit when its table changes shape
jeffjensen Oct 6, 2026
3fdbb0a
fix(editor): Close the dataset editor when its Source page is closed
jeffjensen Oct 6, 2026
079abf2
fix(editor): Ask about a file changed on disk on the Tables page too
jeffjensen Oct 6, 2026
c77d2ab
fix(editor): Refresh the model when an undo or redo returns
jeffjensen Oct 6, 2026
d26cd26
fix(grid): Leave the grid's keys to a cell editor that is open
jeffjensen Oct 6, 2026
de2eb68
fix(flatxml): Reject comments and instructions that dbUnit cannot load
jeffjensen Oct 6, 2026
51b13f8
fix(dtd): Stop reading EMPTY and entity references as table names
jeffjensen Oct 6, 2026
b984869
fix(flatxml): Recognize a flat table that is named table
jeffjensen Oct 6, 2026
d55325c
fix(dtd): Keep one declaration for two spellings of a DTD table
jeffjensen Oct 6, 2026
d40c1ed
fix(flatxml): Keep pending columns when table name case changes
jeffjensen Oct 6, 2026
d538956
fix(flatxml): Keep what a table's empty element holds on the first row
jeffjensen Oct 6, 2026
764946d
fix(flatxml): Leave the text of a cell that is set to its own value
jeffjensen Oct 6, 2026
e5e1f45
fix(flatxml): Join only nearby edits into one replacement
jeffjensen Oct 6, 2026
9934cad
perf(flatxml): Read only the whitespace around an element
jeffjensen Oct 6, 2026
42b10de
fix(editor): Load a relative DTD path that has a space or a backslash
jeffjensen Oct 6, 2026
c2ff761
fix(editor): Check an editor's files only for its own window
jeffjensen Oct 6, 2026
590dbc4
fix(editor): Follow the read-only state of the file on activation
jeffjensen Oct 6, 2026
1ba1ced
fix(editor): Show the text of a table-level problem on double-click
jeffjensen Oct 6, 2026
f68a330
fix(grid): Open the context menu of the focus cell from the keyboard
jeffjensen Oct 6, 2026
8dbe772
fix(grid): Follow a change of the workbench theme in the open grids
jeffjensen Oct 6, 2026
4ae7393
fix(dtd): Take the table list from the root that the DOCTYPE names
jeffjensen Oct 6, 2026
a9a53b1
fix(flatxml): Accept only the names that dbUnit's XML parser accepts
jeffjensen Oct 6, 2026
2237e5d
fix(dtd): Use the last declaration of the root element
jeffjensen Oct 6, 2026
3141f1b
fix(flatxml): Locate cells in the text as it is now
jeffjensen Oct 6, 2026
2b21212
fix(editor): Report a refusal to create an empty dataset
jeffjensen Oct 6, 2026
66aa3b9
fix(editor): Escape for the encoding that a save will use
jeffjensen Oct 6, 2026
a9ab30d
fix(editor): Hold back save and page change on an invalid cell value
jeffjensen Oct 6, 2026
ebd9265
fix(editor): Show the Source page when text in it is selected
jeffjensen Oct 6, 2026
6cf9446
fix(grid): Do not start an edit with half of a supplementary character
jeffjensen Oct 6, 2026
c4b0a2b
fix(grid): Insert Row Below after the last row when there is no anchor
jeffjensen Oct 6, 2026
2a013d9
fix(source): Color a tag again as a whole when a part of it changes
jeffjensen Oct 6, 2026
a8c9a20
fix(flatxml): Require whitespace around the identifiers of a DOCTYPE
jeffjensen Oct 6, 2026
bd8a4d9
fix(editor): Release the handlers of the grid commands when the page …
jeffjensen Oct 6, 2026
dfa7e36
perf(grid): Work out Fill Down's enablement from the selection snapshot
jeffjensen Oct 6, 2026
2506991
perf(flatxml): Ask the encoder about a character without building a s…
jeffjensen Oct 6, 2026
3dfa3df
perf(flatxml): Build the column lookups of an edit once, not for each…
jeffjensen Oct 6, 2026
89d455b
perf(flatxml): Tell that the text is blank without copying it
jeffjensen Oct 6, 2026
a18dd16
perf(flatxml): Work out the key of an attribute once, when it is parsed
jeffjensen Oct 6, 2026
436fc7c
perf(flatxml): Ask the index for the first element instead of listing…
jeffjensen Oct 6, 2026
62ed2d5
perf(model): Group the problems of a model by table and column once
jeffjensen Oct 6, 2026
c1e3d9c
perf(clipboard): Decide a paste from the snapshot of the selection
jeffjensen Oct 6, 2026
a78e331
perf(flatxml): Plan an edit on the parsed text, not on a document copy
jeffjensen Oct 6, 2026
3cfdbbb
fix(flatxml): Keep a pending column snapshot for each undo step
jeffjensen Oct 6, 2026
f3735d4
fix(grid): Refresh the document before a grid command runs
jeffjensen Oct 6, 2026
fb0caa0
refactor(editor): Ask the dataset document whether it is stale
jeffjensen Oct 6, 2026
19d10a5
feat(model): Say which tables of a changed model were renamed or added
jeffjensen Oct 6, 2026
bab1940
fix(editor): Keep the tab and grid of a table that is renamed
jeffjensen Oct 6, 2026
fbe0c62
refactor(model): Represent a blank document in the model
jeffjensen Oct 6, 2026
a105526
refactor(flatxml): Check for two spellings of a column where a rename…
jeffjensen Oct 6, 2026
4c4ece7
refactor(flatxml): Remove the unused batch of operations
jeffjensen Oct 6, 2026
3b40d1f
refactor(grid): Share the XML character test and message with the core
jeffjensen Oct 6, 2026
1134213
refactor(model): Key tables and columns by one rule each
jeffjensen Oct 6, 2026
b069635
refactor(grid): Key columns with the rule of the model
jeffjensen Oct 6, 2026
d4d5107
refactor(flatxml): Read white space as XML does everywhere
jeffjensen Oct 6, 2026
07092f0
refactor(flatxml): Skip a quoted literal of the subset with the lexer
jeffjensen Oct 6, 2026
682fb2a
refactor(flatxml): Remove the state and the API that nothing uses
jeffjensen Oct 6, 2026
8ef44ea
refactor(grid): Read the bounds of a selection from its indexes
jeffjensen Oct 6, 2026
3110ed5
refactor(editor): Keep each tab with its grid in one map
jeffjensen Oct 6, 2026
b1d3b0c
refactor(core): Add one lookup for a table that must exist
jeffjensen Oct 6, 2026
8ecc66d
refactor(grid): Look up the selected table in one call
jeffjensen Oct 6, 2026
0d55a0d
refactor(grid): Share the move of rows between Move Rows Up and Down
jeffjensen Oct 6, 2026
a05d593
refactor(grid): Build the changes that set cells to a value in one place
jeffjensen Oct 6, 2026
4ce03bd
refactor(editor): Run the Source page's undo and redo on the Tables page
jeffjensen Oct 6, 2026
1884e4b
fix(grid): Size automatic column widths for the painted text
jeffjensen Oct 6, 2026
7708f05
docs(flatxml): Document reloadDtd of the dataset document
jeffjensen Oct 6, 2026
671f927
docs(ai): Say when an overriding method needs its own JavaDoc
jeffjensen Oct 6, 2026
7ecad64
test(core): Name the state that three tests start from
jeffjensen Oct 6, 2026
6539235
test(editor): Name the state that four tests start from
jeffjensen Oct 6, 2026
9f7a5da
docs(core): Write complete sentences in five JavaDoc comments
jeffjensen Oct 6, 2026
ee26f45
docs(editor): Write complete sentences in two JavaDoc comments
jeffjensen Oct 6, 2026
08db153
refactor(flatxml): Branch on equality in the scan of the children
jeffjensen Oct 6, 2026
bc3259d
refactor(editor): Branch on equality when a tab is selected
jeffjensen Oct 6, 2026
e6b88ac
refactor(flatxml): Declare a serial version for DescriptionKnown
jeffjensen Oct 6, 2026
23ef0aa
test(core): Test XmlNames against the Java parser in XmlNamesTest
jeffjensen Oct 6, 2026
d0359cd
test(flatxml): Compare the parser with dbUnit in FlatXmlParserTest
jeffjensen Oct 6, 2026
7fcceb3
test(flatxml): Compare the model and the edits with dbUnit in their t…
jeffjensen Oct 6, 2026
292185a
test(editor): Move the DTD tests into FlatXmlDatasetEditorTest
jeffjensen Oct 6, 2026
1a9fcc2
test(editor): Move the tests of the Tables page into TablesPageTest
jeffjensen Oct 6, 2026
63b1313
test(grid): Move the editing tests into the tests of their classes
jeffjensen Oct 6, 2026
07df8fe
test(grid): Move the action tests into a test class for each action
jeffjensen Oct 6, 2026
c440c11
docs(site): Correct and clarify the Marketplace listing
jeffjensen Oct 7, 2026
4596ea3
docs(feature): Name the supported dataset formats in one sentence
jeffjensen Oct 7, 2026
a994d9b
docs(ai): Name the supported dataset formats in one sentence
jeffjensen Oct 7, 2026
9c629c8
build(mvn): Add build scripts with a time-based qualifier
jeffjensen Oct 7, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
17 changes: 16 additions & 1 deletion CLAUDE.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ This file provides guidance to Claude Code (claude.ai/code) when working with co

## Project Overview

The **dbUnit Eclipse Plugin** adds a spreadsheet-like editor for [dbUnit](https://github.com/dbunit/dbunit-extension) dataset files to the Eclipse IDE. Version 1 supports the flat XML format (`FlatXmlDataSet`). It is built with Maven and Eclipse Tycho and published as a PGP-signed p2 repository (Eclipse update site) on GitHub Pages.
The **dbUnit Eclipse Plugin** adds a spreadsheet-like editor for [dbUnit](https://github.com/dbunit/dbunit-extension) dataset files to the Eclipse IDE. The plugin currently supports the dbUnit flat XML format (`FlatXmlDataSet`); other dataset formats are planned. It is built with Maven and Eclipse Tycho and published as a PGP-signed p2 repository (Eclipse update site) on GitHub Pages.

## Build Commands

Expand All @@ -14,6 +14,11 @@ The project uses a Maven wrapper. Always use `./mvnw` instead of `mvn`. Tycho 5
# Build, run all tests, and assemble the update site (default goal is verify)
./mvnw clean verify

# The same build with the current UTC time as the version qualifier, to install it into Eclipse: the pom pins
# project.build.outputTimestamp, so a plain build always has the same version, which Eclipse does not offer as an update.
# Arguments go to ./mvnw (none runs clean install); build-local.cmd is the Windows script.
./build-local.sh clean verify

# Build and test against the newest Eclipse release instead of the baseline (oldest supported)
./mvnw clean verify -Platest-target

Expand All @@ -28,6 +33,9 @@ The project uses a Maven wrapper. Always use `./mvnw` instead of `mvn`. Tycho 5

# Skip tests
./mvnw clean verify -DskipTests

# Skip SpotBugs, the Error Prone pass, and PMD, which verify runs on the core and UI bundles, failing the build on any finding
./mvnw clean verify -Dspotbugs.skip -Dmaven.main.skip -Dpmd.skip=true
```

UI tests (`bundles/org.dbunit.eclipse.dataset.ui/src/test/java`) run inside an Eclipse workbench via `tycho-surefire-plugin:plugin-test`; on Linux without a display, prefix the command with `xvfb-run -a`.
Expand Down Expand Up @@ -93,7 +101,9 @@ The IDocument (text) is the single source of truth: grid edits become minimal te
- Use Eclipse code cleanup settings file `code-cleanup-eclipse.xml` when modifying or creating files (e.g., `final` parameters, locals, and private fields).
- Start every Java file with the dbUnit LGPL license header used by the existing sources.
- Place the Logger variable first in the class; log through Eclipse's `org.eclipse.core.runtime.ILog` (`private static final ILog LOG = ILog.of(ClassName.class);`), not a logging framework.
- The core bundle's unit tests run without OSGi, where `ILog.of` throws, so core classes never call it: they take a `Consumer<IStatus>` log sink through their constructor, as `FlatXmlDatasetDocument` does, and the UI bundle passes `LOG::log`.
- Write JavaDoc comments on all public classes and methods in src/main.
- A method that overrides or implements another one inherits the JavaDoc of that method, so it needs its own only when it says something that the inherited one does not.
- In JavaDoc, use complete sentences for all descriptions, start with a capital letter and end with a period, for everything - the topic body, parameters, and return, including all annotations such as @param and @throws.
- Tests:
- Prefer assertJ.
Expand All @@ -119,6 +129,11 @@ The IDocument (text) is the single source of truth: grid edits become minimal te
- Monitor a branch's CI build result at <https://github.com/dbunit/dbunit-eclipse-plugin/actions/workflows/build-any-branch.yml> for issues to correct.
- Keep `org.dbunit.eclipse.dataset.core` free of UI dependencies (no `org.eclipse.ui*`, `org.eclipse.swt`, `org.eclipse.jface` other than `org.eclipse.jface.text` types from the `org.eclipse.text` bundle).
- All SWT access happens on the UI thread; dispose every Color, Font, Image, and Cursor you create (prefer `JFaceResources`/`LocalResourceManager`).
- Fix static analysis findings instead of suppressing them.
- Exclude a SpotBugs finding that is by design only in `src/code-audit-rules/spotbugs-exclude.xml`, naming the class, the field, and the pattern, with the reason.
- Suppress an Error Prone finding that is by design with `@SuppressWarnings("CheckName")` on the smallest element, with a comment that gives the reason.
- Suppress a PMD finding that is by design with `@SuppressWarnings("PMD.RuleName")` on the smallest element, with a comment that gives the reason.
- Tycho compiles with the Eclipse compiler, which cannot run Error Prone, so Error Prone runs as a second, analysis-only javac pass (the `error-prone` execution of `maven-compiler-plugin` in the root `pom.xml`); the shipped classes still come from the Eclipse compiler.

## Troubleshooting

Expand Down
16 changes: 12 additions & 4 deletions README.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -7,12 +7,20 @@ image:https://img.shields.io/github/issues/dbunit/dbunit-eclipse-plugin["Open Is

Edit link:https://dbunit.github.io/dbunit-extension/[dbUnit] dataset files like a spreadsheet, inside the Eclipse IDE.

The *dbUnit Dataset Editor* opens dbUnit flat XML dataset files as a grid:
The *dbUnit Dataset Editor* opens dbUnit dataset files as a grid:
each table is a sheet, each row element is a spreadsheet row, and each attribute is a cell.
Edits are written back into the XML text with minimal changes,
so comments, formatting, and the DOCTYPE are preserved and diffs stay small.

Version 1 supports the dbUnit flat XML format; other dataset formats are planned.
The plugin currently supports the dbUnit flat XML format; other dataset formats are planned.

== Features

* link:https://dbunit.github.io/dbunit-eclipse-plugin/usage.html#tables-page[One sheet per table], with rows in file order
* link:https://dbunit.github.io/dbunit-eclipse-plugin/usage.html#editing[Spreadsheet editing], with link:https://dbunit.github.io/dbunit-eclipse-plugin/usage.html#null-values[NULL and empty strings kept apart]
* link:https://dbunit.github.io/dbunit-eclipse-plugin/usage.html#rows-columns-tables[Row, column, and table commands]
* link:https://dbunit.github.io/dbunit-eclipse-plugin/usage.html#clipboard[Copy and paste] to and from spreadsheet applications
* link:https://dbunit.github.io/dbunit-eclipse-plugin/usage.html#undo[Undo and redo] shared with the link:https://dbunit.github.io/dbunit-eclipse-plugin/usage.html#source-page[Source page]
* link:https://dbunit.github.io/dbunit-eclipse-plugin/usage.html#problems[Warnings about content dbUnit ignores or rejects]
* link:https://dbunit.github.io/dbunit-eclipse-plugin/usage.html#dtd[DTD support] and a link:https://dbunit.github.io/dbunit-eclipse-plugin/usage.html#opening[new dataset wizard]

== Documentation

Expand Down
33 changes: 33 additions & 0 deletions build-local.cmd
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
@echo off
rem Builds the plugin with the current UTC time as the version qualifier, to install the build into
rem Eclipse during development. build-local.sh does the same in bash.
rem
rem A plain mvnw build takes the qualifier from project.build.outputTimestamp in the root pom.xml,
rem which changes only per release, so every local build has the same version, and Eclipse does not
rem offer a rebuilt plugin as an update to the installed one. A build from this script is newer than
rem the one before it. The qualifier has the format of the pom's 'v'yyyyMMdd-HHmm, as in the CI build.
rem
rem Usage: build-local.cmd [Maven arguments]
rem Without arguments it runs: clean install
rem Arguments replace those goals, so give the goals too: build-local.cmd clean verify -DskipTests

setlocal
pushd "%~dp0"

set "BUILD_QUALIFIER="
for /f "usebackq delims=" %%q in (`powershell -NoProfile -NonInteractive -Command "'v' + [DateTime]::UtcNow.ToString('yyyyMMdd-HHmm')"`) do set "BUILD_QUALIFIER=%%q"
if not defined BUILD_QUALIFIER (
echo Cannot get the current UTC time from powershell for the version qualifier.>&2
popd
exit /b 1
)

set "DEFAULT_GOALS="
if "%~1"=="" set "DEFAULT_GOALS=clean install"

echo Building with the version qualifier %BUILD_QUALIFIER%
call "%~dp0mvnw.cmd" -DforceContextQualifier=%BUILD_QUALIFIER% %DEFAULT_GOALS% %*
set "MAVEN_EXIT_CODE=%ERRORLEVEL%"

popd
exit /b %MAVEN_EXIT_CODE%
26 changes: 26 additions & 0 deletions build-local.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
#!/usr/bin/env bash
#
# Builds the plugin with the current UTC time as the version qualifier, to install the build into
# Eclipse during development. build-local.cmd does the same on Windows.
#
# A plain mvnw build takes the qualifier from project.build.outputTimestamp in the root pom.xml,
# which changes only per release, so every local build has the same version, and Eclipse does not
# offer a rebuilt plugin as an update to the installed one. A build from this script is newer than
# the one before it. The qualifier has the format of the pom's 'v'yyyyMMdd-HHmm, as in the CI build.
#
# Usage: build-local.sh [<Maven arguments>]
# Without arguments it runs: clean install
# Arguments replace those goals, so give the goals too: build-local.sh clean verify -DskipTests

set -euo pipefail

cd "$(dirname "$0")"

if [ "$#" -eq 0 ]; then
set -- clean install
fi

qualifier="v$(date -u +%Y%m%d-%H%M)"
echo "Building with the version qualifier ${qualifier}"

exec ./mvnw -DforceContextQualifier="${qualifier}" "$@"
14 changes: 12 additions & 2 deletions bundles/org.dbunit.eclipse.dataset.core/META-INF/MANIFEST.MF
Original file line number Diff line number Diff line change
Expand Up @@ -10,5 +10,15 @@ Bundle-ActivationPolicy: lazy
Automatic-Module-Name: org.dbunit.eclipse.dataset.core
Require-Bundle: org.eclipse.equinox.common;bundle-version="3.19.0",
org.eclipse.core.contenttype;bundle-version="3.9.0",
org.eclipse.text;bundle-version="3.14.0"
Export-Package: org.dbunit.eclipse.dataset.core
org.eclipse.text;bundle-version="3.14.0",
org.eclipse.core.commands;bundle-version="3.12.0"
Import-Package: javax.xml.parsers,
org.eclipse.osgi.util;version="1.1.0",
org.xml.sax,
org.xml.sax.helpers
Export-Package: org.dbunit.eclipse.dataset.core,
org.dbunit.eclipse.dataset.core.model,
org.dbunit.eclipse.dataset.core.dtd;x-friends:="org.dbunit.eclipse.dataset.ui",
org.dbunit.eclipse.dataset.core.edit;x-friends:="org.dbunit.eclipse.dataset.ui",
org.dbunit.eclipse.dataset.core.flatxml;x-friends:="org.dbunit.eclipse.dataset.ui",
org.dbunit.eclipse.dataset.core.tsv;x-friends:="org.dbunit.eclipse.dataset.ui"
3 changes: 2 additions & 1 deletion bundles/org.dbunit.eclipse.dataset.core/build.properties
Original file line number Diff line number Diff line change
Expand Up @@ -2,4 +2,5 @@ source.. = src/main/java/
output.. = target/classes/
bin.includes = META-INF/,\
.,\
plugin.properties
plugin.properties,\
plugin.xml
1 change: 1 addition & 0 deletions bundles/org.dbunit.eclipse.dataset.core/plugin.properties
Original file line number Diff line number Diff line change
@@ -1,2 +1,3 @@
Bundle-Name = dbUnit Dataset Core
Bundle-Vendor = dbUnit
contentType.flatXml.name = dbUnit Flat XML Dataset
14 changes: 14 additions & 0 deletions bundles/org.dbunit.eclipse.dataset.core/plugin.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
<?xml version="1.0" encoding="UTF-8"?>
<?eclipse version="3.4"?>
<plugin>
<extension point="org.eclipse.core.contenttype.contentTypes">
<content-type
id="org.dbunit.eclipse.dataset.flatxml"
base-type="org.eclipse.core.runtime.xml"
name="%contentType.flatXml.name"
file-extensions="xml"
priority="normal">
<describer class="org.dbunit.eclipse.dataset.core.flatxml.FlatXmlContentDescriber"/>
</content-type>
</extension>
</plugin>
12 changes: 12 additions & 0 deletions bundles/org.dbunit.eclipse.dataset.core/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -78,6 +78,18 @@
<failIfNoTests>true</failIfNoTests>
</configuration>
</plugin>
<plugin>
<groupId>com.github.spotbugs</groupId>
<artifactId>spotbugs-maven-plugin</artifactId>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-pmd-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
Loading
Loading