Pcase

Tools for Progress

PCase - Documentation (4.0)

A bunch of PCase screens

PCase is a CASE-tool which allows to view and design the structure of a relational database graphically using an entity relationship diagram (ERD). With this easy-to-use tool, Progress databases can be generated and updated directly. The structure of an existing Progress database can be read and shown as an ERD. The structure of different databases in different versions are managed by the tool. It was implemented using the Progress programming language. It uses the SkinClient for its graphical interface and ERDs.

PCase is an Eclipse plugin, to be used from within OpenEdge Architect. (> OpenEdge 11.0).

© IAP GmbH 2004-2016


Wizards

Project

The project wizard allows to create new PCase projects and new versions of projects.

The project creation wizard

Fields

Name: The name of the project.

Source: Selects the data source that will be used to create the new project/version. Availible are:

  • Empty Project: Creates a blank projects without any tables, and only the basic areas
  • Project/Version (copy): Creates the new project/version as a copy of another one. Choosing this option will enable the "Copy from:" fields, where you can select the source project.
  • DF-File (wizard): Will open the DF-file import wizard after you click finish.
  • DB-Connection (wizard): Will open the Progress database import wizard after you click finish.
  • Project-file (wizard): Will prompt you to select a .pxz file after you click finish.

Version: The version of the project you want to create. This allows you to create and maintain multiple versions of the same project.

Description: A freetext description of the project.

Link to current OpenEdge project: If checked, the PCase project version will be linked with the current eclipse project. If another version of the same project is already linked, the other version will be unlinked, as only one version of a project can be linked at the same time.

See also

Projects and Versions


Wizards

Subview

The subview wizard allows to create new PCase subviews.

The subview creation wizard

Fields

Name: The name of the subview.

Type: Determines whenever the subview will be logical or physical. Availible are:

  • Database View: Creates a physical view
  • Business Entity: Creates a logical view

Description: A freetext description of the subview.

See also

Subviews


Wizards

Tables

The table wizard allows to create new tables.

The table creation wizard

Fields

Name: The name of the table.

Dump: The dump-name of the table. This as a file name when creating a dump of a progress database.

Area: The storage area that the table will use.

Initial: The initial value of the property.

Description: A freetext description of the project.

See also

Tables


Wizards

Fields

The fields wizard allows to add fields to tables. Using next, you can create multiple new fields at once. When you have multiple tables selected when opening the Wizard, the fields will be added to each of the tables.

The field creation wizard

Fields

Name: The name of the field.

Foreign Key: This is a comfort function. If checked, PCase will look for another field with the same name in another table, that has a unique index. If it finds one, it will automatically create a relation to the other table between the two fields, and create an index on the new field.

Datatype: The PROGRESS datatype of the field.

Format: The PROGRESS formating string of the field.

Description: A freetext description of the field.

See also

Fields


Wizards

Indices

The index wizard allows to add indices to tables. Using next, you can create multiple new indices at once. When you have multiple tables selected when opening the Wizard, the indices will be added to each of the tables. When you have fields selected when opening the wizard, the will be added automatically to the index.

The index creation wizard

Fields

Name: The name of the index.

Area: The storage area that the index will use.

Description: A freetext description of the index.

Unique: Defines whether the index is unique (meaning that the value of the fields is different for every record)

Primary: Defines whether the index is primary. This is forced when creating the first index of a table. When another index in the table is already primary, it the new index will replace it as primary index.

Abbreviate: Defines whether the index is an abbreviation index.

Wort-Index: Defines whether the index is a word index.

Flip field: Changes the selected index field from ascending to descending and vice versa.

Add field: Adds a field as index field.

Remove field: Removes a field from the index fields.

Move up/down: Moves the selected index field.

See also

Indices


Wizards

Relations

The relation wizard allows to create a relation between a parent and a child table.

The relation creation wizard

Fields

From left to right and top to bottom.

Parent: The parent table.

Cardinality: The cardinality of the relation between parent and child table.

Child: The child table.

Flip relation: This button allows to turn around a relation by switching parent and child of the relation.

Description: A freetext description of the relation.

The fields after the description field are used to define relation fields.

Parent field: A field of the parent table.

Comparator: Operation that is used to compare the parent field to the child field.

Child field: A field of the child table.

Relation fields: A browse displaying all the relation fields that where created for this relation.

Add/Remove field: Two buttons that allow to accept the current input of parent field, comparator and child field into the relation fields or to delete the selected relation field.

See also

Relations


Wizards

Mass Relations

The mass relations wizard opens when you try to create a relation with more than two tables selected. It scans all selected tables and suggests links between tables based on matching field names and unique indices. If the selected tables are linked, the relations of the physical tables are suggested.

The relation creation wizard

Fields

Mass selection: This is the checkbox above the browse. It is checked if any of the displayed relations is selected. If it is unchecked and gets checked manually, all displayed relations get selected. If it is checked and gets unchecked manually, all displayed relations get deselected.

Search: This is the input field above the browse. The browse gets automatically filtered as you type. This search includes parent table, child table and relation fields.

See also

Relations


Wizards

Sequences

The areas wizard allows to create new PROGRESS database sequences.

The sequence creation wizard

Fields

Name: The name of the sequence. (Must be a valid progress identifier)

Initial: The starting number of the sequence.

Increment: The value by which each value of the sequence changes relative to the last.

Limit: The maximum value of the sequence.

Active: Sets whether or not the limit should be enforced.

Cycle: Determines whether the sequence should start again from the initial value after the limit is reached.

See also

Sequences


Wizards

Areas

The areas wizard allows to create new PROGRESS database areas.

The area creation wizard

Fields

Name: The name of the area.

Number: The area number.

See also

Areas


Wizards

Triggers

The trigger wizard allows to add triggers to fields and tables.

The trigger creation wizard

Fields

Type: The kind of trigger procedure. When you select a field and then open this wizard, this will automatically be "assign".

Procedure: The name of the procedure file. (Has to be a valid filename)

See also

Triggers


Wizards

Custom properties

The custom properties wizard allows to create new user defined attributes (UDA).

The UDA creation wizard

Fields

Name: The name of the attribute.

Type: Determines to which elements the attribute will apply. Available are:

  • project: Applies only to the project itself
  • view: Applies to all subviews of the project
  • file: Applies to all tables in the project
  • field: Applies to all the fields in the project
  • reference: Applies to all references in the project
  • file in view: Applies to tables, scoped by subview
  • field in view: Applies to fields, scoped by subview
  • reference in view: Applies to references, scoped by subview

Initial: The initial value of the property.

See also

User defined attributes


Wizards

Export

The menu-item "Export" offers you the possibility to create a database, build a df-file and to store your ERD in a XML-file. The df-file-option creates a Progress data-definition file. In addition to the creating databases you also can update an existing one. If you just want to back up your data using the XML-option is recommended. You may export current ERD as bitmap graphics file using ERD as BMP option.


Wizards

Export

DB

Selecting the „Export/OpenEdge Database (*.db)“-item from the project context menu opens this wizard for creating a PROGRESS database.

Wizard for exporting a PCase project as a PROGRESS database

Fields

Filename: The path to the *.db file to be created.

Trigger-Path: The path to store the generated trigger files.

Working-Dir: The path that the relative area path names refer to.

Don't export trigger source: Forbids the inclusion of trigger objects during export.

Generate references as triggers: Sets whether or not reference triggers should be generated and exported.

Generate one Trigger-File (Session-Triggers): Sets whether or not to export a session-trigger file instead of schema-trigger files.

Replace if exists: If a db-file with {{Filename}} already exists, it will be replaced.

Compile Trigger File(s) (For CRC): Compiles the trigger files against the database.

Create Development Database (RPDB): Generates a relative path database with only one variable extent for each area. This makes it easier to copy and move the database, but is not recommended in production environments.


Wizards

Export

df-file

Selecting the „Export/OpenEdge DataDefinition (*.df)“-item from the project context menu opens a wizard for creating a PROGRESS data-definition file (df).

Page 1

Wizard for exporting a PCase project as a PROGRESS data-definition file

Page 1 - Fields

Filename: The path to the *.df file to be created.

Trigger-Path: The path to store the generated trigger files.

Codepage: The encoding that the df-file should have.

Generate one Trigger-File (Session-Triggers): Sets whether or not to export a session-trigger file instead of schema-trigger files.

Generate references as triggers: Sets whether or not reference triggers should be generated and exported.

Replace if exists: If a df-file with {{Filename}} already exists, it will be replaced.

Include POSITION for .r compatibility: Allows r-code files, that where compiled against a database build from this df-file, to be run with other databases build from this df-file, without recompiling.

Don't export trigger source: Forbids the inclusion of trigger objects during export.

Version: You may define if a V8, V9 or V10 (OpenEdge) df-file should be created.

Page 2

If this page is skipped, every table in the project will be exported.

Second wizard page

Page 2 - Fields

Complete: If checked, every table in the project will be included in the df-file. Otherwise, only the tables selected in the browse will be included.


Wizards

Export

DB Update

Selecting the „Export/Update OpenEdge Database“-item from the project context menu opens this wizard for updating an existing PROGRESS database.

Page 1

Wizard for updating a PROGRESS database

Page 1 - Fields

Physical Name: The path to the *.db file to be imported.

Logical Name: The logical name to be used during import. You can also choose the name of a database that is already connected to eclipse to automatically pre-fill the other values.

Parameters: Additional parameters for the database connection. (Note: -1 is automatically added if you don't check "Multiple users")

Multiple Users: Check this if the database is started in multi user mode.

Host: The host of the database service. Disabled if "Multiple Users" is not checked.

Port: The port of the database service. Disabled if "Multiple Users" is not checked.

Test connection: Checks if the database can be connected with the current configuration. You cannot finish the wizard unless this succeeds.

Page 2

Wizard for importing a PCase project as a PROGRESS database

Page 2 - Fields

Trigger Path: The path where the trigger files are stored.

Working-Dir: The path that the relative area path names refer to.

Don't export trigger source: Forbids the inclusion of trigger objects during export.

Generate references as triggers: Sets whether or not reference triggers should be generated and exported.

Generate one Trigger-File (Session-Triggers): Sets whether or not to export a session-trigger file instead of schema-trigger files.

Compile Trigger File(s) (For CRC): Compiles the trigger files against the database.

Delete Table(s)/Area(s): All existing database contents will be deleted.


Wizards

Export

Automatically generated Trigger Code

While creating/updating DBs or generating df-files additional trigger code for referential integrity can be generated automatically using information stored in the associations.

Following trigger code can be automatically added to the parents delete trigger depending on asssociation information.
Automatically generated trigger code can be customized to your own needs. (Examples for generating PCase default and for Progress Dynamics triggers are included (in source)).

on delete restrict

template:
FOR EACH  %child%
  WHERE %keys[%child%,%parent%,=,AND]%
  NO-LOCK:
  RETURN ERROR  "(101) %child% still exists.  Deletion of %parent% forbidden. ".
END.
example:
FOR EACH childr
   WHERE childr.key1 = parent.key1
   AND   childr.key2 = parent.key2
NO-LOCK:
  RETURN ERROR  "(101)  childr still exists.  Deletion of parent forbidden. ".
END.

on delete cascade

template:
FOR EACH  %child%
    WHERE %keys[%child%,%parent%,=,AND]%
EXCLUSIVE-LOCK:
  DELETE %child%.
END.
example:
FOR EACH childc
   WHERE childc.key1 = parent.key1
   AND   childc.key2 = parent.key2
EXCLUSIVE-LOCK:
  DELETE childc.
END.

on delete set null

template:
FOR EACH  %child%
    WHERE %keys[%child%,%parent%,=,AND]%
EXCLUSIVE-LOCK:
  ASSIGN
    %keys[%child%,?,=,]%
  .
END.
example:
FOR EACH childn
   WHERE childn.key1 = parent.key1
   AND   childn.key2 = parent.key2
EXCLUSIVE-LOCK:
  ASSIGN
    childn.key1 = ?
    childn.key2 = ?
  .
END.
Following trigger code can be automatically added for each association to the parents write trigger depending on asssociation information.

on write restrict

template:
IF %keys[%parent%,OLD%parent%,<>,OR]%
THEN DO:
  FOR EACH  %child%
    WHERE %keys[%child%,OLD%parent%,=,AND]%
  NO-LOCK:
    RETURN ERROR  "(102) %child% still exists. Update of %parent% forbidden. ".
  END.
END.
example:
IF   parent.key1 <> OLDparent.key1
  OR parent.key2 <> OLDparent.key2
THEN DO:
  FOR EACH childr
     WHERE childr.key1 = OLDparent.key1
     AND   childr.key2 = OLDparent.key2
  NO-LOCK:
    RETURN ERROR  "(102)  childr still exists. Update of parent forbidden. ".
  END.
END.

on write cascade:

template:
IF %keys[%parent%,OLD%parent%,<>,OR]%
THEN DO:
  FOR EACH  %child%
    WHERE %keys[%child%,OLD%parent%,=,AND]%
  EXCLUSIVE-LOCK:
    ASSIGN
      %keys[%child%,OLD%parent%,=,]%
    .
  END.
END.
example:
IF   parent.key1 <> OLDparent.key1
  OR parent.key2 <> OLDparent.key2
THEN DO:
  FOR EACH childc
     WHERE childc.key1 = OLDparent.key1
     AND   childc.key2 = OLDparent.key2
  EXCLUSIVE-LOCK:
    ASSIGN
      childc.key1 = parent.key1
      childc.key2 = parent.key2
    .
  END.
END.
Following trigger code can be automatically added for each association to the childs write trigger depending on association information.

If a childs key is set or changed a referenced parent must exist. If the parent is mandatory and the key is changed to unknown (one of the key fields is unknown) an error occurs.

template:
IF %keys[%child%,OLD%child%,<>,OR]%
THEN DO:
  IF %keys[%child%,?,<>,AND]%
  THEN DO:
    FIND FIRST %parent%
      WHERE %keys[%parent%,%child%,=,AND]%
    NO-LOCK NO-ERROR:
    IF NOT AVAILABLE %parent% THEN DO:
      RETURN ERROR  "(103) %parent% does not exist. Write of %child% forbidden. ".
    END.
  END.

<generated only if parent is mandatory>
    ELSE DO:
    RETURN ERROR "(104) %parent% is mandatory, but does not exist. Write of %child% forbidden. ".
    END.
</generated only if parent is mandatory>

END.
example:
IF   childr.key1 <> OLDchildr.key1
  OR childr.key2 <> OLDchildr.key2
THEN DO:
  IF    childr.key1 <> ?
    AND childr.key2 <> ?
  THEN DO:
    FIND FIRST parent
       WHERE parent.key1 = childr.key1
      AND   parent.key2 = childr.key2
    NO-LOCK NO-ERROR.
    IF NOT AVAILABLE parent THEN DO:
      RETURN ERROR  "(103) parent does not exist. Write of childr forbidden. ".
    END.
  END.
  ELSE DO:
    RETURN ERROR  "(104) parent is mandatory, but does not exist. Write of childr forbidden. ".
  END.
END.
If the association option "changes of parent allowed" is disabled following code is generated automatically in the write trigger of the child.

template:
IF %keys[%child%,OLD%child%,<>,OR]%
THEN DO:
  IF %keys[OLD%child%,?,<>,AND]%
  THEN DO:
    RETURN ERROR  "(105) Change of Parent of %child% forbidden. ".
  END.
END.
example:
IF   childa.key1 <> OLDchilda.key1
  OR childa.key2 <> OLDchilda.key2
THEN DO:
  IF    OLDchilda.key1 <> ?
    AND OLDchilda.key2 <> ?
  THEN DO:
    RETURN ERROR  "(105) Change of Parent of childa forbidden. ".
  END.
END.
By default the keyword /*include-ref*/ in an user defined trigger is replaced by the automatically generated code.

example:
TRIGGER PROCEDURE FOR WRITE OF childa OLD BUFFER OLDchilda.
/* some user defined code */
/*include-ref*/
/* some user defined code */


Wizards

Import

The Import-option offers you the possibility to create an ERD from a database. You can also import tables and fields from a df-file.


Wizards

Import

DB

Selecting the „Import/OpenEdge Database (*.db)“-item from the project context menu opens this wizard for importing a PROGRESS database.

Page 1

Wizard for importing a PROGRESS database

Page 1 - Fields

Physical Name: The path to the *.db file to be imported.

Logical Name: The logical name to be used during import. You can also choose the name of a database that is already connected to eclipse to automatically pre-fill the other values.

Parameters: Additional parameters for the database connection. (Note: -1 is automatically added if you don't check "Multiple users")

Multiple Users: Check this if the database is started in multi user mode.

Host: The host of the database service. Disabled if "Multiple Users" is not checked.

Port: The port of the database service. Disabled if "Multiple Users" is not checked.

Test connection: Checks if the database can be connected with the current configuration. You cannot finish the wizard unless this succeeds.

Page 2

Wizard for importing a PCase project as a PROGRESS database

Page 2 - Fields

Trigger Path: The path where the trigger files are stored.

Working-Dir: The path that the relative area path names refer to.

Replace existing structures: All existing project contents will be deleted.

Do not import trigger sourcecode: Forbids the inclusion of trigger objects during import.


Wizards

Import

df-file

Selecting the „Import/OpenEdge DataDefinition (*.df)“-item from the project context menu opens this wizard for importing a PROGRESS data-definition file (df).

Wizard for importing a PROGRESS data-definition file

Fields

Filename: The path to the *.df file to be imported.

Trigger Path: The path where the trigger files are stored.

Do not import trigger sourcecode: Forbids the inclusion of trigger objects during import.

Replace all existing content: All existing project contents will be deleted.


Wizards

Import

Legacy PCase XML file

Selecting the „Import/Legacy PCase Project file (*.pxml)“-item from the project context menu opens this wizard for importing a PCase XML Project file (pxml) from PCase Version 2.

Wizard for importing a PCase XML Project file

Fields

Filename: The path to the *.df file to be imported.

Encoding: The character encoding the file uses.


Wizards

Add tables

Allows you to add tables to a subview. In a business entity, the selected tables will be added as linked tables. Accessed through the context menu of subviews.

The add files dialog

Fields

The two fields Project and Subview allow you to define where you want to import the tables from. This allows you to import tables from other projects, temp-tables from other business entities, or just use it as a filter.

You can show either "Linked", "Missing" or "All" tables. Tables are "Linked", if some table that is already in the subview has a relation to it. Tables are "Missing" if they are not yet in the subview. "All" also shows tables that are already part of the subview.

Mass selection: This is the checkbox above the browse. It is checked if any of the displayed tables is selected. If it is unchecked and gets checked manually, all displayed tables get selected. If it is checked and gets unchecked manually, all displayed tables get deselected.

The input field above the browse allows you to filter by name.


Wizards

Configuration

Allows the configuration of PCase. Accessed through the toolbar of the projects view.

The configuration dialog


Wizards

Users overview

Shows all PCase users and allows to edit them or create new. Accessed through the toolbar of the project view.

The users overview dialog

Pressing "Create" or "Update" will open the User configuration wizard.


Wizards

User configuration

Allows the creation or update of PCase users. Accessed through the Users wizard.

The user configuration dialog

Fields

Abbreviation: An abbreviation of the user name. Must be unique. Cannot be changed after creation.

Name: The user name.

Password: The users password.

Confirm: Repeat the users password.

Admin: Only admins are allowed to change the PCase configuration and manage user accounts.

Update Database: Allows the user to access the Database update dialog.

Update ERDs: Allows the user to edit ERDs.

Execute Makros: Allows the user to execute macros.


Wizards

Login

Allows you to enter your user credentials to log in. This dialog will appear when starting PCase, unless there is no other user besides the system user. It can also be accessed using the toolbar of the project view.

The login dialog


Concepts

Business Entities

Besides database subviews, that contain direct references to the main view, you may define Business Entity views. They introduce an additional logical layer. They are not that strongly connected to the physical database layout. Creating or changing tables in a Business Entity view does not affect the underlying (physical) database structure. Tables (fields) of the underlying (physical) database structure may only be referenced using linked files (fields) to keep the Business Entity structure syncronized with the database structure. Progress tables may only be added by linking to an existing database table (copy/paste). (They must not be unlinked until they have been converted to a Progress Temp-Table). In Business Entities tables may only be created (New) as PROGRESS Temp-Tables.

In Business Entities linked files represent ABL buffer for tables, tables of type Progress Temp-Table represent ABL Temp-Table.


Concepts

Business Entities

Temp-Tables

In Business Entities, newly created tables or linked tables that get unlinked become Temp-Tables.

These tables map to ABL Temp-Tables. PCase displays Temp-Tables with a different icon than regular or linked tables. Temp-Tables feature no area information, but do support for additional datatypes (class, handle).


Concepts

Project and Versions

In PCase, a project is a collection of project versions. Project versions contain tables, subviews, areas, sequences, relations, etc. The versions of a project are largely independent from each other, but only one version of a project may be linked with an eclipse project at a time.

This makes it possible to maintain multiple versions of a PCase project that can be used in different eclipse projects.

There are two possible ways to manage different database versions in PCase. Either you create a new version as a copy of the former, stable, version. Or you maintain a single "Trunk"-version and copy it into stable versions when a milestone has been reached.


Concepts

Relations

A relation is a connection between two table that links multiple entries of one table to one entry of another table, based on a set of conditions.


Concepts

Subview

For each project/version there is defined a data dictionary view, containing all (physical) tables defined in the project/version. In this views all the metaschema data of the database is accessible.

Additionally, you may define database subviews containing any subset of tables of the main view. Creating or changing tables (or other metaschema data) in a subview affects the table (metaschema data) of the main view (and other subviews containing the table) directly. Changing layout data however, like moving/resizing tables and references, has no effect on other subviews.


Concepts

Tables

Tables are objects in PROGRESS database that store data in the form of records.

In PCase, a tables can contain fields, indices, and triggers.

Between tables, relations can exist.


Concepts

Fields

Fields in a PROGRESS database hold data for each record of table.

A field can have Assign-Triggers.


Concepts

Indices

Indices are objects stored in PROGRESS databases, that can be used to improve query and sorting speeds. It can consist of one or more fields that are either sorted ascending or descending. They are part of a table.

The index that defines the default order of records of a table is called the primary index. If only one index is available, that index is the primary index. The primary index cannot be deleted. You first have to make another index primary.

A unique index guaranties that the combination of values for the index fields are unique among all table records. The combination of all index fields are unique among all records of the table. PCase often treats unique indices as primary keys, used to uniquely identify records.


Concepts

Areas

Areas are objects stored in PROGRESS databases, that describe the physical storage location on the hard-drive for various other objects.

Areas can contain tables, indices and BLOB and CLOB fields.


Wizards

Triggers

A trigger is a piece of code that gets executed on certain events. The following events exist:

  • Create: Called when a new record of a table gets created.
  • Write: Called when a new record of a table gets modified.
  • Delete: Called when a record of a table gets deleted.
  • Find: Called when a record of a table is returned as part of a query.
  • Assign: Called when a field gets written to.

For Create, Write and Delete exist also replication variants, that do essentially the same. They are intended for replication purposes.


Concepts

Sequences

Sequences are objects stored in PROGRESS databases, that generate a continuous number sequence. These are often used for ID fields.


ERD-document

Linked Tables

When copying tables, new tables can be created as linked tables. You are not allowed to change fields or indices, and only a few attributes (like name). The other attributes are keep in sync with the original table.

Linked tables show a green arrow in front of the table label. The property sheet shows you which other table a table is currently linked to. There you may unlink the table, you can not undo an unlinking.


ERD-document

Linked Fields

On copying fields from another table (even table from another project/version), the field can be added as a linked field. In linked fields you may only change few attributes. The other attributes are keep in sync with the original field.

Linked fields show a green arrow in front of the field label. The property sheet shows you which other field a field is currently linked to. There you may unlink the field, you can not undo an unlinking.

It similar to ABL like option.


Views

The PCase main interface consists of several eclipse views. They are tabs that can be freely arranged in your workspace. They represent different ways of looking at your project.

Available views

  • Project view: Shows you projects and project versions
  • Schema view: Displays a subview as a tree
  • Diagram view: Displays a subview as an ERD
  • Structure view: Displays a subview as filterable lists of tables, field, indices and references
  • Overview: Displays an entire ERD at once, and lets you quickly jump in large diagrams
  • Creation view: Allows you to create new objects from a selection of object types
  • Property sheet: Allows the modification of properties of the currently selected objects


Views

Context menu

The context menu is available in most views. The contents depend on the objects that is clicked. Generally, the following entries are available:

  • Delete from Schema: Deletes the selected objects
  • Paste linked: Adds the copied objects linked
  • Paste unlinked: Adds the copied objects unlinked
  • Copy: Copies the selected objects to the internal clipboard (not the windows clipboard)

Context menus also show allow you to navigate up the object hierarchy from the current object. So has e.g. the "Index" context menu a menu "File", which in turn contains a "Subview" menu, etc.

The context menu can be opened either by pressing the right mouse key, or the context menu key on the keyboard.


Views

Context menu

Subview

The context menu of subviews has the following additional entries:

  • Open/Diagram: Opens the data dictionary as a diagram
  • Open/Structure: Opens the data dictionary in structure view
  • Open/Report: Opens a report about the project
  • Import/OpenEdge Database (*.db): Opens the PROGRESS Database Import wizard
  • Import/OpenEdge DataDefinition (*.df): Opens the PROGRESS Data-Definition Import wizard
  • Import/PCase Project file (*.pxz): Imports a PCase project archive.
  • Import/PCase Schema file (*.pdb): Imports a PCase schema file.
  • Import/Legacy PCase Project file (*.pxml): Imports a PCase file from Version 2.
  • Export/OpenEdge Database (*.db): Opens the PROGRESS Database Export wizard
  • Export/OpenEdge DataDefinition (*.df): Opens the PROGRESS Data-Definition Export wizard
  • Export/PCase Project file (*.pxz): Exports a PCase project archive.
  • Export/PCase Schema file (*.pdb): Exports a PCase schema file.
  • Export/Update OpenEdge database: Opens the PROGRESS Database update wizard


Views

Context menu

Subview

The context menu of subviews has the following additional entries:

  • Open/Diagram: Opens the subview as a diagram
  • Open/Structure: Opens the subview in structure view
  • Open/Report: Opens a report about the subview
  • Import/PSV: Imports a PCase Subview file (*.psv)
  • Export/PSV: Exports the subview as PCase Subview file (*.psv)
  • Add tables: Opens the "Add tables"-wizard to add additional tables to the subview.


Views

Context menu

Tables

The context menu of tables has the following additional entries:

  • Remove Table(s) from view: Removes the currently selected tables from the subview
  • Generate Relations: Opens the mass relations wizard.


Views

Context menu

Difference view

The difference view has its own context menu. It has the following entries:

  • Macros: The available macros for the difference screen
  • Delta df: Exports the differences as a delta df-file.
  • Rename: Allows to connect "created" and "deleted" changes to "renamed". Opens the rename Wizard.


Views

Diagram view

The diagram view displays a subview as an ERD.

The schema view

The tables are displayed as rectangles, with the fields, indices and

References are displayed as a line connecting the two lines. Cardinality is shown through the "crow's foot notation". The relation fields are shown as text on the relation. If are relation field compares two table fields with the same name using the "=" operator, it is just printed as the field name alone.


Views

Diagram view

Moving objects

Tables can be moved by grabbing the header of the table and drag it.

Relation endpoints can be moved by dragging them. The line in between the endpoints is automatically routed by PCase and cannot be changed manually.

Both can also be moved using the layout section in the property sheet.


Views

Diagram view

Toolbar

The toolbar of the diagram view has five symbols.

The project view toolbar

  • Undo changes Undo last changes. Imports cannot be undone.
  • Redo changes Redo last undone changes.
  • Export image Export ERD as png.
  • Zoom in Zoom in.
  • Zoom out Zoom out.


Views

Diagram view

Navigation

By keeping a middle-mouse-key pressed on an ERD-document/view, you may move the current viewport of the ERD by moving the mouse.

Additionally you may navigate using the overview.


Views

Diagram view

Select objects

An object (table, field, index, trigger or reference) in an ERD-document/view, can be selected by a single left-mouse-click. The color of the selected objects changes to red.

To select additional objects, hold the „SHIFT“-key while clicking.

To select multiple tables at once, hold down the left mouse button to draw a selection rectangle. Once you let go of the mouse button, every table touching the selection rectangle will be selected.


Views

Diagram view

Zoom

Hold the „CTRL“-key while turning the mouse wheel to zoom in or out.

Additionally, you can use the buttons in the toolbar.


Views

Diagram view

Resize tables

To resize tables in the diagram view, move your mouse cursor over its edges, until it turns into a double sided arrow. Then drag the edge to change the position of the edge or corner you are grabbing.


Views

Project view

The project view

The project view displayed the every project version linked to the current eclipse project. It can also show every version of every project, regardless of linking. For each project, it also shows every subview.


Views

Project view

Folder structure

If a character has dots in its name, it will treated as a path, and the project view will display a folder structure. For example: A project with the following subviews:

  • First.Second.A
  • First.Second.B
  • First.Third.C
  • First.D
  • E

Will be displayed like this:

The project view with a folder tree


Views

Project view

Toolbar

The toolbar of the project view has two symbols and a menu.

The project view toolbar

  • All projects icon All projects: Add a node to the tree that shows all projects and versions known to this PCase installation, regardless of linking to the eclipse project.
  • New project New project: Since the creation view won't open until a subview is opened, this allows you to create a new project at any time.
  • Configuration -> Change User: Allows you to login using a different PCase user account
  • Configuration -> Users: Opens an overview of all PCase user accounts
  • Configuration -> Setup: Allows you to change several project specific options.
  • Refresh: Rebuilds the tree.


Views

Difference view

The difference also you see all changes between two versions of a project.

The schema view

The "..." buttons allow you to select a project to compare against, the "DB" button allows you to compare against a PROGRESS database.


Views

Structure view

The structure view

The structure view shows a subview as lists. When a file is selected, the Fields, Indices and Relations lists update. When an index or a relation is chosen, the Index Fields or Relation Fields update respectively.

The input fields above the file and fields lists can be used to filter the lists. When the fields list is filtered, the file list will also be filtered to only show files that contain fields that match the filter.


Views

Structure view

Toolbar

The toolbar of the structure view has two symbols.

The project view toolbar

  • Undo changes Undo last changes. Imports cannot be undone.
  • Redo changes Redo last undone changes.


DB Report Viewer

Selecting the „Open/Report“-item from the project context menu or the the subview context menu open a report document in you browser. In it, you can view structure information about the project.

The layouts can be changed by editing tools/xslt/english/pcase.xsl file.


Views

Property sheet

The property sheet shows you data about the current selection. It also shows the values of user defined attributes. You can change the values to modify the object. Multiple objects can be edited at once. When multiple objects are selected, the values that differ between the objects are highlighted in blue.

The property sheet


Views

Creation view

The creation view displays a list of objects types. A double click on one of these types opens a wizard that allows you to configure the new object. The list is context sensitive. Object types will only be displayed if they can actually be created in the current context. For example, the type "field" will only be shown when a table is selected, or if something inside a table is selected.

The creation view


Views

Overview

The overview is a view that shows an entire, zoomed out, ERD. It is linked with the currently active diagram view, shows it current viewport and allows to move it around.

The creation view


Views

Schema view

The schema view displays a subview as tree. It is also currently the only view where projects, subviews, sequences, areas, area-extends and UDAs can be selected.

The schema view

The hierarchy of objects in the schema view is the following:

  • Project version
    • Subview
      • File
        • Field
        • Index
          • Index-Fields
        • References
          • References-Fields
        • Tiggers
    • "Sequences"
      • Sequences
    • "Areas"
      • Areas
    • "Custom"
      • User defined attributes


Views

General controls

Most controls are kept consistent between different views. The following actions work the same in every view that allows selecting objects:

  • Copy&Paste
  • Deleting
  • Context menu


Views

General controls

Deleting objects

Objects can be deleted by either choosing the "Delete" entry from their context menu, or by selecting them and pressing the „DEL“-key.


Views

General controls

Copy&Paste

Choosing "Copy" from the objects context menu or pressing ctrl-c copies the selected objects to an internal clipboard. (not the Windows-Clipboard).

Choosing "Paste unlinked" or hitting key ctrl-v copies objects stored in the internal clipboard to the current ERD. Tables and Fields will be unlinked copies.

Choosing "Paste linked" or hitting key ctrl-shift-v copies objects stored in the internal clipboard to the current ERD. Tables and Fields will be inserted as linked tables and linked fields respectively.


Customization

You can add functionality to PCase using Macros written as PROGRESS ABL classes.

Some functionality of PCase can be modified using a Hookclass

You can define you own User Defined Attributes (UDA).


Customization

Macros Details

Basics

PCase allows you to generate user defined macros using information stored in the PCase database on database metaschema and reference information and to manipulate this information using the PCase Macro Interface. Macros are classes that implement from t4p.pcase.macro.<type> interface, depending on the type of objects they should apply to. Each of these interfaces provide a getLabel and a getDescription method hat should return the label and a description of the macro.

On selecting the macro from Action/Macro wizard the constructor with a t4p.util.tmap parmeters object gets executed.

The default macro location is the "macros" subdirectory of your PCase installation. A custom path might be added in the startup.p file.

Metaschema details

Metaschema information of PCase projects is stored in PCase database in following tables (Its structure is similar to the one of the metaschema of PROGRESS databases).

Business Entities and SubViews are stored in table X_SubView. For business entities its temp-tables and linked tables (X_File) are parented by its X_SubView record (X_SubView.X_SubViewId = X_File.X_DBId). For SubViews its (unique) tables are parented by the project/version (X_DB.X_DBId = X_File.X_DBId). Layout information is stored in table X_File-View.

Project Level

Project level macros implement the t4p.pcase.macro.project interface and are typically stored in the "macros\project" directory . The projects it should apply to are given as a list of ids in the "Projects" parameter.

CLASS macros.project.syncareas IMPLEMENTS t4p.pcase.macro.project:

  /* interface */
  METHOD PUBLIC CHARACTER getLabel():
    RETURN "Sync areas".
  END METHOD.

  METHOD PUBLIC CHARACTER getDescription():
    RETURN  "Sync areas with physical database".
  END METHOD.

  CONSTRUCTOR PUBLIC syncareas():
  END CONSTRUCTOR.

  /* implementation */
  DEFINE VARIABLE cProjects AS CHARACTER NO-UNDO.

  CONSTRUCTOR PUBLIC syncareas(oParam AS t4p.util.tmap):
    cProjects = oParam:cVal("Projects").
    NEW t4p.pcase.ui.wizard.connectdb():eFinish:Subscribe(onFinish).
  END METHOD.

  METHOD PROTECTED VOID onFinish (oParameters AS t4p.util.tmap):
    RUN macros/project/xsyncareas.p (cProjects).
    FINALLY:
      DISCONNECT VALUE(LDBNAME(t4p.pcase.ui.wizard.connectdb:OEDB)).
      DELETE ALIAS VALUE(t4p.pcase.ui.wizard.connectdb:OEDB).
    END.
  END METHOD.
END CLASS.

SubView/Busines Entity Level

SubView/Business level macros implement the t4p.pcase.macro.subview interface and are typically stored in the "macros\subview" directory. The subviews it should apply to are given as a list of ids in the "Subviews" parameter.

CLASS macros.subview.createoeradataset INHERITS macros.table.codegeneration IMPLEMENTS t4p.pcase.macro.subview:

  /* interface */
  METHOD PUBLIC CHARACTER getLabel():
    RETURN "Create OERA Data-Set".
  END METHOD.

  METHOD PUBLIC CHARACTER getDescription():
    RETURN  "Create dataset definitions for the OE reference architecture.".
  END METHOD.

  CONSTRUCTOR PUBLIC createoeradataset():
  END CONSTRUCTOR.

  /* implementation */
  DEFINE STREAM sin.
  DEFINE STREAM sout.
  DEFINE TEMP-TABLE ttfiles FIELD cname AS CHARACTER FIELD ctitle AS CHARACTER.

  CONSTRUCTOR PUBLIC createoeradataset(oParam AS t4p.util.tmap):
    runSubviewsMacro(oParam:cVal("Subviews")).
  END CONSTRUCTOR.

Table Level

Table level macros implement the t4p.pcase.macro.table interface and are typically stored in the "macros\table" directory. The tables it should apply to are given as a list of ids in the "Tables" parameter.

CLASS macros.table.creatett INHERITS macros.table.codegeneration IMPLEMENTS t4p.pcase.macro.table:

  /* interface */
  METHOD PUBLIC CHARACTER getLabel():
    RETURN "Copy Temp-Tables".
  END METHOD.

  METHOD PUBLIC CHARACTER getDescription():
    RETURN  "Insert Temp-Table definition  at cursor position in current editor.".
  END METHOD.

  CONSTRUCTOR PUBLIC creatett():
  END CONSTRUCTOR.

  /* implementation */
  CONSTRUCTOR PUBLIC creatett(oParam AS t4p.util.tmap):
    DEFINE VARIABLE cFiles AS CHARACTER NO-UNDO.
    DEFINE VARIABLE cLines AS CHARACTER NO-UNDO.
    DEFINE VARIABLE ii   AS INTEGER NO-UNDO.
    DEFINE BUFFER bFile FOR X_File.
    cFiles = oParam:cVal("Tables").
    DO ii = 1 TO NUM-ENTRIES(cFiles):
      FIND FIRST bFile NO-LOCK WHERE bFile.X_FileID = INT(ENTRY(ii, cFiles)) NO-ERROR.
      IF NOT AVAIL bFile THEN NEXT.
      cLines = cLines + tableToString(BUFFER bFile).
    END.
    insertAtCursor(cLines).
  END METHOD.

END CLASS.

Field Level

Field level macros implement the t4p.pcase.macro.field interface and are typically stored in the "macros\field" directory. The fields it should apply to are given as a list of id in the "Fields" parameter.

CLASS macros.field.creatett INHERITS macros.table.codegeneration IMPLEMENTS t4p.pcase.macro.field :

  /* interface */
  METHOD PUBLIC CHARACTER getLabel():
    RETURN "Copy fields".
  END METHOD.

  METHOD PUBLIC CHARACTER getDescription():
    RETURN  "Insert Temp-Table field definition at cursor position in current editor.".
  END METHOD.

  CONSTRUCTOR PUBLIC creatett():
  END CONSTRUCTOR.

  /* implementation */
  CONSTRUCTOR PUBLIC creatett(oParam AS t4p.util.tmap):
    DEFINE VARIABLE cFields AS CHARACTER NO-UNDO.
    DEFINE VARIABLE cLines AS CHARACTER NO-UNDO.
    DEFINE VARIABLE ii AS INTEGER NO-UNDO.
    DEFINE BUFFER bField FOR X_Field.
    cFields = oParam:cVal("Fields").
    DO ii = 1 TO NUM-ENTRIES(cFields):
      FIND FIRST bField  WHERE bField.X_FieldID  = INT(ENTRY(ii, cFields)) NO-LOCK NO-ERROR.
      IF NOT AVAIL bField THEN NEXT.
      cLines = cLines + fieldToString(BUFFER bField).
    END.
    insertAtCursor(cLines).
  END METHOD.

END CLASS.

Reference Level

Relation level macros implement the t4p.pcase.macro.relation interface and are typically stored in the "macros\relation" directory. The relations it should apply to are given as a list of ids in the "relations" parameter (containg parent child X_referencids separated by a dash).

CLASS macros.relation.copymapping IMPLEMENTS t4p.pcase.macro.relation:

  /* interface */
  METHOD PUBLIC CHARACTER getLabel():
    RETURN "Copy mapping".
  END METHOD.

  METHOD PUBLIC CHARACTER getDescription():
    RETURN  "Copy mapping to windows clipboard.".
  END METHOD.

  CONSTRUCTOR PUBLIC copymapping():
  END CONSTRUCTOR.

  /* implementation */
  CONSTRUCTOR PUBLIC copymapping(oParam AS t4p.util.tmap):
    DEFINE VARIABLE cIds AS CHARACTER NO-UNDO.
    cIds = oParam:cVal("Relations").

Project Difference Level

Project difference level macros implement the t4p.pcase.macro.difference interface and are typically stored in the "macros\differenc" directory. They can be executed through the action/macro wizard of the difference view. They get access to the temp-table used by the difference screen (tCompare).

CLASS macros.difference.areaupdatescripts IMPLEMENTS t4p.pcase.macro.difference INHERITS t4p.pcase.ui.wizard:

  {t4p\pcase\model\tcompare.i REFERENCE-ONLY}

  /* interface */
  METHOD PUBLIC CHARACTER getLabel():
    RETURN "area script".
  END METHOD.

  METHOD PUBLIC CHARACTER getDescription():
    RETURN "Create scripts for adding area extents and moving tables and indexes to different areas.".
  END METHOD.

  CONSTRUCTOR areaupdatescripts():
  END CONSTRUCTOR.

  /* wizard */
  DEFINE PROTECTED VARIABLE oDBFile AS t4p.skin-client.P-FILL-IN NO-UNDO.
  DEFINE PROTECTED VARIABLE oBatFile AS t4p.skin-client.P-FILL-IN NO-UNDO.
  DEFINE PROTECTED VARIABLE oWorkingDirectory  AS t4p.skin-client.P-FILL-IN NO-UNDO.

  DEFINE PROTECTED VARIABLE cPageTitle AS CHARACTER NO-UNDO.
  DEFINE PROTECTED VARIABLE cDBFile AS CHARACTER NO-UNDO.
  DEFINE PROTECTED VARIABLE cBatFile AS CHARACTER NO-UNDO.
  DEFINE PROTECTED VARIABLE cWorkingDirectory AS CHARACTER NO-UNDO.

  DEFINE PRIVATE BUFFER bFrom FOR X_DB.
  DEFINE PRIVATE BUFFER bTo FOR X_DB.

  CONSTRUCTOR PUBLIC areaupdatescripts(oParam AS t4p.util.tmap):
    DEFINE VARIABLE iDBid AS INTEGER NO-UNDO.
    SUPER(oParam, "project", "Export Area scripts").
    iDBid = oParameter:iVal("FromDBId").
    FIND bFrom NO-LOCK WHERE bFrom.X_DBid = iDBid.
    iDBid = oParameter:iVal("ToDBId").
    FIND bTo NO-LOCK WHERE bTo.X_DBid = iDBId.
    cPageTitle = SUBSTITUTE("Delta area script from ~"&1~" (&2) to ~"&3~" (&4)", bFrom.X_PROJECT-NAME, bFrom.X_VERSION, bTo.X_PROJECT-NAME, bTo.X_VERSION).
    oDBFile:INPUT-VALUE = bTo.X_PROJECT-NAME.
    oBatFile:INPUT-VALUE = SUBSTITUTE("area_&1_&2_to_&3&4.bat", bFrom.X_PROJECT-NAME, bFrom.X_VERSION, IF bFrom.X_PROJECT-NAME = bTo.X_PROJECT-NAME THEN "" ELSE bTo.X_PROJECT-NAME + "_", bTo.X_VERSION).
    IF bTo.X_wdir > "" THEN oWorkingDirectory:INPUT-VALUE = bTo.X_wdir.
    setPageTitle(1, cPageTitle).
    setPageDescription(1, "Provide file names for scripts (.bat) to be used ~012for updating area information (adding extents and moving tables/indexes)." ).
    CAST(oParam:oVal("DifferenceModel"),t4p.pcase.model.difference):getCompare(OUTPUT TABLE tCompare BIND).
  END CONSTRUCTOR.


Customization

Macros Samples

There are provided macros available in source code:

Project Level

  • Import sql92 file (macros.projects.importsql92)
    Import SQL92 into PCase project (written by Bogdan Brzozowski)
  • Sync RPos with physical database (macros.projects.syncrpos)
    Sychronizes physical position (rpos) defined in current PCase with physical position defined in existing database. (PCase project is being updated!)
  • Generate Dynamics relationship XML (macros.projects.dynamicsrelationship)
    generates on project level xml file containing reference information (EXPERIMENTAL)
  • Generate Dynamics Label & Help (macros.multi.dynamicslabel)
    Replaces on table level Label, ColLabel and Help like in Dynamics ErWin Macrocode.

SubView/Busines Entity Level

  • Create OREA Data-Set (macros.subviews.createoreadataset)
    Creates ABL souce code from Business Entity views using rules defined in the "OpenEdge Reference Architecture".
  • Import Temp-Table from file (macros.subviews.ttfileimport)
    Imports Temp-Table definitions into Business Entity views from Progress (include) source code.
  • Import Temp-Table from file (macros.subviews.ttfileimport)
    Imports Temp-Table definitions into Business Entity views from Progress (include) source code.

Table Level

  • Insert ProDataSet (macros.tables.createprodataset)
    Creates static ProDataSet definitions from selected table information.
  • Create Temp-Tables (macros.multi.creatett)
    Creates static Temp-Table definitions from selected table information.
  • Create Unique ID (macros.tables.createuniqueid)
    Adds create trigger code to fill an id field initially from a sequence.
  • Create Webspeed page (macros.tables.createwebspeedpage)
    Creates source code for displaying table contents in a webspeed environment.
  • Renumber Fields (macros.tables.renumberfields)
    Renumbers order number of fields of selected table(s).
  • Renumber fields alphabetically (macros.tables.sortalphabetically)
    Renumbers order number of fields of selected table(s) by their name.
  • Generate SQL92 DDL File (macros.tables.generatesql92)
    Creates an SQL file containing all selected tables.

Field Level

  • Create Temp-Table Fields (macros.multi.creatett)
    Creates static field definitions from selected field information (for define temp-table statements).
  • Add Prefix (macros.fields.addprefix)
    Adds a prefix to the names of the selected fields.

Reference Level

  • Copy Mapping (macros.references.copymapping)
    copies mapping information of selected reference to windows clipboard.
  • Copy join clause (macros.references.copyjoinclause)
    copies join information of selected reference to windows clipboard.

Area Level

  • Create subview from area (macros.areas.createsubview)
    Creates PCase Subviews from areas defined in project and adds files into "their" subview.

Project Difference Level

  • n/a


Customization

Hookclass

The hook class is a user created can be defined for each project. It can be used to override some default behavior of PCase. Currently, the following methods are supported:

  • getRelations: Defines how to look for new relations between tables.
  • generateTriggerCode: Generate trigger code for the given tables.

A hook class can be defined anywhere in your project, but it has to inherit t4p.pcase.model.hookclass. The temp-tables you need are already defined there. t4p.pcase.model.hookclass also defines the default behavior, so you can just leave the functionality you don't want to change.

In order to make PCase use the class, go to the property sheet of your project and change the "Hookclass"-property to the classpath of your hook class.


Customization

Hookclass

generateTriggerCode

METHOD PUBLIC OVERRIDE VOID generateTriggerCode(cFileNames AS CHARACTER, oTrigger AS t4p.pcase.model.trigger, INPUT-OUTPUT TABLE FOR ttTrigger):

The method generateTriggerCode should fill the table ttTrigger with trigger code for the tables in the list cFileNames. The default code uses this to ensure referential integrity across the relations. ttTrigger has the following fields:

Field | Data type | Description
X_FileID | INTEGER | The ID of the table the trigger applies to
X_FieldID | INTEGER | The ID of the field the trigger applies to (In case of assign triggers)
X_Event | CHARACTER | The event that starts the trigger (WRITE, DELETE, ASSIGN, etc.)
X_Rsrc | CHARACTER | The generated trigger code. Will be included into X_Src
X_Src | CHARACTER | Do not set - The user defined trigger code.
X_Proc-Name | CHARACTER | Do not set - The file name of the trigger procedure.
X_Trig-CRC | INTEGER | Do not set - Stores the CRC value. Gets filled later.
X_Override | LOGICAL | Do not set - Sets the trigger as overrideable
X_Class | CHARACTER | Do not set - Not used yet
X_Custom-Src | LOGICAL | Do not set - used by t4p.pcase.model.trigger

The parameter oTrigger provides the helper method getTTrigger, that finds or creates a ttTrigger record. If it is created, getTTrigger fills it with the appropriate defaults.

DEFINE BUFFER bTrigger FOR ttTrigger.

oTrigger:getTTrigger(X_File.X_FileID, "DELETE", X_File.X_File-Name, BUFFER bTrigger:HANDLE).
oTrigger:getTTrigger(X_Field.X_FieldID, "ASSIGN", X_File.X_File-Name, BUFFER bTrigger:HANDLE).


Customization

Hookclass

getRelations

METHOD PUBLIC OVERRIDE VOID getRelations(cFileNames AS CHARACTER, INPUT-OUTPUT TABLE FOR ttReference):

The method getRelations should fill the table ttReference with possible relations between the tables in the list cFileNames. ttReference has the following fields:

Field | Data type | Description
cParentName | CHARACTER | The name of the parent table
cChildName | CHARACTER | The name of the child table
cParentFields | CHARACTER | List of the field names of the parent table
cChildFields | CHARACTER | List of the field names of the child table
cIndexName | CHARACTER | Not necessary - used by the default implementation
iReferenceId | INTEGER | Not necessary - used by the default implementation
isSelected | LOGICAL | Do not set - used by the UI
cSourceIcon | CHARACTER | Do not set - used by the UI
cRelation | CHARACTER | Do not set - used by the UI
cSearch | CHARACTER | Do not set - used by the UI


Customization

User Defined Attributes

You may define and update additional attributes on table, field, reference, subview or project level. The scoping of this attribute additionally might be limited to (sub)views and business entities.

New User Defined Attributes my be created using the custom property item in the "new"-view.

UDA creation using the new-view

Existing User Defined Attributes will be shown in the "Schema"-View, when the "Data Dictionary" subview is open.

UDAs in the schema-view

When a selected object has available User Defined Attributes, they are shown in the custom section in the "Property"-view.

UDAs in the property-view

These values might be used in the macros or hook classes by using the class t4p.pcase.model.uda:

    <value> = t4p.pcase.model.uda:getUDAValue("<UDAName>",
    [<(sub)view id>,] <Type (e.g. X_File)>, <file-/field-/reference-id>).

e.g.

    lChar = t4p.pcase.model.uda:getUDAValue("Read-Only", X_SubView.X_SubViewId, "X_File", X_File.X_FileId).


Key-Reference

  • DEL delete selected objects
  • CTRL-F opens ERD search dialog
  • CTRL-C copies selected objects to Clipboard
  • CTRL-V pastes objects from Clipboard to ERD
  • CTRL-SHIFT-V pastes and links objects from Clipboard to ERD


Examples

Initially in PCase there are defined two projects (sports 2000 and PCase 3.3). The PCase project uses subviews. You can use it to test export functionality. The Structure View can be used to get an overview and to navigate in the ERD document.


Changes (history of versions)

4.0

  • new ooabl macro interface, action macros wizard
  • standalone package (w/o OF-1) publicly available
  • import/export procedures "modernized" using ooabl classes
  • main views customizable, wizards in macros
  • migrate wizard from PCase2.x
  • merge PCase project with structure of physical DB
  • support 32/64bit OpenEdge

3.4 (for OF- 1 3.4)

  • Performance improvements
  • Standalone Mode (Without OF1-Designer)
  • Skin-Client based XSLT-Processing
  • Relations can now be fliped
  • Bugfix: Subview macros work in the project view
  • 11.6 Support
  • New help file

3.3 (for OF- 1 3.3)

  • 11.5 Support
  • ...

3.2 (for OF-1 3.2)

  • 11.3/4 Support
  • ...

3.1 (for OF-1 3.1)

  • Mostly reimplemented
  • Skin-Client based UI
  • Workflow resembling the OF1-Designer
  • 11.2 Support
  • Bound to the OF1-Designer

2.2

  • support for Progress Developer Studio 3.6 for OpenEdge
  • 11.0A support (no support for Multitenancy)
  • allow area and trigger source in delta df ignore list
  • Bugfix: copy/paste fields from/to pasted tables
  • Bugfix: initial version of df export
  • ...

2.1

  • revised OpenEdge Architect support
    • using new t4p plugin package
    • based on Skin-Client 2.0
  • optionally display table labels
  • 10.2A/B support
  • 10.1C support
  • macro for visualizing OOABL classes
  • OF-1 support
  • macro directory configurable on project level
  • oera macro samples
  • code clean up
  • Bugfix: UDA Import/Copy
  • Bugfix: BLOB update
  • Bugfix: Reference update
  • Bugfix: ....

2.0

  • optional OpenEdge Architect support
  • 10.1B support (int64)
  • BusinessEntity support (TempTables)
  • Linked Fields (Domains)
  • Linked Files
  • References with constants
  • UDAs for References, Views
  • ContentViewer connections
  • GUI enhancements
  • Navigation enhancements
  • Macro editor, API enhancements
  • new Macros
    • OERA Dataset
    • Import Temp-Table from file
    • Show Content of File/Fields
  • redesigned helpfile
  • Bugfixes: ....

1.61

  • create develop (relative path) DBs
  • RefViewer new columns ondel/write
  • DBDiff xml and html (report) export
  • 'PC_openReport' helper procedure for ORI
    • Reports adjusted (rCreateProDataSet.p)
  • SaveAs version/-info with initial values
  • expiring demo licence (30days)
  • helpfile adjusted
  • Bugfix : MultiUser Login
  • Bugfix : save with UTF-8 clients
  • Bugfix : Generating triggers with huge DBs
  • Bugfix : Locking in DB Import
  • Bugfix : V9 import for _Fld-STDLEN (DB Diff)
  • Bugfix : default Value _FLD-STDTYPE set to ?
  • Bugfix : SaveAs does not save version info
  • Bugfix : save renamed (swapped) Files/Flds/Idxs
  • Bugfix : DB Diff between same project/version
  • Bugfix : ContentViewer XLS export

1.6

  • OpenEdge V10 support
    • PCaseV10 package
    • V10 df file export
    • Area Clustersize
    • DateTime, DateTime-tz
    • BLOB,CLOB
  • ERD as BMP export
  • enhanced DBDiff tool
    • physical DBs
    • structure view connection
    • drill down to field values
  • quick links in Window menu
  • index colored view table mode
  • decription on project (and reference)
  • new ORI reports
    • SyncRPosWithPhysDB,
    • GloballyRenameFields,
    • RenumberFields
    • CreateDataset
  • helpfile adjusted
  • Bugfix : maintaining field rpos
  • Bugfix : ERD refreshing
  • Bugfix : file/field initial values
  • Bugfix : cursor change area

1.52

  • optional user access rights (Password)
  • 4GL interface for automatic trigger generation
    • Default and Dynamics trigger sample
  • UserDefinedAttributes (UDA) on file and field level
  • OpenReportInterface added for reference level
  • compact reference viewer added (DB Ref.)
  • T4P Desktop2 (tools menu integration, autocomplete)
  • Dynamic WebClient Platform (DWP) integration (3.4)
  • report save as html, print preview
  • new ORI reports ddl, temptable
  • helpfile adjusted
  • Bugfix view-as samples in field attributes added
  • Bugfix import trigger (eventname)
  • Bugfix comctl32 included
  • Bugfix ContentViewer memory leak

1.51

  • new standalone/integrated content viewer
  • standalone structure viewer included
  • open report interface (sample report files)
    • rGenerate Dynamics Trigger.p
    • rDynamics Relationship XML -EXPERIMENTAL.p
    • rED4Win Ref ShortCut File.p
    • rGenerate Dynamics Label & Help.p
    • rSingle Reference Include File.p
    • rArea Move.p
    • rMultiple Reference Include Files.p
    • rContent Viewer Reference File.p
    • rImport ErWin XML -EXPERIMENTAL.p
  • auto ref search only on selected tables
  • shortcuts ctrl-o/s/n/p
  • select project/version dialog repositioning
  • T4P Desktop
  • helpfile adjusted
  • Bugfix df-file import (uField Error)
  • Bugfix locking error in save ERD
  • Bugfix save subview pos
  • Bugfix endlessloop on create dir
  • Bugfix missing linefeed on drag n'drop
  • Bugfix size limitation on fix area extents
  • Bugfix CR/LF handling on save (df, xml)
  • Bugfix xml import layout only option
  • Bugfix save subview references

1.50

  • Copy and Paste between ERD, Structure-View and Report
  • copy fields (from templates)
  • auto generate (selected) references on selected tables
  • add selected tables to subviews
  • print single pages
  • fields in ERD shown as label or name
  • fields in ERD sorted by order or lable/name
  • description fields enlarged
  • navigation lists in field and index dialogs
  • added SQL-width in field dialog
  • aditional stubs removed in subviews
  • new more elaborated report stylesheet
  • new report conversion using MSWord
  • removed erd import/export (use xml)
  • df-import with error log, unknown tags are ignored
  • changes in dir access in import and export dialogs
  • Bugfix: several minor bugs erased
  • Bugfix: positioning of tables after import
  • Bugfix: create v9 db batch job
  • major release: key changed

1.42

  • new more elaborated report stylesheet
  • dtd for the xml export file included
  • Bugfix: df file import of Sequences (Seq-Num)
  • Bugfix: copying Project missing ref data, no-lock error
  • Bugfix: xml-export/import missing ref data
  • Bugfix: save child/parent
  • Bugfix: printing resized ERDs
  • Bugfix: enabling of Index dialog

1.41

  • basic Report functionality
  • additional examples (ICF/Dynamics)
  • new XML-importoption "Add/Replace References and SubViews"
  • Save as... without initial save
  • Help adjusted (generating Triggers automatically, Howto)
  • Switch off generating Triggers automatically for each table
  • erased messages in automatic trigger generation
  • Bugfix: association dialog (on delete..., on write...)
  • Bugfix: structure browser sorting of idxflds

1.4

  • Export/Import of 'whole' project information using XML
  • Export of Subview information into XML
  • Adding/(Updating) of Subviews and Files using XML files
  • Stylesheet for viewing exported XML files in IE5.x well formatted
  • View/report difference of DB structures
  • Export incremental df-files between db-structures
  • View structures in a compact form (like in QComp)
  • Search for File- and/or Fieldnames
  • Smoother positioning of asso labels
  • New resizing of papersize
  • New drawing routine (less flickering)
  • Trigger info in association dialog
  • Usage of Windows HtmlHelp-System
  • Help adjusted
  • Bugfix: moving/saving associations (xref not found)
  • Bugfix: no DrWatson while loading corrupt data
  • Bugfix: db default values adjusted
  • Bugfix: getting pagesize from printer driver correctly
  • Bugfix: working without installed printer possible
  • Bugfix: dffile export using rpos
  • Bugfix: only added files used for generating refs
  • Bugfix: move index in Area batch export
  • Bugfix: ConfigAttrib preref used correctly
  • Bugfix: layout landscape/portrait saved
  • Bugfix: several minor bugs erased

1.3

  • using a fixed grid possible (turn on/off)
  • view of relations after initial open of an ERD corrected
  • problem bringing the main window on top solved
  • errors of db-update erased (renaming of tables, fields or indices, locking problem of areas)
  • creating a new db and choosing a path with blanks is possible
  • problem with regocx.bat (WIn95/98) solved
  • help adjusted

1.21

  • bug in saving ERD's erased
  • Area-bug importing df-files erased
  • problems with placing associations erased
  • some cosmetic corrections
  • using single index-dialog
  • help using dialog-context
  • help adjusted

1.2

  • introducing subviews (viewing and updating parts of an ERD)
  • faster saving of an ERD, deleting of an project, importing
  • allowing copying of projects
  • faster drawing of ERDs
  • resizing single table(s) (using mouse or keyboard)
  • more flexible positioning of associations
  • help adjusted
  • converting db-contents of older versions
  • bug fixes (ERD-import, changing datatype of a field)

1.11

  • bug in V9 db-update erased (index)
  • reusage of db- and trig-paths, (connect)-parameters
  • V9 output of proutils visible (DOS-boxes)
  • V9 truncate bi uses -G 0 option
  • create db-dialog default-filename

1.1

  • executable under progress V9
  • support of areas (creation, change and deletion; assignment to tables and indices (as well after creation); creation, change and deletion of Area-Extents)
  • initialization during first opening of an ERD is faster than before
  • minor bugfixes
  • help adjusted

1.01

  • bug in user-creation erased
  • bug in DB-update erased (change of an index)
  • DB-update without deletion of files possible
  • bug in association (trigger) properties erased (change of direction of dependence between 1:N relations)
  • changes in UI of the main-window (deactivation of menu-entries, min/max-behaviour, 'alt'-behaviour)
  • bug in saving of ERD-sizes erased
  • table-size in ERD changeable (ctrl-+/--key)
  • trigger-importing less restrictive
  • help adjusted


Installation/Update

Minimum system requirements are - Windows Vista - Progress 11.x

The PCase installer is provided at www.tools4progress.com .


OpenEdge Architect Plugin

OpenEdge Architect (Progress Developer Studio for OpenEdge) Plugin

(After installing and configuring PCase OpenEdge Architect support) you may start PCase from within OpenEdge Architect using the PCase button in the Tools4Progress-Perspective. The main view is the PCase project view.

Executed from within OpenEdge Architect PCase macros may use additional OpenEdge project information.

PCase views that could be opened inside OpenEdgeArchitect are :

  • PCase Projects
  • Entity Relationship Diagram (ERD)
    • Databases
    • Database SubViews
    • Business Entities
  • Structure overview
    • Databases
    • Database SubViews
    • Business Entities
  • Schema tree
  • Database differences
  • Report
    • Databases
    • Database SubViews
    • Business Entities


OEIDE Installation

OpenEdge Architect Plugin

Installation & Configuration

PCase uses the Tools4Progress plugin for Eclipse (T4Plugin). The PCase installation package contains the T4Plugin installation package and installs it automatically. Opening PCase without having an open Project can lead to issues.

To open the Tools4Progress Perspective, click the Open Perspective button ( Open Perspective button) and select "Other...".

The Dialog that now opens allows you to open the Tools4Progress perspective.

The Tools4Progress perspective adds two icons to the toolbar of eclipse. The "Running Programs" button ( [image]) allows you to stop a running PCase instance. The "PCase" button ( PCase) opens the PCase projects view.

Using menu item "Window" -> "Preferences" you can access the Tools4Progress plugin properties. There you may adjust the logfile location and the loglevel. You may also the buttons to inactive.

The Tools4Progress plugin starts a separate Progress session that PCase is executed in. In the preferences you may provide additional parameters for this session.

(The Tools4Progress plugin uses Skin-Client technology to tie the PCase OpenEdge session to the architects java session).

The plugin uses a socket connection for communication, it uses ports from the range provided with the OpenEdge preferences.


OpenEdge Architect Plugin

Installation

Installer

The Installer is a simple and quick way to integrate PCase into your eclipse installation.

Installer page 1

Follow the instructions and click next.

Installer page 2

This page shows the readme of PCase. When you read it, click next.

Installer page 3

On this page, select the DLC path of the OpenEdge version you want to use. The setup will automatically suggest the latest version of OpenEdge it can find. You need at least version 10.2B to run PCase without issues.

Installer page 4

On this page, select the path to the plugin folder of the eclipse installation you want to use. This folder is usually simply called "plugins" and located in the root folder of the eclipse installation. The setup will automatically suggest the plugin folder of the eclipse installation that came with the selected OpenEdge version.

Installer page 5

Here you can generate a start menu entry for PCase. It will contain a link the start the selected eclipse version in the PCase perspective, and a link to this help file.

Installer page 6

This is a summary of the choices you made for the installation. When everything is correct, press "Install"

Installer page 7

After the setup is done, you can select to view the readme again, or to launch eclipse in the PCase perspective. To do this, the eclipse installation should already be have the OpenEdge integration. If it hasn't, go to the PCase installation folder and run "getOEPlugins.bat" before executing PCase.


FAQ & Howto

Q: How to change the storage area for a bunch of tables?
A:If you need to move a lot of tables/indizes to another storage area,

  • create the new Storage Area
  • dump the complete ERD with the XML export to disk
  • edit this file with a texteditor and change the areas of the desired tables/indizes by hand (editor replace).
  • create a new project and load the changed XML-File
  • rename the new ERD to the project name and version number you want to have. This could be done in Master/Projects.
  • Open this project in your project history as actual ERD.

Q: How to generate ERD as PDF ?
A: Perform the following steps to generate pdf output from any application that uses Windows printing (like PCase)

  • install Viper ( www.tools4progress.com ) including installation of PS-Printer
  • in PCase choose print and select PS-Printer
  • rename generated ps-file to psfile.ps
  • execute Viperdemo ps2pdf and select psfile.ps
  • OR rightmouse click on psfile.ps and choose ps2pdf
  • rename, view, mail or what else you like to do with generated pdf file

Q: How to generate ERD as JPG?
A: Perform the following steps to generate jpg output from any application that uses Windows printing (like PCase)

  • install Viper ( www.tools4progress.com ) including installation of PS-Printer
  • print any page in a single ps-file
  • rename generated ps-file to psfile1toX.ps
  • rightmouse click on psfile.ps and choose ps2jpg
  • rename, edit, embed in your Word document or what else you like to do with generated jpg file

Q: Howto generate DB Report I?
A:

  • export erd into xml file
  • copy provided pcase.xsl into same dir
  • start xml file with IE5x (Mozilla 0.95) or newer
  • OR open erd using Report menu item
  • use IE for printing (right mouse click) (orientation landscape) (Columns of File and Field tables can be adjusted by editing pcase.xsl. Just search for the collabel.)

Q: Howto generate DB Report II ?
A:

  • export erd into xml file
  • copy provided pcase.xsl into same dir
  • start xml file with IE5x or higher
  • OR open erd using Report menu item
  • mark tables (not all)
  • copy tables to clipboard
  • insert into Word (...)
  • reformat generated tables to your needs

Q: Howto generate DB Report III?
A:

  • open Project using Report menu item
  • save as html file
  • f.e. use html report in intranet
  • f.e. open file with MSWord, StarOffice and save as doc sdw

Q: Howto update PCase project from Progress DB?
A: If a database generated by PCase has been changed using data-dict or admin-tool and a PCase project/version should be updated to this database version (without loosing layout information), you may

  • add SubView "Main" to current project/version
  • add all tables to this subview
  • save project/version to xml file
  • generate a new project/version
  • import (reengineer) the new database by connecting directly to it
  • import the xml-file into this projext with option "Add / Replace References and SubViews"

Q: Howto Navigate/Search table(s)
A:If you mouse doubleclick on a filename in the dbstructure browser the table is marked and focus is moved to this table in any opened ERD (or Report) of the same project/version. Doubleclicking of a fieldname marks all tables that contain a field of that name.

Q: Howto use CVS with PCase?
A: After doing project/version changes (schema or layout) export it into xml-file. Move this file into the cvs project tree. (Thus the xml file is a text file changes will be written into the cvs-repository.)

Q: What is the difference between PCase for V8 and PCase for V9?
A: The functionality of PCase for Progress V8 and V9 is the same, except of generating V8 respectively V9 databases and of course using V8 respectively V9 Progress.

Q: After installation PCase for Progress V9 it complains about the database being a copy of N:\... some dir ... and cannot open it. How can I fix this?
A: Execute the t4p-mv.bat in the database subdirectory.

Q: I bought PCase and got the license file pcase.lic. In which directory does it has to be put?
A: The license file has to be put into the directory where the file pcase.ocx resides (normally ./ocx/ocase/)

Q: Opening an ERD causes PCase to crash while drawing strange things.
A: Try to change some OLE dlls. (Fixpack MSVC++)

Q: When I use the mouse to MOVE an ERD-document it 'jumps' away and 'jumps' back as soon as I release the mouse.
A: Disable the feature "show window contents while dragging" in the Plus!-Folder of display-settings

Q: I want to order a PCase licence. Which information do you need?
A: We need following information:

  • kind of licence, PCase or PCase with maintainance for Progress V8 or V9 in german or english
  • your business address
  • the payment method
    • by creditcard
    • Paying within two weeks to our bank account in Germany
    • by sending an order-check or another check (additional costs for the bank charge)
  • if you are from Europe EuroIdentNumber
  • if paying by creditcard we need to know:
    • kind of card (Eurocard/Mastercard or Visa)
    • in EURO or in US$
    • Credit Card Cardholder
    • Card No.
    • Expiration Date
    • Total Order
    • Signature