Blog Closing August 21, 2012
Posted by Phill in General J2EE.comments closed
Sadly, this blog is now closed. I have essentially changed career – I am no longer working in software development.
I will leave this blog here for future reference if necessary, unfortunately the information is going to become more and more out of date as I won’t be updating it any more!
IE and Column Widths March 8, 2011
Posted by Phill in Presentation Layer.Tags: col, colgroup, column, gwt, javascript, smart gwt, width
comments closed
Uh… hi. It’s been a looooong time since I last wrote here. I’m sorry. I’ve been very busy on a project which uses GWT and Smart GWT. We’ve come across a lot of problems, some of which I hope to blog about.
But what I want to talk about today is something pretty simple: Internet Explorer and column widths. We’ve written a custom component which replaces Smart GWT’s ListGrid – essentially it uses a standard HTML table instead of using DIVs.
Part of the issue we were having is that the column widths were essentially being ignored: IE was just drawing all the columns as equal width. (The CSS on the TABLE element was set as table-layout: fixed).
We were using the HTML COL tag to set the width for each column – all this was added in dynamically via GWT.
As it turns out, the reason IE was ignoring this was because you need to add it to a COLGROUP first. If you add in a COLGROUP, and then add the COL elements to that group, it works.
JSF, Float, and f:convertNumber February 16, 2010
Posted by Phill in Frameworks, Presentation Layer.Tags: convert, convertNumber, float, jsf
comments closed
I’ve been having some fun issues with JSF and converting Float issues. Essentially the problem occured when converting a primitive float type to a java.lang.Float type in my value object (I was trying to updating a float value from an inputText field). I kept getting errors like:
java.lang.IllegalArgumentException: argument type mismatch
Anyway, I found an answer which seems to work, but rather than post it directly here I’ll simply link to the original question on StackOverflow (in case someone posts a better answer subsequently!).
These kind of issues are one of the many reasons why JSF has gone down in my estimation… it’s not a bad framework, it just seems to make what should be simple things massively complicated! That said, JSF 2.0 looks good, so maybe it will solve these kind of issues.
SSIS, C#, and Class Libraries February 4, 2010
Posted by Phill in Other Stuff.Tags: c#, class library, sql server, ssis, visual studio
comments closed
The past couple of weeks I’ve not been working in Java, I’ve actually been using SQL Server Integration Services. We are in the process of converting an old C++ based application to Java, with a SQL Server backend. Some of the old export processes that were previously written in C++ we have decided to re-write using SSIS.
I won’t bore you with the details, but I do want to blog about the way C# is used in SSIS. You can create ‘Script Tasks’ which basically run a piece of code for you. You can write it in VB.NET or C#.
Due to the particular export I was running, a lot of the logic needed to go into the C# code. The issue is, SSIS doesn’t make it easy for you to re-use code: essentially, when you create a script task you are creating a whole new C# project. This isn’t good.
What I did (after taking some advice from Stack Overflow), is create a class library. Being new to SSIS and the world of C# in general, I had to do a fair bit of trial and error to get it working. The best tutorial I found was here. Those steps were enough to get me started.
There are a few other things to mention as well:
- For some reason, SSIS 2008 seems to be stuck in the world of .NET 2.0. I don’t know why, but that is why you have to copy the .dll to the .NET 2.x folder. You will probably also need to set the project properties (of your class library project) to .NET 2.0.
- There seem to be two different ways of accessing SSIS variables from within a script, depending on whether your script is part of a Data Flow Task or not. If it’s part of a Data Flow Task, you access them via the ‘Variables’ member – easy enough. (Although remember to set them up as read-only or read-write variables in the task properties first). If your script task isn’t part of a data flow task, you will need to use the Dts variable. This confused me at first!
- For some reason, rebuilding the Class Library package in Visual Studio seems to mean the Script Tasks using it also need to be recompiled. Update: I’ve found out why – if the version increments, you will need to rebuild the dependent projects. To stop this, you just need to set the class library version to be constant. This was actually the default in my project, but I’d changed it! You can do it from project properties -> Application -> Assembly Information dialog.
In general, it’s been a learning experience – worth doing though! I will hopefully update a bit more when I’ve had a chance to use it more…
MyEclipse and NullPointerExceptions December 3, 2009
Posted by Phill in Other Stuff.Tags: eclipse, myeclipse, nullpointerexception
comments closed
Quick one this time round. If you are using the MyEclipse editor for JSF / HTML files (in my case the MyEclipse HTML editor) and a dialog keeps popping up: “java.lang.NullPointerException. See error log for more details”, you may wish to refresh your workspace.
I kept getting this error and it turns out it was a problem with my workspace not being in sync with the files on disk. A refresh did the trck. I don’t know why this results in a NullPointerException, but there you go!
Spot the bug… October 28, 2009
Posted by Phill in Other Stuff.Tags: bugs, java, operator precedence
comments closed
Have you ever written something really stupid but not noticed it for ages?
Witness this statement of mine I wrote a month or so ago. The point of the code is to append a prefix to an existing description, or the empty string if the description is null.
description = prefix + " " + description == null ? "" : description;
Can you spot the error?
It turns out that Java was looking at this statement like this:
description = (prefix + " " + description) == null ? "" : description;
D’oh! Not what I intended! I changed the statement to put brackets round the description == null ternary statement and it seems to work.
Just goes to show, brackets are generally a good idea when making statements like this – it’s too easy to make mistakes with operator precedence otherwise!
JAI October 19, 2009
Posted by Phill in General J2EE.Tags: imageio, jai
comments closed
Recently I had a project where I needed to use Java Advanced Imaging (JAI) to convert TIFF files into JPG. (Unfortunately Java doesn’t provide a TIFF decoder out of the box).
I had an issue today whereby I needed to deploy the application on a server (it’s a web app). I kept coming up with errors about JAI not being able to find the TIFF decoder:
java.util.NoSuchElementException
at javax.imageio.spi.FilterIterator.next(Unknown Source)
For anyone who is Googling it!
Anyway, it turns out that I had got jai_core.jar and jai_codec.jar in my WEB-INF/lib folder (these are both part of the standard JAI Distribution), but for some reason I also needed jai_imageio.jar (which is part of the JAI-ImageIO package).
I can’t quite fathom why you need so many JAR files, but it seems to work now, so there you go. Hope this helps someone else out!
Wicket September 17, 2009
Posted by Phill in Frameworks, General J2EE, Presentation Layer.Tags: jsf, wicket
comments closed
The past few days I’ve been prototyping for a new project we’re starting up at work. Previous web projects we’ve done have mainly been using JSF, however for this project I’ve been looking into Apache Wicket.
My first impressions are, I like it. I like it a lot, in fact. It seems to achieve a much more clean separation between code / components and HTML than other frameworks do. It does take a while to get your head around it though – I’ve only been working with it for a few days so am still finding my way round!
But I expect I will blog up some info when I’ve got my head around it.