Tuesday, March 25, 2008

White Easter!

Just passed a long weekend of Easter holiday..!!! And it was a white Easter! Even this morning was snowing hard.. it was beautiful, I love it....love it love it!

Last week before the Easter holiday we were busy with the smileys! We supposed to put smileys beside the project score. We almost spent 4 days for this feature! And finally we succeeded with the help from our colleague, Yuri Vrancken.

Originally, we planned to put the smiley in the Bar Chart of our the project score, just beside the score. We have tried using the Grid, ItemRenderer, chart annotations, etc and it didn't work. After 4 days-struggle, we decided to have another data grid just showing the project name and smileys. We realized that customizing a chart is possible but require lots of work. And we don't want to waste lots of time in this feature since we have a long list of features to be implemented.

So, we decided to use a two-column datagrid, one column for projectname and the other for the corresponding smileys. To be able to insert an image into a datagrid, we need to use ItemRenderer. The trick is to specify in the datagrid that it would render an image.

Here is the snippet of our datagrid code:

mx:DataGrid id="dGrid1" dataProvider="{scores}" width="100%" height="100%"
mx:columns

mx:DataGridColumn headerText="Project Name" dataField="Project"
/mx:DataGridColumn

mx:DataGridColumn headerText="Well-being" dataField="ImagePath" itemRenderer="mx.controls.Image">
/mx:DataGridColumn

/mx:columns
/mx:DataGrid



And the datafield of ImagePath is a column of an ArrayCollection contains the path of where the image is located.


[Bindable]
private var pathString:String = "../src/images/Smiley_";

if(scores.getItemAt(f).Score<=30)
{
scores.getItemAt(f).ImagePath=pathString+"sad.JPG";
}

Monday, March 17, 2008

Flex builder 3 licenses

Last Friday we had our first presentation in front of the Java Domain department. Fortunately everything went quite alright, and our manager was happy. So it was a good day to end the week. At the end we also mentioned about the monitor which is still absent ;P Looking forward to seeing a big flat screen hanging (with our project on) at the office ;).
This morning, we got a surprise by Eclipse as we turned it on. It had given us the pop up message we never wanted to see.. it says: "Your trial of Flex Builder 3 has expired. Enter your serial number to continue using Flex Builder."...... oh, this is a breaking news: Just got a call from Mr. Scrum master, tomorrow we are getting the magic credit card from the big boss, Ronald for us to purchase the builder online :D

Today we have been writing our final report, and have sent a draft version to our school mentor, Theo. The sections covered till today are: 2. The Company, 3. The Assignment, and 5. Proof of Concept. At the moment, Lisa is writing section 4: "Scrum Methodology", and I am working on section 6: "First Iteration".

Last Friday, we have listed our next sprint goals, which is a HUGE one, including the following:
1. Smilies! (next to the BarChart of the overview page)
2. Nightly builds/test coverage
3. Hours Estimation (planned vs. actual)
4. Project realization percentage (the "score" for project overview based on Key Performance Indicators)
5. Responsible people
6. Employee presence
7. Happy rating
8. Domain plan realization percentage

*sigh* thats a long one. I hope we can sort out the licenses tomorrow and go back to our project soon.
Our primary objective after we get the licenses: embed the SMILIES! (looks like we are going to have to extend the BarSeries class)
busy busy busy!... i mean... GOOD BUSY! (the new word around the office) -- you wouldnt get this unless you know Dutch ;P
PS: Happy birthday to my sister, Alia! :D

Wednesday, March 12, 2008

Windy days

Flex/ColdFusion+windy days = not a very good combination.. but things are going great though. aint no wind cant take us down! ;)
Yesterday we successfully completed all of our sprint goals. Victory was ours when I fixed the CFC method invocation issue. The problem were the following:
-There should be no white lines within the xml file
-New object of the component Project_Info.cfc (the global CFC file) has to be instantiated first before invoking the method
-When parsing the xml, wrong hierarchy was called to retrieve the component name
-Probably other syntax errors
With that being fixed, the database queries as well as the metadata are all located in a single xml file (sweet! ;) )Lisa has been doing great as well as she had managed the components' cycle. So now the application is using only one xml (also means that services are now categorized per project), and application cycles between overview, and components per project (double sweet! :D)
So next goals:
-retrieve project names to be displayed on to each component
-figure out how to embed smilies into a barchart (for project overview)
-display test coverage (nightly builds)
By the way, my neighborhood is packed at the moment as PSV is playing against Tottenham Hotspur now. Apparently its an important match, and PSV is about to lose as we speak.. looks like there is going to be some vandalizing around here tonight ;P Hope the wind will still be as hard as earlier so they all would go home directly after the match :)

Tuesday, March 11, 2008

it's time to go deeper.....

Hello again...
It has been almost a week, we couldn't get time writing the blog. Recently, we were busy with all the documentations about the technical design.
We found it very helpful that we made the design after having Proof of Concepts and implementing some simple functionalities. By doing this, we know exactly how the flow is going and how to apply our project into that system. We also already discovered some possibilities (and impossibilities) Flex/ColdFusion application.

I like this method of working (implement some proof of concepts before start designing), it made the design much easier because I already got something in mind how this really works! It's pretty cool and it works for me...

Anyway, here are some major things we did:

1. GUI
We decided to have two states in the GUI, which refers to 2 MXML files. The first state is for the Project Overview and the other one is for the Single Project screen. The states will change from State 1 to State 2 according to the timer. In the state 2 itself, different data will be pulled for one certain project for each timer tick. When all single projects are shown, it goes back to the state 1, Project Overview and then go cycle.

2. Class Diagram
Each GUI Component (MXML file) has a remote object to handle the communication with the database. The remote object is a CFC file (coldfusion component). In this CFC file, all the queries from database are handled. The CFC file returns a query to be displayed.
There would be one global CFC that handle configuration from XML file (as already discussed in the last posts).

We also plan to have some ActionScript files that map particular CFCs when necessary. Having ActionScript files would be helpful when we need to get/set and process some data from the database without touching any remote objects (CFC files).

3. Sequence Diagram
We also made the sequence diagram for the general flow of the application as well as more specific sequence diagrams that define the flow per class/component of the application. At least we have two flows of the application. First, it's the initialization of all components. And once it's started, the pages will cycle according to the timer for infinite time.

Today, Ikram is still fixing the XML errors. I am going to implement the code for page cycling and later we will talk about the presentation. Next Friday we need to present our projects in our department meeting. It would be a short one, only 10 minutes. And probably we will show lots of screenshots to get the whole department excited!

Wednesday, March 5, 2008

So little time so much to do

As stated on our last post, we were having problems making comparison between query from an XML file with a database query within a CFC document. Turned out the error was caused by the datasource driver that we were working with. The sonar database is using Apache Derby database. Meanwhile, the other datasource, JIRA, is using PostgreSQL database. We implemented the same technique that we did on Sonar to JIRA, and apparently it worked.
We have discussed this to Michel, and we agreed that we will leave the code coverage as it is now (showing all the projects) without categorizing per project. There has been a desire to migrate the database to another driver, but Michel just has not got the time to do that yet. If Sonar database gets migrated, not only that it will solve our categorization problem, but we also desperately hope that it will improve the performance of loading the data to display. Here's a little picture of us discussing over some very complicated matter ("seems like") with Michel, taken by our sneaky Scrum master, Eric, who is by the way, back after being a paint guy for 2 weeks ;P

Anyway today, Lisa and I divided parts of work to do. She was looking into implementing the timer for the page cycle, meanwhile I was working on transfering both the categorization and the sql query into XML, load them up on CFC to be executed, and pass the data to the view (Flex's mxml files). Fortunately it all worked out pretty well, the CFC class for JIRA (bugs and tasks) is now loading the query and the services categorization from an XML file. I reckon this would be quite handy when thinking of scalability, because when new projects or services are coming, developers can easily edit the XML file without having to touch the code on the CFC (atleast that's how I imagined it would be ;P). I am not so sure how far Lisa went today, but yesterday she had managed to get the timer working for a component. Till early today, she was working out a way to make the timer works for one page (cycle all the components together).
Apart from implementation, today we also had our architecture document approved by Michel. And yesterday we had a discussion with Angelo regarding sequence diagram and use cases, and he thinks making one use case is enough. We already have one sequence diagram, which he also approved, so as far as project documentation concerns, use case is the only thing we need to work out.
Today we also discussed that we have a number of other things to do such as: Final report draft (for school) and presentation preparation for the next team meeting on Friday next week (scary..!). I myself am quite busy off the office as well (master application package, moving planning, summer planning, etc). Hence, the title: so little time, so much to do... go go go

Monday, March 3, 2008

Sprint #3

Last week we had ended our 2nd sprint with our application showing the code coverage and issues (bugs and tasks).

We have managed to display multiple components on one page (model-view) and do a multiple database queries in one component. These view of components are however still global (showing all the projects). Until last Friday, we were still struggling to manage the categorization of the services (which service belongs to which project). We have made two .xml files as the map (one for Sonar, the other for Jira), we query these xml's and compare them with the database query to categorize the output. All this commands are done within the CFC files (ColdFusion). If there are any changes to make in the future, we hope that these xml files would be the only ones to be configured (maybe later on, if we still have time, we'd also like to make some sort of a GUI, so the administrator wouldn't have to go directly to the xml files him/herself). We are pretty sure that we were so close on Friday. We were getting these strange SQL errors (actually im not sure its SQL or CF) saying: "Encountered .. " (dot dot) "Incorrect Select List, Incorrect select column". We still have NO IDEA why we are getting this error, but once we get this sorted out, we can then proceed making multiple views (per project) and manage the cycle timer.
As for today, we are going to start by completing our documentation (architecture, use cases, etc.), and later continue to find the solution to our "weird" error and start immediately with the 3rd Sprint!

Btw, I got myself a new bike on Saturday, so no more missing trains by seconds ;). Oh and I spent "movie marathoning" on Sunday, so here's some recommended movies: "There Will Be Blood", "Michael Clayton", "The Assassination of Jesse James by the Coward Robert Ford" and "In the Valley of Elah". hehehehehe...