domenica 8 aprile 2012

How use a term of the algebra

To build a connector, we must define at least one term, called primitive: these primitives are explained in the previous post. Ok lets' start to see how define a connector composed by a single trm.

Suppose that an application would to provide a txt file of a non standard format, while the reader expect to manage a csv file. To make this last application able to read the file without modify the logic of the application, we can build a connector that 'transform' the file provided file with a csv structure.

Initially, we must define the term:

 Trans t = new Trans(source_uri, type_in, receiver_uri, type_out);

 where :
 1) source_uri indicates how the message -in this case the non standard format file- can be received (it can be a request such http - you can find all the supported uris here http://camel.apache.org/components.html )

 2) type_in is the type of the incoming message, in this case we can assume File.class (it must be an existing implemented class)

 3) the receiver_uri is such the source_uri; the important things is that we must know how the client application fetch its files. For example, if the client read the cvs file from a specific folder, we must write the result of the transformation in this folde: in this case we can use the supporte file uri (http://camel.apache.org/file2.html) and specifiy "file:target_folder?fileName=output.csv" as parameter.

4)The output_type is such the type, but in this case could be exists a specifi class, like CSVFile.class 

Ok! Once specified these base informations, we must define the transform logic. To do this, we must define (in the same class or in another accesible class) a method that make the transformation: in our case

public CSVFile transformMethod(File file){
        //read the file
        //construct the new file
   
        //return the constructed CSVfile


A the end of this process, we must bind this definition with the translator object:

t.setTransLogic(class_that_contain_the_method.class, "transformMethod");

 At the end of this step, we can start the connector:

 t.start();
 Thread.sleep(2000);

 and keep the application alive for 2 seconds. A the at the end of the execution the client is ready to starts the processing! There are lot of consideration around this little example. I'm pleased to answer, if possible, to your questions :)

Nessun commento:

Posta un commento