Archive for April, 2008

Another Day Closer

Had a torrid morning with build problems on the laptop. When the build environment isn’t setup correctly it really gets very ugly. Needed to integrate David’s latest work into my build aswell just to add some spice.

In the afternoon did some more bug fixing on the CMS we’re over 90 of them now.. but i hope we’re almost there! :)

David started re-working the shopfront GUI to give it a more professional look and feel and has achieved some instant results in that department.

Was speaking with the other brokerage firm again today and they were impressed by the presentation we sent them. I’d said we would be in touch mid May to setup a meeting for the end of May to give them a demo of what can be done.

Looking forward to tomorrow and starting a fresh all n all I’ve produced a pretty measly output these past couple of days and am looking forward to having a more enjoyable and productive day tomorrow

Leave a Comment

The Development Envioroment

Just finished setting up the complete development on my laptop we’re back in business

Leave a Comment

An Intresting Day

in terms of code productivity I think we can put today in the write off bin. Hardware failure this morning on the sharepoint server caused me to spend the morning migrating from the backup data to here. There should also now be a noticeable improvement in access times! ;)

 We managed to fix our broken build from Monda. Turned out the acegi application context was missing the FileContent POJO.

 Dermot called to say he couldn’t do Thursday so we have had to re-schedule to next Tuesday evening.

 Then we recieved a call from Sean at Best Advice one of his customers is looking to implement an online purchase system similar to what we are currently implementing for Dermot. 

 Spent the evening Zen Invent-ing a power point presentation that David drew up of our quote and purchase system available here:

Zen Invent Quote & Purchase System

Then I was talking with Mark a manager of mine at Morgan Stanley in the summer. A friend of his is setting up a business which quieres streaming content over an SSL connection so we’ve gotten in touch with him about prototyping from the end of May onwards. His timescale those is short(isn’t everyones! ;) so it may not work – ut we would like to make it to.

 Setup mysql on the laptop this evening I’m going to shift development off the pc until the hardware problems are resloved.

 An Intresting if un-productive day in terms of code output anyway…

  

Leave a Comment

More Testing & Bug Fixing

Well had a big scare this morning.. arrived on the bridge of the star ship enterprise and was greeted by silence! .. Server was off and when I tried to power it back on there was no life.. So called up trusty Dell. Took the machine apart and put it back together brought it back to life! – It was a tense time!

With all the source backed up in the remote repo and the databases backed up each night it wouldn’t have been the end of the world – still it almost felt like it!

So lost the morning to that problem in the afternoon I carried on testing in particular I focused on preparing test cases 08 & 09 and their children for UAT. 08,09 refer to adding & updating client information & adding and updating client partner relationships.

I have now added validation to appropriate fields on the customer input forms and put in place some basic error handling for invalid client keys(for adding client partners) etc. Discovered an interesting issue with our Spring, Hibernate Transaction management architecture. While working on attempting to send back some meaningful error information to the flex client in the event of an exception being thrown I implemented some catchers. However, once an exception is caught we loose hibernate rolling back the transaction. So in the end I’ve just let an un-interesting error message be sent back to the flex client. It is something we need to flag as a future issue to look into. However, it is probably outside of our current scope due time constraints.

We’ve topped 60+ bugs now in the issue tracker which I am delighted to see.

Had quite a number of envious looks over at the work David was doing today, he is generating pdf views using Spring it looks really fantastic.. I’m quite jealous :)

Here is a screenshot of the ready for UAT customer details tab:

http://gaffneykev.no-ip.info/ca400blog/Docs/UATCustomerDetail.JPG

You might notice I have disabled the RIPs(residential investment property) text boxes. This is because if time allows I want to move this section to a separate tab and allow for any number of client RIPs to be added to a client record. Currently there is no such facility.

We finally managed to sort at another meeting with Dermot for Thursday evening.

We’re loosing another project day tomorrow as finishing our compiler assignment is on the agenda so we’re at t-minus 18 man days each left on the project.

Comments (1)

Testing & HD18

Spent today testing the robustness of the UI, in relation to basic customer details, adding validation and closing the opened issues from the last couple of days.
We’re logging bugs as we come across them(in the issuetracker) in testing & development and correlating them to test cases in our test document. Any changes to the code for a bug fix should also be marked with the developer initials, date & issue number.
The requirement of adding, editing and updating basic customer details is now ready for UAT.
 Meeting 18 with Howard yesterday discussed progress and problems over the past week in particular that of document management and sessionids (see previous posts). We also showed him the test document that I drew up with the help of google and some custom tweaking over the weekend.
Sample Test Document:

http://gaffneykev.no-ip.info/ca400blog/Docs/OnlineBrokerageTest.doc

Leave a Comment

Resloution

Ok the problem below has now be resloved.
First there was no cascadeType set on the orginal oneToOne mapping as per the hibernate book.
However, since I removed the @Proxy(lazy = false) a cascade option must be set for each nested object, otherwise the save of values in the nested object will fail(ie as it will never happen), which is what is explained in the transitive persistence section in Java Persitence in hibernate.
Using the javax.persitence annonations which do not have a save-update attibute I instead used PERSIST which then required the updating of the DAO code to utlise persist instead of update.
If this throughs up anymore bugs ill create a persist method seprate to the update so they can both be utlised in the project.
That is issue 48 in the issue tracker resloved & one of the probems from test 08 resloved.

Leave a Comment

Broken ftrenq link

It appears I have broken somehow the one to one relationship between ftrenq and climas in relation to the id of ftrenq being set.
org.springframework.orm.hibernate3.HibernateSystemException: identifier of an instance of com.zeninvent.dmib.business.Ftrenq was altered from 0 to 5053; nested exception is org.hibernate.HibernateException: identifier of an instance of com.zeninvent.dmib.business.Ftrenq was altered from 0 to 5053
I think it has something to do with my change a few days ago where i switched on the proxy on Climas

Leave a Comment

CM02 Customer Documents & Sessions

CM02 customer document management is complete and ready for UAT.

The biggest problems faced during development of this requirements were management of sessions & the lazy loading of customer documents in the Client POJO.

Uploading on the flex side is developed from the file upload & php article from coding cowboys:

http://weblog.cahlan.com/2006/09/uploading-files-with-flex-and-php.html

I then got the apache commons file upload libraries to lend a hand on the backend.

The actionscript from the above link handles the getting of the file from the file system and posts it off to our usual service, tagged with add document.

The request is then parsed using the apache commons library into a FileItem where we can extract the content & file name etc.

The request comes with the client key, we fetch the appropriate client and its file set adding the new document and saving the client.

One of the biggest problems we had with this as i mentioned earlier was a  session problem. When logged in there is a session id associated with the authenticated user. However, the file upload implementation in flex begins a new session. There are numerous links and posts about these flex session id tomcat problems on the web. Our solution was to setup another request handler which can pass back the valid jsession id to flex itself. We then append this session id to the upload url which ensures the upload request is authenticated. The same issue occurs for file download.

The other issue i noted earlier was lazy loading and while my post on the hibernate forum was a start it wasn’t the sliver bullet to all my problems.

In the end I wrote a session interceptor in Spring which i mentioned as on wish list in a previous post – this however became essential to make the document lazy loading work.

I also had to the spilt the file POJO into two separate POJOs one for the file details and one for the file content itself. This is because as per the hibernate post all hibernate properties default to eager fetching and changing this through writing an ant task to change the byte code is not a very “done” thing. So as per the hibernate post i have setup an @lazyToOne relation between the File & FileContent POJOs. This now means when we do a fetch on a customer for populating the various customer tabs we are not fetching there documents as well, just a proxy list containing their file details. Before this was implemented even with small files there was a visible drop in performance of fetching customer details. This has now thankfully been resolved.

Also becuase of the spilt the adding of a file is a transaction and as such has been wrapped by a spring transaction interceptor (see my previous post on transactions for details).

Further I have implemenated a many to many relationship on the data model side to open the scope for one document to be linked to more than one customer. This however, will be beyond scope for this project iteration.

Now my task is to go back over all of the developed CMS components and do some ironing and polishing.

David is already writing JUnits for some of his code so I had better not let the side down. For GUI testing we are going to rely on manual use cases and checks as opposed to some of the automated GUI testing software out there – due simply to the ever tightening time constraints placed on the project.

Leave a Comment

Lazy loading issues Customers & Documents

Have a problem at the moment with loading a user (Climas POJO) as hibernate defaults to eager fetching of assocations and a user POJO has a Set of File POJOs associated with them. This File POJO contains the byte content of the file itself.
This leads to the issue of everytime the Climas POJO is accessed all the files assocated with this client are pulled from the database and loaded into the POJO. This is not good.
According to the hibernate book I can annote the blob with the @Lob annotation which should default to lazy. However, there appears to be much ambiguity over this as some interent forums disagree. I too disagree as I can still see the files being fetched in the log.
Now I could intercept and inject the byte[] through an ANT task to setup lazy loading through interception as opposed to hibernate default proxy pattern but it appears rather difficult and there must be a better solution.
So I posted on the hibernate forum for help & help has arrived.
Option two from my limited hibernate skillset looks like the most ideal solution and so tomorrow I will give it a go.
Link:

Leave a Comment

Contact Log

Requirment CM06 customer contact log is complete and ready for UAT.
Friday I start Document Managment

Leave a Comment

Older Posts »