Tip: Uploading to Google Code

I learned this the hard way: put a version number in your Google Code releases!

I kept receiving an error when I tried to upload my new Jar file.  It was the same 403 error as this person.  The problem is that you can’t overwrite files any more.  Each new download needs to have it’s own unique file name.

So, the easy fix is to include and incrementing version number in the file name.

From Ant, I was able to accomplish the version number is this manner:

  • I created a version.txt to hold a minor number and major number property — saves the version
  • In the destfile parameter of the Jar step, I use the ${major.number} and ${minor.number} properties in the file name.
  • In the release section, I use the propertyfile command to increment the version number

Here is the full Ant Build file:

<?xml version="1.0" encoding="UTF-8" standalone="no"?><project default="all" name="Create Runnable Jar for Project ProjectShaphan">    <target name="all" depends="clean,compile,create_run_jar"/>
 <target name="clean">       <delete dir="bin"/>    </target>
 <target name="compile">       <mkdir dir="bin"/>       <javac destdir="bin">          <src path="src"/>          <classpath>             <pathelement path="/home/skp/app/workspaces/pscompare/ProjectJob/demo-bin"/>          	<fileset dir="lib">          		<include name="**/*.jar"/>          	</fileset>          </classpath>       </javac>    </target>
 <target name="create_run_jar">    <!--this part was created by Eclipse Runnable JAR Export Wizard-->    <!--ANT 1.7 is required                                        -->        <property file="./version.txt"/>        <jar destfile="project-shaphan-${major.number}.${minor.number}.jar" filesetmanifest="mergewithoutmain">            <manifest>                <attribute name="Built-By" value="${user.name}"/>                <attribute name="Main-Class" value="com.skp.shaphan.ShaphanApp"/>                <attribute name="Class-Path" value="."/>            </manifest>            <fileset dir="bin"/>            <zipfileset excludes="META-INF/*.SF" src="lib/derby.jar"/>            <zipfileset excludes="META-INF/*.SF" src="lib/sqljdbc4.jar"/>            <zipfileset excludes="META-INF/*.SF" src="lib/ojdbc6.jar"/>            <zipfileset excludes="META-INF/*.SF" src="lib/grouplayout.jar"/>            <zipfileset excludes="META-INF/*.SF" src="lib/iText-2.1.7.jar"/>            <zipfileset excludes="META-INF/*.SF" src="lib/iText-rtf-2.1.7.jar"/>            <zipfileset excludes="META-INF/*.SF" src="lib/iText-rups-2.1.7.jar"/>            <zipfileset excludes="META-INF/*.SF" src="lib/mysql-connector-java-5.1.7-bin.jar"/>            <zipfileset excludes="META-INF/*.SF" src="lib/ProjectJob.jar"/>            <zipfileset excludes="META-INF/*.SF" src="lib/jtds-1.2.5.jar"/>        </jar>    </target>
 <target name="release">         <taskdef classname="net.bluecow.googlecode.ant.GoogleCodeUploadTask" classpath="lib/ant-googlecode-0.0.2.jar" name="gcupload"/>        <property file="./version.txt"/><gcupload         username="${google.code.username}"         password="${google.code.password}"         projectname="project-shaphan"         filename="project-shaphan-${major.number}.${minor.number}.jar"         targetfilename="project-shaphan-${major.number}.${minor.number}.jar"         summary="Runnable Jar File"        labels="Featured, Jar, OpSys-All" />        <propertyfile file="./version.txt">	   <entry key="minor.number" type="int" operation="+" value="1" pattern="00"/>        </propertyfile>    </target></project>

 

jTDS

Today, I was looking for a Sybase JDBC driver, and found this software project:

The jTDS Project

It is a open source JDBC driver for both SQL Server and Sybase.  I haven’t had much opportunity to use it, but it looks great.  They claim to be very fast.

I have started incorporating it into my query tool: Project Shaphan.

Here are some links and information to help you get started:

Here is the code that I am working with to create a link:

		try {
			Class.forName("net.sourceforge.jtds.jdbc.Driver");
		} catch (ClassNotFoundException e) {
			(new ProjectJobException(e)).displayException();
		}
		String serverType = optionsGUI.getServerType();
		String serverName = optionsGUI.getServerName();
		String portNumber = optionsGUI.getPort().trim();
		if(portNumber.length() > 0) {
			portNumber = ":" + portNumber;
		}
		String userName = optionsGUI.getUser();
		String password = optionsGUI.getPassword();
		try {
			connection = DriverManager.getConnection("jdbc:jtds:" + serverType + "://" + serverName + portNumber, userName, password);
		} catch (SQLException e) {
			(new ProjectJobException(e)).displayException();
		}
		ShaphanApp.getMainWindow().getSQLEditorsPane().setConnection(new ConnectionDetails(connection, ConnectionDetails.CONN_TYPE_SQL_SERVER));

Eclipse on Karmic (Ubuntu 9.10)

After installing Ubuntu 9.10, I realized that they have updated the version of Eclipse in the repositories.  So, I was able to install it with apt-get rather than download it manually.  Here is the version information from the About screen:

Eclipse SDK
Version: 3.5.1
Build id: M20090917-0800
(c) Copyright Eclipse contributors and others 2000, 2009.  All rights reserved.

Eclipse SDK
Version: 3.5.1Build id: M20090917-0800
(c) Copyright Eclipse contributors and others 2000, 2009.  All rights reserved.Visit http://www.eclipse.org/platform

The one thing I had to add was the plugins that I use.  First, I found a blog post with instructions on adding a repository with additional plugins via packages.  To use it, add this repository to your software sources:

deb http://ppa.launchpad.net/yogarine/eclipse/ubuntu karmic main

This command will import the key:

wget http://www2.yogarine.com/eclipse-ppa.key -O- | sudo apt-key add - && sudo apt-get update

So, with that said, here are the packages that I installed:

  • eclipse
  • eclipse-rcp
  • eclipse-platform
  • eclipse-emf
  • eclipse-platform-data
  • eclipse-pde
  • eclipse-plugin-cvs
  • eclipse-wtp
  • eclipse-dtp
  • eclipse-jdt
  • eclipse-gef

Then, I added the following update sites to Eclipse.  Open the preferences with the menu: Window > Preferences.  Then, go to Install/Update > Available Software Sites.

I added Visual Swing.  See this earlier post for more information.  Here is the update site:

For MyLyn, I found a conversation that recommended the following two sites:

To install the plugins, go to Help > Install New Software.

Visual Swing

This page has moved.  Please update your links:
http://linuxsagas.digitaleagle.net/2009/11/10/visual-swing/

I found a nice Swing Designer for Eclipse called Visual Swing:

Eclipse Zone: Visual Swing for Eclipse

This is a project hosted on Google Code.  So far, it has worked pretty nice.  It is by no means a commercial solution, but it definitely gets the job done.

I had a little trouble installing it from the Update Site.  The first time, I just downloaded the files and manually placed them in my Eclipse Home directory.  But, today I figured out how to get the update site to work.

Here is the update site I had to use:

http://visualswing4eclipse.googlecode.com/svn/trunk/vs4e

Then, in the install window, I had to uncheck “Group items by category”.  Otherwise, it would say “There are no categorized items”.  Finally, the install window seems to have a refresh problem.  It was loading the items in the list, but it was not painting them.  I had to give it some time to load, then I had to resize the install window to make it repaint the list.

There is an outstanding bug on the Update Site: Issue #119.

Interesting: Java Application Store

I saw this post the other day.  Sun is coming out with a Java store to deliver applications.  These stores are getting to be a trend!  I have a “Market” for my Android phone.  iPhone has the same type of thing.  Linux has the repositories of packages, which though you can’t purchase programs, you can easily install programs in much the same way.

Right now, it looks like the store is just in beta.  I am curious to see how this works and how it catches on.

Resources

Adding a Project to Git and Google Code

This started because I wanted to share a program I had been working on through Google Code.

First, I created the git repository by:

skp@pecan:~/app/workspaces/pscompare$ cd ProjectSarah/
skp@pecan:~/app/workspaces/pscompare/ProjectSarah$ ls
bin  derby.log  export.xml  lib  src  timedb
skp@pecan:~/app/workspaces/pscompare/ProjectSarah$ git init
Initialized empty Git repository in /home/skp/app/workspaces/pscompare/ProjectSarah/.git/
skp@pecan:~/app/workspaces/pscompare/ProjectSarah$ git add .
skp@pecan:~/app/workspaces/pscompare/ProjectSarah$

Then, I did a commit:

skp@pecan:~/app/workspaces/pscompare/ProjectSarah$ git commit -m “First Release”Created initial commit 87fa855: First Release
196 files changed, 3456 insertions(+), 0 deletions(-)
create mode 100644 .classpath
create mode 100644 .project
create mode 100644 bin/com/skp/ProjectSarah/ChangeClientButton.class
create mode 100644 bin/com/skp/ProjectSarah/ClientListener.class
create mode 100644 bin/com/skp/ProjectSarah/CreateTimeViewExcel.class
create mode 100644 bin/com/skp/ProjectSarah/CreateTimesheetsButton.class
create mode 100644 bin/com/skp/ProjectSarah/DateField.class

Now, I created a new directory and started following these directions.  One of the problems I had was logging in.  I had to use the “My Profile” link on the upper right hand corner of Google Code.  That showed what my username was, and then, the password was on the Settings tab.

mkdir ~/app/git-workspace
cd ~/app/git-workspace
git svn clone –username <username> https://project-sarah.googlecode.com/svn/trunk
cd trunk
git fetch ~/app/workspaces/pscompare/ProjectSarah/
git branch tmp $(cut -b-40 .git/FETCH_HEAD)
git tag -a -m “Last fetch” last tmp
INIT_COMMIT=$(git log tmp –pretty=format:%H | tail -1)
git checkout $INIT_COMMIT .
git commit -C $INIT_COMMIT
git rebase master tmp
git branch -M tmp master
git svn dcommit

Now, I was able to browse the source of my program online!

Resources

git branch tmp $(cut -b-40 .git/FETCH_HEAD)

Java FX Links

Here is a tutorial for using Java FX with Eclipse:

Java FX for Eclipse

I was able to install it on Linux using the update site listed here:

Java FX Plugin for Eclipse Wiki

Java + Compiz

I have been having trouble with getting blank Windows with my Java programs.  The problem first appeared in programs I was working on in Eclipse, but then I found other programs I had downloaded from SourceForge also had the same problem.  Apparently, the problem comes from a conflict with Compiz-Fusion and Java.

Here is the solution:

Add the following line to /etc/environment —

AWT_TOOLKIT="MToolkit"

You possibly need to reboot for this change to take effect.

When I did this I got this error:

java.lang.UnsatisfiedLinkError: Can't load library: /usr/lib/jvm/java-6-openjdk/jre/lib/i386

The problem appears to be caused by using OpenJDK.  The solution was to use Sun’s JDK.  This post will not go into detail about how to switch, but here are some things to consider:

  • Install Sun’s JDK with Add/Remove Programs, apt-get, etc.
  • Use update-alternatives to point the OS to the correct Java Home
  • Run java -version to check that the correct version is in use
  • Update the installed JVMs in the Eclipse preferences to make sure that Eclipse is lauching programs with the correct JVM

Resources

Jasper Reports

I have found Jasper Reports to be a great tool for allowing printing from Java-based applications.  I am using the iReports tool to create the reports in a GUI mode much like Crystal Reports.  Then, with a few lines of Java, I can display the report to view the report and allow him to print.

Jasper Reports Home Page

iReport Home Page

SourceForge Page

Right now, I am trying to figure out how to display totals on the page.  I found this nice article explaining the basics:

Open Source Reporting with JasperReports and iReports (Totals on Page 3)

Java: Nimbus Look and Feel

This page has moved.  Please update your links:
http://linuxsagas.digitaleagle.net/2008/03/27/java-nimbus-look-and-feel/

In the announcement for Java 6 SE Update N b12, they mentioned a new Look and Feel called Nimbus. Here is a link with code that shows how to use it:

https://jdk6.dev.java.net/testNimbus.html

Here are some screenshots: