Class Namer
These used to be PARAM_* placeholder tokens rewritten by sed when a release
was cut. That step no longer ran, so the tokens travelled into generated code verbatim — a
regenerated tree contained 36,837 literal PARAM_PROD_NAMEs, and every generated file's
header read "Generated by PARAM_PROD_NAME PARAM_PRODUCT_VERSION build PARAM_BUILD". Holding the
values here instead means the generator concatenates a real string and there is nothing left to
substitute after the build.
The values are real branding as of 2026-08-07, filled in by the rename recorded in
docs/rename-plan.md. They were provisional SUBST_* placeholders until then; that
prefix existed to be greppable as a family and distinct from the PARAM_ token each
replaced, so the migration could be counted rather than believed. Both families should now be
absent from a regenerated tree, and the rename's check script asserts exactly that.
This class is the only place product branding belongs. Not because duplication is untidy,
but because of the arithmetic: param_prod_name alone reaches ~36,837 places in a single
regeneration. Anything hard-coded elsewhere is invisible to that count and will be missed — which
is exactly what happened to the documentation links, nine of which sat in
SAAdminWrangler as literal URLs and went on pointing at a dead site for years. Add the
constant here and reference it; never retype the value.
Why this lives in com.mcpdbwizard.pub and not in the generator. LibraryInfo
reports the same product identity to generated programs at run time, and pub SHIPS WITH
generated code, so it must never depend on com.mcpdbwizard.app. Putting the constants the
other way round -- in pub, which app already imports in 30 files -- gives one source of
truth without inverting that dependency. A second copy inside pub would have to be kept in
step by hand, and would drift the first time only one side was edited.
Only values that genuinely survive into generated output live here. Tokens the
generator substitutes per run — PARAM_AUTHOR (the config's author name),
PARAM_TARGET_PARAM_*, and the script tokens PARAM_JDBCJAR/PARAM_JAVAC/…
— are deliberately absent: replacing those with a constant would bake one generation's data
into every customer's output.
PARAM_COPYRIGHT_NOTICE was listed above until 2026-08-04, on the same reasoning. It did
not belong there: nothing substitutes it, and it never reached generated output — its only
appearances were the javadoc headers of 45 hand-written sources in this package and in
app.common, where it stood for this project's own notice rather than a customer's.
Those now carry the real notice, so the token is gone from the tree entirely. The distinction to
keep is between a token the generator writes into someone else's file and one merely left
unsubstituted in ours; only the first kind must stay a token.
- Author:
- devteam@mcpdbwizard.com Copyright 2003-2026 ATB Consultancy Services Ltd (formerly Orinda Software Ltd, Dublin, Ireland)
-
Field Summary
FieldsModifier and TypeFieldDescriptionstatic final StringBuild identifier, in Oracle'sYYYYMMDDHH24MIshape — e.g.static final StringDocumentation link emitted into generated comments as "See: ...".static final StringShort product name.static final StringAlternate product-name token.static final StringLong product name.static final StringThe product site as a complete URL.static final StringProduct version.static final StringProduct web address.static final StringWhere a user is told to send a log file when the generator fails.static final StringWho makes it.static final StringBare version token. -
Method Summary
-
Field Details
-
param_prod_name
Short product name. ReplacesPARAM_PROD_NAME(36,837 occurrences per regen).Spelling matters and is not free choice.
MCPDBWizardis the product name as it appears in prose and in emitted text;McpDbWizardis the Java identifier form andcom.mcpdbwizardthe package form. Use this constant rather than retyping it.- See Also:
-
param_product_name_long
Long product name. ReplacesPARAM_PRODUCT_NAME_LONG.Deliberately does NOT read "MCPDBWizard for Oracle", and should not be changed to. ORACLE is a registered trademark of Oracle America, Inc., whose third-party usage guidelines permit truthful references to compatibility but not incorporating the mark into another product's name. The decisive point is narrower than the trademark question, though: this constant is stamped into generated PL/SQL and Java that lands in customers' databases and source trees, where a later change cannot be recalled — unlike a web page. "for Oracle Database" belongs in the README, the web UI and the website, all of which can be edited in an afternoon.
- See Also:
-
param_product_name
Alternate product-name token. ReplacesPARAM_PRODUCT_NAME.Note where this one ends up: 56 of its uses are SQL comment hints of the form
select /* MCPDBWizard */ …, which is what a customer's DBA sees inV$SQLwhen they ask who is running a dictionary query. Keep it short and keep it stable.- See Also:
-
param_product_version
Product version. ReplacesPARAM_PRODUCT_VERSION.- See Also:
-
param_version
-
param_build
Build identifier, in Oracle'sYYYYMMDDHH24MIshape — e.g.202608020937. ReplacesPARAM_BUILD.Computed ONCE per JVM, at class initialisation, so every file emitted by a single generation run carries the same stamp. It therefore identifies the RUN rather than a release build: two generations a minute apart produce different values. That is acceptable here because the stamp only ever reaches generated comments, alongside the header timestamp that already varies per run — which is why the project compares regenerated trees with comment blocks stripped.
Java's pattern letters differ from Oracle's:
HH24is JavaHH(24-hour) and Oracle'sMIis Javamm(minutes); Java'sMMis months. -
param_product_www
Product web address. ReplacesPARAM_PRODUCT_WWW.A BARE HOSTNAME, with no scheme. Its call sites supply their own — one of them reads
"Go to http://" + param_product_www + "/pl_sql_tab.html"— so puttinghttps://here yieldshttp://https://mcpdbwizard.com/…. Useparam_product_urlwhere a complete URL is wanted, andfaq(String)for documentation links.- See Also:
-
param_product_url
The product site as a complete URL. Preferfaq(String)for documentation links.- See Also:
-
param_vendor_name
Who makes it. This is the current vendor, and is a different question from the copyright notice in these files' headers — that records a chain of title ("...ATB Consultancy Services Ltd (formerly Orinda Software Ltd, Dublin, Ireland)") and must not be rewritten to match a rename.- See Also:
-
param_support_email
Where a user is told to send a log file when the generator fails.- See Also:
-
param_java_param_limit_url
Documentation link emitted into generated comments as "See: ...". ReplacesPARAM_JAVA_PARAM_LIMIT_URL.
-
-
Method Details
-
faq
A documentation URL fortheTopic, e.g.faq("logging").Absolute on purpose, and it must stay absolute. These links are emitted into customers' source files, where they outlive this tool entirely: someone opening a generated file years from now, on a machine that never had "MCPDBWizard" installed, still has to be able to follow them. Pointing them at a running web UI instead would be broken by construction — that is an internal deployment on a port from a range, usually containerised and firewalled.
The web UI serves the same paths from the same sources, so its own in-app warnings can link to
/faq/<topic>on whatever instance is running and keep working with no route to the internet — which matters, because a large share of Oracle sites are air-gapped. That half belongs to the web module and must not reach back into here:pubships with generated code and cannot depend onapporweb, so these constants are compile-time and cannot be made instance-aware.
-