18 febrero 2009

EclipseWiki

Eclipse Wiki Editor Plugin

update site: http://www.stateofflow.com/UpdateSite

This Eclipse plugin is a simple personal or project Wiki. A Wiki is many things, but in the context of Eclipse, it is a powerful project documentation tool linking documentation to eclipse resources, web sites, bug tracking tools and other Wikis.

Features

  • Link to local Wiki documents
  • Link to resources in the Eclipse workspace
  • Link to Java source code in the current project path simply by typing the fully qualified name of a class (classes in the default package are not supported).
  • Link to urls automatically
  • Exclude words from being links
  • Define common prefixes to any website, Wiki, Eclipse resource, and more using a local WikiSpace
  • Export your wiki including all the linked Eclipse resources. (Java source is converted to HTML using the excellent Java2Html)
  • The multipage editor has a browser view to make reading easier and a syntax view to help editing. There are three renderers to choose from depending on your chosen wiki markup: TWiki, SnipSnap and Ward's Wiki.

    A cool feature is that any image linked to in the Wiki Document is inlined in the browser view. So you can create a local folder of images and link to them in your Wiki pages.

  • Headers and Footers in the browser view and exported documents
  • Embed other wiki documents, eclipse resources and Java code in Wiki documents.
  • Syntax colouring for links
  • Completion for eclipse resources, local wiki documents, WikiSpace links and Java types in the same project
  • Hover text and previews on links
  • An Outline of document headings
To use the plugin you need Eclipse 3.2 or higher, running under Java 5 or higher.

Mylyn Connector: Trac

Mylyn Connector: Trac
3.0.4.v20090122-1000-e3x

con el developer studio de jboss

16 febrero 2009

Interfaces

Interfaces

There are a number of situations in software engineering when it is important for disparate groups of programmers to agree to a "contract" that spells out how their software interacts. Each group should be able to write their code without any knowledge of how the other group's code is written. Generally speaking, interfaces are such contracts.

For example, imagine a futuristic society where computer-controlled robotic cars transport passengers through city streets without a human operator. Automobile manufacturers write software (Java, of course) that operates the automobile—stop, start, accelerate, turn left, and so forth. Another industrial group, electronic guidance instrument manufacturers, make computer systems that receive GPS (Global Positioning Satellite) position data and wireless transmission of traffic conditions and use that information to drive the car.

The auto manufacturers must publish an industry-standard interface that spells out in detail what methods can be invoked to make the car move (any car, from any manufacturer). The guidance manufacturers can then write software that invokes the methods described in the interface to command the car. Neither industrial group needs to know how the other group's software is implemented. In fact, each group considers its software highly proprietary and reserves the right to modify it at any time, as long as it continues to adhere to the published interface.

interfaces

Interfaces

Definición

Un interface es una colección de declaraciones de métodos (sin definirlos) y también puede incluir constantes.
Las clases que implementen ( implements) el interface han de definir obligatoriamente la función del interface.
El papel del interface es el de describir algunas de las cara cterísticas de una clase.

Diferencia entre un interface y una clase abstracta


Un interface es simplemente una lista de métodos no implementados, además puede incluir la declaración de constantes. Una clase abstracta puede incluir métodos implementados y no implementados o abstractos, miembros dato constantes y otros no constantes.

Una clase solamente puede derivar extends de una clase base, pero puede implementar varios interfaces. Los nombres de los interfaces se colocan separados por una coma después d e la palabra reservada implements.

Vamos a crear un interface denominado Parlanchin que contenga la declaración de una función denominada habla.

public interface Parlanchin {
public abstract void habla();
}

Hacemos que la jerarquía de clases que deriva de la clase base Animal implemente el interface Parlanchin

public abstract class Animal implements Parlanchin{
public abstract void habla();
}
class Perro extends Animal{
public void habla(){
System.out.println("¡Guau!");
}
}
class Gato extends Animal{
public void habla(){
System.out.println("¡Miau!");
}
}

Ahora veamos otra jerarquía de clases completamente distinta, la que deriva de la clase base Reloj. Una de las clases de dicha jerarquía Cucu implementa el interface Parlanchin y por tanto, debe de definir obligatoriamente la función habla declarada en dicho interface.

public abstract class Reloj {
}
class Cucu extends Reloj implements Parlanchin{
public void habla(){
System.out.println("¡Cucu, cu cu, ..!");
}
}

Definamos la función hazleHablar de modo que conozca al objeto que se le pasa no por una clase base, sino por el interface Parlanchin. A dicha función le podemos pasar cualquier objeto que implemente el interface Parlanchin, este o no en la misma jerarquía de clases.

public class PoliApp {
public static void main(String[] args) {
Gato gato=new Gato();
hazleHablar(gato);
Cucu cucu=new Cucu();
hazleHablar(cucu);
}
static void hazleHablar(Parlanchin sujeto){
sujeto.habla();
}
}

Al ejecutar el programa, veremos que se imprime en la consola ¡Miau!, por que a la función hazleHablar se le pasa un objeto de la clase Gato, y después ¡Cucu, cucu, ..! por que a la función hazleHablar se le pasa un objeto de la clase Cucu.

Si solamente hubiese herencia simple, Cucu tendría que derivar de la clase Animal (lo que no es lógico) o bien no se podría pasar a la función hazleHablar.

Con interfaces, cualquier clase en cualquier familia puede implementar el interface Parlanchin, y se podrá pasar un objeto de dicha clase a la función hazleHablar. Esta es la razón por la cual los interfaces proporcionan más posibilidades que el que se puede obtener de una simple jerarquía de clases

213.37.37.41

213.37.37.41

13 febrero 2009

SQLWave. GUI Client for MySQL Database Server.

SQLWave. GUI Client for MySQL Database Server.


Nerocode SQLWave is a powerful MySQL GUI Client tool designed to automate and simplify database development process. It also provides an easier way to explore and maintain existing databases, design compound SQL statements, query and manipulate data in different ways.

pspad

http://www.pspad.com/en/

pspad

http://www.pspad.com/en/

outwit

http://www.outwit.com/

Are you tired of wasting countless hours searching through the Web? Tired of scrolling down search engine results, opening, reviewing, copying, pasting, saving, going back to the other results then starting

the whole process over again?

11 febrero 2009

Trac on windows

Trac on windows

Trac is a rightfull bitch to install on win32 as it requires very specific version matching of packages. This is a long winded installation note with the more or less latest versions available as of this writing.

Installing Trac and Subversion

Installing Trac and Subversion

Este viene MUY BIEN explicadito

Windows Installation instructions for SVN w/TRAC

Windows Installation instructions for SVN w/TRAC

Setup Trac and Subversion (usar este el primero)

Setup Trac and Subversion


Setup Trac and Subversion

First install packages for both Trac and Subversion. We’ll be using Apache to publish the Subversion reposatories
apt-get install python-setuptools trac subversion libapache2-svn

Create the SVN reposatory directory structure, used to create new reposatories later
mkdir /var/svn/
mkdir /var/svn/tmpproject
mkdir /var/svn/tmpproject/branches
mkdir /var/svn/tmpproject/tags
mkdir /var/svn/tmpproject/trunk

Enable the Apache SVN module

a2enmod dav_fs

Create a password file containing users that have access to the Subversion reposatories and Trac
htpasswd -c /etc/apache2/svn.passwd user1
htpasswd /etc/apache2/svn.passwd user2

Edit the apache configurations to enable Trac and Subversion SVN (pico /etc/apache2/sites-enabled/000-default). Add the following lines:

DAV svn
SVNParentPath /var/svn
SVNAutoversioning on
AuthType Basic
AuthName "Subversion Repository"
AuthUserFile /etc/apache2/svn.passwd
Require valid-user


Options Indexes MultiViews
AllowOverride None
Order allow,deny
Allow from all

Alias /trac “/usr/share/trac/htdocs”
Create a directory for Trac projects
mkdir /var/trac

Create projects

Subversion reposatory
svnadmin create /var/svn/myproject --fs-type fsfs
svn import /var/svn/tmpproject file:///var/svn/myproject -m "initial import"
find /var/svn/myproject -type f -exec chmod 660 {} \;
find /var/svn/myproject -type d -exec chmod 2770 {} \;
chown -R root.www-data /var/svn/myproject

Trac project
trac-admin /var/trac/myproject initenv
find /var/trac/myproject -type f -exec chmod 660 {} \;
find /var/trac/myproject -type d -exec chmod 2770 {} \;
chown -R root.www-data /var/trac/myproject

Configure Apache to publish the new project (pico /etc/apache2/sites-enabled/000-default). Add the following lines:
ScriptAlias /projects/myproject /usr/share/trac/cgi-bin/trac.cgi
a

SetEnv TRAC_ENV "/var/trac/myproject"



AuthType Basic
AuthName "Trac - myproject"
AuthUserFile /etc/apache2/svn.passwd
Require valid-user

Restart Apache
/etc/init.d/apache2 force-reload

Give a user administrator permissions to the project
trac-admin /var/trac/myproject
permission add user1 TRAC_ADMIN

You can now access your Trac project by browsing with your favorite browser to http://localhost/projects/myproject.

To access the Subversion reposatory you can use any Subversion client. If you’re using Windows, TortoiseSVN would be a good choice.

Mylyn Trac Task Integration

Mylyn Trac Task Integration


Looking for purpose in life? Mylyn is purposeful. It does a lot of stuff, but one nifty bit is task integration.

Task integration is cool because it links the Eclipse IDE with an issue tracker-- in this case Trac. Meaning, you can be less random in what tasks you work on, should you choose to work on CFEclipse tasks. And more! View the Mylyn webinar at http://www.eclipse.org/mylyn/start/ for a little background-- It's long, but full of yummy goodness!

Now that you've got a little background on Mylyn, lets create a new task repository for CFEclipse's Trac site. You'll need to have the mylyn plugin installed, of course (you can cut and paste the download urls into the Eclipse Plugin Manager, or select the Mylyn plugin from Eclipse's update site, if you're using 3.3.). Be sure you select the Mylyn Trac Task Repository plugin!

Create a new Trac Task Repository, following the instructions here http://wiki.eclipse.org/Mylyn_User_Guide#Trac_Connector, using theCFEclipse's Trac site url (http://trac.cfeclipse.org/cfeclipse) as the Server URL, and your CFEclipse Trac username and password.

Create a new query by switching to the Mylyn "Planning" perspective, selecting the "Task List" and option(or right)-clicking to get to the context menu where "New > Query" appears. Select the CFEclipse task repository, and customize away! Or add a query name and click "Finish", for all tickets.

You should now see a task query list by the name you specified, which lists whatever tasks you've specified. Cool, huh?

Subclipse Change Set/Task Linking is coming soon, but probably not too soon, as I think I'm going to go add a mylyn generic task repository interface to my rudimentary project management application. =]

Configure Mylyn to connect to Trac

Configure Mylyn to connect to Trac


This page will help you to configure both your Trac account and your Mylyn plugin so that you can get the best of both worlds.

Set up your Trac account

Once you have become a committer for the Squale project, the PMCs will provide you with a user and a password to connect to the Trac server at: https://project.squale.org

Please log in as soon as possible and change your password by clicking on "My Account" on the top right part of the page.

To learn more about how Trac works, especially for the issue tracking part of it, please refer to the online documentation:

Configure Mylyn to connect to Trac

Eclipse Mylyn can connect to Trac to bring back into Eclipse all the issues that are stored on the Trac server, and to create new ones without having to use the web interface.

To connect Eclipse to Trac via Mylyn:

  1. Open the "Task repositories" view of Mylyn
  2. Right-click and select "Add Task Repository"
  3. Select Trac
  4. Enter the following information:
    • Server: https://project.squale.org
    • Label: Squale Project
    • User ID: your_committer_ID
    • Password: your_password
    • Save Password: select this option
    • Additional Settings -> Access Type: XML-RPC Plugin
  5. Click on "Validate Settings": if everything is fine, then click on "Finish"
  6. Open the "Task list" view: you should start seeing issues and you'll get notified when new are created.

Note: if you have trouble to connect to Trac, you may need to configure some proxy settings in Eclipse preferences

Once you've connected your Mylyn to Trac, you have to create queries in the "Task list" view so that you can see issues within Eclipse. To learn more about Mylyn and how to use it, please visit the following links:

Mylyn/SOC/2006/Trac Connector

Mylyn/SOC/2006/Trac Connector


The goal of this Google Summer of Code project is to provide a Trac connector plug-in for Mylyn. Trac is a web-based issue tracking system with an integrated wiki.

The Mylyn API already supports multiple issue tracking systems, therefore the existing abstraction is used to implement a Trac connector. Trac issues are accessed remotely through a query script that outputs tab-delimited text as well as through a XML-RPC interface. The XML-RPC interface has not yet been integrated into the main distribution of Trac but is available as a separate plug-in.

The project has been accomplished in two iterations. The goal of the first iteration was to make the connector work with existing Trac deployments through Trac's web interface. This retrieved ticket information is used for read-only display in Mylar. Tickets can be edited through a web-browser.

The second iteration focused on enhancing the support for Trac's XML-RPC interface. The XML-RPC interface allows full featured access to all ticket information and allows manipulation of tickets. The editing of tickets is done through Eclipse forms based editor.

The Trac connector is now maintained in the Mylyn CVS and is shipped with the regular releases.

Mylyn and trac 0.11

Mylyn and trac

I am using trac now since about half a year for one of my current Java projects. One thing I missed from the start was the Mylyn integration in Eclipse - with bugzilla I was used to handle most of my issue tracking inside Eclipse. If you get used to this kind of “task oriented” working it is hard to do anything without.

Today I found a nice post about how to enable Mylyn to work with trac version 0.11. Basically you have to add the XMLRPC plugin to your trac installation and to configure the XMLRPC connection mode in the Mylyn trac connector.

02 febrero 2009

enlaces interesntes metodologías Agile (en español)

Taylor Datasheet (pdf) and Screen Shots

Data Sheet (en formato pdf)
Screen Shots

Taylor features (related to Seam: red coloured)

Taylor MDA 1.2.0

Version 1.2.0 has been released! Here are some new features:

  • Switched from generating Portlet Apps to generating Web Apps
  • Advanced Search Filters and Saved Filters
  • Seam Theme support
  • Seam Excel support
  • Data XML Import/Export
  • User, Group and Profile Maintenance (see taylor-identity model)
  • Upgrade of Seam and Richfaces libraries
  • Eclipse 3.4 compatibility
  • Various fixes and improvements

Taylor MDA 1.1.0

Version 1.1.0 has been released! Here are some new features:

  • Refactored Generation menus and added Preferences page
  • Refactored generated Maven projects and added master project
  • Richfaces Tree and more leveraged in generated CRUD screens
  • JPA Annotation utilities menu
  • JSFUnit generation
  • JIRA integration
  • A new default portal theme
  • Plus lots of tweaks and fixes

Taylor MDA 1.0.0 GA

The first GA version has been release!!!

We recently used Taylor on a project for a customer which resulted in a lot of valuable improvements to the tool. We now feel that the project is no longer in beta and we are adjusting the numbering scheme to 1.0.0. All the various components will have the same version number to help indicate what works together.

Below is a list of new features and bug fixes. Find details here. And many other tweaks were added.

Feature Requests

  • 1755010 - Upgrade to Eclipse 3.3
  • 1574637 - Upgrade JBoss
  • 1754860 - Provide JBoss RichFaces Support
  • 1754865 - Leverage Facelets Templates and Tags
  • 1754868 - Generate Seam PDF files
  • 1695173 - Provide fine grained generate menu
  • 1690730 - Provide support for embeddable entities
  • 1695012 - Add View mode to CRUD UI generation
  • 1695170 - Generate Pages under the web-inf directory

Taylor MDA 0.0.4 Release

Version 4 has been release! Below is a list of new features and bug fixes. Find details here. And many other tweaks were added.

Feature Requests

  • 1552269 - Generate multiple projects: Ejb, War, and Ear
  • 1558254 - Divide the generator plugin into multiple plugins
  • 1528518 - Generate Design Documentation from a Model
  • 1558243 - Generate Seam JUnit Tests
  • 1588867 - Generate JaxWS client project
  • 1529690 - Add support for JasperReports
  • 1548807 - Add Page Flow Diagram Editor
  • 1546159 - Make String the default Type for Properties
  • 1559037 - Generate Dashboard Chart Portlets
  • 1584663 - Add generation of security configuration
  • 1542073 - Add generation of JBoss Clustering and Caching descriptors
  • 1576600 - Adding CRUD and Primary Key patterns
  • 1574637 - Upgrade JBoss
  • 1586488 - Add EL support for conditions on Activity Transitions
  • 1572776 - Add Fork, Join, and Timer nodes to Activity Diagram

Bugs

  • 1589383 - Deleting an Element does not delete the applied stereotypes
  • 1546223 - Annotations not generated for service operation parameters
  • 1546156 - Performance issue with Documentation Tab
  • 1618418 - After saving the model , the model can not be displayed
  • 1546152 - Controlling a model gets the following error
  • 1587265 - Labels on M2M associations are backwards
  • 1579053 - types.Byte[] should generate as byte[]
  • 1579051 - @Column length property should be type int

Taylor Reverse Engineering 0.0.1 Release Notes

  • This release supports importing database schema to generate a uml model.
  • It requires and works with Taylor MDA 0.0.3.
  • See the tutorial for details.
  • Future releases will import WSDL, Java Interfaces, and Java Annotations

Taylor MDA 0.0.3 Release Notes

This is the 3rd Alpha release of Taylor MDA, which is intended to elicit interest, feedback, and contributions.

Dependencies

This release is based on the Eclipse 3.2 Callisto release. This is important because it provides a solid foundation for future Taylor releases. Up to this point I have had to spend a lot of time just upgrading to each Callisto milestone. The following JBoss components are supported:

  • AS4.0.4GA-SP1 with EJB-3.0 RC8-FD
  • EJB-3.0 Embeddable ALPHA 8
  • Seam 1.0.1GA
  • Portal 2.2.1-SP2

The following other Taylor components are utilized:

  • taylor-commons-0.0.2
  • taylor-bpm-0.0.1
  • taylor-tracker-0.0.2

New Features

  • Dynamic Templates for overriding and adding new templates. This is very useful for working around template bugs.
  • Message Driven Beans are generated from activity diagrams to create business processes. This utilizes Taylor Bpm, which is based on my JDJ article AOP-Enabled ESB. This is stable, but still a work in progress. So please feel free to use it and ask questions on the forum.
  • Tabbed Properties have been added for the most common properties.
  • JMX profile and templates are provided for defining MBeans with JBoss annotations.
  • EJB-3.0 Embeddable ALPHA 8 supports Security, so the security configuration is generated for junit testing.

Taylor MDA 0.0.2 Release Notes

This 2nd alpha release adds generation JSF/Seam code for CRUD portlets.

Taylor MDA 0.0.1 Release Notes

This alpha release focuses on using Class diagrams for modeling and generating EJB3 entity beans, session beans, and containerless unit tests.

Why Taylor?

Why Taylor?

Posted by Gilbert under Taylor

Taylor MDA is an Eclipse-based UML modeling tool that specializes in the generation of EJB3 code, JSR-168 Portlets, and business processes. It leverages other open-source tools like Maven 2, JBoss Seam, and JBoss Portal.

So, why did I decide to create Taylor?

In the mid 90s I was the architect of a major ERP system. This was before Java App Servers, so we wrote everything in C++ and used Tuxedo as our application server. Since open source software was not big at the time we wrote all the frameworks ourselves, such as object relational mapping, MVC, etc. We wrote all this by hand. I recall I used Notepad most of the time. This was a lot of work, but we did have complete control of all our code and we were successful!!! But I thought there had to be a better way.

Then in the late 90s the EAI and BPM waves rolled in. So, we evaluated all the tools and selected one and trained everyone. I have to say that all the EAI/BPM design patterns are spot on, but I can't say the same for any of the tools. I don't remember delivering a successful project. I think there are several main reasons for this:
  • The frameworks were immature and since we didn't own the code we couldn't fix it.
  • The code generated by the tools could not be modified, so when the tool generated bad code we couldn't fix it.
  • When the code did work, it wouldn't scale.
We tried several tools, but had the same results. A co-worker suggested that we were doing all the developers a disservice by making them learn the languages of these tools instead of learning how JEE works. In the end we used all the design patterns, but wrote everything by hand in JEE. We were back in control and successful!!!!

I still thought that tools were the right way to go, so in '04 I went to work for a tools vendor that had a really good composite application development tool.Or so I thought. Once I got under the hood it turned out that they had made all the same mistakes. We would say "the tool made all the hard stuff easy and all the easy stuff hard". Again, we didn't have control of the code. I didn't stick around.

Then I started using open source software extensively. Finally I was in control again. I didn't have to write all the frameworks, but I could fix them when I found bugs!!! But I still thought that a tool could work.

I have been using UML since day one to design everything. Typically Rose or Visio. However, I didn't generate anything from the models because the tools just didn't generated useful code and couldn't be modified easily or were just to expensive. So, I searched for and tried every open source UML tool I could find. I didn't find a tool with all the right pieces, but I did find all the right pieces:
  • Eclipse Modeling Framework (EMF)
  • Eclipse Java Emitter Templates (JET)
  • Eclipse Graphical Editing Framework (GEF)
  • Eclipse Graphical Modeling Framework (GMF)
  • Eclipse UML2
So, I decided to put them all together myself without making all the same mistakes. To this end the tool
  • generates the same code you would write by hand,
  • it allows you to modify all the generated code,
  • it utilizes all the best open source frameworks instead of reinventing the wheel,
  • and it handles all the easy, boring stuff and lets you write all the interesting, challenging stuff!!!
Taylor MDA lets you be in Control! Try it out and let me know what you think!

BTW, I chose the name Taylor because I live on Taylor Street and because the tool lets you tailor software!!!

We are all doing TDD!

What? That is right! You are doing Test Driven Design and Development without realizing it. And you are really good at it. However, you are not doing it all the time and that is the problem. Here are some examples:

  • Test Driven Development: A test script fails. It turns out that the developer and the tester interpreted the requirements differently. But the test script is right, so you change the code to match the test script.
  • Test Driven Design: A tester is writing a test script and realizes that a salient requirement is missing. So you go back and update the design and change the code.
The problem is that these examples usually happen late in the development cycle, and often too late. And they happen a lot, virtually every time you find a bug or write a script.

The solution is obvious. You hear it every time you read an article on agile and test driven approaches.
  1. Write your test scripts first.
  2. Don't do all the test scripts and then throw them over the wall.
  3. Instead, do very short cycles inside your iterations.
The trick is to realize that you already do it and just need to start doing it sooner.