Klasa palio.Groovy

Klasa palio.Groovy udostępnia zestaw metod ułatwiający dostęp do podstawowych cech jPALIO z poziomu obiektów Groovy.

Poniżej przedstawiono, krótki opis oraz przykłady zastosowań wybranych metod.

 

Dostęp do modułów jPALIO 

Dostęp do modułów jPALIO jest realizowany z pomocą poniższych dwóch metod. Pierwsza zwraca bezpośrednio referencję do instancji modułu o podanej nazwie. W przypadku drugiej metody w podanym kontekście tworzone są zmienne o nazwach odpowiadającym nazwom modułów przekazanych jako argument. Zmienne te zawierają referencje do odpowiednich modułów.

public static Module module(String module)
public static void modules(GroovyObject object, String ... modules)

Przykładowe użycie:

import palio.*

// Invoking method now from time module
println Groovy.module("time").now()

// Binding modules time and sql to local variables
Groovy.modules(this, "time", "sql")

println time.now()

sql.read("select ID, CODE from P_PAGES order by ID").each {row -> 
    println row
}


Wywoływanie obiektów jPALIO

Wywoływanie obiektów jPALIO jest możliwe przy użyciu metody object. Jako pierwszy argument należy podać kod obiektu jPALIO. Kolejne argumenty są przekazywane jako argumenty do danego obiektu.

public static Object object(String code, Object ... params) throws PalioException

Przykładowe użycie:

// Invoking samples.doSomeArithmeticOperation object
def result = Groovy.object("samples.doSomeArithmeticOperation", "+", 20, 30)

 

Konwersja Closure do PalioCode

Część metod z modułów jPALIO ma zadeklarowany argument/argumenty typu PalioCode. Jest to typ wbudowany w język jPALIO. Aby można było korzystać z tych metod w języku Groovy została stworzona metoda realizująca konwersję Groovy Closure na PalioCode.

public static PalioCode asPalioCode(Closure closure) 

Przykład użycia:

Groovy.modules(this, "time", "sql")

sql.transaction(Groovy.asPalioCode {
   sql.write("update SOME_TABLE set SOME_DATE_FIELD=?", [time.now()] as Object[]) 
})

 

Wykorzystanie MarkupBuilder

MarkupBuilder pozwala tworzyć w łatwy i szybki sposób dokumenty HTML i XML. Więcej informacji o MarkupBuilder znajdziesz na stronach języka Groovy.
Poniżej prosty przykład, który generuje tabliczkę mnożenia w HTML'u:

Groovy.xout().html {body {table(border:"1") {
	tr {
		td()
		for (int x = 1; x <= 10; x++) th(x)
	}
	for (int y = 1; y <= 10; y++) tr {
		th(y)
		for (int x = 1; x <= 10; x++) td(x*y)
	}
}}}


Dostęp do klas

Dostęp do klas jest realizowany za pomocą metody getClass. W odróżnieniu od Class.forName metoda ta widzi także klasy zdefiniowane w obiektach jPALIO. Dzięki tej metodzie jest możliwy dostęp do klas zdefiniowanych w obiektach jPALIO poza obiektami jPALIO. Zdecydowanie metoda ta powinna być używana tylko przez programistów zaawansowanych.

public static Class getClass(String groovyClass) throws ClassNotFoundException