As Finished as a Toilet

A long time ago now at the start of winter I started the upgrade of the upstairs toilet.  At the time I said that there might be some parallels to draw between toilet conversion and software engineering and I was at least right with this in one respect – that they can both take a lot longer than you initially planned.  Time is definitely the one thing I’ve not kept a close track on – weekends come and go and before you know it it’s the spring.

However, we’re there now.  Yesterday I glued the last of the tiles on and I will grout and another lick of paint and we’re done.  So what is the net result?

Before

After

 

 

 

 

 

 

 

So it might look pretty similar to the casual eye but there are some important points to note in terms of comfort as well as finish:

1. The floor is now warm.  I got a one metre square Magnum mat installed along with a digital thermostat.  The mat is set in self levelling compound and then tiled over with hard wearing PVC tiles.

2. New sink, new toilet.  Sink from Praxis, toilet is a Villeroy and Boch Omnia mounted on a Geberit Duofix corner frame.  The toilet frame is very easy to fit and great quality – I highly recommend it.

3. New walls with 20mm of styrofoam insulation – note how the window is now ‘set in’ to the wall.  Tiles by Mosa courtesy of Harry from Super Tegel.

The result is clean and light (although the walls will change colour before it’s finished) and most importantly warm.  Also with the raised toilet and the easy maintenance floor the cleaning of the toilet should be that much easier.  The next trick will be the downstairs toilet in a similar style!

Next I need to continue to apply the same dogmatic approach to completion and attention to detail to my software.

Apex Validations for Tabular Reports (4.1 or any version)

There is a lot of misdirection out there in Googleland about Apex validations and how they are much nicer since version 4.1 yadda yadda.  For Tabular Reports ignore this advice.  After half a day of searching my conclusion is when dealing with validations for Tabular Reports you should stick with the old way of iterating through all rows in your report.

After being redirected a couple of times to the examples I finally looked them up.

So to skip to the meat of the advice – for tabular reports you still need to identify your report column and validate the whole report using the old fashioned way.  So step by step this means creating a validation:

1. Page Processing -> Validations -> Create

and then:

2. Page Level Validation -> PL/SQL -> PL/SQL Expression

and then create  body similar to this:

DECLARE
   l_error   VARCHAR2 (4000);
BEGIN
   FOR i IN 1 .. apex_application.g_f03.COUNT
   LOOP
      IF     LENGTH(NVL (apex_application.g_f03 (i), ”)) > 4
      THEN
         l_error :=
               l_error
            || ‘</br>’
            || ‘Row ‘
            || i
            || ‘:  This value ‘
            || apex_application.g_f03 (i)
            || ‘  can only be of length four’;
      END IF;
   END LOOP;

   RETURN LTRIM (l_error, ‘</br>’);
END;

Ensure that enboldened column number above points to the column you want to validate and obviously modify your logic accordingly.  This solution plays nicely with MRU in Apex 4.1 and as I say, after a few wasted hours, I’ll be using this page again in the near future I think!