• Project ideas
  1. Creating an initial project repository at https://gitlab.mi.hdm-stuttgart.de.

    Tip

    Include your lecturer into your team providing at least read access.

  2. Committing a Readme.md file describing the project's goals.

    This includes a precise description of the prototype's desired functionality likely to be extended along with your project's progress.

  1. Identify individual tasks like e.g.:

    • Creating sample data.

    • Setting up test scenarios.

    • Selecting a documentation tool set.

  2. Assign team members to tasks.

  1. Implementation resulting in:

    • A deployable piece of software

    • Both functional and software internal documentation.

      Tip

      Don't start this step too late. The »Real programmers don't document, the code is obvious« myth no longer works!

  • Project ideas
    • ➟ Extending UNIX grep to databases
> grep --color  -i  fraction App.java
package de.hdm_stuttgart.mi.sd1.fraction;
 * Playing with fraction objects.
    final Fraction threeSeven = 
        new Fraction(3, 7);
    final Fraction
  • Connection profile handling

  • Search level specification:

    • Whole database

    • Table(s)

    • Table column(s)

    • Recordsets

  • Output formatting, limiting/filtering and paging

Command File ~/.dbgrep/Profiles/postgresTest.cfg
dbgrep --profile postgresTest ...
host=myserver.companynet.com
port=5432
database=main_test_data
user=testuser
password=secret
driver=Driver/postgresql-42.6.0.jar
dbgrep ... 
dbgrep ... --table User --table Stocks ...
dbgrep ... --column User.userId  ...
dbgrep ... --table Stocks --column User.userId ... 
dbgrep ... --equal 237 
dbgrep ... --greater 4.43 
dbgrep ... --like 'Smit%' 
dbgrep ... --like 'Smit%' --and --greater 4 
dbgrep ... --range [-3:17] 

Search for integer values equal to 237. Depending on the corresponding search level we distinguish:

Database

Search all tables for compatible integer columns. Return either a list of all tables containing at least one occurrence of 237 or the data records themselves depending on an output formatting rule,